新手想利用阿里云部署深度学习项目,核心思路其实就两步:选对实例 + 跑通环境。
很多新手容易踩的坑是:直接买最便宜的 ECS 通用型实例,或者在本地配好环境打包镜像上传,结果发现推理速度慢、显存爆满或者依赖冲突。作为过来人,我建议你按照以下路径操作,既省钱又稳定。
第一步:选型——别碰 CPU,认准 GPU 实例
深度学习离不开 GPU。阿里云的 GPU 实例主要分为两类,新手建议从 GN6 或 GN7 系列入手。
- GN6i / GN6v:基于 NVIDIA Tesla T4 或 V100。T4 性价比极高,适合推理(Inference)和中小规模训练;V100 性能更强,适合大规模训练。
- GN7:基于 A10 或 A100,适合更高强度的需求,但价格较贵。
- 避坑指南:不要为了省钱买“共享型”或“突发性能型”ECS,这些没有独立 GPU 或算力受限,根本跑不动 PyTorch/TensorFlow。
推荐配置起步:
- 实例规格:ecs.gn6i-c4g1.xlarge (1核4G内存 + 1张 T4 GPU) —— 足够跑 ResNet50 级别的模型推理或小模型微调。
- 系统盘:80GB SSD 以上,预装 Ubuntu 20.04 或 CentOS 7/8。Linux 是 AI 领域的标准,Windows 虽然也能用,但在驱动兼容性和资源调度上不如 Linux 顺手。
第二步:环境搭建——两种流派任选
对于新手,我不建议你在裸机上手动安装 CUDA、cuDNN、Python 包。极易出错且难以维护。你有两个选择:
方案 A:使用阿里云“AI 提速镜像”(强烈推荐新手)
阿里云控制台里有一类特殊的镜像叫 “AI 提速镜像” 或 “GPU 开发镜像”。
- 在购买 ECS 时,镜像选择栏找到 “公共镜像” -> “应用镜像” 或搜索 “Deep Learning Base”。
- 这些镜像已经预装了:
- NVIDIA 显卡驱动
- CUDA Toolkit (对应版本如 11.7, 12.1)
- cuDNN
- Anaconda / Miniconda
- PyTorch / TensorFlow 基础库
- 优势:开箱即用,
nvidia-smi命令一敲就能看到显卡状态,省去了 90% 的配置时间。
方案 B:使用 PAI-DSW(Data Science Workshop)
如果你不想管理服务器运维,可以直接使用阿里云的 PAI-DSW。这是一个全托管的 JupyterLab 开发环境,底层对接的是 GPU 算力。
- 优点:无需 SSH 登录,直接在浏览器写代码;自动挂载 OSS 存储,数据不丢;支持一键切换 PyTorch/TensorFlow 环境。
- 缺点:按量付费可能稍贵,适合短期实验或团队协作。
我的建议:如果是长期部署服务,选方案 A(ECS + 镜像);如果是纯算法研究、原型验证,选方案 B(PAI-DSW)。
第三步:代码与数据——OSS 是关键
不要把数据集和模型文件直接塞进 ECS 的系统盘!一旦磁盘满了,整个服务就挂了。
- 创建 OSS Bucket:
- 去对象存储 OSS 控制台,创建一个私有 Bucket。
- 将你的训练数据集、预训练权重(.pth, .bin 等)、代码仓库上传到 OSS。
- 挂载 OSS 到 ECS:
- 推荐使用 ossfs 或 CPFS(如果数据量极大)。
- 更简单的方式:在 ECS 内安装
ossutil命令行工具,通过脚本定期同步数据,或在代码中使用boto3或阿里云 SDK 直接从 OSS 读取数据流。 - 最佳实践:在 ECS 内部署一个轻量级 Web 服务(如 FastAPI),启动时从 OSS 下载最新模型到本地
/tmp或持久化目录,避免每次请求都从 OSS 拉取。
第四步:部署与服务暴露
模型跑起来后,怎么让外界访问?
-
编写 API 接口:
- 使用 FastAPI 或 Flask 封装模型预测逻辑。
- 示例结构:
from fastapi import FastAPI import torch
app = FastAPI()
加载模型(实际项目中应优化为懒加载或单例)
model = torch.load(“model.pth”)
model.eval()@app.post(“/predict”)
async def predict(image: bytes):预处理…
output = model(processed_image) return {"result": output.tolist()} -
后台运行:
- 使用 systemd 或 supervisor 管理进程,确保服务崩溃后能自动重启。
- 或者使用 Docker 容器化部署,更利于迁移和环境隔离。
-
网络暴露:
- 在 ECS 安全组中,放行 TCP 端口(如 8000)。
- 绑定 ECS 的 公网 IP 或购买 弹性公网 IP (EIP) 并绑定到实例。
- 进阶:如果需要高并发,建议在 ECS 前加一层 SLB (负载均衡),后端挂多个 GPU 实例,实现横向扩展。
第五步:监控与成本优化
-
开启云监控:
- 在 ECS 控制台启用“云监控插件”,观察 CPU、内存、GPU 利用率。
- 设置告警:当 GPU 温度超过阈值或显存占用过高时,发送短信/邮件通知。
-
节省成本技巧:
- 抢占式实例 (Spot Instance):如果你的任务可中断(如批量训练),购买抢占式实例,价格仅为按量付费的 1/10。注意设置“断点续训”。
- 关机停计费:非工作时间(如晚上 8 点后到早上 8 点),手动停止 ECS 实例。除了系统盘和数据盘,计算资源不再收费。
- 预留实例券 (RI):如果确定要长期使用某款 GPU 实例,购买 RI 可大幅降低单价。
常见报错排查清单
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver:- 原因:驱动未正确加载或内核版本不匹配。
- 解决:重启 ECS,确认使用的是官方 GPU 镜像。
CUDA out of memory:- 原因:batch_size 太大或模型过大。
- 解决:减小 batch_size,启用梯度累积,或使用混合精度训练 (
torch.cuda.amp)。
Permission denied访问 OSS:- 原因:RAM 角色权限不足。
- 解决:给 ECS 绑定的 RAM 角色添加
AliyunOSSFullAccess或最小权限策略。
总结
新手部署深度学习项目的核心不是“技术多深”,而是“流程标准化”:
- 买对机器:GN6i + Ubuntu + AI 镜像。
- 存对数据:所有数据放 OSS,ECS 只算不算存。
- 写好接口:FastAPI + Docker 化。
- 管好成本:善用抢占式实例和停机策略。
按照这个路径走,你能避开 80% 的新手陷阱,快速把模型跑起来。
云技术博客