通过 DSW(Data Science Workshop)的内置 Notebook 或 VSCode,在云端开发、训练并部署深度学习模型。本文以 MNIST 手写数字识别为例,演示完整流程。
MNIST 手写数字识别是深度学习经典入门任务,目标是训练模型识别 10 个手写数字(0~9)。
一. 前提条件
主账号已开通 PAI 并创建工作空间。如尚未开通,访问PAI 控制台,在页面左上角选择目标地域,完成一键授权和产品开通。
二. 计费说明
三. 创建 DSW 实例
进入 DSW 页面。
访问PAI 控制台。
在页面左上方选择目标地域。
在左侧导航栏单击工作空间列表,进入目标工作空间。
在左侧导航栏选择。
在配置实例向导页面配置以下参数,其他保持默认。
资源类型:选择公共资源(按量付费)。
资源规格:选择
ecs.gn7i-c8g1.2xlarge。该规格库存不足时,可选择其他 GPU 实例。
镜像配置:选择官方镜像,搜索镜像
modelscope:1.26.0-pytorch2.6.0-gpu-py311-cu124-ubuntu22.04。建议使用相同镜像以避免环境兼容问题。
存储挂载:持久化存储模型开发文件。本文使用对象存储 OSS。单击 OSS,单击图标
,选择 Bucket 并新建目录(例如pai_test)。如果当前地域没有可用 Bucket,参考以下步骤创建:
Uri:
oss://**********oss-cn-hangzhou-internal.aliyuncs.com/pai_test/挂载路径:
/mnt/data/
单击确定创建实例。
实例启动失败时,参见创建DSW实例排查。
四. 在 DSW 中开发模型
在实例列表单击打开,进入 DSW 开发环境。在启动台单击创建 Notebook。
编写模型代码。本文已提供 MNIST 训练代码:下载mnist.ipynb,然后在 DSW 左上角单击
图标上传文件。
训练模型。打开
mnist.ipynb,找到训练代码单元格,单击
执行。代码将自动下载 MNIST 数据集到dataSet目录,并将训练后的模型保存至output目录。训练约需 10 分钟。

训练过程输出模型在验证集上的准确率(反映泛化能力)。本次训练验证集准确率为 98%,可进入后续步骤。
查看训练曲线。执行以下单元格,单击 TensorBoard 地址
http://localhost:6006/。
TensorBoard 显示 train_loss(训练集损失)和 validation_loss(验证集损失)曲线。

查看完曲线后,单击单元格的
图标停止 TensorBoard。未停止 TensorBoard 将导致后续单元格无法执行。测试模型效果。执行以下单元格,展示 20 张测试图片及其真实标签(label)和模型预测结果(predict)。

示例输出:

持久化模型文件。本文使用公共资源组创建 DSW 实例,文件存储在免费云盘中。实例停机超过 15 天后,云盘内容将被自动清空。将模型文件拷贝至 OSS,以便后续使用 PAI-EAS 部署。

访问OSS 控制台查看已拷贝的文件:

模型开发完成后,可将模型部署为在线服务,参见五. 使用 EAS 部署模型服务。
本文使用公共资源创建 DSW 实例,按量计费。不使用时请在实例列表页面右侧,停止或删除实例,避免持续扣费。
五. 使用 EAS 部署模型服务
模型训练完成后,可以通过EAS(Elastic Algorithm Service)快速部署为在线推理服务或AI-Web应用。EAS支持异构资源,结合自动扩缩容、一键压测、灰度发布、实时监控等能力,以更低成本保障高并发场景下的服务稳定性与业务连续性。
编写模型 Web 接口并拷贝至 OSS。本文提供了 Web 接口代码和拷贝命令,执行以下单元格即可。

(可选)在 DSW 中验证 Web 接口。执行以下单元格安装依赖并启动服务。

测试接口。在页面上方单击 WebIDE,左侧单击
request_web.py,单击
执行代码。
返回结果:
{"prediction": 7}说明通过公网访问 DSW 中的 Web 服务需配置 VPC、NAT 网关和 EIP,详情参见通过公网访问实例中的服务。
创建 EAS 服务。在 PAI 控制台左侧导航栏单击模型在线服务(EAS) > 部署服务 > 自定义部署。
配置以下参数,其他保持默认:
部署方式:镜像部署
镜像配置:选择镜像地址,粘贴 DSW 使用的镜像地址。
DSW 已验证该镜像可正常运行模型代码,部署时使用相同镜像可避免环境问题。

存储挂载:模型文件和 Web 接口代码已拷贝至 OSS。单击 OSS,选择对应路径。
Uri:oss://*****/pai_test/
挂载路径:/mnt/data/
运行命令:
web.py已挂载至/mnt/data/,需调整路径。运行命令为:python /mnt/data/web.py端口号:填写
web.py使用的端口号9000。三方库配置:所选镜像缺少 bottle 库,在此处添加
bottle。资源类型:选择公共资源,资源规格选择
ecs.gn7i-c8g1.2xlarge。配置系统盘:设置为 20GB。
镜像体积较大,系统盘空间不足时会导致实例启动失败,建议设置为 20 GB 或以上。
单击部署创建服务。创建约需 5 分钟,状态变为运行中时代表部署成功。
获取调用信息。在服务详情页单击查看调用信息,获取公网调用地址和Token。
调用服务。将以下代码中的公网调用地址和Token替换为实际值,然后执行代码。
import requests """ 测试图片url: label为7 http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_7_No_0.jpg label为2 http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_2_No_1.jpg label为1 http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_1_No_2.jpg label为0 http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_0_No_3.jpg label为4 http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_4_No_4.jpg label为5 http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_9_No_5.jpg """ image_url = 'http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_7_No_0.jpg' # 由客户端下载图片,得到二进制数据 img_response = requests.get(image_url, timeout=10) # 根据状态码自动检测请求是否成功 img_response.raise_for_status() img_bytes = img_response.content # header信息 <EAS_TOKEN>需替换为实际的Token # 实际生产中建议您将Token设置为环境变量,防止敏感信息泄漏 # 环境变量配置方法请参见:https://help.aliyun.com/zh/sdk/developer-reference/configure-the-alibaba-cloud-accesskey-environment-variable-on-linux-macos-and-windows-systems headers = {"Authorization": "Token"} # 把二进制数据作为POST请求的body,发送到模型服务 resp = requests.post('调用地址/predict_image', data=img_bytes, headers=headers) print(resp.json())返回结果:
{"prediction": 7}
本文使用公共资源创建 EAS 服务,按量计费。不使用时请在服务列表页面右侧,停止或删除服务,避免持续扣费。
六. 相关文档
DSW 启动失败排查参见创建DSW实例。
DSW 计费说明参见交互式建模(DSW)计费说明。
DSW 核心功能参见DSW概述。
在公网访问 DSW Web 服务参见通过公网访问实例中的服务。
EAS 核心功能参见EAS概述。












