1. 1 Win11 环境下安装WSL2
本文是基于GPU版本进行了逐步安装说明
基于Win11的WSL2 Ubuntu实现,实际上针对裸机Ubuntu环境同样具有参考意义
1.1 1.1 安装WSL2 Ubuntu
低于 18362 版本的Win11不支持 WSL2
安装WSL2 Unbuntu前置条件
1、启用适用于Linux的Windowx子系统
2、启用虚拟机平台
3、安装WSL2 更新包
然后通过Microsoft Store
下载Ubuntu20.04.05TLS
即可成功启用Ubuntu的WSL2系统
1.2 1.2 几个错误的解决办法
1.2.1 1.2.1 遇到错误0x8007019e
需要安装适用于Linux的Windows子系统
1.2.2 1.2.2 遇到错误0x800701bc
需要安装WSL2 更新包
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
将 WSL 2 设置为默认版本
wsl --set-default-version 2
验证
123 | wsl -l -v NAME STATE VERSION* Ubuntu-22.04 Stopped 2 |
1.2.3 1.2.3 遇到错误0x80370102
在启用或关闭Windows功能中,选择安装虚拟机平台
1.3 1.3 Win11安装NVIDIA驱动
此项简单,直接安装驱动程序即可
注意,如果裸机Ubuntu安装的话,需要在Ubuntu安装显卡驱动
1 | apt install nvidia-utils-525 |
验证
123456789101112131415161718192021 | (base) root@Ethan-4070Ti:~# nvidia-smiFri Apr 21 23:27:49 2023+-----------------------------------------------------------------------------+| NVIDIA-SMI 525.105.17 Driver Version: 531.41 CUDA Version: 12.1 ||-------------------------------+----------------------+----------------------+| 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 ... On | 00000000:01:00.0 Off | N/A || 0% 30C P8 3W / 285W | 980MiB / 12282MiB | 8% Default || | | N/A |+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+| Processes: || GPU GI CI PID Type Process name GPU Memory || ID ID Usage ||=============================================================================|| No running processes found |+-----------------------------------------------------------------------------+ |
1.4 1.4 WSL Ubuntu22安装CUDA
通过Poweshell进入WSL2-Ubuntu
官网选择下载链接
注意选择WSL-Ubuntu【这点很重要】
1234567 | wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pinmv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600wget https://developer.download.nvidia.com/compute/cuda/12.0.1/local_installers/cuda-repo-wsl-ubuntu-12-0-local_12.0.1-1_amd64.debdpkg -i cuda-repo-wsl-ubuntu-12-0-local_12.0.1-1_amd64.debcp /var/cuda-repo-wsl-ubuntu-12-0-local/cuda-*-keyring.gpg /usr/share/keyrings/apt-get updateapt-get -y install cuda |
特别注意
安装结束之后执行nvcc -V
,会提示没有nvcc可执行
123 | root@DESKTOP-B3ONOL3:~# nvcc -VCommand 'nvcc' not found, but can be installed with:apt install nvidia-cuda-toolkit |
这并不是因为我们cudatoolkit没安装好,而是因为环境变量还没配置好
123456789 | #注意这里是安装cuda12的,因此注意后续路径# 验证pwd/usr/local/cuda-12.0/lib64#编辑bashrc,将以下内容添加到最后vim ~/.bashrcexport PATH=/usr/local/cuda-12.0/bin${PATH:+:${PATH}}export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.0/lib64 |
保存退出后(Ctrl+x),更新一下环境变量:
1 | source ~/.bashrc |
这时候在执行 nvcc -V 就能够显示cuda版本了
1234567 | nvcc -V#输出nvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2023 NVIDIA CorporationBuilt on Fri_Jan__6_16:45:21_PST_2023Cuda compilation tools, release 12.0, V12.0.140Build cuda_12.0.r12.0/compiler.32267302_0 |
1.5 1.5 WSL Ubuntu22安装cuDNN
https://developer.nvidia.com/rdp/cudnn-archive
必须先注册
将文件保存到windows环境,然后直接复制到wsl2 ubuntu的home目录下,和在windows环境中复制粘贴一样操作【文件浏览器左侧有Linux】
在wsl的ternimal中进入到home目录,然后解压下载的文件
12 | mkdir -p cudnntar -xvf cudnn-linux-x86_64-8.8.1.3_cuda12-archive.tar.xz -C cudnn |
然后把解压得到的文件分别拷贝到对应的文件夹:
1234567 | #拷贝,根据安装版本注意实际路径 cp -r cudnn/cudnn-linux-x86_64-8.8.1.3_cuda12-archive/lib/libcudnn* /usr/local/cuda-12.0/lib64/cp -r cudnn/cudnn-linux-x86_64-8.8.1.3_cuda12-archive/include/cudnn*.h /usr/local/cuda-12.0/include/#为更改读取权限:chmod a+r /usr/local/cuda-12.0/lib64/libcu*chmod a+r /usr/local/cuda-12.0/include/cud* |
验证
1234567891011 | #检查cudnn是否安装成功cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2#应该正确输出以下内容#define CUDNN_MAJOR 8#define CUDNN_MINOR 8#define CUDNN_PATCHLEVEL 1--#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)/* cannot use constexpr here since this is a C-only file */ |
1.6 1.6 安装anacoda
https://www.anaconda.com/products/distribution
1 | wget https://repo.anaconda.com/archive/Anaconda3-2023.03-Linux-x86_64.sh |
安装
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | chmod +x Anaconda3-2023.03-Linux-x86_64.sh./Anaconda3-2023.03-Linux-x86_64.shWelcome to Anaconda3 py310_2023.03-0In order to continue the installation process, please review the licenseagreement.Please, press ENTER to continue# 按下回车Anaconda3 will now be installed into this location:/root/anaconda3 - Press ENTER to confirm the location - Press CTRL-C to abort the installation - Or specify a different location below[/root/anaconda3] >>>PREFIX=/root/anaconda3# 最终完成installation finished.Do you wish the installer to initialize Anaconda3by running conda init? [yes|no][no] >>> yesno change /root/anaconda3/condabin/condano change /root/anaconda3/bin/condano change /root/anaconda3/bin/conda-envno change /root/anaconda3/bin/activateno change /root/anaconda3/bin/deactivateno change /root/anaconda3/etc/profile.d/conda.shno change /root/anaconda3/etc/fish/conf.d/conda.fishno change /root/anaconda3/shell/condabin/Conda.psm1no change /root/anaconda3/shell/condabin/conda-hook.ps1no change /root/anaconda3/lib/python3.10/site-packages/xontrib/conda.xshno change /root/anaconda3/etc/profile.d/conda.cshmodified /root/.bashrc==> For changes to take effect, close and re-open your current shell. If you'd prefer that conda's base environment not be activated on startup, set the auto_activate_base parameter to false:conda config --set auto_activate_base falseThank you for installing Anaconda3! |
验证Python3版本
12 | python3 -VPython 3.10.6 |
利用conda创建python3.10环境
1 | conda create -n pytorch python=3.10.0 |
激活环境
1 | conda activate pytorch |
下载并安装pytorch2
1 | conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia |
验证
1234 | python3#进入python3提示符后import torchtorch.cuda.is_available() |
管理anacoda
1234 | # 取消deactivate env name# 移除环境conda remove -n env name --all |
1.7 1.7 Jupter Lab
安装Jupter lab
1234 | # 激活环境conda activate pytorch# 安装jupyterlabpip3 install jupyterlab |
生成配置文件
12 | jupyter-lab --generate-configWriting default config to: /root/.jupyter/jupyter_lab_config.py |
设置密码【后续可以通过token或者密码登录】
1234 | jupyter-lab passwordEnter password:Verify password:[JupyterPasswordApp] Wrote hashed password to /root/.jupyter/jupyter_server_config.json |
开启服务【如果是root用户启动,必须添加--allow-root
参数】
123 | # 如果没有激活环境,先确保激活环境conda activate pytorchjupyter-lab --ip 0.0.0.0 --port 8888 --no-browser --allow-root |
输入远程地址,访问
最终界面【2022年4月21日界面】
1.7.1 1.7.1 固定WSL2IP地址脚本
如果是直接本机访问,可忽略此步骤
如果不在内网访问,需要通过固定地址访问或者通过外网固定IP访问单位服务器,可参考以下步骤
1234567891011121314151617181920212223242526272829 | @echo offsetlocal enabledelayedexpansion::先停掉可能在跑的wsl实例wsl --shutdown ubuntuif !errorlevel! equ 0 ( ::检查WSL有没有我需要的IP wsl -u root ip addr | findstr "192.168.3.100" > nul if !errorlevel! equ 0 ( echo wsl ip has set ) else ( ::IP不存在则绑定IP wsl -u root ip addr add 192.168.3.100/24 broadcast 192.168.3.255 dev eth0 label eth0:1 echo set wsl ip success: 192.168.3.100 ) ::检查宿主机有没有我需要的IP ipconfig | findstr "192.168.3.200" > nul if !errorlevel! equ 0 ( echo windows ip has set ) else ( ::IP不存在则绑定IP netsh interface ip add address "vEthernet (WSL)" 192.168.3.200 255.255.255.0 echo set windows ip success: 192.168.3.200 )) ::为主机设置SSH转发端口 netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=192.168.3.100 connectport=22 netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8888 connectaddress=192.168.3.100 connectport=8888pause |
启动Jupter Lab
123 | # 如果没有激活环境,先确保激活环境conda activate pytorchjupyter-lab --ip 0.0.0.0 --port 8888 --no-browser --allow-root |
1.7.2 1.7.2 防火墙问题
如果不关闭Win11 防火墙需要新建入站规则