使用 Podman Desktop 在 Windows 11 WSL2 环境中启动宿主机的 GPU 进行深度学习

使用 Podman Desktop 在 Windows 11 WSL2 环境中启动宿主机的 GPU 进行深度学习

概述

本文将指导您如何利用 Podman Desktop 安装时提供的 WSL2 环境,来启动宿主机的 GPU 进行深度学习任务。

前提条件

确保您的 Windows 11 已经启用了 WSL2 和虚拟化功能,并且安装了最新版本的 NVIDIA 驱动程序(支持 WSL2)。NVIDIA 驱动程序通常会自动为 WSL2 添加 GPU 支持,因此不需要单独下载任何内容。

配置 WSL2 环境以使用 NVIDIA GPU

尽管 Podman Desktop 已经自动配置了大部分环境,为了能够使用宿主机的 GPU,还需要额外的步骤来安装 nvidia-container-toolkit

安装 NVIDIA 容器工具包

进入通过 Podman Desktop 创建的 WSL2 环境后,执行以下命令来安装 NVIDIA 容器工具包:

# 更新包列表并安装所需的依赖项
sudo apt-get update && sudo apt-get install -y curl gnupg2 software-properties-common

# 添加 NVIDIA 容器工具包仓库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

# 安装 NVIDIA 容器工具包
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit

# 应用更改并重启相关服务(如果适用)
sudo systemctl restart podman

# 生成新的容器设备接口 (CDI) 规范文件
sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml

验证 NVIDIA 容器工具包安装

安装完成后,可以通过检查通过 Podman Desktop 创建的 WSL2 环境是否能够成功加载 NVIDIA 模块来验证安装:

nvidia-smi

该命令应该返回有关 GPU 设备的信息,而不是错误消息。

使用 Podman Desktop 启动 GPU 加速的容器

现在您可以使用 Podman Desktop 来启动包含 GPU 支持的容器。例如,拉取一个 PyTorch 容器镜像并在其中测试 GPU 是否可用:

验证命令

在 windows11 终端中执行以下命令,以拉取一个支持 GPU 的 PyTorch 容器镜像,并检查 CUDA 是否可用:

# 拉取包含 GPU 支持的 PyTorch 容器镜像
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 |  
+---------------------------------------------------------------------------------------+

这里的 X 是实际检测到的 GPU 数量。如果显示 True 并且 GPU 数量正确,则表明您的 WSL2 环境已经正确配置,并且 Podman 能够利用宿主机的 GPU 来加速深度学习任务。

未解决的问题:无法使用 podman-compose 方式启用 GPU

在尝试使用 podman-compose 来启用 GPU 时遇到了问题。具体表现为,即使在 docker-compose.yml 文件中设置了 deploy.resources.reservations.devices 或者直接使用 --gpus 标志,也无法成功将 GPU 分配给容器。这可能是由于 podman-compose 当前版本对 GPU 支持有限或者配置不正确导致的。

为了解决这个问题,您可以考虑以下方法:

  1. 使用命令行方式:暂时避开 podman-compose,直接使用 podman run 命令配合 --gpus 参数来启动容器,如上述验证命令所示。
参考
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值