是否可以在奇点容器中运行slurm命令?

时间:2018-03-26 16:57:24

标签: docker machine-learning containers slurm singularity-container

我想进入一个具有奇点的容器,然后运行slurm命令。例如:

singularity shell docker://tensorflow/tensorflow:1.0.0-gpu-py3

然后在其中运行我想要运行我的脚本的脚本:

python tf_test.py

tf_test的内容是:

import tensorflow as tf
print(tf.random_uniform((3,2)))

我遇到的问题是容器不知道我在HPC中,或者存在这种情况。是否可以仅在我们进入容器后运行slurm命令?我对使用sbatch特别感兴趣。使用srun然后进入容器是作弊而不是我想要的。

1 个答案:

答案 0 :(得分:2)

在您运行的版本上不确定,但这适用于2.4.x系列。

您可以在容器中安装slurm,或者如果它已安装在您的群集上,请说:

/apps/sched/slurm/[ver]

您可以使用-B / --bind选项将其挂载,如:

singularity shell -B /apps/sched/slurm/[ver] -B /etc/slurm

但是,该作业在运行时在容器中。要强制您可以提交执行类似以下内容的运行脚本:

singularity exec docker://tensorflow/tensorflow:1.0.0-gpu-py3 python /path/to/tf_test.py

修改 一旦你对运行感到满意,IMO就可以从Docker源构建一个Singularity图像。在定义文件中,设置%runscript部分,如

%runscript
    python "$@"

然后您可以提交:

/path/to/imagename.img /path/to/tf_test.py

奇点图像可以像应用程序一样运行,默认情况下它会执行%runscript部分中的任何内容。