基于 WSL2+Docker 的一种深度学习环境解决方案
目的与方案 进行深度学习相关的开发,使用基于 Linux 的环境是大多数人的首选。然而大多数同学往往没有独立的 Linux 服务器;公用 Linux 服务器常常受限于权限等问题,不适合做个性化的配置,适合做验证后的大模型训练(或许);如果用个人主机装双系统,还得再费精力去维护一个工作用的 Linux 环境(浏览器、文档、网络、笔记软件、通讯软件,想想都已经头大了),而且切换系统还需要重启;如果用虚拟机,性能损耗是没法避免的,想要在虚拟机中支持 CUDA 那更是复杂。 除此之外,深度学习的各种环境配置有多头疼就不必多说了,cuDNN、TF、PyTorch 版本匹配,每一次 install 之前还要检查“换源了吗”,如果想要多版本共存那苦恼又多了一分。 以下,介绍一种 WSL2+Docker 方案,不仅解决以上痛点,还具有以下特性: 用 Windows 平台下的 WSL2 子系统实现环境隔离:Linux 生产环境与 Windows 学习环境隔离 子系统与宿主机的通信可以通过网络端口映射、文件磁盘链接形式进行(所以 Jupyter Notebook、FTP、SSH 之类的都完美支持),不过默认不带图形界面(一些可视化结果考虑离线渲染查看吧) 注意 WSL2 的 CUDA 支持推出时间并不久,但好在目前用下来没有什么大 bug 用 Docker 实现深度学习环境一键配置(是真的一键),同时本次使用的 Deepo 包支持 LEGO 式的自定义模块 Docker 环境的备份、迁移非常方便,复制粘贴就能搭建一套完全一样的环境,适合 teamwork 整体架构(感觉是最近画得最漂亮的图了) 看起来很套娃,但实际配置起来发现相当顺滑,而且层层隔离让人心情舒畅。总之,核心思路就在这张图里了,如果还想看下配置过程中的踩坑记录还可以继续往下滑。 显卡驱动 非常简单,在 NVIDIA 官网 找到对应自己显卡的最新驱动即可。注意这是整个方案唯一需要安装的驱动程序,不要在 WSL 或者 Docker 中再配置驱动了。 NVIDIA 官网 WSL WSL 是一种 Windows 下的 Linux 子系统,新版本 WSL2 主要是提升了文件系统性能。具体安装步骤参考 微软官方文档。首先使用wsl --install安装 WSL 所需的所有组件,重启,然后在 Microsoft Store 中搜索需要的 Linux 发行版(如 Ubuntu 18....