跳至主要内容

GPU 容器访问

在 Podman 容器中利用 GPU 功能提供了一种强大且高效的方法来运行 GPU 加速的工作负载。以下是如何设置您的操作系统以利用 GPU 的入门指南。

先决条件

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

步骤

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

  2. 验证在安装 Podman 桌面时是否安装了 WSL2。

  3. 创建您的 Podman 机器。

  4. 在 Podman 机器上安装 NVIDIA 容器工具包

Podman 机器需要安装 NVIDIA 容器工具包。

这可以通过按照 官方 NVIDIA 指南 或运行以下步骤来安装。

SSH 登录到 Podman 机器

$ podman machine ssh

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

$ curl -s -L https://nvidia.github.io/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
info

当您创建或删除多实例 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 机器中运行以下命令以生成新的 CDI 规范

nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
info

您可能需要重新启动 Podman 机器。

其他资源