使用 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 |
+---------------------------------------------------------------------------------------+

则表明您的 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 参数来启动容器,如上述验证命令所示。

参考

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

  1. windows平台在tomcat中启动cas报错解决

    windows平台在tomcat中启动cas报错: Caused by: java.lang.UnsatisfiedLinkError: Could not load library. Reasons ...

  2. Vmvare + Ubuntu 16.04环境搭建 + 相关软件安装配置笔记【深度学习】

    前言 由于学习与工作的需要,加上之前配置好的vmmachines都损坏了,我就重新弄一个ubuntu虚拟机,配置一下环境,给自己留个记录 1.文件 2.配置过程 1.在Vmware中新建虚拟机,自定义 ...

  3. 在C++11编译环境中,简单自测了一下C++标准库中的string/vector和迭代器,记录一下

    #include <iostream> #include <vector> using namespace std; int main() { //////////////// ...

  4. windows下在Eclipse中启动的tomcat没有乱码,单独部署到tomcat下乱码解决方案

    今天遇到了一个很奇怪的问题,在Eclipse中调试,运行项目一切正常,项目的所有编码都是统一的UTF-8.但是在单独部署到tomcat上的时候出现了中文乱码. 解决方案 第一步:确保项目,jsp页面, ...

  5. 如何在IDE的开发环境中启动Studio和本地build出一个product

    1.在run configuration那一个把Program to Run改成如下配置 2.在本地自己用maven构建一个liferay IDE 命令 clean verify -Pinstalle ...

  6. linux系统下深度学习环境搭建和使用

    作为一个AI工程师,对Linux的一些技能的掌握也能从一定层面反应工程师的资深水平. 要求1:基于SSH的远程访问(本篇文章) 能用一台笔记本电脑,远程登陆一台linux服务器 能随时使用笔记本电脑启 ...

  7. (转)深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0

      深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0 发表于2016年07月15号由52nlp 接上文<深度学习主机攒机小记>,这台GTX10 ...

  8. Windows 2003 Server 标准版启动问题解决(资源转贴)

    维护的系统之一是部署在windows2003 Server标准版的服务器上,可能是由于某个应用问题,导致远程重启失败,害得我在机房呆了一早晨,可算是够折腾的.最后按照官方文档解决,刚放文档地址是:ht ...

  9. 深度学习 GPU环境 Ubuntu 16.04 + Nvidia GTX 1080 + Python 3.6 + CUDA 9.0 + cuDNN 7.1 + TensorFlow 1.6 环境配置

    本节详细说明一下深度学习环境配置,Ubuntu 16.04 + Nvidia GTX 1080 + Python 3.6 + CUDA 9.0 + cuDNN 7.1 + TensorFlow 1.6 ...

  10. windows10环境下安装深度学习环境anaconda+pytorch+CUDA+cuDDN

    步骤零:安装anaconda.opencv.pytorch(这些不详细说明).复制运行代码,如果没有报错,说明已经可以了.不过大概率不行,我的会报错提示AssertionError: Torch no ...

随机推荐

  1. IDEA引入大项目一直updating indices解决办法

    一.如项目不需要某个目录建立索引 右键需要排除的项目

  2. OpenCascade 开源的三维建模几何造型开发平台

    官方文档 https://dev.opencascade.org/doc/overview/html/index.html Open CASCADE(简称OCC)平台是由法国Matra Datavis ...

  3. [BZOJ3622] 已经没有什么好害怕的了 题解

    发现难以维护差值,于是令 \(K=\frac{n+k}2\),这样就把问题转化为了"糖果"比"药片"大的组数为 \(K\) 的情况有多少种. 设 \(dp_{i ...

  4. ABC323E Playlist 题解

    考虑第 \(i\) 时刻时,第 \(j\) 首歌刚好结束与第 \(i-j\) 时刻有关,因此设 \(dp_{i,j}\) 表示第 \(i\) 时刻第 \(j\) 首歌刚好结束的概率,那么 \(dp\) ...

  5. 【小技巧】如何使上线前初始化数据的SQL脚本可测试?

    背景 有时候,我们在上线某些特性时,可能需要提前初始化数据,才能使功能正常运作. 初始化数据,常用的有以下两种途径: 单纯为了这个初始化数据,开发一个Excel文件导入功能 开发人员维护SQL语句初始 ...

  6. 使用 Visual Paradigm 的业务流程模型和符号 (BPMN) 综合指南

    业务流程模型和符号 (BPMN) 是一种用于建模和记录业务流程的标准化图形符号.它被广泛采用,因为它能够提供一种清晰.通用的语言,所有利益相关者(业务分析师.技术开发人员和管理人员)都能理解.Visu ...

  7. 深入理解 Docker 容器技术

    一.引言 在当今的云计算和软件开发领域,Docker 容器技术已经成为了一项不可或缺的工具.它极大地改变了应用程序的部署和运行方式,为开发者和运维人员带来了诸多便利. 二.Docker 容器是什么? ...

  8. 数据挖掘 | 数据隐私(4) | 差分隐私 | 差分隐私概论(下)(Intro to Differential Privacy 2)

    L4-Intro to Differential Privacy 拉普拉斯机制(Laplace Mechanism) 上一节课中,我们讨论了随机响应,这是一种适合于单个位的隐私化.这种算法一般来说并不 ...

  9. 【Jmatpro 10.0】根据材料牌号输出应力-应变曲线

    1.前提条件 Jmatpro 软件 一个材料牌号或者材料成分数据 2. 步骤 以 X15Cr 13牌号金属为案例 材料数据来自:材数库 运行jmatpro软件 选择 material type:sta ...

  10. 免费的编程连字等宽字体:Fira Code

    免费的编程连字等宽字体:Fira Code 介绍和特征 介绍 Fira 是 Mozilla 公司 主推的字体系列.Fira Code 专为写程序而生,开源免费.除了具有等宽等基本属性外,还加入了编程连 ...