Windows11 WSL2 深度学习环境配置
本文介绍了在 Windows 11 上使用 WSL2 配置深度学习环境的方法。首先需要安装 NVIDIA 显卡驱动程序以获得 GPU 支持,推荐使用官方工具 GeForce Experience 进行安装或更新。然后安装 WSL2,并在其中安装 CUDA 和 cuDNN。在测试中,使用 CPU 运算和 GPU 运算分别运行了小规模和大规模神经网络,并打印了运行时间。结果表明,使用 GPU 运算可以显著提高运行速度。
Windows11 WSL2 深度学习环境配置
1. 安装 NVIDIA 驱动程序以获得 GPU 支持
1.1 方法一(推荐)
英伟达显卡驱动安装或者更新最好的方法就是利用官方的工具 GeForce Experience 来进行,每一次显卡驱动更新后 CUDA 支持的最高版本会发生变化。
从 https://www.nvidia.cn/geforce/geforce-experience/ 上下载 GeForce Experience 安装后,进入程序安装/更新 GeForce Game Ready 驱动程序。
1.2 方法二
从 https://www.nvidia.com/Download/index.aspx?lang=en-us 获取机器对应显卡版本的驱动程序,然后在系统上安装 NVIDIA GeForce Game Ready 或 NVIDIA RTX Quadro Windows 11 显示驱动程序。
注意:这是您需要安装的唯一驱动程序。 不要在 WSL 中安装任何 Linux 显示驱动程序。
2. 安装 WSL2
启动您首选的 Windows Terminal / Command Prompt / Powershell 并安装 WSL:
1 | wsl.exe --install |
确保您拥有最新的 WSL 内核:
1 | wsl.exe --update |
查看 WSL 内核版本:
1 | PS Microsoft.PowerShell.Core\FileSystem::\\wsl$\Ubuntu\root> wsl cat /proc/version |
Ensure you are on the latest WSL Kernel or at least 4.19.121+. We recommend 5.10.16.3 or later for better performance and functional fixes.
3. 安装 CUDA
3.1 确认 NVIDIA 驱动支持的 CUDA 版本
1 | C:\Windows>nvidia-smi |
- NVIDIA 显卡硬件版本为:NVIDIA GeForce RTX 3050 Laptop GPU
- 当前显卡驱动程序版本为 :516.59
- CUDA 版本为:11.7
意味着我笔记本当前的显卡驱动版本 516.59 最高支持的 CUDA 版本是 11.7(11.7 以下都是适配/兼容的)。可以查询 NVIDIA 显卡硬件版本 NVIDIA GeForce RTX 3050 Laptop 所支持的最高显卡驱动版本,通过升级显卡驱动后,来支持更高的 CUDA 版本。
详细的显卡驱动和 CUDA 的版本关系请参考
- Table 2. CUDA Toolkit and Minimum Required Driver Version for CUDA Minor Version Compatibility
- Table 3. CUDA Toolkit and Corresponding Driver Versions
3.2 下载 CUDA
从 https://developer.nvidia.com/cuda-toolkit-archive 获取合适版本的 CUDA Toolkit,这里以 11.2.2 版本为例进行说明。
- 进入 CUDA Toolkit 11.2.2 下载页面
- 选择 Linux 操作系统
- 选择 x86_64 架构
- 选择 WSL-Ubuntu 发行版
- 选择 runfile(local) 安装类型
即可得到安装指示信息:
1 | wget https://developer.download.nvidia.com/compute/cuda/11.2.2/local_installers/cuda_11.2.2_460.32.03_linux.run |
3.3 在 WSL2 中安装 CUDA
根据上一步获取的安装指示,下载安装程序:
1 | wget -c https://developer.download.nvidia.com/compute/cuda/11.2.2/local_installers/cuda_11.2.2_460.32.03_linux.run |
执行安装程序:
1 | sh cuda_11.2.2_460.32.03_linux.run |
输入 accept 回车确认同意用户使用协议,光标移至 Install,安装全部,安装完成后会打印如下提示:
1 | =========== |
提示中的警告 "WARNING: Incomplete installation! This installation did not install the CUDA Driver." 是正常的,因为我们只需在 Windows 下安装了 NVIDIA 驱动,而非 WSL 下。
3.4 设置环境变量
编辑 /etc/profile 或 ~/.bashrc 文件,以 ~/.bashrc 为例
1 | vim ~/.bashrc |
在文件末尾添加如下配置:
1 | # Cuda Environment |
使配置生效
1 | source ~/.bashrc |
3.5 测试 CUDA
进入你的 CUDA Example 所在目录,默认是主目录,找到 "NVIDIA_CUDA-11.2_Samples"。依次打开 "1_Utilities" –> "deviceQuery",然后重新打开一个终端输入:
1 | root@ubuntu:~# cd ~/NVIDIA_CUDA-11.2_Samples/1_Utilities/deviceQuery |
出现 "Result = PASS" 字样时,说明安装成功
4. 安装 cuDNN
4.1 下载 cuDNN
从 https://developer.nvidia.com/rdp/cudnn-archive 获取符合 CUDA 版本的 cuDNN。这里示例 CUDA 是 11.2,所以选择了 Download cuDNN v8.1.1 (Feburary 26th, 2021), for CUDA 11.0,11.1 and 11.2,选择下载 cuDNN Library for Linux (x86_64)
1 | wget -c https://developer.nvidia.com/compute/machine-learning/cudnn/secure/8.1.1.33/11.2_20210301/cudnn-11.2-linux-x64-v8.1.1.33.tgz |
注意:这里需要注册 NVIDIA 账号。
4.2 在 WSL2 中安装 cuDNN
安装过程实际上是把 cuDNN 的头文件复制到 CUDA 的头文件目录里面去,把 cuDNN 的库复制到 CUDA 的库目录里面去。
解压:
1 | root@ubuntu:~/Downloads# tar -zxvf cudnn-11.2-linux-x64-v8.1.1.33.tgz |
复制 cuDNN 头文件
1 | cp cuda/include/* /usr/local/cuda-11.2/include/ |
复制 cuDNN 库文件
1 | cp cuda/lib64/* /usr/local/cuda-11.2/lib64/ |
添加可执行权限
1 | chmod +x /usr/local/cuda-11.2/include/cudnn.h |
4.3 测试 cuDNN
打开一个新的终端:
1 | root@ubuntu:~# conda activate ailab |
输出中提示 "Your kernel may not have been built with NUMA support" ,这是无害告警,可以忽略。
https://stackoverflow.com/questions/51733128/your-kernel-may-have-been-built-without-numa-support
https://forums.developer.nvidia.com/t/numa-error-running-tensorflow-on-jetson-tx2/56119
5. CPU vs GPU
硬件 | 型号 |
---|---|
CPU | AMD Ryzen 7 5800H with Radeon Graphics |
GPU | NVIDIA GeForce RTX 3050 Laptop GPU |
5.1 小规模神经网络
1 | #!/usr/bin/env python |
运行结果
1 | 使用cpu花的时间: 26.906126737594604 |
5.2 大规模神经网络
1 | #!/usr/bin/env python |
运行结果
1 | 使用 cpu 花的时间:205.31678819656372 |