一、服务器环境准备:3步搞定GPU环境+SSH访问
必做检查项
- SSH服务配置
- 安装并启动SSH:
sudo apt install openssh-server && sudo systemctl start sshd(Linux服务器); - 测试连接:本地终端输入
ssh 用户名@服务器IP -p 端口,输入密码后能登录即成功(默认端口22,若修改需记牢)。
- 安装并启动SSH:
- AI环境就绪
- 安装PyTorch/TensorFlow:
conda install pytorch torchvision torchaudio cudatoolkit=11.7 -c pytorch(根据服务器GPU驱动版本选择cuda版本); - 安装调试依赖:
pip install pydevd(PyCharm远程调试必备库)。
- 安装PyTorch/TensorFlow:
- 路径记录
用
conda env list查看AI虚拟环境路径(如/home/aiuser/miniconda3/envs/torch_env),后续配置远程解释器需用到。
二、PyCharm核心配置:远程解释器+文件同步
配置远程Python解释器
- 添加SSH解释器
- 路径:
File→Settings→Project:AI_Project→Python Interpreter→右上角齿轮→Add→SSH Interpreter→Existing server configuration→...添加服务器信息(IP、端口、用户名、密码)→Test Connection验证连通性; - 选择解释器:在服务器Python环境路径中填入
/home/aiuser/miniconda3/envs/torch_env/bin/python→OK。
- 路径:
- 文件同步设置
路径映射:
Tools→Deployment→Configurations→Mappings→本地项目路径(如/Users/me/ai_project)映射服务器路径(如/home/aiuser/ai_project);自动同步:勾选
Tools→Deployment→Options→Upload changed files automatically to the default server,本地保存代码时自动同步到服务器。
三、AI模型远程调试实战:断点+GPU监控+分布式适配
调试配置与启动
- 新建调试配置
- 路径:右上角
Add Configuration→Python→设置Script path为本地train.py→Python interpreter选择远程解释器→Working directory设为服务器项目路径→Parameters填入命令行参数(如--epochs 10 --batch_size 32)。
- 路径:右上角
- 核心调试技巧
- 断点调试模型训练:在
loss.backward()处设置断点,点击调试按钮(绿色甲虫图标),程序在服务器GPU上运行并暂停,通过Variables面板实时查看model.parameters()的梯度值、optimizer.state_dict()的学习率; - GPU资源实时监控:调试时在PyCharm终端输入
ssh 服务器IP nvidia-smi,查看显存占用和GPU利用率,避免OOM错误; - 分布式训练适配:使用多GPU时,在调试配置
Environment variables中添加MASTER_ADDR=服务器IP, MASTER_PORT=29500, CUDA_VISIBLE_DEVICES=0,1。
- 断点调试模型训练:在
- 常见问题解决
断点不触发:右键文件→
Deployment→Compare with Remote Version,确保本地与服务器代码一致;显存清理:在调试面板
Console中输入torch.cuda.empty_cache()手动释放显存;远程连接超时:检查服务器防火墙是否放行SSH端口(
sudo ufw allow 22)。
四、效率提升技巧:从“能调试”到“调得快”
3个AI开发者必备技巧
使用科学计算面板
开启View→Scientific Mode,调试时可直接在IDE中生成loss曲线、权重分布直方图,无需导出数据到本地绘图。配置GPU占用预警
在Run→Edit Configurations→Before launch添加Run external tool,设置命令为ssh 服务器IP "nvidia-smi | grep 'MiB /'",启动调试前自动显示GPU当前占用,避免显存不足。代码模板快速同步
在File→Settings→Editor→Live Templates添加模板:pydevd.settrace(' 服务器IP', port=5678, stdoutToServer=True, stderrToServer=True),需要时一键插入代码,手动触发远程调试(适用于无法自动附加调试器的场景)。