DevPod 使用指南¶
概述¶
DevPod 是阿里云提供的一站式云端 AI 开发环境,集成了 VS Code、Jupyter Notebook 与终端命令行等多种开发工具,支持快速启动模型开发任务。用户无需本地配置复杂环境,即可基于预置或自定义镜像,高效开展 AI 模型训练、调试与部署工作。
DevPod 提供了完整的开发、调试、部署一体化体验,让开发者可以专注于模型开发本身,而无需关心环境配置问题。
先决条件¶
在开始之前,请确保您已完成以下准备工作:
- 拥有一个阿里云账号
- 登录 FunModel 控制台
根据控制台的指引,完成 RAM 相关的角色授权等配置;如果您当前使用的是旧版控制台页面,请点击右上角的“新版控制台”按钮,切换至新版界面后再进行操作。
快速开始¶
创建 DevPod¶
通过控制台创建 DevPod 实例:
- 访问 FunModel 模型市场。
- 点击 自定义开发。
- 配置以下关键参数:
| 参数 | 说明 |
|---|---|
| 模型环境 | 选择预置的深度学习框架环境(如 PyTorch、TensorFlow),或指定自定义镜像(见下文要求) |
| 名称 | 为实例设置一个便于识别的名称 |
| 地域 | 选择 DevPod 实例部署的阿里云地域(如 cn-hangzhou) |
| 模型描述 | 简要说明模型用途、功能或开发目标 |
| 资源配置 | 根据任务需求选择 CPU、内存及 GPU 规格 |
| 存储配置 | 配置实例挂载的 NAS 存储空间大小与类型 |
| 角色名称 | 指定用于访问云资源的 RAM 角色(需具备必要权限) |
自定义镜像要求
若选择自定义镜像,需满足以下条件以确保 DevPod 正常运行:
- 操作系统:基于 AMD64 架构的 Linux 系统,最低要求 glibc 2.28 推荐基础镜像:
debian:10、ubuntu:20.04、centos:8或更高版本- 预装工具:必须包含
curl命令- 用户权限:默认用户为
root- 可选支持:如果需要使用 jupyter,则镜像中需安装 Python ≥ 3.8 且包含
pip命令
开发和调试¶
在 DevPod 环境中开发您的应用:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Welcome to Devpod!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)
运行应用:
提示: DevPod 内置开发镜像默认都有一个示例代码
main.py和run.sh,可以直接运行run.sh启动应用
确认配置无误后,点击 DevPod 开发调试。
访问与管理实例¶
进入 DevPod 控制台后,可使用以下三种开发界面:
- VS Code:基于
openvscode-server的在线 IDE,适合代码编写与调试 - Jupyter Notebook:适用于交互式深度学习实验
- Terminal:提供完整的 Linux 命令行环境
持久化存储¶
存储说明¶
所有 DevPod 实例均挂载一个 NAS 目录,路径为 /mnt/<devpod名称>。该目录中的数据不会随实例销毁而丢失,建议将模型权重、训练数据等重要文件存放于此。
DevPod 默认有用的环境变量:
HF_HOME=/mnt/<devpod名称>/hf
MODELSCOPE_CACHE=/mnt/<devpod名称>/modelscope
OLLAMA_MODELS=/mnt/<devpod名称>/ollama
持久化存储的特点:
- 制作镜像时不会被 build 到镜像中
- 即使 DevPod 删除销毁,内容依然存在
- 适合存储大模型文件,控制镜像体积
提示: DevPod 内置开发镜像默认都有一个示例代码
main.py和run.sh,可以直接运行run.sh启动应用,第一次执行run.sh会自动下载模型到持久化的 NAS 盘,下载目录为环境变量 MODELSCOPE_CACHE 指向的目录
远程调试 HTTP 服务¶
DevPod 支持将本地运行的 HTTP 服务通过代理对外暴露,便于远程调试或前端联调。
操作步骤¶
-
在 DevPod 终端启动 HTTP 服务,例如:
-
在 DevPod 控制台的 快速访问 页面获取代理地址,格式如下:
-
通过该地址访问服务:
注意事项¶
对于依赖绝对路径的前端单页应用(如 React、Vue SPA),由于代理路径前缀 /proxy/8000/ 的存在,可能导致静态资源加载失败。

镜像构建与保存¶
您可以将当前 DevPod 实例的完整运行环境(包括代码、依赖、配置)打包为 Docker 镜像,并推送至阿里云容器镜像服务(ACR),实现环境固化与复用。
使用限制¶
- 仅支持在 运行中 的 DevPod 实例上执行镜像构建。
- ACR 实例必须与 DevPod 位于同一地域。虽然 ACR 个人版支持跨地域创建,但为避免网络延迟与推送失败,强烈建议使用同地域实例。
ACR 版本对比¶
| 特性 | 个人版 ACR | 企业版 ACR |
|---|---|---|
| 费用 | 免费 | 按实例规格计费(计费详情) |
| 网络访问 | 通过公网访问,无需 VPC 配置 | 必须与 DevPod 同 VPC,通过内网访问,更安全稳定 |
| 性能与可靠性 | 受公网带宽影响,大镜像(≥10 GiB)可能推送失败 | 内网高速传输,适合大镜像与生产环境 |
| 适用场景 | 个人学习、功能验证、小规模测试 | 团队协作、生产部署、高可用需求、跨地域分发 |
准备 ACR 实例¶
个人版 ACR(推荐用于测试)¶
企业版 ACR(推荐用于生产)¶
- 创建专有网络 VPC 与交换机
- 创建安全组并绑定 VPC
- 创建企业版 ACR 实例并配置 VPC 访问
- 创建命名空间与镜像仓库(参考企业版文档)
构建镜像¶
- 在 DevPod 控制台点击 制作镜像。
-
选择 ACR 类型(个人版/企业版),填写以下参数:
配置项 说明 ACR 地域 选择已创建的 ACR 实例所在地域(必须与 DevPod 一致) 镜像名称(版本) 自定义镜像标签,如 v1.0或latestACR 命名空间 从已创建的命名空间中选择 ACR 镜像仓库 选择目标仓库(需属于所选命名空间) 自定义排除路径 可指定不打包的目录(如 /data/cache),避免敏感数据泄露或减小镜像体积系统默认排除路径 自动排除: /.function_ai、/usr/local/share/jupyter/labextensions注意:NAS 挂载目录(
/mnt/<name>)中的内容不会被打包进镜像。 -
点击 开始制作,等待镜像的构建推送完成。
注意:由于 AI 相关的镜像都很大,第一次构建和推送镜像耗时较长,请耐心等待。
直接部署为在线服务¶
构建完成的镜像可直接用于部署模型服务。
操作步骤¶
- 在镜像详情页点击 直接部署。
-
配置以下参数:
配置项 说明 启动命令 容器启动时执行的命令(如 /code/run.sh)监听端口 应用监听的端口(如 8000),需与服务实际端口一致超时时间 单次请求最大处理时间(单位:秒) -
点击 开始部署。
部署说明:模型服务将与 DevPod 实例位于同一地域,确保低延迟访问。
部署成功以后,可以通过模型列表找到对应的模型服务并进入。此时如果要再次进入 DevPod,需要点击模型服务右上角的 DevPod 开发。
在线调试¶
部署服务成功以后,可以进入在线调试,填写测试 method 和数据等。调试通过后,点击保存,会自动生成 OpenAPI Schema 规范并保存,生成各种语言接入的示例代码。同时生成的 OpenAPI Schema 规范可以导出给 Postman 等 API 调试工具使用。
最佳实践¶
开发流程¶
- 创建 DevPod 进行开发和调试
- 使用持久化存储保存大模型文件
- 制作镜像并部署为生产服务
- 通过 DevPod 进行迭代优化
资源管理¶
- 合理配置 DevPod 实例规格
- 及时清理不用的 DevPod 实例,及时启停 DevPod 实例,避免空闲资源产生不必要的费用
- 使用持久化存储避免数据丢失
安全考虑¶
- 不在镜像中硬编码敏感信息,存放敏感文件
- 使用环境变量传递密钥等敏感配置
- 定期更新基础镜像和依赖库
文件传输¶
DevPod 支持多种文件上传下载方式:
通过 IDE 界面¶
- VSCode 界面左侧目录树支持上传、下载
- JupyterLab 界面左侧目录树支持上传、下载
通过 WebDAV 协议¶
通过命令行使用 WebDAV 协议传输文件(有 32M 最大 payload 限制):
# 上传文件
curl -T /tmp/app.py -u root:{containerId} {base_url}/webdav/app.py
# 下载文件
curl -u root:{containerId} -o app.py {base_url}/webdav/app.py
# 删除文件
curl -X DELETE -u root:{containerId} {base_url}/webdav/app.py
故障排除¶
DevPod 启动失败¶
问题:DevPod 创建后无法启动
解决方案:
- 检查自定义镜像是否满足要求
- 验证镜像是否可正常拉取
- 查看日志排查具体错误
JupyterLab 无法访问¶
问题:GPU DevPod 中 JupyterLab 启动失败
解决方案:
- 确认 Python 版本 >= 3.8
- 检查是否正确安装 jupyter 相关库
- 查看启动日志确认错误原因
镜像部署服务失败¶
可能原因:
- 首次部署时,由于镜像体积较大,镜像拉取和加速过程耗时较长,可能导致部署任务因超时而失败。建议稍等片刻,待镜像缓存初步完成后再手动触发一次新的部署。例如,可随意调整某项配置(如将 timeout 值适当调大),以重新启动部署流程。
- 部署的启动脚本有问题,比如 host 不是 0.0.0.0,代码中启动的 port 和设置 port 没有对齐等,为什么 GPU 实例启动失败?
文件传输失败¶
问题:通过 WebDAV 传输文件失败
解决方案:
- 检查文件大小是否超过 32M 限制
- 验证 containerId 和 base_url 是否正确
- 确认网络连接是否正常
预置镜像¶
vLLM 镜像¶
全球 region 将镜像中的 cn-hangzhou 替换成 ap-southeast-1 即可
serverless-registry.cn-hangzhou.cr.aliyuncs.com/functionai/vllm-openai:v0.11.0