跳转到主内容

GPU 容器访问

在 Podman 容器中利用 GPU 功能为运行 GPU 加速工作负载提供了一种强大而高效的方法。以下是关于如何开始设置操作系统以利用 GPU 的说明。

先决条件

  • NVIDIA 显卡(Pascal 或更新版本)
  • WSL2(不支持 Hyper-V)

步骤

  1. 最新的 NVIDIA GPU 驱动程序将支持 WSL 2。您无需在主机上为您的 NVIDIA 显卡下载任何其他内容。

  2. 验证在安装 Podman Desktop 时已安装 WSL2。

  3. 创建您的 Podman Machine。

  4. 在 Podman Machine 上安装 NVIDIA Container Toolkit

Podman Machine 需要安装 NVIDIA Container Toolkit。

可以按照 NVIDIA 官方指南进行安装,或运行以下步骤

通过 SSH 连接到 Podman Machine

$ podman machine ssh

请在 Podman Machine 上运行以下命令,而不是在主机系统上

$ curl -s -L https://nvda.org.cn/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
tee /etc/yum.repos.d/nvidia-container-toolkit.repo && \
yum install -y nvidia-container-toolkit && \
nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml && \
nvidia-ctk cdi list
信息

当您创建或删除多实例 GPU (MIG) 设备,或升级计算统一设备架构 (CUDA) 驱动程序时,配置可能会发生变化。在这种情况下,您必须生成一个新的容器设备接口 (CDI) 规范。

验证

要验证创建的容器可以访问 GPU,您可以在已安装 NVIDIA 驱动程序的容器内使用 nvidia-smi

在您的主机上运行以下 NVIDIA 官方容器

$ podman run --rm --device nvidia.com/gpu=all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi

示例输出

PS C:\Users\admin>  podman run --rm --device nvidia.com/gpu=all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
Fri Aug 16 18:58:14 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 545.36 Driver Version: 546.33 CUDA Version: 12.3 |
|-----------------------------------------+----------------------+----------------------+
| 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 GeForce RTX 3060 On | 00000000:07:00.0 On | N/A |
| 0% 34C P8 20W / 170W | 886MiB / 12288MiB | 1% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 33 G /Xwayland N/A |
+---------------------------------------------------------------------------------------+

故障排除

版本不匹配

您可能会在容器内遇到以下错误

# nvidia-smi
Failed to initialize NVML: N/A

此问题与容器设备接口 (CDI) 和已安装版本之间的不匹配有关。

要解决此问题,请在 Podman machine 内部运行以下命令以生成新的 CDI 规范

nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
信息

您可能需要重新启动您的 Podman machine。

其他资源