DSW(Data Science Workshop)为您提供云端 AI 开发 IDE(开发机),内置多种开发环境。熟悉 Notebook 或 VSCode 的用户可快速开始模型开发。本文以 MNIST 手写体识别为例,介绍如何在 DSW 中快速开发模型。
MNIST手写体识别是深度学习最经典的入门任务之一,任务目标是通过构建机器学习模型,来识别10个手写数字(0~9)。
前提条件
使用主账号开通PAI并创建工作空间。登录PAI控制台,左上角选择开通区域,然后一键授权和开通产品。
计费说明
本文案例将使用公共资源创建DSW实例及EAS模型服务,计费方式为按量付费,详细计费规则请参见DSW计费说明、EAS计费说明。
创建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
,完整参数配置如下。如果您尚未开通OSS,或在当前地域下没有可选的Bucket,可参考如下步骤开通OSS,并新建Bucket:
Uri:
oss://**********oss-cn-hangzhou-internal.aliyuncs.com/pai_test/
;挂载路径:
/mnt/data/
;
单击确定创建DSW实例。
如果实例启动失败,您可以参考实例启动和释放常见问题解决。
在DSW中开发模型
打开DSW实例
单击打开,进入刚创建的DSW开发环境中。
PAI-DSW界面如图所示:
编写模型开发代码。以使用Notebook开发环境为例,本文已为您准备好了MNIST手写体识别的训练代码,您可以单击mnist.ipynb下载代码,然后单击DSW左上角的
图标,上传该代码文件。
执行模型训练代码。打开
mnist.ipynb
文件,找到如下训练代码的单元格,单击按钮执行代码。该段代码会自动下载MNIST数据集到
dataSet
中,并将训练后最优的检查点保存到output
目录下。训练过程大约需要10分钟。训练过程中会输出模型在验证集上的准确率,它代表了模型在未知数据上的泛化能力。可以看到本次训练在验证集上准确率为98%,模型效果很好,可以继续后续步骤。
通过TensorBoard查看loss曲线,了解训练情况。执行如下单元格,单击TensorBoard页面地址
http://localhost:6006/
。后续查看完图像后,单击单元格的
图标可停止TensorBoard。
在TensorBoard中即可看到train_loss曲线(反映训练集损失)与 validation_loss曲线(反映验证集损失)。
调用训练后的模型,体验模型效果。执行图中所示单元格,将展示20张测试图片,并输出图片的真实标签(label)和模型预测结果(predict)。
示例输出:
将模型文件拷贝至对象存储OSS中,持久化存储。本文使用的是公共资源组创建的DSW实例,文件都存储在免费的云盘中,若实例停机超过15天,云盘内容将被清空。因此,可以将模型文件拷贝至OSS中持久化存储,同时便于后续使用PAI-EAS部署模型。
登录OSS管理控制台可以看到拷贝的文件:
至此,模型的开发工作完成。如果您想要在生产环境的其他应用中调用该模型,可参考使用EAS将模型部署为在线服务。
本文使用了公共资源创建DSW实例,计费方式为按量付费。当您不需要使用DSW时请停止或删除实例,以免继续扣费。
使用EAS将模型部署为在线服务
模型训练完成后,您可以通过EAS(Elastic Algorithm Service)快速部署为在线推理服务或AI-Web应用。EAS支持异构资源,结合自动扩缩容、一键压测、灰度发布、实时监控等能力,以更低成本保障高并发场景下的服务稳定性与业务连续性。
编写模型服务的web接口,并将其拷贝到OSS中。本文已经为您准备好了web接口代码和拷贝命令,您只需执行如下单元格即可。
(可选)在DSW中验证web接口是否可以正常启动。执行如下单元格安装缺失的三方包并启动服务。
运行测试服务接口的代码。在页面上方单击WebIDE,左侧单击
request_web.py
代码文件,然后单击按钮执行代码,请求服务接口。
返回结果:
{"prediction": 7}
说明如果您想通过外部公网,直接访问DSW中的启动的web服务,还需要为DSW配置专有网络VPC,NAT网关,弹性公网EIP,详情请参见通过公网访问实例中的服务。
配置EAS。在PAI控制台左侧导航栏单击模型在线服务(EAS)> 部署服务 > 自定义部署。
配置如下关键参数,其他参数默认即可:
部署方式:镜像部署
镜像配置:选择镜像地址,复制并粘贴前文DSW使用的镜像地址。
已在使用 DSW 时验证,该镜像环境能正常运行本文的模型服务代码。因此,部署时建议使用相同镜像,以规避未知的运行环境问题。
模型配置:本文已将模型文件及服务接口代码拷贝至OSS中。因此,单击OSS,选择对应OSS路径。
运行命令:运行命令与 DSW 中的服务启动命令相同,但由于
web.py
现已挂载至/mnt/data/
,需相应修改web.py
的路径。最终运行命令为:python /mnt/data/web.py
端口:配置
web.py
中使用的端口9000
。三方库配置:在 DSW 中测试时发现,所选镜像缺少 bottle 库。因此,需要在第三方库配置中添加该库。
资源类型:选择公共资源,资源规格选择
ecs.gn7i-c8g1.2xlarge
即可。额外系统盘:单击展开更多配置,额外系统盘设置为20GB。
由于使用的镜像较大,不设置额外系统盘会因空间不足无法启动。
单击部署,创建服务。创建过程大约需要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概述。