首页
/ Pyxis:让容器化任务在Slurm集群中无缝运行

Pyxis:让容器化任务在Slurm集群中无缝运行

2024-05-29 22:12:49作者:咎岭娴Homer

Pyxis是一个为Slurm工作负载管理器设计的SPANK插件,它允许无特权的集群用户通过srun命令执行容器化的任务。其名字来源于古希腊语中的小型容器,象征着该工具能将你的任务封装在一个安全、独立的环境中运行。

功能优势

  • 无需特殊权限即可在容器内执行用户任务
  • 简洁的命令行界面
  • 快速的Docker镜像下载,支持层缓存和层共享,提高效率
  • 支持多节点MPI作业,兼容PMI2PMIx(需Slurm支持)
  • 允许用户在容器内部安装软件包
  • 与共享文件系统良好集成
  • 不需要在整个集群范围内管理从属用户/组ID

安装

Pyxis依赖于enroot容器工具(版本3.1.0)。安装过程包括编译、创建链接,并重启slurmd服务。具体步骤在项目文档中有详细说明,支持使用make install、deb包以及rpm包进行安装。

使用

作为SPANK插件,Pyxis引入的新命令行参数直接添加到srun中。例如,你可以使用--container-image指定容器镜像,--container-mounts设置挂载点,--container-workdir设定容器内的工作目录等。项目中提供了详细的使用示例,包括srunsbatch命令。

srun 示例

$ # 在一个工作节点上运行命令
$ srun grep PRETTY /etc/os-release
PRETTY_NAME="Ubuntu 20.04.2 LTS"

$ # 将命令放入容器中运行
$ srun --container-image=centos grep PRETTY /etc/os-release
PRETTY_NAME="CentOS Linux 8"

$ # 从主机挂载文件并容器内运行命令
$ srun --container-image=centos --container-mounts=/etc/os-release:/host/os-release grep PRETTY /host/os-release
PRETTY_NAME="Ubuntu 20.04.2 LTS"

sbatch 示例

$ # 在一个容器内运行sbatch脚本
$ sbatch --wait -o slurm.out <<EOF
#!/bin/bash
#SBATCH --container-image nvcr.io\#nvidia/pytorch:21.12-py3

python -c 'import torch ; print(torch.__version__)'
EOF

$ cat slurm.out
pyxis: importing docker image: nvcr.io#nvidia/pytorch:21.12-py3
1.11.0a0+b6df043

更进一步

为了深入了解Pyxis,访问项目wiki页面,你将找到关于安装配置使用的高级指南。

此外,对于遇到的问题或者希望贡献代码,你可以通过提交新问题或发起pull request参与。

最后,如果你发现了任何安全问题,请不要公开,而是直接发送邮件至psirt<at>nvidia.com进行负责任地披露。

Pyxis凭借其强大的功能和简便的操作,是优化Slurm集群资源管理和利用的理想选择。立即尝试Pyxis,解锁你的集群潜力吧!

登录后查看全文
热门项目推荐