如何使用同一个 GPU 设备在 SLURM 中定义多个 gres 资源?

Posted

技术标签:

【中文标题】如何使用同一个 GPU 设备在 SLURM 中定义多个 gres 资源?【英文标题】:How to define multiple gres resources in SLURM using the same GPU device? 【发布时间】:2022-01-09 10:12:27 【问题描述】:

我正在运行使用很少 GPU 内存的机器学习 (ML) 作业。 因此,我可以在单个 GPU 上运行多个 ML 作业。

为此,我想在 gres.conf 文件中添加多行来指定相同的设备。 但是,slurm 守护进程似乎不接受这一点,服务返回:

fatal: Gres GPU plugin failed to load configuration

我是否缺少任何选项来完成这项工作?

或者使用 SLURM 以不同的方式实现这一目标?

这有点像这个,但这个似乎特定于某些启用编译的 CUDA 代码。似乎比我的一般情况(或至少据我了解)更具体的东西。 How to run multiple jobs on a GPU grid with CUDA using SLURM

【问题讨论】:

【参考方案1】:

我认为您不能超额订阅 GPU,因此我看到了两个选项:

    您可以配置CUDA Multi-Process Service 或 将多个计算打包到具有一个 GPU 的单个作业中并并行运行。

【讨论】:

好的,我一定会深入研究这个 MPS。非常感谢。【参考方案2】:

除了@Marcus Boden 提到的与V100 类型卡相关的nVidia MPS,还有与A100 类型卡相关的Multi-Instance GPU。

【讨论】:

MPS 是否仍然适用于 A100?这更多是出于好奇,因为我正在处理 GTX 1080ti。 根据here,是的

以上是关于如何使用同一个 GPU 设备在 SLURM 中定义多个 gres 资源?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SLURM 获取 GPU (GRES) 分配报告

Slurm 作业不能为多个节点请求 GPU 资源

Slurm无法运行多个sbatch任务

在 Slurm 中,如何批量提交多个实验运行,并一个接一个地连续执行?

如何在节点上平均分配 slurm 任务?

如何使用 Slurm 在多个节点上发送循环?