操作系统:Windows 10 专业版 22H2(保系统版本高于windows10 21H2或Windows11)
显卡:2080TI 22G
参考内容:CUDA on WSL (nvidia.com)、Install WSL | Microsoft Learn、Windows安装WSL2并配置nVidia GPU - 知乎 (zhihu.com)
现在已经是2024年,网上许多安装WSL2和WSL2中配置GPU的资料已经过时,因此在这里记录一下整个安装流程。
分别为Hyper-V、适用于Linux的Windwos子系统、虚拟机平台,安装完成后重启计算机即可开启WSL功能。注:开启Hyper-V会与Vmware等虚拟化软件造成冲突,可使用基于Hyper-V版本的Vmware。
然后我们要把wsl程序的版本更新到最新版本,打开系统终端(cmd或者powershell都行),输入wsl --update
,即可升级到最新版的wsl程序,我这里已经升级过了,所以显示已是最新版。
正在检查更新。
已安装最新版本的适用于 Linux 的 Windows 子系统。
输入wsl --version
如果有结果显示那就证明wsl程序版本达到要求了,没有对应结果那就是wsl程序还不是最新版。
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
WSL使用CUDA要求Linux内核版本大于4.19.121+,输入wsl cat /proc/version
即可查看wsl linux内核版本。
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的安装算是完成了。
首先设置WSL2为默认WSL版本,如果不是,可以通过下面命令切换默认为WSL2
wsl --set-default-version 2
然后通过命令安装ubuntu,选择自己想要的版本,这里我选择20.04
wsl --install ubuntu20.04
直接在系统终端输入wsl,即可进入到unbuntu系统。
为了方便使用,我们顺便开启wsl系统的systemd支持,
输入nano /etc/wsl.conf
,在wsl.conf
文件中添加以下行,你现在已打开此文件来更改用于 systemd 的 init:
[boot]
systemd=true
然后重启wsl就可以了,输入wsl --shutdown
关闭系统,在输入wsl
启动即可。
网上有许多资料写道需要安装针对WSL特别驱动,但是新版驱动直接继承了WSL的驱动现在只需要到nVidia官网将驱动升级到最新版本即可。
驱动下载地址:NVIDIA GeForce 驱动程序 - N 卡驱动 | NVIDIA
根据自己的显卡型号以及操作系统选择对应驱动,我这里是RTX 2080TI,操作系统是Win 10 64位。
一般来说,会得到两种类型的驱动程序,一个是GeForce Game Ready 驱动程序,另外一个是NVIDIA Studio 驱动程序 ,我们要选择GeForce Game Ready 驱动程序,注意不要选错了。
安装完驱动后,在终端输入nvidia-smi,可以看到驱动支持的最高CUDA版本(向下兼容),我这里是12.5
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 |
|=========================================================================================|
+-----------------------------------------------------------------------------------------+
进入英伟达官网,找到CUDA Tookit下载页面,按下图选择对应的版本:
根据提示,进入到WSL里面进行安装
我这里安装的是12.5版本,请根据自己要安装的版本操作,确保自己的网络可靠(科学上网什么的):
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版本确定。
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安装成功了。
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
在上文我们在windwos下输入nvidia-smi
是可以运行的,同样其实在WSL中也可以使用nvidia-smi
命令,不过WSL的nvidia-smi
在 /usr/lib/wsl/lib/
目录,故我们只需要对/usr/lib/wsl/lib/nvidia-smi
进行软链接到/usr/bin/
:
ln -s /usr/lib/wsl/lib/nvidia-smi /usr/bin/nvidia-smi
回显
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 |
+-----------------------------------------------------------------------------------------+
上一步中我们已经在裸机上安装了 GPU Driver,CUDA Toolkit 等工具,实现了在宿主机上使用 GPU。
现在希望在 Docker 容器中使用 GPU,需要怎么处理呢?
为了让 Docker 容器中也能使用 GPU,大致步骤如下:
nvidia-container-toolkit
组件docker
配置使用 nvidia-runtime
--gpu
参数NVIDIA Container Toolkit 的主要作用是将 NVIDIA GPU 设备挂载到容器中。
兼容生态系统中的任意容器运行时,docker、containerd、cri-o 等。
NVIDIA 官方安装文档:nvidia-container-toolkit-install-guide
对于 Ubuntu 系统,安装命令如下:
首先设置依赖库:
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
可选,设置使用实验性包:
sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
然后更新apt列表
sudo apt-get update
安装nvidia-container-toolkit
sudo apt-get install -y nvidia-container-toolkit
支持 Docker, Containerd, CRI-O, Podman 等 CRI。
具体见官方文档 container-toolkit#install-guide
这里以 Docker 为例进行配置:
旧版本需要手动在 /etc/docker/daemon.json
中增加配置,指定使用 nvidia 的 runtime。
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
}
新版 toolkit 带了一个nvidia-ctk
工具,执行以下命令即可一键配置:
sudo nvidia-ctk runtime configure --runtime=docker
然后重启 Docker 即可
sudo systemctl restart docker
至此整个教程结束。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。