外观
系统与远程开发
多数 AI 实验最终运行在 Linux 服务器上。推荐把本地电脑当作编辑与观察端,把代码、环境和长任务留在服务器;连接、同步和恢复都应能用明确命令完成。
Linux
先掌握文件、进程、权限和磁盘,而不是背完整命令表。
| 任务 | 命令 |
|---|---|
| 查看目录 | pwd、ls -lah |
| 查找文件 | find . -name '*.json' 或 fd json |
| 搜索内容 | rg 'learning_rate' . |
| 查看进程 | ps aux、top、htop |
| 查看 GPU | nvidia-smi |
| 查看磁盘 | df -h、du -sh * |
| 查看端口 | ss -lntp |
| 查看日志 | tail -f logs/train.log |
| 修改权限 | chmod u+x scripts/train.sh |
删除、覆盖和递归修改权限前先确认当前目录。rm -rf、chmod -R 和以 root 身份运行安装脚本都应被视为高风险操作。项目依赖优先装进虚拟环境,不要随意修改系统 Python。
Windows Subsystem for Linux
WSL 适合 Windows 用户获得 Linux Shell、包管理和开发工具。项目最好放在 Linux 文件系统(如 ~/projects)而不是 /mnt/c/...:大量小文件、权限和符号链接通常更稳定,编辑器再通过 WSL 扩展进入该目录。
powershell
wsl --install
wsl --list --verbose
wsl --shutdownWSL 与 Windows 是两个环境:Node、Python、Git 和 SSH 密钥装在哪一侧,就由哪一侧的进程使用。排查“命令明明安装了却找不到”时,先执行 which python、which git 和 echo $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 检查。
一套稳定的远程工作流
- 代码通过 Git 获取和审查,不靠手工覆盖目录。
- 数据与权重通过对象存储、Hub 或
rsync管理。 - 用 SSH 连接,用 tmux 或 Herdr 保持长任务。
- 服务只监听远端回环地址,再通过 SSH 隧道访问。
- 重要结果回传并保留校验值,服务器临时磁盘不作为唯一副本。