最近身边好多朋友跟我吐槽,说想在Windows上跑个AI模型,结果光是环境配置就把人折腾疯了。今天咱们就来聊一个能彻底解决这个痛点的工具——WSL2。我知道你在这块儿特别有经验,先给大家说说,为什么AI开发者几乎绑定了Linux?
对,这个问题其实特别现实。你看PyTorch、TensorFlow、JAX这些主流框架,底层大量依赖Linux特有的系统调用。举个最简单的例子,PyTorch训练模型时那个数据加载器DataLoader,它的多进程加速依赖Linux的fork()调用,Windows上要么不支持要么性能打折。还有像Hugging Face、vLLM、DeepSpeed这些新兴工具,基本都是Linux优先开发的,Windows版本经常滞后好几个月,有的干脆就没有。
所以很多人就面临一个选择——要么装双系统,要么搞虚拟机,但这两个方案都挺折腾的。
没错,双系统你每次切换得重启电脑,虚拟机又吃资源。WSL2就是微软给出的第三条路,而且说实话是最优雅的一条路。它本质上是在Windows里跑了一个轻量级虚拟机,里面运行的是真正的Linux内核。注意啊,是真正的Linux 5.x内核,不是模拟的。
这里我想追问一下,因为WSL其实有两个版本。WSL1和WSL2的区别到底在哪?
嗯,这个区别还挺关键的。WSL1你可以理解为一个翻译器,它把Linux的系统调用实时翻译成Windows能理解的调用。听起来很聪明对吧?但问题是翻译总有翻不了的东西,比如Docker就跑不起来,因为它需要完整的Linux内核。WSL2就不一样了,2019年发布的,直接在Hyper-V虚拟化层上跑了一个完整的Linux内核,文件系统性能比WSL1提升了20倍以上。这也是为什么Docker Desktop后来直接选择基于WSL2来运行。
20倍,这个提升确实夸张。那咱们就进入正题,怎么从零开始装WSL2?先说说系统要求吧。
系统要求不高,Windows 10版本2004以上或者Windows 11就行,基本上现在大家的电脑都满足。磁盘空间的话建议非系统盘预留10个G以上,后面我们会讲为什么要迁移到非系统盘。整个安装流程分三大步:第一步开启Windows底层功能,第二步装WSL2内核和Ubuntu,第三步把它从C盘搬到D盘。
好,那第一步怎么操作?
首先打开PowerShell,一定要用管理员身份运行,这点很重要。然后执行两条DISM命令,一条开启Linux子系统支持,一条开启虚拟机平台。这两个功能各有分工——前者提供WSL的基础框架,后者启用轻量级虚拟化能力,是WSL2跑真实内核的前提。这里有个大家常问的问题:开了虚拟机平台会不会影响VMware或VirtualBox?答案是不会,较新版本都已经兼容了。执行完之后重启一下电脑就行。
重启之后进入第二步?
对,重启之后再打开PowerShell,先执行wsl --update更新内核。这一步要从网上下载,可能需要十到二十分钟,耐心等一下。下载完之后执行wsl --set-default-version 2,把默认版本设成WSL2。然后就是选Linux发行版了,执行wsl --list --online能看到一堆Ubuntu版本。
版本选择这块儿我觉得挺有讲究的,你推荐哪个?
我强烈推荐Ubuntu 22.04。你看它是2022年4月发布的LTS长期支持版,维护期到2027年。最关键的是,CUDA的官方安装包、conda-forge的预编译库、各种AI项目的测试环境,基本都以22.04为基准。26.04太新了,底层依赖可能有兼容性坑;24.04也行但生态成熟度差一截。选太新的版本可能遇到glibc版本不匹配、Python版本冲突这种隐蔽问题,排查起来能让你怀疑人生。
哈哈,怀疑人生这个我太有体会了。装好Ubuntu之后就能用了吗?
技术上是能用了,但还有一个关键步骤——迁移到非系统盘。默认WSL2把所有东西装在C盘,它实际上是一个ext4格式的虚拟硬盘文件。你想想,装个Python环境、下几个预训练模型、存点数据集,这个文件分分钟膨胀到几十上百GB,C盘根本扛不住。
这个确实是个大问题。迁移的过程复杂吗?
其实不复杂,就是导出再导入。先执行wsl --shutdown把服务关掉,然后用wsl --export把当前系统导出成一个tar包到D盘,大概1个G左右。接着用wsl --unregister卸载C盘的版本,最后用wsl --import从tar包导入到D盘的指定目录。整个过程几分钟搞定,所有软件、配置、用户数据都完整保留。
听起来就像搬家打包一样,把东西装箱子搬过去再拆开。不过迁移完之后是不是还有些善后工作?
你说到点子上了。迁移完重新进WSL,你会发现默认变成root用户登录了。这时候需要用adduser创建一个普通用户,再用usermod给它加上sudo权限。最后编辑一下/etc/wsl.conf这个配置文件,把默认用户设成你创建的那个。改完之后一定要执行wsl --shutdown再重新进入,不然不生效。
好,到这里基本就装完了。日常使用的话怎么启动?
三种方式随你选:开始菜单点Ubuntu图标、在命令行里敲wsl回车、或者在Windows Terminal里选Ubuntu标签页。进去的都是同一个环境,看个人习惯。
最后我特别想聊一下GPU和Docker的支持,因为这对AI开发者来说太重要了。
这其实是WSL2最让人兴奋的地方。NVIDIA的GPU驱动可以直接穿透到WSL2内部,你不需要在Linux里单独装GPU驱动,只要Windows这边装了最新的NVIDIA驱动就行。也就是说你在WSL2里可以直接跑CUDA程序、训练模型,性能接近原生Linux。Docker也一样,Docker Desktop开启WSL2后端之后,容器直接跑在Linux内核上,没有额外的性能损耗。搞AI的同学用NGC容器部署推理服务,体验非常丝滑。
所以总结一下,WSL2启动快——两秒以内,资源占用低,GPU直通,Docker原生支持,还能在Windows资源管理器里直接访问Linux文件。对于不想折腾双系统又需要Linux环境的AI开发者来说,这基本就是最优解了。
对,而且装完之后你就拥有了一个完整的Linux开发环境,PyTorch、TensorFlow、CUDA这些随便装,跟用原生Linux几乎没区别。整个安装过程半小时到一小时就能搞定,比起折腾双系统或者在Windows上硬装各种框架,性价比高太多了。