我有一台服务器(Ubuntu 16.04),带有4个GPU。我的团队共用这台服务器,我们目前的做法是使用Docker将所有工作容器化,并使用类似于 $ NV_GPU=0 nvidia-docker run -ti nvidia/cuda nvidia-smi
的方法限制容器对GPU的访问。当我们非常清楚谁正在使用哪个GPU时,这种方法很有效,但我们的团队已经扩大,我希望有一种更强大的方法来监视GPU使用情况并在GPU被占用时禁止对其的访问。nvidia-smi
是 "GPU-Util" 的一个信息通道,但有时候GPU可能在某个时刻有0%的GPU-Util,而实际上它正在被某个容器中的人所占用。
您有任何以下建议吗:
- 跟踪用户运行
$ NV_GPU='gpu_id' nvidia-docker run
的时间 - 当另一个用户运行
$ NV_GPU='same_gpu_id' nvidia-docker run
时报错 - 保持更新的日志,类似 {'gpu0':'user_name或free',…,'gpu3':'user_name或free'},其中对于每个gpu,它要识别正在使用该gpu的活动docker容器的用户,或者声明它是“空闲”的。实际上,声明用户和链接到gpu的容器会更好。
- 当用户关闭使用GPU的容器时更新日志
我也可能想得不对,请提供其他想法。谢谢!