从原理上理解Win11环境下WSL2如何配置pytorch环境并调用NVIDIA GPU

↵如果要在Windows上部署深度学习开发环境,一般来讲比在Ubuntu等环境上要复杂很多。但Win11大幅加强了WSL2的能力,因此基于WSL2,我们可以实现非常简洁的部署流程。大体的操作流程是:

  1. 安装WSL2,这部分网上教程很多,不赘述。

  2. 在WSL2中依次安装cuda和NVIDIA container toolkit,这部分参考NVIDIA官方教程,不要看网上的二手教程,因为很多教程是错的。

  3. 安装docker,这步也建议参考官方教程,网上很多教程也是错的。

  4. 安装好后修改 daemon.json,设置default runtime为nvidia,具体格式直接问deepseek。

  5. 建议换docker国内镜像,具体操作问deepseek,目前好用的国内镜像源是 https://docker.xuanyuan.me

  6. 测试WSL2中的 nvidia-smi 和 nvcc ,都能正常使用的话,WSL2中的配置就结束了。

  7. 接下来是关键一步:在Windows上(不是WSL2环境内)安装docker desktop,安装过程中选中"将WSL作为后端"

  8. 在WSL2中安装docker镜像,推荐下面这个镜像,亲测好用。完成这个docker的拉取和container创建后,整个配置流程就结束了。

    docker pull pytorch/pytorch:2.1.0-cuda11.8-cudnn8-runtime


配置完成后,在Windows的docker desktop中应该可以看到WSL2中的镜像和容器状态


更好的开发体验:

用vscode的remote development插件实现在WSL2中开发,纵享丝滑(不得不说,巨硬在生产力这块是真的厉害)。这部分没什么难度,只要WSL2中的容器是启动的,在vscode上点两下鼠标就行了,建议问deepseek。


接下来讨论一下,为什么在WSL2中使用GPU,需要在Windows中安装docker desktop?

这就要从WSL2的软件架构说起了,与直接在硬件上安装Linux系统不同,所谓"访问GPU",依然是**通过Windows的NVIDIA驱动实现,并不是WSL2直接访问硬件。**这也就是为什么很老版本的NVIDIA驱动无法支持WSL访问GPU。

整体的架构如下图,W SL2 本质是虚拟机,不能直接访问物理硬件,通过层层转发,最终执行由Windows的NVIDIA驱动完成,间接实现了WSL2中的容器访问Windows管理的硬件。

因此,Docker Desktop 是整个链路中的核心"中介",提供了GPU访问的重要功能:

  • Hyper-V 虚拟化层的 PCIe 设备穿透

  • Windows/Linux 驱动模型的转换

  • GPU 时间片分配和隔离

总结一下,WSL2 的 Docker GPU 支持依赖于完整的传递链:

  1. 必需:Windows 主机的 Docker Desktop(WSL2 后端)
  2. 必需:≥465 版本的 NVIDIA Windows 驱动
  3. 必需:WSL2 内核中的 GPU 虚拟化支持
  4. 必需:Linux 端的 NVIDIA Container Toolkit

很可惜的是,当前网上并没有哪个教程强调了这一点,导致很多新手在配置环境时忽略了**"在Windows下安装docker desktop并以WSL作为后端"**这个关键步骤。

本质上还是在于没有从底层原理来理解WSL2。其实学任何技术都一样,如何配置,如何操作,这些其实都是细枝末节,并不本质,本质是底层的技术是如何实现的,理解了它的实现,才能理顺上层的应用,不会去踩那些莫名其妙的坑。

相关推荐
Z.风止3 小时前
Large Model-learning(6)
pytorch·深度学习·机器学习
Acland2409406 小时前
基于 PyTorch 的 Fashion-MNIST CNN 分类模型
人工智能·pytorch·分类
@不误正业6 小时前
大模型注意力机制源码解析-从MQA到MLA全链路演进与PyTorch实现
人工智能·pytorch·python
hsg778 小时前
简述:pytorch
人工智能·pytorch·python
牙牙要健康9 小时前
【室内户型图重建】【深度学习】Windoes11下RoomFormer官方代码Pytorch实现
人工智能·pytorch·深度学习
西西弗Sisyphus10 小时前
PyTorch 中用于 主机(CPU)与设备(GPU)同步 的函数 torch.cuda.synchronize()
pytorch·python·synchronize
盼小辉丶10 小时前
PyTorch强化学习实战(1)——强化学习(Reinforcement Learning,RL)详解
人工智能·pytorch·深度学习·强化学习
独隅11 小时前
PyTorch模型转换为TensorFlow Lite实现 iOS 部署的全面指南
pytorch·ios·tensorflow
谢娘蓝桥1 天前
wsl2 windows 安装
wsl
Dxy12393102161 天前
将 PyTorch Tensor 转换为 Python 列表
人工智能·pytorch·python