Skip to content

系统与远程开发

多数 AI 实验最终运行在 Linux 服务器上。推荐把本地电脑当作编辑与观察端,把代码、环境和长任务留在服务器;连接、同步和恢复都应能用明确命令完成。

Linux

先掌握文件、进程、权限和磁盘,而不是背完整命令表。

任务命令
查看目录pwdls -lah
查找文件find . -name '*.json'fd json
搜索内容rg 'learning_rate' .
查看进程ps auxtophtop
查看 GPUnvidia-smi
查看磁盘df -hdu -sh *
查看端口ss -lntp
查看日志tail -f logs/train.log
修改权限chmod u+x scripts/train.sh

删除、覆盖和递归修改权限前先确认当前目录。rm -rfchmod -R 和以 root 身份运行安装脚本都应被视为高风险操作。项目依赖优先装进虚拟环境,不要随意修改系统 Python。

Windows Subsystem for Linux

WSL 适合 Windows 用户获得 Linux Shell、包管理和开发工具。项目最好放在 Linux 文件系统(如 ~/projects)而不是 /mnt/c/...:大量小文件、权限和符号链接通常更稳定,编辑器再通过 WSL 扩展进入该目录。

powershell
wsl --install
wsl --list --verbose
wsl --shutdown

WSL 与 Windows 是两个环境:Node、Python、Git 和 SSH 密钥装在哪一侧,就由哪一侧的进程使用。排查“命令明明安装了却找不到”时,先执行 which pythonwhich gitecho $PATH 确认当前边界。GPU 任务还需核对 Windows 驱动、WSL 版本以及框架提供的验证命令。

SSH

使用密钥而不是长期输入密码:

bash
ssh-keygen -t ed25519 -C "research-laptop"
ssh-copy-id user@gpu.example.edu
ssh user@gpu.example.edu

把常用主机写入 ~/.ssh/config

ssh-config
Host lab-gpu
  HostName gpu.example.edu
  User user
  IdentityFile ~/.ssh/id_ed25519
  ServerAliveInterval 60
  ServerAliveCountMax 3

此后可直接运行 ssh lab-gpu。本地访问远端 Notebook 或服务时使用端口转发:

bash
ssh -L 8888:127.0.0.1:8888 lab-gpu

不要把私钥、密码、Token 写进仓库。首次连接时核对主机指纹;主机密钥异常变化时先向管理员确认,不要直接删除警告继续连接。需要跳板机时,在配置中使用 ProxyJump,比维护层层嵌套的手写命令更容易复现。

rsync 与远程文件传输

scp 适合复制少量文件;rsync 会比较差异,更适合数据目录和反复同步。

bash
# 预览会发生什么
rsync -avhn --exclude checkpoints/ ./ lab-gpu:~/project/

# 确认后执行
rsync -avh --progress --exclude checkpoints/ ./ lab-gpu:~/project/

尾部斜杠有语义:data/ 表示同步目录内容,data 表示同步目录本身。使用 --delete 会删除目标端多余文件,必须先配合 --dry-run 检查。

一套稳定的远程工作流

  1. 代码通过 Git 获取和审查,不靠手工覆盖目录。
  2. 数据与权重通过对象存储、Hub 或 rsync 管理。
  3. 用 SSH 连接,用 tmux 或 Herdr 保持长任务。
  4. 服务只监听远端回环地址,再通过 SSH 隧道访问。
  5. 重要结果回传并保留校验值,服务器临时磁盘不作为唯一副本。

参考:Linux 文档WSL 文档OpenSSH 手册rsync 文档