当前位置: 首页 > article >正文

使用ModelArts PyCharm插件调试训练ResNet50图像分类模型

准备工作
  • 本地已安装2019.2-2023.2之间(包含2019.2和2023.2)版本的PyCharm专业版工具,推荐Windows版本,社区版或专业版均可,请单击PyCharm工具下载地址获取工具并在本地完成安装。
    • 使用PyCharm ToolKit远程连接Notebook开发环境,仅限PyCharm专业版。
    • 使用PyCharm ToolKit提交训练作业,社区版和专业版都支持。
  • 已注册华为账号并开通华为云,且在使用ModelArts前检查账号状态,账号不能处于欠费或冻结状态。
  • 已创建当前使用账号的访问密钥,并获得对应的AK和SK。如果未创建,请参见创建访问密钥(AK和SK)。
  • 当前账号已完成访问授权的配置。如未完成,请参考使用委托授权。
环境说明
  • Python 3.7.6
  • PyCharm 2023.1.3 (Professional Edition)说明:

    本案例使用PyCharm版本为PyCharm 2023.1.3 (Professional Edition),不同版本PyCharm之间部分界面可能不同,仅供参考。

步骤1:安装和登录PyCharm ToolKit
  1. 安装PyCharm ToolKit。在PyCharm中选择“File>Settings>Plugins”,在Marketplace里搜索“ModelArts”,单击“Install”即可完成安装。

    图1 通过Marketplace安装

  2. 登录PyCharm ToolKit。
    1. 打开“Edit Credential”界面。

      安装完插件后,会在IDE菜单栏出现“ModelArts”,单击后选择“Edit Credential”。

      说明:

      如果菜单栏中找不到“ModelArts > Edit Credential”,可能是PyCharm版本过高,PyCharm toolkit未适配2023.2之后版本的PyCharm工具。请下载2019.2-2023.2之间(包含2019.2和2023.2)版本的PyCharm专业版工具。

    2. 验证登录信息。

      将创建访问密钥(AK和SK)输入到ToolKit对应位置,单击OK按钮进行登录,出现下图提示即为登录成功。

      如果未创建,请参见创建访问密钥(AK和SK)

      图2 成功登录提示

步骤2:使用PyCharm进行本地开发调试
  1. 下载代码至本地。本案例中,以图像分类模型resnet50模型为例,路径为“./models/official/cv/resnet/”
    # 在本地电脑Terminal下载代码至本地
    git clone https://gitee.com/mindspore/models.git -b v1.5.0
  • 图3 下载代码至本地

  • 配置本地PC开发环境。修改“models/official/cv/resnet/requirements.txt”文件,改为:
    numpy==1.17.5
    scipy==1.5.4
    easydict==1.9

执行pip命令安装:

# 在PyCharm的Terminal安装mindspore
pip install mindspore==1.7.0 --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple
# 在PyCharm的Terminal安装resnet依赖
pip install -r .\official\cv\resnet\requirements.txt --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple
  1. 图7 配置PyCharm解释器

    说明:

    根据README说明文档,配置Parameter参数device_target="CPU"表示CPU环境运行,device_target="Ascend"表示在Ascend环境运行。

  2. 本地代码开发调测。

    一般本地CPU算力较低并且内存较小,可能出现内存溢出的报错,因此可以把“models/official/cv/resnet/config/resnet50_imagenet2012_config.yaml”的“batch_size”由“256”改为“32”,使得训练作业可以快速运行。

    图8 修改batch_size

    AI开发过程中的数据集开发及模型开发是和硬件规格无关的,而且这一部分的开发耗时是最长的,因此可以先在本地PC的CPU环境进行数据集和模型开发调试。

    说明:

    本例中,因为样例代码已经支持在CPU上进行训练,因此用户能够在CPU上完成整个训练流程。如果代码只支持在GPU或者Ascend上训练,那么可能会报错,需要使用Notebook进行云端调试。

    设置断点后单击“调试”,可实现代码逐步调试,查看中间变量值。

    图9 “调试”按钮

    图10 通过设置断点实现代码调试

    可单击“运行”按钮,通过日志观察是否能正常训练。

    图11 “运行”按钮

    图12 训练日志

步骤3:使用ModelArts Notebook进行开发调试

使用ModelArts Notebook进行开发调试具有如下优势:

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

说明:

只有PyCharm专业版支持本章节,社区版可以直接跳转至步骤4:使用PyCharm提交训练作业至ModelArts完成创建训练作业。

  1. 连接Notebook开发环境。
    1. 创建或打开云端Ascend规格的Notebook。创建Notebook详细操作请参见创建Notebook实例,Notebook规格相关信息如下所示:

    “镜像”:tensorflow1.15-mindspore1.7.0-cann5.1.0-euler2.8-aarch64。

    “资源选择”:公共资源池。

    “类型”:ASCEND。

    “规格”:选Ascend类型的,以界面实际可选值为准。

    “存储配置”:EVS存储。

    “SSH远程开发”:开启。

    “密钥对”:选择已有密钥对,或单击密钥对右侧的“立即创建”创建密钥对。

  2. 通过ToolKit连接云端Notebook。
    1. 在IDE菜单栏中选择“ModelArts>Notebook>Remote Config”,在打开的界面中选择要连接的Notebook实例。说明:

      此处如果看不到Connect to Remote选项,请先参考创建Notebook实例章节,创建Notebook实例,并开启该实例的SSH远程开发功能。

      也可能是PyCharm ToolKit的版本不正确,请按照文档要求下载新版本的PyCharm ToolKit。

      下载前请先清除浏览器缓存,如果之前下载过老版本的PyCharm ToolKit,浏览器会有缓存,可能会导致新版本下载失败。

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

    图13 ToolKit连接Notebook配置界面

    说明:
    • KeyPair: 需要选择保存在本地的Notebook对应的keypair认证。即创建Notebook时创建的密钥对文件,创建时会直接保存到浏览器默认的下载文件夹中。
    • PathMappings: 该参数为本地IDE项目和Notebook对应的同步目录,默认为“/home/ma-user/work/project”,可根据自己实际情况更改。
  3. 同步代码和数据至云端Notebook。
    1. 将代码同步至Notebook。

      选择resnet文件夹,右键选择“Deployment>Upload to”上传代码至Notebook。

      图14 同步代码至Notebook

    2. 将数据同步至Notebook。
      • (推荐)方法一:数据集压缩包上传至Notebook后解压

        把数据集压缩包右键选择“Deployment>Upload to”的方式上传至Notebook后,在Notebook中对数据集进行解压操作,解压命令如下:

        tar -zxvf work/models/dataset/flower_photos.tgz 
      • 图15 数据集压缩包上传至Notebook后解压

      • 方法二:文件夹直接上传至Notebook。

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

        图16 文件夹直接上传至Notebook

    注意:
    • 当数据集比较大达到数GB时,建议先将数据集先上传至OBS再通过OBS上传至Notebook,PyCharm只适合做小文件的同步上传。
    • 调试时建议使用较小的数据集子集,方便数据同步与数据加载。
  • 配置云端Python解释器。修改Parameters参数,并选择云端Python解释器。
    --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="Ascend"
  • 图17 配置云端python解释器

  • 云端Notebook安装依赖。

    打开“Tool>Start SSH Section”,安装依赖软件。

    # 进入MindSpore环境
    source /home/ma-user/anaconda3/bin/activate MindSpore
    # 安装resnet依赖
    pip install -r work/models/official/cv/resnet/requirements.txt
  • 图18 云端Notebook安装依赖

  • 云端调试与运行。

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

    注意:

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

    ModuleNotFoundError: No module named 'te'
  1. 原因是:PyCharm的PYTHONPATH会将Notebook中的环境变量中指定的“PYTHONPATH”进行覆盖,因此,还需要将te包所在的路径添加到PyCharm的“PYTHONPATH”中。

    te包的路径通过“pip show te”查看,例如te包返回对应的路径为:“/usr/local/Ascend/nnae/5.0.3/compiler/python/site-package”,则“PYTHONPATH”对应的“Value”为“$PYTHONPATH:/usr/local/Ascend/nnae/5.0.3/compiler/python/site-package”

    图19 将te包所在的路径添加到PyCharm的PYTHONPATH中

  2. 保存开发环境镜像。

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

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

    图20 查看保存后的镜像

    说明:

    Notebook在代码调试完成及保存镜像后就可以关闭了,减少资源浪费。

  3. 连接、停止、启动和断开Notebook实例。

步骤4:使用PyCharm提交训练作业至ModelArts

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

  1. 创建OBS桶并上传数据。

    由于训练作业是在ModelArts端运行,因此需要把训练数据和训练代码上传至云端Notebook。可借助OBS Browser+把下载好的训练数据上传至OBS,具体安装步骤请见安装OBS Browser+。

    新建data-flower桶,把训练数据flower_photos文件夹通过OBS Browser+上传至对应的OBS,并新建train文件夹用来存放训练作业相关数据。

    图25 上传数据至OBS

  2. 创建训练作业。在IDE菜单栏选择“ModelArts>Training Job>New...”创建训练作业。

    图26 创建训练作业

    创建训练作业界面各参数名称及含义如下表所示。

    表1 参数名称及含义

    参数名称

    含义

    JobName

    训练作业的名称,默认为当前的时间。

    AI Engine

    训练引擎,这里选择“mindspore_1.7.0-cann_5.1.0-py_3.7-euler_2.8.3-aarch64”

    Boot File Path

    本地训练启动代码。

    Code Directory

    本地代码目录

    Image Path(optional)

    可选项,输入自定义镜像swr路径地址(使用的自定义镜像和预置的训练镜像引擎一致)

    Data OBS Path

    OBS上的数据集路径(需要提前把数据上传到OBS中)

    Training OBS Path

    OBS路径(该路径必须是存在的),用于保存代码和训练模型及日志的输出

    Running Parameters

    训练脚本接收的参数。

    Specifications

    计算规格,这里选择Ascend类型的,以界面实际可选值为准。

    Compute Node

    节点数(单机训练默认为1)

    PyCharm中支持两种方式创建训练作业:使用预置镜像训练作业、自定义镜像创建训练作业。

    • 使用预置镜像创建训练作业。在RunningParameters中填入如下训练参数,其余参数按实际路径填写。
      --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
    • 填写完训练作业参数后,单击“Apply and Run”即完成训练作业创建。

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

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

      使用自定义镜像创建训练作业和使用预置镜像创建训练作业的差别,在于Image Path处填入了自定义镜像的地址。填写完训练作业参数后,单击“Apply and Run”即完成训练作业创建。

      说明:

      在选择AI Engine预置镜像时,需要和自定义镜像保持一致,该设置的作用为通过预置镜像的启动命令启动自定义镜像。

      例如自定义镜像中用到Mindspore,则预置镜像中可选择包含Mindspore的镜像。

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

  1. 查看训练日志。在单击“Apply and Run”按钮后,训练的日志可以在PyCharm窗口中实时展示。也可以单击Event Log中的控制台链接,转调到网页端中查看训练日志。

    图29 在PyCharm中查看训练日志

  2. 终止训练作业。

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

    图30 终止训练作业

步骤5:清除相应资源

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

  • 停止Notebook:在“Notebook”页面,单击对应实例操作列的“停止”。
  • 在PyCharm菜单栏中,选择“ModelArts > Stop Training Job”停止此训练作业。
  • 进入OBS管理控制台,删除创建的OBS桶。先逐个删除桶内文件夹和文件,再执行删除桶的操作。

http://www.kler.cn/a/430036.html

相关文章:

  • windows中,git bash 使用conda命令
  • 天童教育:用电影教学增添学习趣味
  • Windows10环境下安装RabbitMq折腾记
  • SQL中的公用表表达式
  • priority_queue优先队列
  • Mysql--基础篇--多表查询(JOIN,笛卡尔积)
  • Leetcode688:骑士在棋盘上的概率
  • 软体机器人动态手内笔旋转研究
  • 包管理器npm, cnpm, yarn 和 pnpm 的命令
  • (iOS)响应者链在应用程序中的作用
  • Atcoder ABC382
  • word poi-tl 表格功能增强,实现表格功能垂直合并
  • C# 关于加密技术以及应用(一)
  • 《Vue进阶教程》第一课:什么是组合式API
  • 深度学习常见激活函数介绍
  • ansible学习笔记之02command模块与shell模块
  • apache的BeanUtils的Converter被相互污染覆盖问题
  • 【Linux】NUMA如何梆核
  • .NET正则表达式
  • Spark on Yarn安装配置,大数据技能竞赛(容器环境)
  • Sqoop导入数据(mysql---->>hive)
  • 工作中常用springboot启动后执行的方法
  • 计算机视觉在科学研究(数字化)中的实际应用
  • 机器人的动力学前馈控制
  • spring6:2入门
  • “大数据+中职”:VR虚拟仿真实训室的发展前景