1. 为什么选择WSL2+Ubuntu20.04做AI开发?

如果你正在Windows系统上学习深度学习或进行AI项目开发,可能会遇到各种环境配置的麻烦。Python版本冲突、CUDA驱动安装失败、Linux特有工具无法使用等问题常常让人头疼。而WSL2(Windows Subsystem for Linux)提供了一个完美的解决方案——它让你能在Windows 11上运行原生的Linux环境,同时保持与Windows系统的无缝集成。

我最初接触WSL2是因为需要在本地调试一些只在Linux服务器上运行的代码。传统虚拟机太笨重,双系统切换又太麻烦。实测下来,WSL2的性能接近原生Linux,特别是文件系统性能比早期的WSL1提升明显。搭配Ubuntu20.04这个长期支持版本(LTS),系统稳定性也有保障。

对于AI开发来说,这个组合有三大优势:

  1. GPU加速支持:WSL2可以直接调用Windows安装的NVIDIA显卡驱动,无需在Linux中重复安装
  2. 内存效率高:相比虚拟机,WSL2内存占用更少,我的16GB内存笔记本同时开PyTorch训练和浏览器查资料毫无压力
  3. 开发体验好:VSCode的WSL插件让你能在Windows下用熟悉的编辑器操作Linux文件

2. 准备工作:开启虚拟化与安装WSL2

2.1 检查并开启CPU虚拟化

WSL2需要CPU虚拟化技术支持,大多数现代CPU都支持这个功能,但可能默认关闭。我遇到过好几次新手因为没开这个选项导致安装失败的情况。

检查方法很简单:

  1. 打开任务管理器(Ctrl+Shift+Esc)
  2. 切换到"性能"标签页
  3. 查看右下角"虚拟化"状态

如果显示"已禁用",就需要进入BIOS开启。不同主板的进入方式略有差异:

  • 常见品牌机:开机时按F2或Del键
  • 联想笔记本:可能需要按Fn+F2组合键
  • 华硕主板:通常按F2或Del

进入BIOS后,找到类似"Intel Virtualization Technology"(Intel CPU)或"SVM Mode"(AMD CPU)的选项,将其设置为Enabled。保存退出后,再次检查任务管理器确认已启用。

2.2 安装WSL2核心组件

Windows 11虽然默认支持WSL,但还需要安装两个关键组件:

  1. 适用于Linux的Windows子系统
  2. 虚拟机平台

安装方法:

# 以管理员身份打开PowerShell
wsl --install

这个命令会自动安装所需组件。如果你想手动安装,可以:

  1. 搜索"启用或关闭Windows功能"
  2. 勾选上述两个选项
  3. 重启电脑

安装完成后,建议将WSL2设为默认版本:

wsl --set-default-version 2

3. 安装Ubuntu20.04 LTS

3.1 从微软商店获取Ubuntu

不同于传统Linux安装,WSL下的Ubuntu安装简单得像下载一个APP:

  1. 打开Microsoft Store
  2. 搜索"Ubuntu 20.04 LTS"
  3. 点击获取(完全免费)

安装完成后,第一次启动会提示设置用户名和密码。这里有个小坑:密码输入时不会显示字符,这是Linux终端的正常行为,不是卡住了,正常输入后回车即可。

如果误关了初始设置窗口,再次打开可能会直接进入root用户。这时可以手动创建新用户:

adduser yourname
usermod -aG sudo yourname  # 赋予sudo权限

3.2 配置终端环境

Windows Terminal是管理WSL的最佳伴侣,建议从微软商店安装。安装后:

  1. 打开设置 > 添加新配置文件
  2. 选择Ubuntu20.04
  3. 可以自定义配色方案和字体

我习惯将默认启动目录设为用户主目录,这样每次打开都在/home/yourname下工作。配置方法是在设置中追加:

"startingDirectory": "\\\\wsl$\\Ubuntu-20.04\\home\\yourname"

验证WSL版本:

wsl -l -v

如果显示版本为1,需要转换:

wsl --set-version Ubuntu-20.04 2

4. VSCode与WSL2的无缝集成

4.1 安装必要插件

VSCode通过Remote - WSL插件实现了对WSL的完美支持。安装步骤:

  1. 在扩展商店搜索"Remote - WSL"
  2. 安装后左下角会出现绿色远程连接图标
  3. 点击图标选择"连接到WSL"

第一次连接会自动在WSL中安装VSCode服务器组件,这个过程可能需要几分钟。连接成功后,你会在左下角看到"WSL: Ubuntu-20.04"的标识。

4.2 优化开发体验

几个实用技巧:

  • 文件操作:直接在VSCode资源管理器中右键WSL文件,选择"在本地打开",就能用Windows应用编辑
  • 终端集成:Ctrl+`打开的终端直接是WSL环境,无需额外配置
  • 端口转发:WSL中的服务(如Jupyter Notebook)自动映射到Windows的localhost

我习惯在WSL中创建项目目录,然后用VSCode打开:

mkdir ~/projects
code ~/projects

这样所有开发都在Linux环境下进行,但享受Windows的图形界面体验。

5. Anaconda环境配置全攻略

5.1 安装Anaconda

首先更新软件源并安装依赖:

sudo apt update && sudo apt upgrade -y
sudo apt install wget curl git -y

下载Anaconda安装脚本(建议使用国内镜像加速):

wget https://mirrors.bfsu.edu.cn/anaconda/archive/Anaconda3-2022.05-Linux-x86_64.sh

安装过程需要注意:

  1. 按回车阅读许可协议(长按空格快速到底)
  2. 输入yes同意条款
  3. 安装路径建议保持默认
  4. 最后选择"yes"初始化conda

安装完成后,关闭并重新打开终端,你会看到(base)前缀,表示conda基础环境已激活。

5.2 配置国内镜像源

conda和pip默认源在国内可能很慢,更换为国内镜像能大幅提速。

配置conda镜像:

conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/r
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/msys2
conda config --set show_channel_urls yes

配置pip镜像:

pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple

验证配置是否生效:

conda info  # 查看channels
pip config list  # 查看pip源

6. 创建深度学习专用环境

6.1 构建Python虚拟环境

为每个项目创建独立环境是个好习惯,避免包冲突。以《动手学深度学习》环境为例:

conda create -n d2l python=3.9 -y
conda activate d2l

安装基础数据科学套件:

conda install numpy pandas matplotlib scikit-learn -y

6.2 安装PyTorch与GPU支持

首先确认CUDA版本:

nvidia-smi  # 需要先在Windows安装NVIDIA驱动

根据CUDA版本选择PyTorch安装命令(以CUDA 11.6为例):

conda install pytorch torchvision torchaudio cudatoolkit=11.6 -c pytorch -c conda-forge

验证GPU是否可用:

import torch
print(torch.__version__)
print(torch.cuda.is_available())  # 应该返回True
print(torch.version.cuda)  # 显示CUDA版本

如果cuda.is_available()返回False,可能是:

  1. Windows的NVIDIA驱动未安装
  2. WSL2的CUDA支持未开启(需要Windows 11 21H2以上版本)
  3. PyTorch版本与CUDA版本不匹配

6.3 配置Jupyter Notebook

安装Jupyter核心组件:

pip install jupyter notebook

生成配置文件并修改:

jupyter notebook --generate-config
sed -i "s/# c.NotebookApp.token = '<generated>'/c.NotebookApp.token = ''/" ~/.jupyter/jupyter_notebook_config.py

这样启动notebook时就不需要输入token了:

jupyter notebook --ip=0.0.0.0 --no-browser

在VSCode中使用更简单:

  1. 安装Jupyter扩展
  2. 新建.ipynb文件
  3. 右上角选择d2l环境的内核
  4. 直接运行代码单元格

7. 性能优化与实用技巧

7.1 文件系统性能调优

WSL2的Linux文件系统性能比Windows文件系统慢很多,建议:

  1. 将项目代码放在WSL文件系统内(如~/projects)
  2. 大型数据集可以放在Windows分区,通过/mnt/c访问
  3. 避免在Windows资源管理器中直接修改WSL文件

可以通过.wslconfig文件调整资源分配(创建在C:\Users\你的用户名下):

[wsl2]
memory=8GB  # 限制最大内存
processors=4  # 限制CPU核心数
localhostForwarding=true

7.2 常见问题解决

问题1:apt-get update报错"Failed to connect to raw.githubusercontent.com" 解决:这是DNS解析问题,修改WSL的resolv.conf:

sudo rm /etc/resolv.conf
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
sudo bash -c 'echo "[network]" > /etc/wsl.conf'
sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'

问题2:VSCode无法连接到WSL 解决:通常是因为WSL实例没有运行,在PowerShell执行:

wsl -d Ubuntu-20.04

问题3:conda环境在VSCode中不显示 解决:在VSCode中按Ctrl+Shift+P,输入"Select Interpreter",手动选择路径类似:

\\wsl$\Ubuntu-20.04\home\yourname\anaconda3\envs\d2l\bin\python

8. 完整AI开发工作流演示

现在让我们用这个环境跑一个完整的深度学习例子:

  1. 下载《动手学深度学习》代码:
git clone https://github.com/d2l-ai/d2l-zh.git
cd d2l-zh/pytorch
  1. 安装额外依赖:
pip install d2l
  1. 在VSCode中打开chapter_convolutional-neural-networks/lenet.ipynb

  2. 逐单元格运行,你会看到:

  • 数据自动下载到~/.mxnet/datasets
  • 模型训练过程显示实时loss
  • GPU利用率可以通过nvidia-smi查看
  1. 尝试修改超参数(如batch_size、learning_rate)并重新训练

这套环境足够完成大多数深度学习实验。当需要更强大的算力时,你可以将相同的conda环境导出,轻松迁移到云服务器:

conda env export > environment.yml
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐