介绍
NVIDIA Container Toolkit 是 NVIDIA 提供的一组工具,用于在容器化环境中支持 GPU 加速,特别是通过 Docker 或其他容器运行时,运行基于 NVIDIA GPU 的工作负载(如深度学习、科学计算等)。
特别注意:nvidia-container-toolkit 本身不包含 GPU 驱动,其功能依赖于宿主机已安装的 NVIDIA 驱动。容器通过挂载宿主机驱动和库文件(如 /dev/nvidia*、/usr/lib/nvidia)实现 GPU 访问。若宿主机驱动缺失,容器内无法识别 GPU 设备。
核心功能
- GPU 加速支持:将主机的 NVIDIA GPU 映射到容器中,使得容器能够直接访问 GPU 资源。
- 轻松管理 CUDA 环境:自动加载必要的 NVIDIA 驱动程序、CUDA 库和运行时,简化环境配置。
- 与容器平台集成:支持 Docker 和其他容器运行时(如 containerd)。
- 灵活的GPU 分配:允许用户指定容器可以访问的 GPU 数量或特定 GPU。
组件结构
- NVIDIA Container Runtime:Docker 运行时的扩展,用于在容器中加载 GPU 相关组件。
- NVIDIA Container CLI:提供了命令行工具 nvidia-container-cli,可以用于调试和管理 GPU 映射。
- 支持的库和工具:自动为容器挂载 libcuda.so 和其他相关库,使其支持 GPU 加速。
1、 apt适用于Debian/Ubuntu
# 直接配置apt国内镜像库
curl -fsSL https://mirrors.ustc.edu.cn/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://mirrors.ustc.edu.cn/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://nvidia.github.io#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://mirrors.ustc.edu.cn#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# 安装nvidia-container-toolkit
sudo apt update && sudo apt install nvidia-container-toolkit
2、yum/dnf适用于RHEL/CentOS, Fedora, Amazon Linux
# 直接配置国内yum/dnf镜像库
curl -s -L https://mirrors.ustc.edu.cn/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sed 's#nvidia.github.io/libnvidia-container/stable/#mirrors.ustc.edu.cn/libnvidia-container/stable/#g' |
sed 's#nvidia.github.io/libnvidia-container/experimental/#mirrors.ustc.edu.cn/libnvidia-container/experimental/#g' |
sed 's#nvidia.github.io/libnvidia-container/gpgkey#mirrors.ustc.edu.cn/libnvidia-container/gpgkey#g' |
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
# 安装nvidia-container-toolkit
sudo yum install nvidia-container-toolkit
3、已经在使用官方源了?
你可以直接替换仓库配置文件中的 URL。
# 对于 APT可直接替换国内库:
sed -i 's#nvidia.github.io#mirrors.ustc.edu.cn#g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
# 对于 Yum / DNF可直接替换国内库:
sed -i 's#nvidia.github.io/libnvidia-container/stable/#mirrors.ustc.edu.cn/libnvidia-container/stable/#g;s#nvidia.github.io/libnvidia-container/experimental/#mirrors.ustc.edu.cn/libnvidia-container/experimental/#g;s#nvidia.github.io/libnvidia-container/gpgkey #mirrors.ustc.edu.cn/libnvidia-container/gpgkey #g' | /etc/yum.repos.d/nvidia-container-toolkit.repo
# 我们为 nvidia-container-runtime 和 nvidia-docker 提供了 301 重定向,因此较早安装的 nvidia-container-runtime 和 nvidia-docker 也可以直接迁移,但需要注意 libnvidia-container 源中的软件版本会更新。
4、测试 NVIDIA GPU 支持
# 运行以下命令检查容器中 GPU 的可用性:
docker run --rm --gpus all docker.m.daocloud.io/nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi
# 若输出以下相似内容说明成功了
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.127.05 Driver Version: 550.127.05 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA A100-SXM4-40GB Off | 00000000:31:00.0 Off | 0 |
| N/A 33C P0 48W / 400W | 34637MiB / 40960MiB | 0% Default |
| | | Disabled |
+-----------------------------------------+------------------------+----------------------+
| 1 NVIDIA A100-SXM4-40GB Off | 00000000:E3:00.0 Off | 0 |
| N/A 33C P0 43W / 400W | 32927MiB / 40960MiB | 0% Default |
| | | Disabled |
+-----------------------------------------+------------------------+----------------------+
以上国内修改自 Installing the NVIDIA Container Toolkit
参考:NVIDIA Container 运行时库
参考:USTC Mirror Help