当 systemd 用于管理容器的 cgroup 并触发它重新加载任何引用 NVIDIA GPU 的 Unit 文件(例如 systemctl daemon-reload)时,容器化 GPU 工作负载可能会突然失去对其 GPU 的访问权限。
在 GPUStack 中,GPU 可能会在"资源"菜单中丢失,并且在 GPUStack 容器中运行 nvidia-smi
可能会导致错误: Failed to initialize NVML: Unknown Error
为了防止此问题,需要在 Docker 中禁用 systemd cgroup 管理。
在 /etc/docker/daemon.json
文件中设置参数 "exec-opts": ["native.cgroupdriver=cgroupfs"] 并重新启动 docker,例如:
vim /etc/docker/daemon.json
{
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
},
"exec-opts": ["native.cgroupdriver=cgroupfs"]
}
systemctl daemon-reload && systemctl restart docker
相关链接
- 在线安装 - GPUStack --- Online Installation - GPUStack(https://docs.gpustack.ai/latest/installation/nvidia-cuda/online-installation/#prerequisites_1)
- NOTICE: Containers losing access to GPUs with error: "Failed to initialize NVML: Unknown Error" · Issue #48 · NVIDIA/nvidia-container-toolkit(https://github.com/NVIDIA/nvidia-container-toolkit/issues/48)
- NOTICE: Containers losing access to GPUs with error: "Failed to initialize NVML: Unknown Error" · NVIDIA/nvidia-container-toolkit · Discussion #1133(https://github.com/NVIDIA/nvidia-container-toolkit/discussions/1133)