如何在slurm中安装Python包/模块

8
这可能是一个非常基础的问题,但这是我第一次使用slurm-cluster工作,我不想搞砸什么(管理员正在度假)。
我有一个使用“import torch”的python脚本。 当我运行“sbatch myscript.sh”时,输出为“ImportError:找不到名为'torch'的模块”。 我在节点内部使用pip下载了torch包,但下载后仍然遇到了importError。
如何让我的导入工作? 我应该从github下载软件包的源代码并将其上传到我的home目录上吗? 管理员给我的指南没有包括此场景的信息,我错过了什么吗?

2
当调用 myscript.sh 时,确保找到的 Python 版本与使用 pip 时调用的 Python 版本相同。 - Peter Wood
2
谢谢,它们确实不匹配。 - Average_guy
1个回答

7

你应该在你的bash代码中导入所有这些包,以下是一个例子:

#!/bin/bash
#SBATCH --account=def-someuser
#SBATCH --mem-per-cpu=1.5G      # increase as needed
#SBATCH --time=1:00:00

module load python/3.6
virtualenv --no-download $SLURM_TMPDIR/env
source $SLURM_TMPDIR/env/bin/activate
pip install --no-index --upgrade pip

pip install --no-index -r requirements.txt
python ...

你可以将所有依赖项放在 requirements 文件中,并在 virtualenv 中一次性安装它们。 如需更多信息,请参阅此页面

我发现我只需要在一次pip install,而不是在我的slurm脚本中。当我激活虚拟环境时,这些软件包仍然已安装并准备就绪。 - Teepeemm
1
@Teepeemm,是的,但如果每次连接到新实例或需要创建多个实例以同时执行任务怎么办?这就是我将其放在slurm脚本中的原因。 - Shayan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接