前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Win10下配置WSL2使用CUDA搭建深度学习环境

Win10下配置WSL2使用CUDA搭建深度学习环境

原创
作者头像
御坂妹
发布2024-11-04 10:32:57
1180
发布2024-11-04 10:32:57
举报
文章被收录于专栏:御坂网络手记

环境准备

操作系统:Windows 10 专业版 22H2(保系统版本高于windows10 21H2或Windows11)

显卡:2080TI 22G

参考内容:CUDA on WSL (nvidia.com)Install WSL | Microsoft LearnWindows安装WSL2并配置nVidia GPU - 知乎 (zhihu.com)

现在已经是2024年,网上许多安装WSL2和WSL2中配置GPU的资料已经过时,因此在这里记录一下整个安装流程。

安装WSL2

在控制面版安装必要组件

分别为Hyper-V、适用于Linux的Windwos子系统、虚拟机平台,安装完成后重启计算机即可开启WSL功能。注:开启Hyper-V会与Vmware等虚拟化软件造成冲突,可使用基于Hyper-V版本的Vmware。

安装必要组件
安装必要组件

升级WSL版本

然后我们要把wsl程序的版本更新到最新版本,打开系统终端(cmd或者powershell都行),输入wsl --update,即可升级到最新版的wsl程序,我这里已经升级过了,所以显示已是最新版。

代码语言:txt
复制
正在检查更新。
已安装最新版本的适用于 Linux 的 Windows 子系统。

输入wsl --version如果有结果显示那就证明wsl程序版本达到要求了,没有对应结果那就是wsl程序还不是最新版。

代码语言:txt
复制
WSL 版本: 2.1.5.0
内核版本: 5.15.146.1-2
WSLg 版本: 1.0.60
MSRDC 版本: 1.2.5105
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows 版本: 10.0.19045.4474

安装 Linux 内核更新包

WSL使用CUDA要求Linux内核版本大于4.19.121+,输入wsl cat /proc/version即可查看wsl linux内核版本。

代码语言:txt
复制
Linux version 5.15.146.1-microsoft-standard-WSL2 (root@65c757a075e2) (gcc (GCC) 11.2.0, GNU ld (GNU Binutils) 2.37) #1 SMP Thu Jan 11 04:09:03 UTC 2024

如果你的内核版本不符合要求,请下载wsl的内核更新包,直接运行安装即可,这样WSL2的安装算是完成了。

安装wsl的ubuntu

首先设置WSL2为默认WSL版本,如果不是,可以通过下面命令切换默认为WSL2

代码语言:txt
复制
wsl --set-default-version 2

然后通过命令安装ubuntu,选择自己想要的版本,这里我选择20.04

代码语言:javascript
复制
wsl --install ubuntu20.04

启动ubuntu

直接在系统终端输入wsl,即可进入到unbuntu系统。

为了方便使用,我们顺便开启wsl系统的systemd支持,

输入nano /etc/wsl.conf,在wsl.conf文件中添加以下行,你现在已打开此文件来更改用于 systemd 的 init:

代码语言:txt
复制
[boot]
systemd=true

然后重启wsl就可以了,输入wsl --shutdown关闭系统,在输入wsl启动即可。

windows安装nvidia GPU驱动

网上有许多资料写道需要安装针对WSL特别驱动,但是新版驱动直接继承了WSL的驱动现在只需要到nVidia官网将驱动升级到最新版本即可。

驱动下载地址:NVIDIA GeForce 驱动程序 - N 卡驱动 | NVIDIA

根据自己的显卡型号以及操作系统选择对应驱动,我这里是RTX 2080TI,操作系统是Win 10 64位。

选择显卡驱动
选择显卡驱动

一般来说,会得到两种类型的驱动程序,一个是GeForce Game Ready 驱动程序,另外一个是NVIDIA Studio 驱动程序 ,我们要选择GeForce Game Ready 驱动程序,注意不要选错了。

选择GeForce Game Ready
选择GeForce Game Ready

确认 NVIDIA 驱动支持的 CUDA 版本

安装完驱动后,在终端输入nvidia-smi,可以看到驱动支持的最高CUDA版本(向下兼容),我这里是12.5

代码语言:txt
复制
PS C:\Users> nvidia-smi
Tue Jun  4 15:53:37 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 555.85                 Driver Version: 555.85         CUDA Version: 12.5     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                  Driver-Model | 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 2080 Ti   WDDM  |   00000000:02:00.0  On |                  N/A |
| 27%   34C    P8             26W /  250W |    2092MiB /  22528MiB |      3%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
+-----------------------------------------------------------------------------------------+

在WSL2中安装CUDA

进入英伟达官网,找到CUDA Tookit下载页面,按下图选择对应的版本:

根据提示,进入到WSL里面进行安装

我这里安装的是12.5版本,请根据自己要安装的版本操作,确保自己的网络可靠(科学上网什么的):

代码语言:javascript
复制
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.5.0/local_installers/cuda-repo-wsl-ubuntu-12-5-local_12.5.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-12-5-local_12.5.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-5-local/cuda-*-keyring.gpg /usr/share/keyrings/sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-5

安装完成后,配置对应的环境变量,默认是修改.bashrc文件,如果你使用的是其他shell,请修改对应shll的环境变量。我这里使用的是zsh,故在.zshrc中添加,注意:cuda-12.5中的12.5要根据你安装的CUDA版本确定。

代码语言:txt
复制
export CUDA_HOME=/usr/local/cuda-12.5
export LD_LIBRARY_PATH=$CUDA_HOME/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export PATH=$CUDA_HOME/bin:$PATH

编辑完.zshrc文件,输入source .zshrc来应用环境变量,之后输入nvcc -V得到类似下面的信息就证明CUDA安装成功了。

代码语言:txt
复制
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Wed_Apr_17_19:19:55_PDT_2024
Cuda compilation tools, release 12.5, V12.5.40
Build cuda_12.5.r12.5/compiler.34177558_0

关联nvidia-smi

在上文我们在windwos下输入nvidia-smi是可以运行的,同样其实在WSL中也可以使用nvidia-smi命令,不过WSL的nvidia-smi /usr/lib/wsl/lib/目录,故我们只需要对/usr/lib/wsl/lib/nvidia-smi进行软链接到/usr/bin/

代码语言:txt
复制
ln -s /usr/lib/wsl/lib/nvidia-smi /usr/bin/nvidia-smi

回显

代码语言:txt
复制
Thu Oct 31 16:14:44 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.35.02              Driver Version: 560.94         CUDA Version: 12.6     |
|-----------------------------------------+------------------------+----------------------+
| 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 2080 Ti     On  |   00000000:02:00.0  On |                  N/A |
| 27%   38C    P8             28W /  250W |    1327MiB /  22528MiB |      9%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A        26      G   /Xwayland                                   N/A      |
|    0   N/A  N/A     24237      C   /ollama                                     N/A      |
+-----------------------------------------------------------------------------------------+

配置Docker访问GPU

上一步中我们已经在裸机上安装了 GPU Driver,CUDA Toolkit 等工具,实现了在宿主机上使用 GPU。

现在希望在 Docker 容器中使用 GPU,需要怎么处理呢?

为了让 Docker 容器中也能使用 GPU,大致步骤如下:

  • 1)安装 nvidia-container-toolkit 组件
  • 2)docker 配置使用 nvidia-runtime
  • 3)启动容器时增加 --gpu 参数

安装 nvidia-container-toolkit

NVIDIA Container Toolkit 的主要作用是将 NVIDIA GPU 设备挂载到容器中。

兼容生态系统中的任意容器运行时,docker、containerd、cri-o 等。

NVIDIA 官方安装文档:nvidia-container-toolkit-install-guide

对于 Ubuntu 系统,安装命令如下:

首先设置依赖库:

代码语言:bash
复制
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.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

可选,设置使用实验性包:

代码语言:bash
复制
sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list

然后更新apt列表

代码语言:bash
复制
sudo apt-get update

安装nvidia-container-toolkit

代码语言:bash
复制
sudo apt-get install -y nvidia-container-toolkit

配置使用该 runtime

支持 Docker, Containerd, CRI-O, Podman 等 CRI。

具体见官方文档 container-toolkit#install-guide

这里以 Docker 为例进行配置:

旧版本需要手动在 /etc/docker/daemon.json 中增加配置,指定使用 nvidia 的 runtime。

代码语言:json
复制
"runtimes": {
    "nvidia": {
        "args": [],
        "path": "nvidia-container-runtime"
    }
}

新版 toolkit 带了一个nvidia-ctk 工具,执行以下命令即可一键配置:

代码语言:bash
复制
sudo nvidia-ctk runtime configure --runtime=docker

然后重启 Docker 即可

代码语言:bash
复制
sudo systemctl restart docker

至此整个教程结束。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境准备
  • 安装WSL2
    • 在控制面版安装必要组件
      • 升级WSL版本
        • 安装 Linux 内核更新包
          • 安装wsl的ubuntu
            • 启动ubuntu
            • windows安装nvidia GPU驱动
              • 确认 NVIDIA 驱动支持的 CUDA 版本
                • 在WSL2中安装CUDA
                  • 关联nvidia-smi
                    • 安装 nvidia-container-toolkit
                    • 配置使用该 runtime
                • 配置Docker访问GPU
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档