在阿里云 ECS(云服务器)上部署深度学习环境,核心思路其实就两步:选对实例和配好环境。别被那些花里胡哨的教程吓到,本质上就是搞定 GPU 驱动、CUDA/CuDNN 版本匹配,以及 Python 依赖管理。
下面我按实际生产中最稳妥的路径,把步骤拆解清楚。这里以目前最主流的 PyTorch 为例(TensorFlow 逻辑完全一致,只是安装命令不同),操作系统默认使用 Ubuntu 20.04/22.04 LTS(国内用户友好,文档多)。
第一步:选型与购买(别省这一步的钱)
很多人直接在普通 CPU 实例上装 TensorFlow,跑起来慢到怀疑人生。深度学习必须用 GPU 实例。
-
实例类型选择:
- 入门/学习:选
ecs.gn6i-c4g1m2.large或类似配置(V100/A10 等,具体看当前活动),适合单卡训练。 - 多卡并行:如果需要多卡同步,注意网络带宽和 NVLink 支持,通常选
gn7i系列或更高阶的 GPU 实例。 - 重要提示:GPU 实例通常没有公网 IP 或者流量昂贵,建议绑定一个 弹性公网 IP (EIP),方便 SSH 连接和后期上传下载数据。
- 入门/学习:选
-
镜像选择:
- 新手推荐:直接使用阿里云市场里的 “Deep Learning 镜像” 或 “PAI 定制镜像”。这些镜像预装了 CUDA、CUDNN、Python 和部分框架,开箱即用,能省去 80% 的环境配置坑。
- 进阶推荐:选择标准的 Ubuntu 22.04 LTS 公共镜像。这样你能完全掌控底层环境,适合长期维护和调试。下文基于此方案展开。
第二步:基础环境搭建(SSH 进去之后)
假设你已经通过 SSH 连上了服务器。
1. 更新系统并安装必要工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential git wget curl unzip
2. 安装 NVIDIA 显卡驱动
这是最容易出错的地方。不要尝试从源码编译驱动,直接用阿里云提供的驱动包或 Ubuntu 仓库版本。
# 查看你的 GPU 型号
nvidia-smi
# 如果没反应,说明驱动没装。执行以下命令自动安装推荐驱动
sudo ubuntu-drivers autoinstall
sudo reboot # 重启后再次检查 nvidia-smi 是否正常
注意:确保 nvidia-smi 输出的 Driver Version 和 CUDA Version 是匹配的。比如 Driver 535.xx 通常支持 CUDA 12.x。
3. 安装 CUDA Toolkit 和 cuDNN
为了兼容性最好,建议安装与 nvidia-smi 显示的 CUDA 版本向下兼容的最新 Toolkit。
假设 nvidia-smi 显示支持 CUDA 12.2,我们可以安装 CUDA 12.2:
# 下载 CUDA 12.2 (示例链接,请去 NVIDIA 官网确认最新 runfile 或 repo 源)
wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_530.30.02_linux.run
sudo sh cuda_12.2.0_530.30.02_linux.run
# 安装过程中:
# - 取消勾选 "Driver" (因为前面已经装过了)
# - 勾选 "Toolkit"
# - 勾选 "Samples" (可选)
配置环境变量(写入 ~/.bashrc):
echo 'export PATH=/usr/local/cuda-12.2/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc
source ~/.bashrc
验证:
nvcc --version
4. 安装 cuDNN
CUDA 12+ 推荐使用库文件方式安装,而不是独立的 runfile。
# 下载 cuDNN for CUDA 12.2 (需要注册 NVIDIA 开发者账号)
# 解压后复制头文件和库文件
tar -xzvf cudnn-linux-x86_64-8.9.0.131_cuda12-archive.tar.xz
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
第三步:Python 环境与框架安装
强烈建议使用 Miniconda 或 Anaconda 来隔离环境,避免污染系统 Python。
1. 安装 Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# 按照提示操作,最后 source ~/.bashrc
2. 创建虚拟环境
conda create -n dl_env python=3.10 -y
conda activate dl_env
3. 安装 PyTorch (关键步骤)
去 PyTorch 官网 获取对应的安装命令。
假设你用的是 CUDA 12.1:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
如果你要装 TensorFlow 2.x:
pip install tensorflow[and-cuda]
# 或者指定版本
pip install tensorflow==2.15.0
4. 验证安装
import torch
print(torch.__version__)
print(torch.cuda.is_available()) # 必须输出 True
print(torch.cuda.get_device_name(0))
如果是 TensorFlow:
import tensorflow as tf
tf.test.is_built_with_cuda() # 应返回 True
tf.config.list_physical_devices('GPU')
第四步:实战优化与避坑指南
1. 数据传输瓶颈
在云上跑深度学习,IO 往往是瓶颈。
- 小数据集:直接放在本地磁盘
/data下即可。 - 大数据集:建议将原始数据存储在 OSS (对象存储) 中,然后通过
ossfs挂载或使用boto3SDK 在代码中动态读取。这样节省 ECS 本地 SSD 空间,且 OSS 有内网免费流量优势(如果 ECS 和 OSS Bucket 在同一区域)。
2. 持久化与快照
- 每次训练完模型,务必将
.pth或.ckpt文件备份到 OSS。 - 利用阿里云控制台的 自定义镜像 功能。当你配置好所有环境后,制作一个镜像。下次开新机器直接从这个镜像启动,无需重新安装驱动和 CUDA,省时省力。
3. 监控资源
使用 htop 查看 CPU/内存,使用 nvidia-smi dmon -s u 实时监控 GPU 利用率。如果训练时 GPU 利用率低于 50%,通常是数据加载(DataLoader)太慢,需要增加 num_workers 或优化预处理逻辑。
4. 安全组设置
默认安全组只开放了 22 端口。如果你需要远程访问 TensorBoard 或 Jupyter Notebook:
- 在阿里云控制台 -> 安全组 -> 添加规则。
- 放行 TCP 端口,例如 6006 (TensorBoard), 8888 (Jupyter)。
- 切记:不要随意开放 0.0.0.0/0 到高风险端口,除非你设置了强密码或使用了 SSH 隧道。
总结
在阿里云部署深度学习环境,“镜像先行,驱动兜底,Conda 隔离” 是最稳的策略。
- 如果能接受预装环境,直接买 Deep Learning 镜像,省心。
- 如果追求纯净,走 Ubuntu + NVIDIA 驱动 + CUDA Toolkit + Conda 的标准路径。
- 始终关注 CUDA 版本与 PyTorch/TensorFlow 版本的对应关系,这是报错的重灾区。
遇到 ImportError: libcuda.so.1 这类错误,90% 是因为驱动没装好或者 LD_LIBRARY_PATH 没配对;遇到 RuntimeError: CUDA error,先查 nvidia-smi 看显存是否溢出,再查 CUDA 版本匹配度。
云技术博客