Optimizing WSL2 for High-Efficiency Data Downloads and AI Model Training
Discover how to optimize WSL2 to achieve peak performance in data download speeds and model training times. Learn about configuring DNS tunneling, mirrored networking, and automatic proxy settings to seamlessly integrate WSL2 with Windows proxy settings. This guide will help you enhance productivity in AI research and development, particularly for deep learning workflows in a dual-system environment.
SETTING
Tim-Lin
10/5/20241 min read
在深度学习项目中,高效的数据下载与快速的模型训练是关键。本文将结合实验结果,介绍如何在 WSL2 环境下优化网络访问配置,以便在 WSL2 中顺畅地下载数据并加速模型训练,同时不影响 Windows 的其他网络应用


实验结果:数据下载速度与模型训练时间对比
我们以 `torchvision` 的 CIFAR-10 数据集为例,测试不同网络配置下的下载速度,以及 GPU 模式下模型训练时间。结果如下:




从结果来看,最佳方案是“Windows 开启浏览器全局代理并设置 WSL DNS 隧道代理”,这种配置不仅在下载速度上最优,还能在 WSL2 中极大地缩短训练时间。
配置最佳实践:Windows 开启浏览器全局代理 + WSL DNS 隧道代理
为了实现最优配置,我们可以按以下步骤设置 Windows 全局代理和 WSL 的 DNS 隧道代理,让 WSL2 自动应用代理信息,而无需手动设置 `http_proxy` 和 `https_proxy`。这不仅提升了效率,还避免了频繁手动切换网络配置。
1. 移除 .bashrc 中的代理设置
打开 .bashrc 文件,移除已有的 http_proxy 和 https_proxy 配置,以免重复配置代理:
注释掉 `http_proxy` 和 `https_proxy` 配置后,关闭 WSL:
2. 创建或编辑 .wslconfig 文件
在 Windows 主机的用户主目录下(如 C:\Users\你的用户名),创建或编辑 .wslconfig 文件,加入以下配置:
其中,关键设置项为:
- networkingMode=mirrored:启用镜像网络模式,使 Windows 和 WSL2 VM 之间可以互通。
- dnsTunneling=true:开启 DNS 隧道以增强 WSL2 在 VPN 和复杂网络环境下的兼容性。
- autoProxy=true:让 WSL2 自动使用 Windows 中的 HTTP 代理设置,而无需手动配置。
该设置方法基于 [Microsoft 官方文档](https://learn.microsoft.com/zh-cn/windows/wsl/networking) 和 [CSDN 文章](https://blog.csdn.net/iftodayhappy/article/details/137236279) 中的指南,能够有效优化网络性能。
3. 重启 WSL 并验证
完成配置后,关闭并重新启动 WSL:
重新进入 WSL 后,运行以下命令以检查代理是否正常:
如能快速访问,则说明代理已自动启用。
方案优势
- 双平台兼容性:此配置允许 WSL2 使用 Windows 的代理设置,同时不影响 Windows 系统的其他应用。无论是在 WSL2 的 VS Code、Jupyter Notebook,还是 Windows 本地浏览器中,都能顺畅地访问网络。
- 最佳下载速度:相比手动设置代理,此方案在下载和模型训练方面速度最优,同时操作简便。
- 自动代理:WSL2 可以自动获取 Windows 中的代理设置,无需手动在 WSL 中配置,便于灵活切换网络环境。
总结
通过设置 Windows 浏览器全局代理 和 WSL DNS 隧道代理,可以在深度学习工作流中实现更高效的数据下载与模型训练。此方案兼具灵活性和性能,是 WSL2 用户的最佳实践选择。