如何配置带GPU的Windows 11笔记本为可远程操控的WSL2服务器,实现远程训练神经网络(含Unity ML-Agents)
如何配置带GPU的Windows 11笔记本为可远程操控的WSL2服务器,实现远程训练神经网络(含Unity ML-Agents)
看你的需求,就是想把带GPU的Win11笔记本当成「远程训练服务器」,用另一台无GPU的笔记本远程连接上去跑Unity ML-Agents的训练对吧?刚好你已经在用WSL2 Ubuntu 22.04本地跑训练了,那咱们一步步把远程配置搞定:
第一步:确认WSL2的GPU支持正常(打牢基础)
既然你本地已经能跑mlagents-learn,GPU大概率是正常工作的,但还是快速确认下更稳妥:
- 在WSL终端运行
nvidia-smi,如果能看到GPU型号、显存使用和CUDA版本信息,说明GPU配置没问题;如果不行,记得在Windows 11上安装支持WSL2的NVIDIA驱动(不用在WSL里单独装驱动,Win11的驱动会直接共享给WSL),然后重启WSL即可。
第二步:配置WSL2的SSH远程访问核心
要远程连接WSL,最可靠的方式是搭建SSH服务,操作如下:
- 在WSL Ubuntu里安装OpenSSH服务器
打开WSL终端,执行:sudo apt update && sudo apt install openssh-server -y - 修改SSH配置允许远程登录
编辑SSH配置文件:
找到以下选项并调整:sudo nano /etc/ssh/sshd_config- 把
PasswordAuthentication no改成PasswordAuthentication yes(如果嫌密钥登录麻烦,先用密码登录;追求安全的话后面可以再换密钥) - 确保
Port 22没有被注释(也可以改成其他端口比如2222,避免和Windows本身的SSH服务冲突) - 把
PermitRootLogin prohibit-password改成PermitRootLogin no(禁用root远程登录,提升安全性)
保存退出:按Ctrl+O→回车→Ctrl+X
- 把
- 重启SSH服务并设置开机自启
sudo service ssh restart sudo systemctl enable ssh - 配置Windows端口转发(关键!让外部设备能访问WSL)
WSL2的IP是动态的,每次重启可能变化,咱们先固定端口转发:- 先在WSL里查自己的IP:
hostname -I,记下这个地址(比如172.18.0.2) - 打开Windows管理员权限的PowerShell,执行以下命令(把
WSL_IP换成你查到的地址,端口换成你刚才在SSH里设置的,比如22):netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=22 connectaddress=WSL_IP - 最后允许这个端口通过Windows防火墙:打开「Windows Defender防火墙」→「高级设置」→「入站规则」→「新建规则」→选择「端口」→TCP→指定端口(比如22)→允许连接→勾选所有网络类型→命名为「WSL SSH」即可。
- 先在WSL里查自己的IP:
第三步:远程连接WSL并上传训练文件
现在你可以用无GPU的笔记本连接到带GPU的WSL服务器了:
- 远程SSH登录
在无GPU笔记本的终端(Windows Terminal、Linux/macOS终端都行)执行:
输入WSL用户的密码就能登录(如果改了SSH端口,把ssh 你的WSL用户名@带GPU笔记本的局域网IP -p 22-p后面的数字换成你的端口) - 上传更新的.yaml和C#脚本
用SCP命令最方便,在无GPU笔记本的终端执行:
要是有多个文件,也可以用SFTP工具(比如FileZilla)可视化上传,操作更直观。# 上传单个文件示例:把本地的config.yaml传到WSL的Unity项目config文件夹 scp -P 22 ./config.yaml username@192.168.1.100:/home/username/UnityRaceCarProject/config/
第四步:远程运行Unity ML-Agents训练(核心技巧)
登录WSL后,进入你的Unity项目目录,就能像本地一样执行训练命令:
mlagents-learn --run-id=April9_remote_run
但要注意:直接运行的话,断开SSH连接训练就会中断!所以咱们用tmux让训练在后台持续运行:
- 在WSL里安装tmux
sudo apt install tmux -y - 启动tmux会话并运行训练
# 创建一个名为ml_training的会话 tmux new -s ml_training # 进入会话后,执行训练命令 mlagents-learn --run-id=April9_remote_run - 脱离tmux会话(不中断训练)
按Ctrl+B,再按D,就能回到普通SSH终端,此时训练会在后台持续运行,就算断开SSH也不会停止。 - 重新连接tmux会话查看训练状态
下次登录WSL后,执行:
就能回到训练的终端界面,查看日志和训练进度。tmux attach -t ml_training
额外小提示
- 要是WSL的IP经常变化,你可以给WSL设置静态IP,或者写个Windows脚本让它开机自动更新端口转发,省得每次手动修改。
- 密钥登录比密码登录更安全,长期使用的话,可以在无GPU笔记本生成密钥对,把公钥传到WSL的
~/.ssh/authorized_keys文件里,然后把SSH配置里的PasswordAuthentication改回no即可。
备注:内容来源于stack exchange,提问作者mLstudent33




