HCSO局点ModelArts PyCharm插件最佳实践

举报
小白AI 发表于 2022/09/23 10:31:34 2022/09/23
【摘要】 HCSO ModelArts PyCharm最佳实践

HCSO局点ModelArts PyCharm插件最佳实践

1. 前言

​ PyCharm在python项目开发提供了优秀的代码编辑、调试、远程连接和同步能力,在开发者中广受欢迎。本文以Ascend Model Zoo为例,介绍如何在本地进行数据及模型开发调试,并通过PyCharm插件及ModelArts notebook进行云端开发及训练作业提交。

2. 环境准备

2.1 工具准备

工具名称 备注
Pycharm IDE 社区版/专业版
Modelarts Pycharm插件 IDE插件市场搜索ModelArts
Modelarts Notebook
本地PC python环境 需安装mindspore依赖

2.2 插件安装和登录

2.2.1 安装插件

1.安装方式1

选择File>Settings>Plugins,在Marketplace里搜索“ModelArts”,点击Install即可完成安装。
market.PNG

2.安装方式2

把获取到的插件包直接拖拽到PyCharm里,重启后,即可以完成安装;

或者选择File>Settings>Plugins,点击右上角齿轮,选择从本地安装插件,即可完成安装。
install.PNG

2.2.2 登录插件

​ 安装完插件后,会在IDE菜单栏出现ModelArts,点击后选择Edit Credential,出现如下页面

edit crential.PNG

1.获取配置yaml文件和host信息

⚠注意:

​ 由于插件需要使用API进行接口调用,有些HCSO局点的API域名未注册,因此需要把对应的API域名对应的IP地址配置到本地PC的hosts文件中,该文件一般位于C:\Windows\System32\drivers\etc

​ 点击Get more region…进入到配置文件和host信息下载地址,根据对应的局点选择yaml文件以及host信息,以成都局点为例,进入cn-southwest-228_cdzs文件夹下载配置文件到本地,然后点击Config…,导入已经下载好的配置文件,导入后会提示Import successful的提示,此时就可以看到局点信息已配置OK;对应host信息,需要把对应信息写入本地PC的C:\Windows\System32\drivers\etc

2.登录插件

​ 需要获取账号的AK和SK信息,在个人凭证页面进行下载获取,把AK和SK信息输入到插件对应位置,点击OK按钮即可完成插件的登录。

3. Ascend模型开发

3.1 本地开发💻︎

1. 下载项目代码至PC并在pycharm中打开此项目

本例中,以图像分类模型resnet50模型为例,路径为./models/official/cv/resnet/

# 下载代码至本地
git clone https://gitee.com/mindspore/models.git -b v1.5.0

image-20220712215308079.png

2. 配置本地PC开发环境

# 控制台安装mindspore
pip install mindspore

# 安装resnet依赖 需要进入到models/official/cv/resnet目录下
pip install -r requirements.txt

pip.PNG

3. 数据集准备

本样例使用的数据集为类别数为五类的花卉识别数据集,下载并解压数据到工程目录,比如可以将数据集保存在models/dataset/flower_photos文件夹。

数据集下载链接

4. 配置Pycharm解释器和入参

image-20220713105902616.png
image-20220713110134867.png

# 根据README说明文档,配置的Parameter入参如下,其中device_target="CPU"表示CPU环境运行,device_target="Ascend"表示在Ascend环境运行
--net_name=resnet50 --dataset=imagenet2012 --data_path=../../../dataset/flower_photos/ --class_num=5 --config_path=./config/resnet50_imagenet2012_config.yaml --epoch_size=1 --device_target="CPU"

5. 本地代码调测

​ 一般来说,AI开发过程中的数据集开发及模型开发是和硬件规格无关的,而且这一部分的开发耗时是最长的,因此我们可以先在本地PC的CPU环境进行数据集和模型开发调试。【本例中,因为样例代码已经支持在CPU上进行训练,因此用户能够在CPU上完成整个训练流程】

image-20220713111136098.png

​ 如果代码能够在CPU上训练,那么可以直接在Pycharm上点击运行按钮,观察是否能正常训练(如果模型只支持GPU或者Ascend,那么可能会报错,需要使用notebook进行云端调试)。

一般本地CPU算力较低并且内存较小,可能出现内存溢出的情况,此时可以把config/resnet50_imagenet2012_config.yaml的batch_size由256改为32,使得训练作业可以快速运行

size.PNG
image-20220713111742904.png

3.2 Modelarts云端开发调试☁

⚠注意:

  • 只有PyCharm专业版支持本章节,社区版可以直接跳转至3.3.1章节完成创建训练作业。

云端开发调试优势:

  • 环境保持一致
  • 配置一键完成
  • 代码远程debug
  • 资源按需使用

3.2.1 连接云端开发环境

1. 创建或打开云端Ascend规格的notebook

create.PNG

2. 通过Pycharm插件连接云端notebook

​ 插件登录成功后,点击**Notebook>Remote Config…**选项,在打开的界面中选择自己要连接的notebook实例

config ssh.PNG

在KeyPair中选择该notebook实例对应的秘钥,选择完成后,点击Apply进行远程notebook一键配置,等待一段时间后,会出现重启IDE的确认框,点击确认重启,重启后即可生效。

3.2.2 远程调试

1. 同步代码和数据至云端notebook

代码同步至notebook:

image-20220713113530433.png

数据同步至云端:

1.1 文件夹直接上传至notebook

​ 类似上传代码至notebook,直接上传数据文件夹。(由于本案例数据集中图片数量较多,通过IDE进行上传比较耗时,推荐使用1.2方式进行上传)

1.2 数据集压缩包上传至notebook后,在notebook中解压

把数据集压缩包上传至notebook,在notebook中做解压操作。

使用tar -zxvf flower_photos.tgz对数据集进行解压。

unzip data.PNG

⚠注意:

  • 当数据集比较大达到数GB时,建议先将数据集先上传至OBS再通过OBS上传至notebook,PyCharm只适合做小文件的同步上传;
  • 调试时建议使用较小的数据集子集,方便数据同步与数据加载。

2. 配置云端python解释器

image-20220713113913040.png

3. 云端notebook安装依赖

image-20220713114208273.png

4. 云端调试与运行

​ 配置完云端的解释器后,Pycharm可以直接使用远端notebook中的python解释器和硬件规格,满足用户在本地体验到真实的硬件环境并进行全流程的调试和验证。

⚠基于Ascend的样例中,可能会抛出异常

ModuleNotFoundError: No module named 'te'

原因是:pycharm的PYTHONPATH会将notebook中的环境变量中指定的PYTHONPATH进行覆盖,因此,还需要将te包所在的路径添加到Pycharm的PYTHONPATH中。te包的路径可以通过pip show te查看,对应的路径为:/usr/local/Ascend/nnae/5.0.3/compiler/python/site-package

可以在运行参数中,把该路径加入到PYTHONPATH中

$PYTHONPATH:/usr/local/Ascend/nnae/5.0.3/compiler/python/site-package

PYTHONPATH.PNG

5. 保存开发环境镜像

成功完成notebook调测后,此时的notebook已经包含了模型训练所有的依赖环境,因此我们可以将已经调测完成的开发环境保存成一个镜像,选择notebook->更多->保存镜像。此时notebook会冻结,需要等待几分钟(只需要保存一次)。

保存镜像.PNG

保存后的镜像可以在Modelarts->镜像管理中进行查看,对应完整的镜像名称为详情->SWR地址

swr-notebook.PNG

✔温馨提示:notebook在代码调试完成及保存镜像后就可以关闭了,减少资源扣费。

6.按需使用实例资源

6.1 停止notebook实例

当实例处于运行状态时,点击插件该实例名称,停止实例。

stop.PNG

6.2 启动notebook实例

当实例处于停止状态时,点击插件该实例名称,启动实例。(默认启动时间为4小时)

start.PNG

3.3 提交训练作业

ModelArts训练平台提供了海量的算力规格和训练优化,我们可以将本地调试好的代码以及之前保存的开发环境镜像直接在Pycharm中提交训练作业。

由于训练作业是在云端运行,因此需要把训练数据和训练代码上传至云端。

对应训练数据,我们需要把下载好的训练数据上传至OBS,可以借助OBS客户端进行上传,对应的OBS客户端可以在OBS服务页面进行下载并登陆。

obs client.PNG

把已经下载好的训练数据通过OBS客户端上传至对应的OBS,新建data文件夹存放训练数据,新建job文件夹用来存放训练作业相关数据。

image-20220917150146430.png

3.3.1 使用预置镜像创建训练作业

image-20220713153854659.png

参数名称 含义
JobName 训练作业的名称,默认为当前的时间
AI Engine 训练引擎,包括引擎类型和版本号
Boot File Path 本地训练启动代码
Code Directory 本地代码目录
Image Path(optional) 可选项,输入自定义镜像swr路径地址(使用的自定义镜像和预置的训练镜像引擎一致)
Data Obs Path OBS上的数据集路径(需要提前把数据上传到OBS中)
Training Obs Path OBS路径(该路径必须是存在的),用于保存代码和训练模型及日志的输出
Running Parameters 训练脚本接收的参数
Specifications 计算规格,这里选择NPU:1*Ascend 910CPU:24*vCPUs 96GB
Compute Node 节点数(单机训练默认为1)

在RunningParameters中填入相关参数,此时需要将运行环境参数配置为Ascend

--net_name=resnet50
--dataset=imagenet2012
--enable_modelarts=True
--class_num=5
--config_path=/home/ma-user/modelarts/user-job-dir/resnet/config/resnet50_imagenet2012_config.yaml
--epoch_size=10
--device_target=Ascend

yuzhi.PNG

填写完训练作业参数,即可以提交查看训练作业

3.3.2使用自定义镜像创建训练作业

使用预置命令创建训练作业

使用自定义镜像创建训练作业和使用预置镜像创建训练作业的差别,就是在Image Path处填入自定义镜像地址,同时在选择预置镜像时要和自定义镜像保持一致。

swryuzhi.PNG

3.3.3 提交查看训练作业

点击Apply and Run按钮就可以直接提交训练作业,训练的日志可以在Pycharm窗口中实时展示。

job-ide.PNG

网页端也可以看到实时的训练动态。

job-web.PNG

如果想要在中途终止训练,可以在pycharm中点击Modelarts->Training Job->Stop,或者直接在网页端点击终止。

image-20220713160046049.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。