摘要:相比于传统的软件开发,AI开发存在以下4个痛点:算法繁多;训练时间长;算力需求大;模型需手动管理,我们可以使用云上AI开发的方式来缓解以上4个痛点。

本文分享自华为云社区《git clone开启云上AI开发》,作者:ModelArts开发者。

已发布地址:https://developer.huaweicloud.com/develop/aigallery/article/detail?id=17052711-f3f5-4b53-bdbc-5d5c7cdc64fa

一、为什么需要云上AI开发?

相比于传统的软件开发,AI开发存在以下4个痛点:

1)算法繁多;

2)训练时间长;

3)算力需求大;

4)模型需手动管理

我们可以使用云上AI开发的方式来缓解以上4个痛点,云上AI开发的优势:

  1. 任意地点接入,在线开发;
  2. 云上环境预置多种主流深度学习框架,开“箱“即用;
  3. 云端充足算力、TB级数据存储,支持重型训练任务;
  4. 云端平台具备训练任务版本化管理,AI开发更可靠、可高效;

二、云上AI开发主要步骤

三、具体操作步骤

步骤一 Notebook调试

1.准备Python环境

进入ModelArts控制管理台,点击【开发环境】–> 【Notebook】,进入notebook列表页面,点击页面左上角“创建”按钮,新建一个notebook,填写参数,下图所示:

点击“立即创建”,确认产品规格后,点击提交,完成Notebook的创建。

返回Notebook列表页面,等待新创建Notebook状态变为“运行中”后,点击名称进入Notebook。

进入Notebook页面后,打开terminal,如下图所示:

输入如下命令,查看已安装Python环境信息

conda info -e

点此链接GitHub - IDEA-Research/DINO,下面将以此开源算法为例,演示如何在华为云Notebook上快速运行,算法详细介绍请参考 README.md 。

1)在terminal里继续输入如下命令,克隆仓库

git clone https://github.com/IDEACVR/DINO
cd DINO

如上图所示,表示已完成代码克隆,点击左侧任务栏顶部刷新按钮,即可查看代码。

2)查看Pytorch版本

pip list | grep torch

3)安装其他需要的包

pip install -r requirements.txt

4)编译CUDA算子

cd models/dino/ops
python setup.py build install
# unit test (should see all checking is True)
python test.py
cd ../../.. # 回到代码主目录

2.准备数据和预训练参数文件

1)进入控制台,将光标移动至左边栏,弹出菜单中选择“服务列表”->“存储”->“对象存储服务OBS”,如下图所示:

点击“创建桶”按钮进入创建界面。

开始创建。配置参数如下:

① 复制桶配置:不选
② 区域:华北-北京四
③ 桶名称:自定义,将在后续步骤使用
④ 数据冗余存储策略:单AZ存储
⑤ 默认存储类别:标准存储
⑥ 桶策略:私有
⑦ 默认加密:关闭
⑧ 归档数据直读:关闭

单击“立即创建”>“确定”,完成桶创建。

点击创建的“桶名称”->“对象”->“新建文件夹”,创建一个文件夹,用于存放后续数据集。

2)下载COCO 2017数据集子集。该数据集包括train(5000张),val(5000张)及标注文件。进入下载详情页面,下载方式选择对象存储服务(OBS),目标区域选择华北-北京四,目标路径选择1中在OBS中创建的路径,用于数据集存储,如下图所示:

点击“确认”,跳转至我的下载页面,可以查看数据集下载详情,等待数据集下载完成,如下图所示:

返回Notebook页面,新建一个ipynb文件,编写导入数据集脚本,运行代码,运行完毕后,点击任务栏上方“刷新”按钮,即可查看导入dataset,如下图所示:

import moxing as mox
mox.file.copy_parallel({obs_path},{notebook_path})

说明:

{obs_path}为OBS存储数据集的位置
{notebook_path}为数据集在notebook中的存储路径

3)下载DINO 模型 checkpoint “checkpoint0011_4scale.pth”,下载完成后,返回Notebook页面,在DINO页面,创建文件夹ckpts,用于存放下载的checkpoint。

进入文件夹,点击任务栏上方”上传“按钮,选择下载完成的checkpoint 路径,文件大小超过100MB,需选择OBS中转,等待数据上传完毕,如下图所示:

3.运行代码

1)执行下面的命令,评估预训练模型,你可以期待得到最终的AP大约49.0。

bash scripts/DINO_eval.sh /path/to/your/COCODIR /path/to/your/checkpoint

说明:

/path/to/your/COCODIR 为Notebook数据集的存储路径
/path/to/your/checkpoint 为Notebookcheckpoint存储路径

如下图所示:

整个过程约等待13分钟左右,运行结果如下:

2)推理及可视化

打开DINO目录下的inference_and_visualization.ipynb,选择Kernel Pytorch-1.8,如下图所示:

修改代码:

...
model_checkpoint_path = "ckpts/checkpoint0011_4scale.pth" # 修改checkpoint路径
...
args.coco_path = "../dataset" # 修改coco数据集路径

运行代码查看推理结果。

步骤二 运行训练作业

1.保存镜像

1)返回ModelArts管理控制台,在左侧菜单栏中选择**“开发环境 > Notebook”**,进入新版Notebook管理页面。在Notebook列表中,点击名称进入创建的Notebook详情页

2)点击右侧“更多”,选择“保存镜像”

3)在保存镜像对话框中,设置组织、镜像名称、镜像版本和描述信息。单击“确认”保存镜像。

在“组织”下拉框中选择一个组织。如果没有组织,可以单击右侧的“立即创建”,创建一个组织。创建组织的详细操作请参见创建组织。

同一个组织内的用户可以共享使用该组织内的所有镜像。

4)镜像会以快照的形式保存,保存过程约5分钟,请耐心等待。此时不可再操作实例(对于打开的JupyterLab界面和本地IDE 仍可操作)。

5)镜像保存成功后,实例状态变为**“运行中”**,用户可在“镜像管理”页面查看到该镜像详情。

6)单击镜像的名称,进入镜像详情页,可以查看镜像版本/ID,状态,资源类型,镜像大小,SWR地址等。

7)还可在左侧菜单栏中选择**“镜像管理”**,查看镜像列表及详情,如下图所示:

2.上传训练代码

返回Notebook页面,在新建的ipynb中输入以下代码,完成代码上传至OBS桶中

mox.file.copy_parallel("./DINO/","obs://dino-coco/DINO")

如下图所示:

3.创建训练作业

1)在左侧菜单栏中选择**“训练管理 > 训练作业”**,点击右上角“创建训练作业”,如下图所示:

2)参数配置

创建方式:自定义算法

启动方式:自定义,选择已保存镜像

启动命令:

cd ${MA_JOB_DIR}/DINO && python main.py -c config/DINO/DINO_4scale.py --options dn_scalar=100 embed_init_tgt=TRUE dn_label_coef=1.0 dn_bbox_coef=1.0 use_ema=False dn_box_noise_scale=1.0

训练输入:选择OBS桶内上传代码路径

训练输出:选择创建的OBS桶,点击新建文件夹,创建一个文件夹,用于存放训练输出,如下图所示:

资源池:公干资源池

资源类型:GPU

规格: GPU: 1*NVIDIA-V100(32GB) | CPU: 8 核 64GB 3200GB

永久保存日志:开启,选择OBS桶,新建文件夹,用于存放训练日志,如下图所示:

事件通知:开启,可监控训练作业的事件的状态,可短信通知。

主题名:如不存在点击右侧“创建主题”。主题是消息发布或客户端订阅通知的特定事件类型。它作为发送消息和订阅通知的信道,为发布者和订阅者提供一个可以相互交流的通道。

事件:全部勾选

自动停止:可开启(训练时长大于1小时)

如下图所示:

3)参数设置完成之后,点击提交,确认训练信息,点击“确认”

跳转至训练作业列表,等待创建的训练作业,可点击训练作业名称,查看详细信息,系统日志,及资源占用情况,如下图所示:

4)在训练任务跑完之后,可在“代码目录”处在线编辑代码,保存之后,可再次进行训练模型,如下图所示:

4.训练输出

训练完成之后,可在配置的OBS训练输出路径查看训练结果

10月27日19:00-20:30直播讲解《git clone开启云上AI开发》,预约报名:https://bbs.huaweicloud.com/live/cloud_live/202210271900.html

点击关注,第一时间了解华为云新鲜技术~

git clone开启云上AI开发的更多相关文章

  1. 首次使用Git将码云上的代码Clone至本地

    使用Git将码云上的代码Clone至本地 1. 安装Git https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-G ...

  2. Git 把码云上被fork项目源码merge到fork出来的分支项目

    Git 把码云上被fork项目源码merge到fork出来的分支项目 By:授客 QQ:1033553122 需求描述 被fork的项目有更新代码,希望把更新的代码merge到fork分支项目 解决方 ...

  3. git向码云上提交项目

    git向码云上提交项目 设置账号名字和邮箱 $ git config --global user.name "注册时账号的名字" $ git config --global use ...

  4. 使用Git将码云上的代码Clone至本地

    1. 安装Git https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git Git的网站上有详细的分各种系统的安 ...

  5. 代码管理git 工具的话可以使用GitHub桌面端管理git、码云上的代码

    git版本控制  廖雪峰老师的git教程 git是linus 1991年创建了开源的linux...已成为最大的服务器系统软件 集中式的版本控制器:CVS.SVN.ClearCase是IBM的收费软件 ...

  6. 云原生 AI 前沿:Kubeflow Training Operator 统一云上 AI 训练

    分布式训练与 Kubeflow 当开发者想要讲深度学习的分布式训练搬上 Kubernetes 集群时,首先想到的往往就是 Kubeflow 社区中形形色色的 operators,如 tf-operat ...

  7. git向码云上传代码总结

    1.下载git windows下载地址:https://git-for-windows.github.io/ 2.安装git 一路确定 3.配置git 如果你要使用ssh上传代码,你需要本地生成ssh ...

  8. Gitee 自已提交的代码提交人头像为他人、码云上独自开发的项目显示为 2 个开发者

    简介 自己写的代码提交到码云(Gitee)上却变成了两个人,一个被正确的代码提交统计了,另一个却没有,并且确信自己输入的Gitee账号是自己绑定的邮箱,具体如下: 解决办法 查看自己的用户名 git ...

  9. eclispe 通过git向码云上传

    本文将介绍如何将本地的项目提交到开源中国上去,过程比较详细,实现起来很简单.由于自己也算是一个新手,所以没有做过多的解释,只是单纯的描述了该如何去做. 1.在开源中国上面新建一个空项目 到这里也就结束 ...

随机推荐

  1. 11中javascrip教程教不到的小技巧

    1.过滤唯一值 Set对象类型是在ES6中引入的,配合展开操作...一起,我们可以使用它来创建一个新数组,该数组只有唯一的值. 1 const array = [1, 1, 2, 3, 5, 5, 1 ...

  2. 从零开始Blazor Server(10)--编辑角色

    例图 目前的样式是这样的: 其中角色在一个table里,然后可以增删改查,并且可以给指定的用户分配权限. 创建文件 首先我们在Pages/Admin目录下新建一个Role.razor.因为我们的Adm ...

  3. 使用dotnet-monitor分析在Kubernetes的应用程序:Sidecar模式

    dotnet-monitor可以在Kubernetes中作为Sidecar运行,Sidecar是一个容器,它与应用程序在同一个Pod中运行,利用Sidecar模式使我们可以诊断及监控应用程序. 如下图 ...

  4. hotspot算法实现 <<深入理解Java虚拟机>>

    1.枚举根节点 解决何时枚举,不需要实时的枚举,oopMap数据结构对象存储枚举信息 对象引用发生变化,需要存储每一条指令到OOPMap吗,,几百M的对象耗时需要很大的内存.GC空间成本 2.安全点: ...

  5. 青源Talk第8期|苗旺:因果推断,观察性研究和2021年诺贝尔经济学奖

    biobank 英国的基金数据因果推断和不同的研究互相论证,而非一个研究得到的接了就行.数据融合,data fusion,同一个因果问题不同数据不同结论,以及历史上的数据,来共同得到更稳健.更高效的推 ...

  6. 【MySQL】从入门到掌握3-WorkBench

    上期:[MySQL]从入门到掌握2-下载安装 我们安装完MySQL Server的时候,是没有任何界面的. 不过很好,我们有一个工具,MySQL Workbench,他可以简化我们的操作,有点像Jav ...

  7. 01 - 快速体验 Spring Security 5.7.2 | 权限管理基础

    在前面SpringBoot 2.7.2 的系列文章中,已经创建了几个 computer 相关的接口,这些接口直接通过 Spring Doc 或 POSTMAN 就可以访问.例如: GET http:/ ...

  8. APICloud 可视化编程 - 拖拉拽实现专业级源码

    低代码开发平台是无需编码 (0 代码或⽆代码) 或通过少量代码就可以快速生成应用程序的开发平台.它的强⼤之处在于,允许终端⽤户使⽤易于理解的可视化⼯具开发自己的应用程序,而不是传统的编写代码⽅式.当遇 ...

  9. Windows平台Unity3d播放多路RTMP或RTSP流

    好多开发者在做AR.VR或者教育类产品时,苦于如何在windows平台构建一个稳定且低延迟的RTSP或者RTMP播放器,如果基于Unity3d完全重新开发一个播放器,代价大.而且周期长,不适合快速出产 ...

  10. 没有二十年功力,写不出Thread.sleep(0)这一行“看似无用”的代码!

    你好呀,我是喜提七天居家隔离的歪歪. 这篇文章要从一个奇怪的注释说起,就是下面这张图: 我们可以不用管具体的代码逻辑,只是单单看这个 for 循环. 在循环里面,专门有个变量 j,来记录当前循环次数. ...