共计 1853 个字符,预计需要花费 5 分钟才能阅读完成。
背景痛点
刚接触深度学习的同学在算力云上常遇到这些问题:

- 环境配置混乱:手动安装 CUDA/cuDNN 时版本冲突,PyTorch 与 TensorFlow 互相打架
- 数据管理困难:临时实例关机后数据丢失,大文件重复上传消耗时间
- 资源浪费:不会监控 GPU 利用率,显存爆炸才发现代码有问题
- 权限问题:conda 环境创建失败,pip 安装提示权限不足
镜像选择策略
Autodl 提供三类主流镜像,根据需求选择:
- PyTorch 官方镜像(标签含
pytorch) - 已预装对应版本 CUDA/cuDNN
-
适合:快速开始 PyTorch 项目,版本如 1.12+cu116
-
TensorFlow 官方镜像(标签含
tensorflow) - 包含 NVIDIA 驱动兼容矩阵
-
适合:需要 tf-gpu 或 Keras 的场景
-
纯净 Ubuntu 镜像
- 仅基础系统,需手动配置
- 适合:自定义环境或特殊框架需求
小技巧:通过「社区镜像」搜索他人分享的环境(如
mmdetection)
实例创建实操
创建步骤
- 进入「容器实例」页面点击「新建」
- 选择显卡型号(如 RTX 3090)和镜像(如 PyTorch 1.12)
- 设置 SSH 密码(建议使用密钥更安全)
- 高级选项:
- 数据盘挂载:选择「自动挂载」避免重启丢失
- 开机脚本:可写入初始化命令
连接实例
通过 SSH 连接(替换为你实际 IP):
ssh -p < 端口号 > root@< 服务器 IP>
# 输入创建时设置的密码
环境配置
Conda 环境管理
避免污染系统环境:
# 创建新环境
conda create -n myenv python=3.8
# 激活环境
conda activate myenv
# 安装依赖(示例安装 PyTorch)conda install pytorch torchvision -c pytorch
持久化配置
将常用配置写入~/.bashrc:
echo 'conda activate myenv' >> ~/.bashrc
source ~/.bashrc
数据管理
挂载云端存储
Autodl 支持两种数据挂载方式:
-
网盘挂载(推荐)
# 查看挂载点 df -h # 通常为 /root/autodl-nas -
临时数据盘
- 数据保存在实例磁盘
- 关机后自动清除
数据传输技巧
使用 rsync 高效同步:
rsync -avzP /local/path/ root@<IP>:/remote/path/
Jupyter 配置
服务端配置
生成配置文件并修改:
jupyter notebook --generate-config
vim ~/.jupyter/jupyter_notebook_config.py
需修改的关键参数:
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.port = 8888 # 确保端口未被占用
c.NotebookApp.password = 'sha1:...' # 通过 jupyter notebook password 生成
启动服务
使用 nohup 保持后台运行:
nohup jupyter notebook --allow-root &
通过 http://< 实例 IP>:8888 访问,输入设置的密码
GPU 监控与优化
实时监控
使用 nvidia-smi 观察显存:
watch -n 1 nvidia-smi
显存管理技巧
- 使用
torch.cuda.empty_cache()释放缓存 - 批量大小调整:
batch_size = 16 if torch.cuda.mem_get_info()[0] > 10e9 else 8 - 混合精度训练:
scaler = torch.cuda.amp.GradScaler()
避坑指南
- CUDA 版本不匹配
- 现象:
undefined symbol: cudaGetErrorString -
解决:
conda install cudatoolkit=11.6 -c conda-forge -
权限被拒绝
- 现象:
Permission deniedwhen pip install -
解决:使用
--user参数或 conda 环境 -
SSH 连接超时
- 检查安全组是否开放端口
-
尝试
ssh -v查看详细日志 -
磁盘空间不足
- 清理 conda 缓存:
conda clean --all -
删除
~/.cache目录 -
Jupyter 无法访问
- 检查防火墙:
ufw allow 8888 - 确认服务运行:
ps aux | grep jupyter
进阶思考
- 如何实现训练中断后从 checkpoint 自动恢复?
- 多 GPU 训练时如何优化数据加载效率?
- 怎样将 Autodl 实例集成到 CI/CD 流程中?
通过这套配置流程,我的 ResNet50 训练任务显存利用率从 60% 提升到了 85%。关键是把数据预加载到内存,以及使用混合精度训练。建议大家在正式跑长任务前,先用小批量数据测试环境是否正常。
正文完
