• 沒有找到結果。

使用 PyCharm ToolKit 工具快速实现模型训练和部署

4.3 使用PyTorch实现物体检测(Faster R-CNN)(即将下线)

4.1 使用 PyCharm ToolKit 工具快速实现模型训练和部署

本章节提供了使用MXNet实现手写数字图像识别应用的示例,帮助您使用ModelArts 提供的PyCharm ToolKit工具,在本地快速完成模型的训练和部署。更多关于PyCharm ToolKit工具的描述,请参见《工具指南》。

MNIST是一个手写体数字识别数据集,常被用作深度学习的入门样例。本示例将针对 MNIST数据集,使用MXNet原生接口编写的模型训练脚本(ModelArts默认提供),

在ModelArts PyCharm ToolKit中完成模型训练,并将此模型部署为在线服务。部署完 成后,用户可通过在线服务识别输入图片中的数字。

开始使用样例前,请仔细阅读准备工作罗列的要求,提前完成准备工作。本示例模型 构建的步骤如下所示:

准备工作

● 本地已安装PyCharm 2019.2或以上版本,推荐Windows版本,Community或 Professional均可,请单击PyCharm工具下载地址获取工具并在本地完成安装。

– 使用PyCharm ToolKit远程连接Notebook开发环境,仅限PyCharm专业版。

– 使用PyCharm ToolKit提交训练作业,社区版和专业版都支持,但仅限于提交 旧版训练作业,暂不支持新版训练作业。

● 已注册华为云帐号,且在使用ModelArts前检查帐号状态,帐号不能处于欠费或冻 结状态。

● 在ModelArts管理控制台中,当前帐号已完成访问授权的配置。如果已完成,此操 作可跳过。

创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。确保您使用的OBS 目录与ModelArts在同一区域。

4-1 文件夹列表

文件夹名称 用途

“dataset-mnist” 用于存储数据集。

“mnist-output” 用于存储训练输出的模型和日志文件。

步骤 1:安装 PyCharm ToolKit,并添加访问密钥

1. 获取PyCharm ToolKit工具安装包,单击ToolKit工具的下载地址,获得工具包。

2. 打开本地PyCharm工具。

3. 在PyCharm工具中,选择菜单栏的“File > Settings”,弹出“Settings”对话 框。

4. 在“Settings”对话框中,首先单击左侧导航栏中的“Plugins”,然后单击右侧 的设置图标,选择“Install Plugin from Disk”,弹出文件选择对话框。

4-1 选择从本地安装插件

5. 在弹出的对话框中,从本地目录选择ToolKit的工具zip包,然后单击“OK”。

4-2 选择插件文件

最佳实践 4 开发工具

6. 单击“Restart IDE”重启PyCharm。在弹出的确认对话框中,单击“Restart”开 始重启。

4-3 重启 PyCharm

7. 重启成功后,打开一个Project,当PyCharm工具栏出现“ModelArts”页签,表 示ToolKit工具已安装完成。

4-4 安装成功

8. 单击工具栏上的“ModelArts > Edit Credential”,在PyCharm中添加访问密钥。

– 获取此帐号的访问密钥(“AK/SK”),详细操作请参见获取访问密钥。

– PyCharm ToolKit安装后,在ToolKit工具中添加访问密钥,详细操作请参见使

用访问秘钥登录。

最佳实践 4 开发工具

4-5 填写区域和访问密钥

9. 查看认证结果。

在右下角Event Log区域中,当提示如下类似信息时,表示访问密钥添加成功。

16:01 Validate Credential Success: The HUAWEI CLOUD credential is valid.

步骤 2:准备数据

ModelArts在公共OBS桶中提供了MNIST数据集,命名为“Mnist-Data-Set”,因此,

本文的操作示例使用此数据集进行模型构建。您需要执行如下操作,将数据集上传至

您的OBS目录下,即准备工作中您创建的OBS目录“test-modelarts/dataset-mnist”。

1. 单击数据集下载链接,将“Mnist-Data-Set”数据集下载至本地。

2. 在本地,将“Mnist-Data-Set.zip”压缩包解压。例如,解压至本地“Mnist-Data-Set”文件夹下。

3. 参考上传文件,使用批量上传方式将“Mnist-Data-Set”文件夹下的所有文件上 传至“test-modelarts/dataset-mnist”OBS路径下。

“Mnist-Data-Set”数据集包含的内容如下所示,其中“.gz”为对应的压缩包。

– “t10k-images-idx3-ubyte”:验证集,共包含10000个样本。

– “t10k-images-idx3-ubyte.gz”:验证集的压缩包文件。

– “t10k-labels-idx1-ubyte”:验证集标签,共包含10000个样本的类别标 签。

– “t10k-labels-idx1-ubyte.gz”:验证集标签的压缩包文件。

– “train-images-idx3-ubyte”:训练集,共包含60000个样本。

– “train-images-idx3-ubyte.gz”:训练集的压缩包文件。

– “train-labels-idx1-ubyte”:训练集标签,共包含60000个样本的类别标 签。

最佳实践 4 开发工具

1. 在gitee的ModelArts-Lab工程中,单击“克隆/下载”,然后单击“下载ZIP”,

下载工程。

2. 下载完成后,解压缩“ModelArts-Lab-master.zip”文件,然后在“\ModelArts-Lab-master\official_examples

\Using_MXNet_to_Create_a_MNIST_Dataset_Recognition_Application\codes”

目录中获取到训练代码文件“train_mnist.py”。

3. 打开PyCharm工具,单击“File > New Project”创建新工程, 在工程目录下创建

“src”文件夹,并将训练代码文件“train_mnist.py”拷贝到“src”文件夹下。

1. 在PyCharm工具栏中,选择“ModelArts > Edit Training Job Configuration”。

2. 在弹出的对话框中,按照如下示例配置训练参数。

– “Job Name”:自动生成,首次提交训练作业时,该名称也可以自己指定。

– “AI Engine”:选择“MXNet”,版本为“MXNet-1.2.1-python3.6”。

– “Algorithm Source”:此处选择“Frequently-used”,代表常用框架。

Custom表示自定义镜像,基于自定义镜像的训练作业案例请参见使用自定义

镜像创建训练作业。

– “Specifications”:选择GPU规格。

– “OBS Path”:填写准备工作中创建的输出路径,用于存储训练输出模型和 日志文件。

– “Data Path in OBS”:填写步骤2:准备数据中数据上传的OBS目录。此处 需完整OBS路径,需包含OBS桶名称。

此示例填写的值如图所示,请务必修改为您自己的OBS桶及路径。

– “Boot File Path”:选择本地的训练脚本“train_mnist.py”。

– “Code Directory”:选择启动脚本所在“src”目录。

– “Running Parameters”:是训练脚本所需要的输入参数,本样例中没有参 数,无需填写。

填写完成后,单击“Apply and Run”提交训练作业到云上ModelArts。

最佳实践 4 开发工具

说明

由于MNIST数据集数据较多,为提升训练效率,操作示例选择GPU训练。但是,GPU的费 用高于CPU,请根据实际情况选择可用的资源池。

4-7 配置训练作业

3. 训练作业提交后,可在下方查看训练日志。当训练日志中出现“Current training job status: Successful”类似信息时,表示训练作业运行成功。

4-8 查看训练日志

其中, “ModelArts Event Log”栏为工具打印的日志,“ModelArts Training Log”为训练脚本代码打印的日志。

从日志可以看到,工具会先将本地工程的代码自动上传至云上OBS,然后自动提 交一个训练作业。作业提交成功后,工具会实时从云上的训练环境获取日志并展 示在“ModelArts Training Log”窗口,直至作业运行结束。

4. 在PyCharm的左边菜单栏,单击“ModelArts Explorer”,选择刚才提交的作 业,双击版本号“V0001”,可以查看作业详情。

最佳实践 4 开发工具

4-9 选择对应的训练作业及版本

最佳实践 4 开发工具

4-10 训练作业详情

步骤 5:编写推理代码和配置文件,并上传至模型所在路径

ModelArts提供了本示例需要使用的推理代码“customize_service.py”和配置文件

“config.json”,文件路径和下载的git工程中的训练代码在同一目录。此推理代码和 配置文件是ModelArts提供的示例。

在步骤4:训练模型中,训练作业生成的模型存储在“test-modelarts/mnist-output/MA-mnist-11-30-16/output/V0001”路径下(其中MA-mnist-11-30-16是Job Name,如果配置时填写了自定义Job Name,则路径中就是自定义的Job Name),

且系统将自动生成“model”文件夹,模型相关的文件存储在此目录下。将获取的

“customize_service.py”和“config.json”文件,上传至OBS的“model”文件夹 下。

说明

如果训练作业运行多次,将在“训练输出位置”生成不同的版本,即“mnist-output”目录下将 生成多种版本的目录,如“V0001”、“V0002”,请基于训练作业的版本,将文件上传至对应 版本下的“model”文件夹内。

前往OBS管理控制台,找到“test-modelarts”桶,然后进入“test-modelarts/mnist-output/MA-mnist-11-30-16/output/V001/model”路径,执行“上传对象”的操 作。OBS的上传操作指导,请参见上传文件。

步骤 6:部署在线服务

训练完成的模型还是存储在OBS路径中,您可以将此模型导入到ModelArts中并部署为

最佳实践 4 开发工具

4-11 部署为在线服务

2. 在弹出的对话框中,按照如下说明填写部署为在线服务的参数。

– “Service Name”:自动生成,也可以自定义。

– “Auto Stop”:勾选Auto Stop,表示启动自动停止功能,服务会在指定时 间后自动停止。

– “Model Path”:自动填写,无需自己配置。与您选择的训练作业及其版本 一致。

– “Environment Variables”:填写运行参数,设置为

“input_data_name=images;input_data_shape=0,1,28,28;output_data_sha pe=0,10”。

“input_data_name”:参数值必须是images。针对自己开发训练脚本 的场景,此参数是必须设置的。您可以在导入模型时设置参数,也可以 写到推理代码中。

“input_data_shape”:代表NCHW。本示例的数值为“0,1,28,28”,

表示设置了输入图片的规则,其中,输入预测图片大小必须是

“28px*28px”。

“output_data_shape”:置信度。本示例指定范围为“0~10”。表示 输出结果会显示“0~9”中10个类别,属于每一个类别的概率。

信息填写完成后,单击“OK”,开始服务部署。

最佳实践 4 开发工具

4-12 部署为在线服务

可以在最下方的日志栏查看服务部署进度。

4-13 查看部署进度

模型部署上线需要花费一些时间,请耐心等待几分钟。当出现类似“Service status is running”信息时,表示服务部署成功。服务部署成功后,将展示在线服

最佳实践 4 开发工具

4-14 完成部署

步骤 7:测试服务

在线服务部署成功后,您可以进入在线服务,发起预测请求进行测试。

1. 部署成功后,单击提供的链接进入ModelArts控制台的“部署上线 >在线服务”界 面。

2. 找到刚部署的在线服务,单击服务名称,进入在线服务详情页面中,单击“预 测”页签,进入预测页面。

3. 在“选择预测图片文件”右侧,单击“上传”按钮,上传一张黑底白字的图片,

然后单击“预测”。

预测完成后,预测结果显示区域将展示预测结果,根据预测结果内容,可识别出 此图片的数字是“2”的概率为“1”。

说明

● 由于推理代码和配置文件中已指定图片要求,用于预测的图片,大小必须为

“28px*28px”,且图片必须是黑底白字。

● 建议不要使用数据中自带的图片,可以使用Windows自带的画图工具绘制一张。

4-15 预测结果

步骤 8:清除相应资源,避免产生费用

为避免产生不必要的费用,在完成试用后,建议您删除相关资源,如在线服务、训练 作业及其OBS目录。

● 进入ModelArts管理控制台,删除在线服务:在“在线服务”页面,单击操作列的

“更多>删除”。

● 在PyCharm菜单栏中,选择“ModelArts > Stop Training Job”停止此训练作 业。或者进入ModelArts管理控制台,在“训练作业旧版”页面,单击操作列的

“删除”,删除此训练作业。

最佳实践 4 开发工具

● 进入OBS管理控制台,删除数据准备阶段创建的OBS桶。先逐个删除桶内文件夹

步骤2:使用Notebook训练模型并预测

步骤3:删除相关资源,避免计费

准备工作

● 已注册华为云帐号,且在使用ModelArts前检查帐号状态,帐号不能处于欠费或冻 结状态。

“dataset-mnist” 用于存储数据集。

“mnist-MoXing-code” 用于存储编写好的模型代码

“mnist-MoXing-code” 用于存储编写好的模型代码

相關文件