ModelArts Ascend与PyCharm联合开发

举报
小白AI 发表于 2022/08/15 13:00:55 2022/08/15
【摘要】 工具名称 备注PyCharm IDE 仅专业版支持远程开发,社区版不支持ModelArts PyCharm插件 PyCharm ToolkitModelArts Notebook ModelArts控制台本地PC python环境 需安装mindspore依赖ModelArts Ascend与PyCharm联合开发前言PyCharm在python项目开发提供了优秀的代码编辑、调试、远程连接和...

工具名称 备注
PyCharm IDE 仅专业版支持远程开发,社区版不支持
ModelArts PyCharm插件 PyCharm Toolkit
ModelArts Notebook ModelArts控制台
本地PC python环境 需安装mindspore依赖
ModelArts Ascend与PyCharm联合开发

1. 前言

PyCharm在python项目开发提供了优秀的代码编辑、调试、远程连接和同步能力,在开发者中广
受欢迎,而Ascend的计算设备并不容易获取用来做交互式代码调测。本文以Ascend Model Zoo案例为
例,介绍

  1. 在PC端本地进行数据及模型开发调试,
  2. 通过PyCharm远程开发模式连接ModelArts Notebook开发容器,完成直连Ascend设备的交互式
    远程开发和调测
  3. 通过ModelArts Pycharm插件一键化将训练作业提交到ModelArts平台,进一步持续训练和模型迭
    代。

2. 环境准备

2.1 工具准备

工具名称 备注
ModelArts PyCharm插件 插件文档地址
ModelArts Notebook Notebook 控制台
本地PC python环境 需安装mindspore依赖
PyCharm IDE 仅专业版支持远程开发,社区版不支持

3. Ascend模型开发

3.1 本地环境准备💻

  1. 下载ModelZoo项目代码至PC并在PyCharm中打开此项目
    本例中,以图像分类模型resnet50模型为例,路径为 ./models/official/cv/resnet/
    git clone https://gitee.com/mindspore/models.git -b v1.5.0

  2. 配置本地PC开发环境
    # 控制台安装mindspore pip install mindspore
    # 安装resnet依赖 pip install -r .\official\cv\resnet\requirements.txt

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

  4. 配置PyCharm解释器和入参
    image.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"

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

3.2 利用ModelArts提供的云端Ascend算力资源完成交互式调测☁

3.2.1 连接云端开发环境

  1. 安装PyCharm插件
    安装插件的流程可以参考PyCharm插件安装

  2. 创建或打开云端Ascend规格的notebook
    image.png

  3. 通过PyCharm插件连接云端notebook
    参考:https://support.huaweicloud.com/devtool-modelarts/devtool-modelarts_0016.html
    关键字:鉴权、选择带有SSH功能的notebook

3.2.2 远程调试

  1. 同步代码和数据至云端notebook
    ⚠注意:
    当数据集比较大时,建议先将数据集先上传至OBS再通过OBS上传至notebook,PyCharm只适合做小文件的同步上传;
    调试时建议使用较小的数据集子集,方便数据同步与数据加载。
    image.png

  2. 配置云端python解释器
    image.png

  3. 云端notebook安装依赖
    image.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
    image.png

  5. 保存开发环境镜像
    成功完成在notebook的调测后,此时的notebook对应的开发容器已经包含了模型训练所有的依赖环境,可以将已经调测完成的开发环境保存成一个容器镜像,作为训练依赖的固化,不仅可以作为开发环境使用和分享给他人,并且可同于后面的训练任务提交到训练系统和持续的模型迭代中。选择notebook->更多->保存镜像。此时notebook会冻结,需要等待几分钟(只需要保存一次)。
    image.png

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

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

3.2.3 提交训练作业

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

  1. 创建训练作业
    image.png
参数名称 含义
JobName 训练作业的名称,默认为当前的时间
Image Path 自定义镜像路径,也就是前面开发环境保存镜像后的SWR地址
Boot Command 训练代码启动命令
Code Directory 本地代码路径
Data Obs Path OBS上的数据集路径(需要提前把数据上传到OBS中:上传对象)
Training Obs Path OBS路径(该路径必须是存在的),用于保存代码和训练模型及日志的输出
RunningParameters 训练脚本接收的参数(这些参数可以直接在Boot Command中指定)
Specifications 计算规格,这里选择 NPU:1Ascend 910CPU:24vCPUs 96GB
Compute Node 节点数(单机训练默认为1)

训练作业的配置参数可以参考官方文档
Custom参数介绍:
Ascend Model_zoo的样例已经针对ModelArts训练平台进行了适配,我们只需要传入 –
enable_ModelArts=True 就可以直接适配到训练平台了。(实际上是在代码中自动接收并解析了
数据集路径 --data_url 、模型输出路径 --train_url )

# boot command
# 添加--enable_ModelArts=True参数后可以不用再指定data_path参数,代码会自动解析
source activate && conda activate /home/ma-user/anaconda3/envs/MindSpore && cd
${MA_JOB_DIR} && python resnet/train.py                       --net_name=resnet50 
--dataset=imagenet2012          
--enable_ModelArts=True           
--class_num=5 
--config_path=resnet/config/resnet50_imagenet2012_config.yaml 
--epoch_size=10 
--device_target="Ascend"

image.png

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

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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