DSW 交互式建模快速入门

更新时间:
复制为 MD 格式

通过 DSW(Data Science Workshop)的内置 Notebook 或 VSCode,在云端开发、训练并部署深度学习模型。本文以 MNIST 手写数字识别为例,演示完整流程。

说明

MNIST 手写数字识别是深度学习经典入门任务,目标是训练模型识别 10 个手写数字(0~9)。

一. 前提条件

主账号已开通 PAI 并创建工作空间。如尚未开通,访问PAI 控制台,在页面左上角选择目标地域,完成一键授权和产品开通。

二. 计费说明

本文使用公共资源组创建 DSW 实例和 EAS 模型服务,按量计费。计费详情参见DSW 计费说明EAS 计费说明

三. 创建 DSW 实例

  1. 进入 DSW 页面。

    1. 访问PAI 控制台

    2. 在页面左上方选择目标地域。

    3. 在左侧导航栏单击工作空间列表,进入目标工作空间。

    4. 在左侧导航栏选择模型开发与训练 > 交互式建模(DSW) > 新建实例

  2. 配置实例向导页面配置以下参数,其他保持默认。

    • 资源类型:选择公共资源(按量付费)。

    • 资源规格:选择ecs.gn7i-c8g1.2xlarge

      该规格库存不足时,可选择其他 GPU 实例。
    • 镜像配置:选择官方镜像,搜索镜像modelscope:1.26.0-pytorch2.6.0-gpu-py311-cu124-ubuntu22.04

      建议使用相同镜像以避免环境兼容问题。
    • 存储挂载:持久化存储模型开发文件。本文使用对象存储 OSS。单击 OSS,单击图标 image,选择 Bucket 并新建目录(例如pai_test)。

      如果当前地域没有可用 Bucket,参考以下步骤创建:

      (可选)创建 OSS Bucket

      1. 开通OSS服务

      2. 访问OSS 控制台,单击创建 Bucket,填写 Bucket 名称地域选择与 PAI 相同的地域,其他参数保持默认,单击完成创建

        image

      • Urioss://**********oss-cn-hangzhou-internal.aliyuncs.com/pai_test/

      • 挂载路径/mnt/data/

  3. 单击确定创建实例。

    实例启动失败时,参见创建DSW实例排查。

四. 在 DSW 中开发模型

  1. 在实例列表单击打开,进入 DSW 开发环境。在启动台单击创建 Notebook

  2. 编写模型代码。本文已提供 MNIST 训练代码:下载mnist.ipynb,然后在 DSW 左上角单击image图标上传文件。

    image

  3. 训练模型。打开mnist.ipynb,找到训练代码单元格,单击image执行。代码将自动下载 MNIST 数据集到dataSet目录,并将训练后的模型保存至output目录。训练约需 10 分钟。

    image

    image

    训练过程输出模型在验证集上的准确率(反映泛化能力)。本次训练验证集准确率为 98%,可进入后续步骤。

  4. 查看训练曲线。执行以下单元格,单击 TensorBoard 地址http://localhost:6006/

    image

    TensorBoard 显示 train_loss(训练集损失)和 validation_loss(验证集损失)曲线。

    image

    查看完曲线后,单击单元格的image图标停止 TensorBoard。未停止 TensorBoard 将导致后续单元格无法执行。

    (可选)根据 loss 曲线调整超参数

    根据损失值变化趋势判断训练效果:

    • 训练结束前 train_loss 和 validation_loss 仍在下降(欠拟合)

      增加 num_epochs(训练轮次)或提高 learning_rate(学习率),增强模型拟合能力。

    • 训练结束前 train_loss 持续下降但 validation_loss 上升(过拟合)

      减少 num_epochs 或降低 learning_rate,避免过度拟合。

    • 训练结束前 train_loss 和 validation_loss 均趋于平稳(良好拟合)

      模型达到理想状态,可进入后续步骤。

    超参数调优详细说明参见阿里云大模型 ACP 课程

  5. 测试模型效果。执行以下单元格,展示 20 张测试图片及其真实标签(label)和模型预测结果(predict)。

    image

    示例输出:

    image

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

    image

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

    image

模型开发完成后,可将模型部署为在线服务,参见五. 使用 EAS 部署模型服务

重要

本文使用公共资源创建 DSW 实例,按量计费。不使用时请在实例列表页面右侧,停止或删除实例,避免持续扣费

五. 使用 EAS 部署模型服务

模型训练完成后,可以通过EAS(Elastic Algorithm Service)快速部署为在线推理服务或AI-Web应用。EAS支持异构资源,结合自动扩缩容、一键压测、灰度发布、实时监控等能力,以更低成本保障高并发场景下的服务稳定性与业务连续性。

  1. 编写模型 Web 接口并拷贝至 OSS。本文提供了 Web 接口代码和拷贝命令,执行以下单元格即可。

    image

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

    image

    测试接口。在页面上方单击 WebIDE,左侧单击request_web.py,单击image执行代码。

    image

    返回结果:

    {"prediction": 7}
    说明

    通过公网访问 DSW 中的 Web 服务需配置 VPC、NAT 网关和 EIP,详情参见通过公网访问实例中的服务

  3. 创建 EAS 服务。在 PAI 控制台左侧导航栏单击模型在线服务(EAS) > 部署服务 > 自定义部署

    配置以下参数,其他保持默认:

    • 部署方式镜像部署

    • 镜像配置:选择镜像地址,粘贴 DSW 使用的镜像地址。

      DSW 已验证该镜像可正常运行模型代码,部署时使用相同镜像可避免环境问题。

      image

    • 存储挂载:模型文件和 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 分钟,状态变为运行中时代表部署成功。

  4. 获取调用信息。在服务详情页单击查看调用信息,获取公网调用地址Token

  5. 调用服务。将以下代码中的公网调用地址Token替换为实际值,然后执行代码。

    import requests
    
    """
    测试图片url:
    label7
    http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_7_No_0.jpg
    label2
    http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_2_No_1.jpg
    label1
    http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_1_No_2.jpg
    label0
    http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_0_No_3.jpg
    label4
    http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_4_No_4.jpg
    label5
    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 服务,按量计费。不使用时请在服务列表页面右侧,停止或删除服务,避免持续扣费

六. 相关文档