与多个用户一起管理多个GPU

Soc*_*tum 5 gpu nvidia gpu-programming multi-gpu docker

我有一台具有4个GPU的服务器(Ubuntu 16.04)。我的团队对此表示赞同,并且我们当前的方法是使用Docker容器化我们所有的工作,并使用来将容器限制为GPU $ NV_GPU=0 nvidia-docker run -ti nvidia/cuda nvidia-smi。当我们都非常清楚谁在使用哪个GPU时,这种方法很好用,但是我们的团队已经壮大,我希望有一种更强大的方法来监视GPU的使用,并禁止在使用GPU时对其进行访问。nvidia-smi是“ GPU-Util”的一个信息通道,但有时当容器中的某人当前将其保留时,GPU可能在某一时刻具有0%的GPU-Util。

您对以下方面有什么建议吗?

  1. 跟踪用户运行的时间 $ NV_GPU='gpu_id' nvidia-docker run
  2. 当另一个用户运行时踢出一个错误 $ NV_GPU='same_gpu_id' nvidia-docker run
  3. 保持更新的日志类似于{'gpu0':'user_name或free',。。。,'gpu3':'user_name or free'},其中每个gpu都标识使用该gpu运行活动docker容器的用户,或者指出该用户“免费”。实际上,最好说明用户和链接到gpu的容器。
  4. 用户关闭使用gpu的容器时更新日志

我可能也在想这错误的方式,因此欢迎其他想法。谢谢!

小智 0

听起来是应用 CI/CD 实践的好地方。您需要的是一个作业队列。每个用户可以通过以某种方式触发管道来请求使用资源(=GPU),例如在特定分支上推送提交。然后,自动系统将有序地分配共享资源,最终每个人都可以完成他们的实验。

这可能是最可扩展的方法。不仅仅是预订日历或临时使用。更具可扩展性的唯一方法是从云购买计算,但这不在 OP 问题的范围内。