You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置带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服务,操作如下:

  1. 在WSL Ubuntu里安装OpenSSH服务器
    打开WSL终端,执行:
    sudo apt update && sudo apt install openssh-server -y
    
  2. 修改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
  3. 重启SSH服务并设置开机自启
    sudo service ssh restart
    sudo systemctl enable ssh
    
  4. 配置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并上传训练文件

现在你可以用无GPU的笔记本连接到带GPU的WSL服务器了:

  1. 远程SSH登录
    在无GPU笔记本的终端(Windows Terminal、Linux/macOS终端都行)执行:
    ssh 你的WSL用户名@带GPU笔记本的局域网IP -p 22
    
    输入WSL用户的密码就能登录(如果改了SSH端口,把-p后面的数字换成你的端口)
  2. 上传更新的.yaml和C#脚本
    用SCP命令最方便,在无GPU笔记本的终端执行:
    # 上传单个文件示例:把本地的config.yaml传到WSL的Unity项目config文件夹
    scp -P 22 ./config.yaml username@192.168.1.100:/home/username/UnityRaceCarProject/config/
    
    要是有多个文件,也可以用SFTP工具(比如FileZilla)可视化上传,操作更直观。

第四步:远程运行Unity ML-Agents训练(核心技巧)

登录WSL后,进入你的Unity项目目录,就能像本地一样执行训练命令:

mlagents-learn --run-id=April9_remote_run

但要注意:直接运行的话,断开SSH连接训练就会中断!所以咱们用tmux让训练在后台持续运行:

  1. 在WSL里安装tmux
    sudo apt install tmux -y
    
  2. 启动tmux会话并运行训练
    # 创建一个名为ml_training的会话
    tmux new -s ml_training
    # 进入会话后,执行训练命令
    mlagents-learn --run-id=April9_remote_run
    
  3. 脱离tmux会话(不中断训练)
    Ctrl+B,再按D,就能回到普通SSH终端,此时训练会在后台持续运行,就算断开SSH也不会停止。
  4. 重新连接tmux会话查看训练状态
    下次登录WSL后,执行:
    tmux attach -t ml_training
    
    就能回到训练的终端界面,查看日志和训练进度。

额外小提示

  • 要是WSL的IP经常变化,你可以给WSL设置静态IP,或者写个Windows脚本让它开机自动更新端口转发,省得每次手动修改。
  • 密钥登录比密码登录更安全,长期使用的话,可以在无GPU笔记本生成密钥对,把公钥传到WSL的~/.ssh/authorized_keys文件里,然后把SSH配置里的PasswordAuthentication改回no即可。

备注:内容来源于stack exchange,提问作者mLstudent33

火山引擎 最新活动