第一次租 GPU 服务器:AutoDL RTX 4090 + SSH + Codex 远程运行深度学习代码

📅 发布时间:2026/9/30 9:29:20
第一次租 GPU 服务器:AutoDL RTX 4090 + SSH + Codex 远程运行深度学习代码
文章目录1. 租用 AutoDL GPU 服务器2. 项目放到数据盘3. 检查 GPU 环境4. 配置 SSH 公钥5. 配置 SSH Host6. 在本地使用 Codex7. 告诉 Codex 怎么使用 GPU 服务器8. 先测试 Codex 能否调用服务器9. 使用 rsync 同步代码10. 让 Codex 在服务器运行代码11. 使用 tmux 跑长时间实验12. 下载实验结果13. Codex 实际工作方式14. 一些常用命令登录服务器查看 GPU查看 Python查看 PyTorch查看项目目录同步代码运行训练查看 tmux查看训练日志15. 公开文章中的信息脱敏16. 当前目录结构示例最近做深度学习实验时需要 GPU 算力因此第一次在 AutoDL 租了一台 RTX 4090 服务器。这篇记录一下从租服务器、上传数据、配置 SSH到最后让本地 Codex 通过 SSH 控制远程服务器运行代码的完整过程。最终使用方式如下本地 Linux ├── Codex ├── Git ├── 项目源码 │ ├── SSH └── rsync ↓ AutoDL GPU服务器 ├── RTX 4090 ├── Python / PyTorch / CUDA ├── 数据集 ├── 代码运行副本 ├── checkpoints ├── logs └── results1. 租用 AutoDL GPU 服务器我的任务主要是普通深度学习和多模态模型训练因此租了一台单卡 RTX 4090。配置大致如下GPURTX 4090 24GB ×1 CPU十几核 内存百GB级 系统盘几十GB 数据盘几十GB Ubuntu 22.04 Python 3.10 PyTorch 2.1.x CUDA 12.1创建实例以后AutoDL 会提供 SSH 地址、端口和 root 密码。连接格式一般是ssh-pSSH_PORTrootSERVER_HOST第一次连接时会看到Are you sure you want to continue connecting (yes/no/[fingerprint])?确认服务器信息后输入yes再输入 root 密码即可进入服务器。2. 项目放到数据盘AutoDL 的高速数据盘一般位于/root/autodl-tmp我把项目放在/root/autodl-tmp/my_project目录结构类似/root/autodl-tmp/my_project/ ├── data/ ├── code/ ├── checkpoints/ ├── logs/ ├── results/ └── artifacts/数据、模型权重、训练日志和实验结果都放在这个目录下面。3. 检查 GPU 环境进入服务器后先执行nvidia-smi可以看到显卡型号、显存、驱动等信息。例如NVIDIA GeForce RTX 4090 24564 MiB检查 Python/root/miniconda3/bin/python--version检查 PyTorch 和 CUDA/root/miniconda3/bin/python-c import torch print(PyTorch:, torch.__version__) print(CUDA:, torch.version.cuda) print(CUDA available:, torch.cuda.is_available()) print(GPU:, torch.cuda.get_device_name(0)) 我的环境能够正常输出PyTorch: 2.1.xcu121 CUDA: 12.1 CUDA available: True GPU: NVIDIA GeForce RTX 4090后续运行 Python 时我统一显式使用/root/miniconda3/bin/python例如/root/miniconda3/bin/python train.py4. 配置 SSH 公钥为了让本地 Codex 能直接执行远程命令我给这台 GPU 服务器单独生成了一套 SSH Key。在本地 Linux 执行ssh-keygen-ted25519-f~/.ssh/gpu_server生成~/.ssh/gpu_server ~/.ssh/gpu_server.pub其中gpu_server是私钥gpu_server.pub是公钥。把公钥加入服务器cat~/.ssh/gpu_server.pub|\ssh-pSSH_PORTrootSERVER_HOST\mkdir -p ~/.ssh chmod 700 ~/.ssh cat ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys执行这一步时输入一次服务器密码。5. 配置 SSH Host编辑本机 SSH 配置nano~/.ssh/config添加Host gpu-server HostName SERVER_HOST User root Port SSH_PORT IdentityFile ~/.ssh/gpu_server IdentitiesOnly yes ServerAliveInterval 60修改权限chmod600~/.ssh/config以后可以直接登录sshgpu-server也可以直接执行远程命令sshgpu-serverhostname查看 GPUsshgpu-servernvidia-smi查看项目目录sshgpu-server\cd /root/autodl-tmp/my_project ls -lah6. 在本地使用 CodexCodex 安装和登录都放在本地 Linux。本地代码目录例如~/projects/my_project项目结构~/projects/my_project/ ├── src/ ├── tests/ ├── configs/ ├── train.py ├── evaluate.py └── README.md远程服务器中的代码运行目录为/root/autodl-tmp/my_project/code这样本地保存源码远程保存运行副本。7. 告诉 Codex 怎么使用 GPU 服务器在 Codex 新会话开头我会先发送一段服务器执行约定。你当前运行在我的本地Linux环境中。 我有一台远程GPU服务器已经配置SSH Host gpu-server 需要在远程服务器执行命令时使用 ssh gpu-server command 例如 ssh gpu-server hostname ssh gpu-server nvidia-smi ssh gpu-server \ cd /root/autodl-tmp/my_project ls -lah 远程项目目录 /root/autodl-tmp/my_project 远程数据目录 /root/autodl-tmp/my_project/data 远程Python /root/miniconda3/bin/python 本地项目代码目录 ~/projects/my_project 远程代码运行目录 /root/autodl-tmp/my_project/code 代码在本地修改通过rsync同步到远程服务器然后通过SSH执行测试和训练。 原始数据目录保持只读。之后就可以直接让 Codex 执行类似任务检查远程GPU、Python和PyTorch环境。Codex 会调用sshgpu-servernvidia-smi以及sshgpu-server\/root/miniconda3/bin/python -c import torch; print(torch.cuda.is_available())8. 先测试 Codex 能否调用服务器第一次使用时我先让 Codex 做了一次只读检查检查远程服务器连接。 执行 ssh gpu-server hostname ssh gpu-server \ nvidia-smi --query-gpuname,memory.total --formatcsv,noheader ssh gpu-server \ /root/miniconda3/bin/python --version ssh gpu-server \ cd /root/autodl-tmp/my_project pwd ls -lah 检查完成后报告结果。如果 Codex 能够返回服务器 hostname、GPU 型号和 Python 版本就说明本地 Codex 到 GPU 服务器的链路已经可用。9. 使用 rsync 同步代码本地代码修改完成后用rsync同步到服务器rsync-av\--exclude.git/\--exclude__pycache__/\--exclude*.pyc\~/projects/my_project/\gpu-server:/root/autodl-tmp/my_project/code/同步完成后服务器中的/root/autodl-tmp/my_project/code就是当前代码副本。本地继续使用 Git 管理gitstatusgitdiffgitadd.gitcommit10. 让 Codex 在服务器运行代码例如运行测试sshgpu-server\cd /root/autodl-tmp/my_project/code \ /root/miniconda3/bin/python test.py运行训练sshgpu-server\cd /root/autodl-tmp/my_project/code \ /root/miniconda3/bin/python train.py输出会直接返回本地终端。出现 Python Traceback 时Codex 可以读取报错然后继续修改本地代码。一次完整流程通常是Codex修改本地代码 ↓ rsync同步 ↓ SSH执行 ↓ 读取输出 ↓ 修改代码 ↓ 再次同步 ↓ 再次运行11. 使用 tmux 跑长时间实验训练时间较长时可以在服务器使用tmux。例如创建一个后台任务sshgpu-server\tmux new-session -d -s train_job \ cd /root/autodl-tmp/my_project/code \ /root/miniconda3/bin/python train.py \ /root/autodl-tmp/my_project/logs/train.log 21查看当前 tmuxsshgpu-servertmux ls查看日志sshgpu-server\tail -n 100 /root/autodl-tmp/my_project/logs/train.log持续查看sshgpu-server\tail -f /root/autodl-tmp/my_project/logs/train.log查看 GPUsshgpu-servernvidia-smi这样关闭本地终端以后服务器上的训练仍然继续运行。12. 下载实验结果如果需要把服务器上的结果拉回本地可以直接使用rsyncrsync-av\gpu-server:/root/autodl-tmp/my_project/results/\~/projects/my_project/remote_results/下载日志rsync-av\gpu-server:/root/autodl-tmp/my_project/logs/\~/projects/my_project/remote_logs/下载 checkpointrsync-av\gpu-server:/root/autodl-tmp/my_project/checkpoints/\~/projects/my_project/remote_checkpoints/checkpoint 比较大时可以只下载需要的模型文件。13. Codex 实际工作方式现在我的项目流程基本是本地 Codex ↓ 修改 Python ↓ 运行本地检查 ↓ rsync ↓ SSH 到 GPU 服务器 ↓ 运行测试 ↓ 运行训练 ↓ 读取 log / CSV ↓ 继续修改Codex 可以直接执行sshgpu-servernvidia-smi也可以执行sshgpu-server\cd /root/autodl-tmp/my_project/code \ /root/miniconda3/bin/python train.py需要长时间运行时则创建 tmux 任务。14. 一些常用命令登录服务器sshgpu-server查看 GPUsshgpu-servernvidia-smi查看 Pythonsshgpu-server\/root/miniconda3/bin/python --version查看 PyTorchsshgpu-server/root/miniconda3/bin/python -c import torch print(torch.__version__) print(torch.version.cuda) print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0)) 查看项目目录sshgpu-server\cd /root/autodl-tmp/my_project ls -lah同步代码rsync-av\--exclude.git/\--exclude__pycache__/\--exclude*.pyc\~/projects/my_project/\gpu-server:/root/autodl-tmp/my_project/code/运行训练sshgpu-server\cd /root/autodl-tmp/my_project/code \ /root/miniconda3/bin/python train.py查看 tmuxsshgpu-servertmux ls查看训练日志sshgpu-server\tail -n 100 /root/autodl-tmp/my_project/logs/train.log15. 公开文章中的信息脱敏文章和截图中统一使用SERVER_HOST SSH_PORT gpu-server my_project实际服务器地址、端口、用户名、实例 ID 等信息不放到文章里。SSH 相关文件示例只写文件名~/.ssh/gpu_server ~/.ssh/gpu_server.pub不展示具体 Key 内容。Token、API Key、OAuth URL、登录凭据等内容同样不放入截图和代码块。16. 当前目录结构示例本地~/projects/my_project/ ├── src/ │ ├── data/ │ ├── models/ │ └── utils/ ├── tests/ ├── configs/ ├── train.py ├── evaluate.py └── README.md远程/root/autodl-tmp/my_project/ ├── data/ ├── code/ ├── checkpoints/ ├── logs/ ├── results/ └── artifacts/开发代码保存在本地~/projects/my_project运行代码同步到/root/autodl-tmp/my_project/code训练数据读取/root/autodl-tmp/my_project/data训练输出分别保存到/root/autodl-tmp/my_project/checkpoints /root/autodl-tmp/my_project/logs /root/autodl-tmp/my_project/results