AI开发平台ModelArtsAI开发平台ModelArts

计算
弹性云服务器 ECS
裸金属服务器 BMS
云手机 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器 HECS
VR云渲游平台 CVR
特惠算力专区
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属企业存储服务
云存储网关 CSG
专属分布式存储服务 DSS
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
园区智能体 CampusGo
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
视频分析服务 VAS
语音交互服务 SIS
知识图谱 KG
人证核身服务 IVS
IoT物联网
设备接入 IoTDA
设备管理 IoTDM(联通用户专用)
全球SIM联接 GSL
IoT开发者服务
IoT数据分析
车联网服务 IoV
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
开发与运维
软件开发平台 DevCloud
项目管理 ProjectMan
代码托管 CodeHub
流水线 CloudPipeline
代码检查 CodeCheck
编译构建 CloudBuild
部署 CloudDeploy
云测 CloudTest
发布 CloudRelease
移动应用测试 MobileAPPTest
CloudIDE
Classroom
开源镜像站 Mirrors
应用魔方 AppCube
云性能测试服务 CPTS
应用管理与运维平台 ServiceStage
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
资源管理服务 RMS
应用身份管理服务 OneAccess
区块链
区块链服务 BCS
智能协作
IdeaHub
开发者工具
SDK开发指南
API签名指南
DevStar
HCloud CLI
Terraform
Ansible
云生态
云市场
合作伙伴中心
华为云培训中心
其他
管理控制台
消息中心
产品价格详情
系统权限
我的凭证
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
应用编排服务 AOS
多云容器平台 MCP
基因容器 GCS
容器洞察引擎 CIE
云原生服务中心 OSC
容器批量计算 BCE
容器交付流水线 ContainerOps
应用服务网格 ASM
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB (for openGauss)
云数据库 GaussDB(for MySQL)
云数据库 GaussDB NoSQL
数据管理服务 DAS
数据库和应用迁移 UGO
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据湖治理中心 DGC
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
API网关 APIG
分布式缓存服务 DCS
分布式消息服务RocketMQ版
企业应用
域名注册服务 Domains
云解析服务 DNS
云速建站 CloudSite
网站备案
华为云WeLink
会议
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMAExchange
API全生命周期管理 ROMA API
安全与合规
安全技术与应用
DDoS防护 ADS
Web应用防火墙 WAF
云防火墙 CFW
应用信任中心 ATC
企业主机安全 HSS
容器安全服务 CGS
云堡垒机 CBH
数据库安全服务 DBSS
数据加密服务 DEW
数据安全中心 DSC
云证书管理服务 CCM
SSL证书管理 SCM
漏洞扫描服务 VSS
态势感知 SA
威胁检测服务 MTD
管理检测与响应 MDR
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
专属云
专属计算集群 DCC
解决方案
高性能计算 HPC
SAP
游戏云
混合云灾备
价格
成本优化最佳实践
专属云商业逻辑
用户服务
帐号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
昇腾
MindStudio 版本:3.0.3
文档首页> AI开发平台ModelArts> 最佳实践> 开发工具> 使用PyCharm ToolKit工具快速实现模型训练和部署
更新时间:2021/10/21 GMT+08:00
分享

使用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服务中创建桶和文件夹,用于存放样例数据集以及模型。如下示例中,请创建命名为“test-modelarts”的桶,并创建如表1所示的文件夹。
    创建OBS桶和文件夹的操作指导请参见创建桶新建文件夹。确保您使用的OBS目录与ModelArts在同一区域。
    表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”,弹出文件选择对话框。
    图1 选择从本地安装插件
  5. 在弹出的对话框中,从本地目录选择ToolKit的工具包,然后单击“OK”
    图2 选择插件文件
  6. 单击“Restart IDE”重启PyCharm。在弹出的确认对话框中,单击“Restart”开始重启。
    图3 重启PyCharm
  7. 重启成功后,打开一个Project,当PyCharm工具栏出现“ModelArts”页签,表示ToolKit工具已安装完成。
    图4 安装成功
  8. 获取访问密钥,并在PyCharm中添加密钥。
    图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个样本的类别标签。
    • “train-labels-idx1-ubyte.gz”:训练集标签的压缩包文件。

步骤3:编写训练代码

ModelArts提供了本示例需要使用的训练代码,请获取并在PyCharm工程中打开。
  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”文件夹下。
    图6 将训练代码拷贝至src目录

步骤4:训练模型

数据和代码准备完成后,您可以创建一个训练作业,选用MXNet引擎,基于本地的train_mnist.py训练脚本,并最终生成一个可用的模型。本示例已提供编码完成的脚本(基于MXNet引擎的原生接口),如果使用自行编写的代码,请使用ModelArts支持的引擎类型及其对应版本的接口,并满足其要求。

  1. 在PyCharm工具栏中,选择“ModelArts > Edit Training Job Configuration”
  2. 在弹出的对话框中,按照如下示例配置训练参数。
    • “Job Name”:自动生成,首次提交训练作业时,该名称也可以自己指定。
    • “AI Engine”:选择“MXNet”,版本为“MXNet-1.2.1-python3.6”
    • “Algorithm Source”:选择“Frequently-used”,代表常用框架。
    • “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。

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

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

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

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

  4. 在PyCharm的左边菜单栏,单击“ModelArts Explorer”,选择刚才提交的作业,双击版本号“V0001”,可以查看作业详情。
    图9 选择对应的训练作业及版本
    图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中并部署为在线服务。

  1. 在训练作业版本号上单击鼠标右键,选择“Deploy to Service”
    图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_shape=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”,开始服务部署。

    图12 部署为在线服务

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

    图13 查看部署进度

    模型部署上线需要花费一些时间,请耐心等待几分钟。当出现类似“Service status is running”信息时,表示服务部署成功。服务部署成功后,将展示在线服务的链接,单击链接可以进入华为云ModelArts在线服务的界面。

    首次进入需要输入华为云帐号密码登录。

    图14 完成部署

步骤7:测试服务

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

  1. 部署成功后,单击提供的链接进入在线服务。
  2. 在线服务详情页面中,单击“预测”页签,进入预测页面。
  3. “选择预测图片文件”右侧,单击“上传”按钮,上传一张黑底白字的图片,然后单击“预测”

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

    • 由于推理代码和配置文件中已指定图片要求,用于预测的图片,大小必须为“28px*28px”,且图片必须是黑底白字。
    • 建议不要使用数据中自带的图片,可以使用Windows自带的画图工具绘制一张。
    图15 预测结果

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

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

  • 进入ModelArts管理控制台,删除在线服务:在“在线服务”页面,单击操作列的“更多>删除”
  • 进入ModelArts管理控制台,删除训练作业:在“训练作业”页面,单击操作列的“删除”
  • 进入OBS管理控制台,删除数据准备阶段创建的OBS桶。先逐个删除桶内文件夹和文件,再执行删除桶的操作。
分享:

    相关文档

    相关产品