1. WSL2环境准备与Ubuntu22.04安装
想在Windows系统里玩转深度学习?WSL2绝对是你的最佳拍档。我去年接手一个图像识别项目时,第一次尝试在WSL2上搭建环境,实测下来比双系统切换方便太多。下面这些步骤都是我踩过坑后总结的精华版。
首先得确保你的Windows版本够新。建议升级到Win10 21H2或Win11,否则会遇到各种兼容性问题。我有个同事在1909版本折腾了半天,最后发现根本装不上CUDA驱动,白白浪费一整天。
关键步骤:
- 用管理员权限打开PowerShell,执行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart这个命令会启用虚拟机平台功能,重启后生效。记得一定要用管理员权限,我有次忘记加权限,报错信息看得一头雾水。
去微软官网下载WSL2内核更新包,直接双击安装。最新版下载地址可能会变,建议直接搜"WSL2 Linux kernel update"。
设置WSL2为默认版本:
wsl --set-default-version 2安装Ubuntu22.04最省心的方式是从Microsoft Store直接下载。我试过手动导入镜像,结果显卡驱动死活识别不出来。安装完成后首次启动会提示创建用户,这里有个坑:密码输入时是不显示字符的,别以为是键盘坏了。
验证安装是否成功:
wsl -l -v看到VERSION显示为2就对了。如果显示1,需要先注销再重新安装:
wsl --unregister Ubuntu-22.042. GPU驱动与CUDA工具包配置
很多人不知道WSL2有个神奇的特性:直接使用Windows的NVIDIA驱动!这意味着你不需要在Ubuntu里再装一遍驱动。第一次知道这个特性时我简直感动哭了,再也不用担心驱动冲突问题。
验证GPU识别:
nvidia-smi如果报错,八成是Windows驱动没装好。去NVIDIA官网下载最新Game Ready驱动,注意要选WSL支持的版本。我上个月帮学弟排查问题时发现,他的RTX3060必须装515版本以上的驱动才行。
CUDA安装要特别注意版本匹配。目前主流选择是CUDA 12.1,兼容性最好。千万别直接apt install,官方仓库的版本通常很旧。我推荐的手动安装方法:
- 先装编译工具链:
sudo apt update sudo apt install build-essential- 从NVIDIA官网下载runfile安装包:
wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run sudo sh cuda_12.1.1_530.30.02_linux.run安装时有个关键选项:当询问是否安装驱动时一定要选No!其他保持默认即可。我有次手快全选了,结果把WSL的驱动环境搞崩了,只能重装系统。
配置环境变量是另一个容易翻车的环节。建议直接修改.bashrc而不是.profile,因为WSL的登录方式比较特殊:
echo 'export PATH=/usr/local/cuda-12.1/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc验证安装:
nvcc -V看到版本信息就说明成功了。如果提示命令不存在,八成是PATH没配置对,可以用which nvcc检查路径。
3. cuDNN深度优化配置
cuDNN是深度学习加速的关键,但安装过程比CUDA复杂得多。去年参加Kaggle比赛时,我因为cuDNN版本不匹配导致模型训练速度慢了40%,血泪教训啊!
精准安装步骤:
先去NVIDIA官网下载cuDNN,注意必须和CUDA版本严格匹配。CUDA 12.1对应cuDNN 8.9.x系列。需要注册开发者账号才能下载,建议用公司邮箱注册,个人邮箱有时会被拦截。
下载deb包后,在Windows资源管理器地址栏输入
\\wsl$,把文件拖到Ubuntu的家目录。我最初尝试用scp传输,结果权限问题折腾了半天。安装核心库:
sudo dpkg -i cudnn-local-repo-ubuntu2204-8.9.7.29_1.0-1_amd64.deb- 复制密钥文件(注意路径可能不同):
sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/- 更新并安装:
sudo apt update sudo apt install libcudnn8-dev libcudnn8-samples验证安装是否成功:
cat /usr/include/cudnn_version.h | grep CUDNN_应该能看到类似#define CUDNN_MAJOR 8的版本信息。
最靠谱的测试方法是编译官方示例:
cp -r /usr/src/cudnn_samples_v8/ ~ cd ~/cudnn_samples_v8/conv_sample make clean && make ./conv_sample如果看到"Test passed!",恭喜你!我第一次跑通这个测试时,模型训练速度直接提升了3倍。
4. 深度学习框架实战配置
环境搭好了,总得跑个模型试试吧?这里分享几个主流框架的配置技巧。
PyTorch安装:
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia注意这个pytorch-cuda=12.1参数,它能确保安装的PyTorch版本和你的CUDA完美匹配。我之前漏了这个参数,结果torch.cuda.is_available()一直返回False。
验证PyTorch的GPU支持:
import torch print(torch.cuda.is_available()) # 应该输出True print(torch.rand(10,10).cuda()) # 应该显示在GPU上的张量TensorFlow安装:
pip install tensorflow[and-cuda]新版的TensorFlow打包了CUDA依赖,比老版本省心很多。不过要注意python版本兼容性,TF 2.10+需要Python 3.8-3.10。
验证TensorFlow:
import tensorflow as tf print(tf.config.list_physical_devices('GPU')) # 应该显示GPU信息性能优化技巧:
- 在~/.bashrc添加:
export TF_FORCE_GPU_ALLOW_GROWTH=true这个参数可以防止TensorFlow占满所有显存,特别适合调试时使用。我在开发CV模型时,因为这个参数少重启了无数次jupyter kernel。
- 对于PyTorch,建议设置:
torch.backends.cudnn.benchmark = True这个选项会让cuDNN自动寻找最优算法,训练速度能提升10-15%。不过如果输入尺寸经常变化,反而会降低性能。
- 监控GPU使用情况:
watch -n 1 nvidia-smi这个命令每秒刷新一次GPU状态,调试时特别有用。有次我发现GPU利用率忽高忽低,原来是数据加载没开多线程。