华为ModelArts详细教程

一、参考资料

ModelArts文档

AI开发平台ModelArts

AI平民化之路 - 华为云ModelArts和AI Gallery体验指南

AI开发平台ModelArts使用指南.pdf

ModelArts快速入门

【ModelArts】鹏城云脑实验平台(华为云ModelArts)使用教程

二、重要说明

  1. 本地IDE操作流程:

    本地IDE操作流程

    配置本地IDE(SSH工具连接)

    在本地IDE中上传数据至Notebook

  2. 创建桶的区域需要与ModelArts所在的区域一致。例如:当前ModelArts在 华北-北京一区域,在对象存储服务创建桶时,请选择华北-北京一。如何查看OBS桶与ModelArts的所处区域,请参见查看OBS桶与ModelArts是否在同一区域。

  3. 请勿开启桶加密,ModelArts不支持加密的OBS桶,会导致ModelArts读取OBS中的数据失败。

  4. ModelArts相当于容器,删除训练作业、notebook,对应的容器也被删除,导致容器中的数据丢失。obs支持数据持久化

  5. 在ModelArts中执行脚本时,先在初始化过程中将脚本、数据集等相关文件从obs桶上传到容器,训练作业执行过程都是从容器中读取文件信息,作业执行产生的文件最终也要从容器存到obs桶

  6. notebook停止后,/home/ma-user/work 目录下的数据会保存,其余目录下的内容会被清理。

三、相关介绍

在这里插入图片描述

3.1 OBS对象存储服务

对象存储服务(Object Storage Service,简称OBS)是一个 基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力。对象存储服务OBS的基本组成是桶和对象。桶是OBS中存储对象的容器,每个桶都有自己的存储类别、访问权限、所属区域等属性,用户在互联网上通过桶的访问域名来定位桶。对象是OBS中数据存储的基本单位。

对ModelArts来说,OBS服务是一个数据存储中心,因为ModelArts本身目前没有数据存储的功能。AI 开发过程中的输入数据、输出数据、中间缓存数据都可以在OBS桶中进行存储、读取。 因此,在使用ModelArts之前您需要创建一个OBS桶,然后在OBS桶中创建文件夹用于存放数据

ModelArts使用对象存储服务(Object Storage Service,简称OBS)进行数据存储以 及模型的备份和快照,实现安全、高可靠和低成本的存储需求。因此,建议在使用 ModelArts之前先创建一个OBS桶,然后在OBS桶中创建文件夹用于存放数据

3.2 ModelArts

ModelArts是面向开发者的一站式AI开发平台,为机器学习与深度学习提供海量数据预处理及半自动化标注、大规模分布式Training、自动化模型生成,及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期AI工作流。

3.3 AI Gallery

AI Gallery是基于ModelArts发布的 AI应用市场,该功能极大降低了AI模型的开发门槛,基于AI Gallery的AI模型市场,即使用户不了解AI知识,通过订阅模型服务,也可以直接使用该模型。我觉得随着技术的进步和社会的发展,AI肯定是要趋于平民化的,而AI Gallery此项功能正是该方向的极大开拓者。

四、准备工作

  1. 下载数据集
  2. 安装 OBSBrowser客户端
  3. OBS对象存储相关操作,参见下文;

五、OBS对象存储

打开对象存储控制台
	---》创建桶

在这里插入图片描述

创建桶

区域:默认即可
桶名称:自定义(全局唯一性)
企业项目:default
其他:默认即可

在这里插入图片描述

六、自动学习

自动学习用户指南

6.1 数据集准备

OBS桶创建文件夹

在OBS桶创建文件夹,用于存储数据集。

├── yunbao  
│   ├── output  # 数据集输出位置
│   ├── dataset  # 数据集输入位置
│   │   ├── train  # 训练集
│   │   └── eval  # 测试集

上传数据集

上传 yunbao数据集obs://liulingjun-demo/yunbao/dataset 路径。用OBSBrowser客户端或者网页端上传,推荐用OBSBrowser客户端上传。
在这里插入图片描述

6.2 关键步骤

创建项目

打开ModelArts控制台
	---》自动学习
		---》物体检测,创建项目

在这里插入图片描述

创建物体检测项目

名称:自定义
数据集名称:自定义
数据集输入位置:obs://liulingjun-demo/yunbao/dataset
数据集输出位置:obs://liulingjun-demo/yunbao/output

在这里插入图片描述

开始训练

在这里插入图片描述

训练完成

在这里插入图片描述

部署上线

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

推理预测

在这里插入图片描述

七、notebook运行ModelZoo预置模型

本章节介绍在ModelArts的notebook 中运行ModelZoo中模型,以yolov3为例,训练集为 COCO2014。

运行环境:ModelArts notebook
模型:ModelZoo,yolov3
数据集:COCO2014
镜像:tensorflow1.15-mindspore1.5.1-cann5.0.2-euler2.8-aarch64
规格:Ascend: 1*Ascend-910(32GB) | ARM: 24 核 96GB

7.1 重要说明

  1. 如果要删除notebook,请及时备份到obs中,以免造成不必要的麻烦

7.2 关键操作

准备数据集

华为 OBS上传notebook以及notebook上传到OBS

  1. 数据集上传到obs

    用obs-browser客户端上传COCO2014数据集到OBS。

  2. 拷贝obs数据集到notebook

import moxing as mox

# COCO_COCO_2014_Train_Images.zip
mox.file.copy_parallel('obs://liulingjun-demo/datasets/COCO2014/COCO_COCO_2014_Train_Val_annotations.zip','/home/ma-user/work/COCO_COCO_2014_Train_Val_annotations.zip')
print('Copy procedure is completed !')

# COCO_COCO_2014_Val_Images.zip
mox.file.copy_parallel('obs://liulingjun-demo/datasets/COCO2014/COCO_COCO_2014_Val_Images.zip','/home/ma-user/work/COCO_COCO_2014_Val_Images.zip')
print('Copy procedure is completed !')

# COCO_COCO_2014_Train_Images.zip
mox.file.copy_parallel('obs://liulingjun-demo/datasets/COCO2014/COCO_COCO_2014_Train_Images.zip','/home/ma-user/work/COCO_COCO_2014_Train_Images.zip')
print('Copy procedure is completed !')
  1. 解压数据集

    在notebook操作。

    cd work
    
    unzip COCO_COCO_2014_Train_Val_annotations.zip -d ./COCO2014
    
    [ma-user COCO2014]$ll
    total 6780
    drwx------ 2 ma-user ma-group    4096 Jun 18 08:43 annotations
    drwxrwxr-x 2 ma-user ma-group 4620288 Aug 16  2014 train2014
    drwxrwxr-x 2 ma-user ma-group 2310144 Aug 16  2014 val2014
    
  2. (可选)解压后的数据集拷贝回obs

    import moxing as mox
    mox.file.copy_parallel('/home/ma-user/work/COCO2014', 'obs://liulingjun-demo/yolov3/dataset')
    print('Copy procedure is completed !')
    

准备预训练模型

  1. 下载预训练模型 YOLOv3_TensorFlow_1.6_model
  2. YOLOv3_TensorFlow_1.6_model/single/ckpt 路径下的模型文件拷贝到 YoloV3_for_TensorFlow_1.6_code/data/darknet_weights,并重命名为 darknet53.ckpt

准备源码

  1. 下载源码 YoloV3_for_TensorFlow_1.6_code 到本地(笔记本)

  2. 解压并修改源码

  3. 准备txt标注文件

    根据COCO2014数据集的实际路径使用 coco_trainval_anns.pycoco_minival_anns.py 分别生成 训练和验证样本标注文件 coco2014_trainval.txtcoco2014_minival.txt 并放置于 YoloV3_for_TensorFlow_1.6_code/data 录下。

    # 1. 修改源码中的路径
    
    # 2. 执行 coco_trainval_anns.py
    python coco_trainval_anns.py
    
    # 3. 执行 coco_minival_anns.py
    python coco_minival_anns.py
    
  4. 修改txt标注文件的路径

    /opt/npu/dataset/coco/coco2014/ 修改为 /home/ma-user/work/COCO2014/

  5. 修改 train.py

    根据train.py 源代码可知,默认的训练模式是 single,加载 args_single.py 中的配置参数,所以修改 args_single.py 配置参数即可。

    train.py

    parser.add_argument("--mode", type=str, default='single', help="setting train mode of training.")
    
    if args_input.mode == 'single':
        import args_single as args
    

    args_single.py

    参数基本上默认即可。

    ### Some paths
    train_file =        os.path.join(work_path, './data/coco2014_trainval.txt')  # The path of the training txt file.
    val_file =          os.path.join(work_path, './data/coco2014_minival.txt')  # The path of the validation txt file.
    restore_path =      os.path.join(work_path, './data/darknet_weights/darknet53.ckpt')  # The path of the weights to restore.
    anchor_path =       os.path.join(work_path, './data/yolo_anchors.txt')  # The path of the anchor txt file.
    class_name_path =   os.path.join(work_path, './data/coco.names')  # The path of the class names.
    
    ...
    ...
    ...
    
    ### other training strategies
    multi_scale_train = False  # Whether to apply multi-scale training strategy. Image size varies from [320, 320] to [640, 640] by default.
    use_label_smooth = False # Whether to use class label smoothing strategy.
    use_focal_loss = False  # Whether to apply focal loss on the conf loss.
    use_mix_up = False  # Whether to use mix up data augmentation strategy.
    use_warm_up = True  # whether to use warm up strategy to prevent from gradient exploding.
    warm_up_epoch = min(total_epoches*0.1, 3)  # Warm up training epoches. Set to a larger value if gradient explodes.
    
  6. 压缩源码文件,并上传到obs

    将修改好的源码压缩成zip文件,上传到obs。

  7. 拷贝并解压源码

    拷贝obs的源码到notebook

    import moxing as mox
    
    # COCO_COCO_2014_Train_Images.zip
    mox.file.copy_parallel('obs://liulingjun-demo/cache/YoloV3_for_TensorFlow_1.6_code.zip','/home/ma-user/work/YoloV3_for_TensorFlow_1.6_code.zip')
    print('Copy procedure is completed !')
    

    解压源码

    cd /home/ma-user/work
    unzip YoloV3_for_TensorFlow_1.6_code.zip
    

训练模型

/home/ma-user/work/YoloV3_for_TensorFlow_1.6_code 路径下创建 notebook,执行以下指令开启训练:

!python train.py

训练output输出到 /YoloV3_for_TensorFlow_1.6_code/training/ 路径下。
在这里插入图片描述

CPU占用情况

1*Ascend 910 CPU24核 内存96GiB(CUE评分1943) (modelarts.kat1.xlarge)
在这里插入图片描述

8*Ascend 910 CPU192核 内存720GiB(CUE评分15544) (modelarts.kat1.8xlarge)
在这里插入图片描述

内存占用情况
在这里插入图片描述

八、ModelArts运行ModelZoo预置模型

本章节介绍在ModelArts的 训练任务 中运行ModelZoo中模型,以yolov3为例,训练集为 COCO2014。

运行环境:ModelArts notebook
模型:ModelZoo,yolov3
数据集:COCO2014
AI引擎:Ascend-Powered-Engine | tensorflow_1.15-cann_5.0.3-py_3.7-euler_2.8.3-aarch64
规格:Ascend: 1*Ascend-910(32GB) | ARM: 24 核 96GB

8.1 关键操作

准备数据集

操作步骤与notebook一致。

准备与训练模型

操作步骤与notebook一致。

准备源码

train.py

参数基本上默认即可。
在这里插入图片描述

args_modelarts_single.py

参数基本上默认即可。
在这里插入图片描述
在这里插入图片描述

创建算法

算法管理 ---》创建
名称:自定义
描述:自定义
创建方式:自定义脚本
	---》AI引擎:Ascend-Powered-Engine,tensorflow_1.15-cann_5.0.3-py_3.7-euler_2.8.3-aarch64
	---》代码目录:liulingjun-demo/yolov3/code
	启动文件:liulingjun-demo/yolov3/code/train.py
输入数据配置:data_url
输出数据配置:train_url
超参:
	---》model,String,
	---》batch_size,Integer
	---》total_epoches,Integer

代码目录
在这里插入图片描述

输入输出数据配置
在这里插入图片描述

超参
在这里插入图片描述
创建算法
在这里插入图片描述

创建训练作业

训练管理 ---》训练作业
名称:自定义
描述:自定义
算法:刚创建的算法
训练输入:/liulingjun-demo/yolov3/dataset/
训练输出:/liulingjun-demo/yolov3/output/
超参:默认即可
资源池:公共资源池、专属资源池
规格:根据实际情况选择
计算节点个数:根据实际情况选择
作业日志路径:/liulingjun-demo/yolov3/logs/
其他参数:默认即可

在这里插入图片描述

增加超参数

单击“增加超参”,手动增加超参。配置 代码中的命令行参数值,请根据您编写的算法代码逻辑进行填写,确保参数名称和代码的参数名称保持一致。可填写多个参数。
在这里插入图片描述

参数名称 类型 默认值 是否必填 描述
mode String modelarts_single YOLOv3训练场景分为单尺度和多尺度。单尺度为modelarts_single多尺度为modelarts_multi
batch_size Integer 32 一次训练所抓取的数据样本数量。单尺度训练建议值为32,多尺度训练建议值为16。
total_epoches Integer 200 训练总轮数。

设置mode模式为:modelarts_single
在这里插入图片描述

提交训练作业

训练作业一般需要运行一段时间,根据您选择的数据量资源不同,训练时间将耗时几分钟到几十分钟不等。在ModelArts中创建训练任务,训练脚本会自动将obs中的数据集拷贝到ModelArts容器中,数据集越大耗费时间越长。

NPU资源占用情况
在这里插入图片描述
在这里插入图片描述

训练作业的状态

训练作业的状态有:等待中,运行中,运行失败,已完成,终止中,已终止。
在这里插入图片描述

8.2 其他模型

yolov4

在这里插入图片描述
在这里插入图片描述

yolov5

在这里插入图片描述

九、FAQ

Q:修改notebook规格不合法

ModelArts.6405: RUNNING status not allowed update flavor, "modelarts.kat1.xlarge" 不合法

8*Ascend910 降为 1*Ascend910,降配失败

在这里插入图片描述
在这里插入图片描述

Q:文件超过100MB,notebook上传文件失败

在这里插入图片描述

解决办法:
上传到obs转存即可。

Q:磁盘空间不足

在这里插入图片描述
在这里插入图片描述

解决办法:
存储容量扩容
如果不能扩容,则重新创建notebook,配置更大的存储容量。

在这里插入图片描述

Q: 找不到darknet53.ckpt

在这里插入图片描述

错误原因:
找不到预训练模型

解决办法:
参考上文【准备预训练模型】
将 `YOLOv3_TensorFlow_1.6_model/single/ckpt` 路径下的模型文件拷贝到 `YoloV3_for_TensorFlow_1.6_code/data/darknet_weights`,并重命名为 `darknet53.ckpt`;

Q: 找不到txt标注文件

在这里插入图片描述

错误原因:
找不到txt标注文件

解决办法:
准备txt标注文件,参考上文【准备源码】

Q:训练作业一直等待中

在这里插入图片描述

错误原因:
资源不够

解决办法:
停止不用的notebook,重新启动
..
|
|---models
|	|---xxx.py
|	|---xxx.py
|---model.pth

Q: 容量不足,训练作业终止

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_37605642/article/details/125691751
今日推荐