ModelArts Ascend与PyCharm联合开发
工具名称 备注
PyCharm IDE 仅专业版支持远程开发,社区版不支持
ModelArts PyCharm插件 PyCharm Toolkit
ModelArts Notebook ModelArts控制台
本地PC python环境 需安装mindspore依赖
ModelArts Ascend与PyCharm联合开发
1. 前言
PyCharm在python项目开发提供了优秀的代码编辑、调试、远程连接和同步能力,在开发者中广
受欢迎,而Ascend的计算设备并不容易获取用来做交互式代码调测。本文以Ascend Model Zoo案例为
例,介绍
- 在PC端本地进行数据及模型开发调试,
- 通过PyCharm远程开发模式连接ModelArts Notebook开发容器,完成直连Ascend设备的交互式
远程开发和调测 - 通过ModelArts Pycharm插件一键化将训练作业提交到ModelArts平台,进一步持续训练和模型迭
代。
2. 环境准备
2.1 工具准备
工具名称 | 备注 |
---|---|
ModelArts PyCharm插件 | 插件文档地址 |
ModelArts Notebook | Notebook 控制台 |
本地PC python环境 | 需安装mindspore依赖 |
PyCharm IDE | 仅专业版支持远程开发,社区版不支持 |
3. Ascend模型开发
3.1 本地环境准备💻
-
下载ModelZoo项目代码至PC并在PyCharm中打开此项目
本例中,以图像分类模型resnet50模型为例,路径为 ./models/official/cv/resnet/
git clone https://gitee.com/mindspore/models.git -b v1.5.0
-
配置本地PC开发环境
# 控制台安装mindspore pip install mindspore
# 安装resnet依赖 pip install -r .\official\cv\resnet\requirements.txt
-
数据集准备
本样例使用的数据集为类别数为五类的花卉识别数据集,下载并解压数据到工程目录,比如可以将数据
集保存在 models/dataset/flower_photos 文件夹。
数据集下载地址 -
配置PyCharm解释器和入参
# 根据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"
- 本地代码调测
一般来说,AI开发过程中的数据集准备开发及模型开发是和硬件规格无关的,而且这一部分的开发
耗时是最长的,因此我们可以先在本地PC的CPU环境进行数据集和模型开发调试。【本例中,因为样例
代码已经支持在CPU上进行训练,因此用户能够在CPU上完成整个训练流程】
3.2 利用ModelArts提供的云端Ascend算力资源完成交互式调测☁
3.2.1 连接云端开发环境
-
安装PyCharm插件
安装插件的流程可以参考PyCharm插件安装 -
创建或打开云端Ascend规格的notebook
-
通过PyCharm插件连接云端notebook
参考:https://support.huaweicloud.com/devtool-modelarts/devtool-modelarts_0016.html
关键字:鉴权、选择带有SSH功能的notebook
3.2.2 远程调试
-
同步代码和数据至云端notebook
⚠注意:
当数据集比较大时,建议先将数据集先上传至OBS再通过OBS上传至notebook,PyCharm只适合做小文件的同步上传;
调试时建议使用较小的数据集子集,方便数据同步与数据加载。
-
配置云端python解释器
-
云端notebook安装依赖
-
云端调试与运行
配置完云端的解释器后,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
-
保存开发环境镜像
成功完成在notebook的调测后,此时的notebook对应的开发容器已经包含了模型训练所有的依赖环境,可以将已经调测完成的开发环境保存成一个容器镜像,作为训练依赖的固化,不仅可以作为开发环境使用和分享给他人,并且可同于后面的训练任务提交到训练系统和持续的模型迭代中。选择notebook->更多->保存镜像。此时notebook会冻结,需要等待几分钟(只需要保存一次)。
保存后的镜像可以在ModelArts->镜像管理中进行查看,对应完整的镜像名称为详情->SWR地址
✔温馨提示:notebook在代码调试完成及保存镜像后就可以关闭了,减少资源扣费。
3.2.3 提交训练作业
ModelArts 训练平台提供了海量的算力规格和训练优化,我们可以将本地调试好的代码以及之前保存
的开发环境镜像直接在PyCharm中提交训练作业。
- 创建训练作业
参数名称 | 含义 |
---|---|
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"
- 提交训练作业
点击 Apply and Run 按钮就可以直接提交训练作业,训练的日志可以在PyCharm窗口中实时展示。
网页端也可以看到实时的训练动态。
如果想要在中途终止训练,可以在PyCharm中点击ModelArts->Training Job->Stop,或者直接在网页端点击终止。
- 点赞
- 收藏
- 关注作者
评论(0)