昇腾社区Modelzoo用例迁移至ModelArts指引

网友投稿 1517 2022-05-28

什么是昇腾社区的ModelZoo?

对于开发者来说,部署应用到Atlas设备,有一点是最为关键、最具有挑战性的——模型的转换,需要将Caffe或TensorFlow框架下的模型转为专用的.om模型才可以。这一般是大家自己转换,一旦遇到转换失败,可能就需要较长时间的调整了,为了减轻大家开发负担,这里给大家介绍一下昇腾开发者社区的ModelZoo,这里有适配好的模型更有支持Ascend 910训练的主流算法大家可以直接下载模型使用,去部署自己的项目,如果大家对模型有更好的要求,或有定制化的需求,还可以自己训练,下载自己想用的算法就行了哦,非常方便。

为什么要迁移到ModelArts上?

昇腾社区的Modelzoo默认是在atlas800 9000的裸机上运行,当前ModelArts提供atlas800 9000的计算资源,如果没有atlas800 9000的裸机,可以使用ModelArts运行这些算法。

下面以ModelZoo的VGG16为例展示如何迁移代码到modelarts上运行

ModelZoo VGG16下载链接地址

https://www.huaweicloud.com/ascend/resources/modelzoo

首先看train.py这个入口脚本,modelarts使用OBS服务作为存储介质,因此,需要将OBS上的数据下载到本地。

这里设置了real_data_url = '/c a c h e/imagenet'

云上d910的节点都会挂载/c a c h e这个目录作为本次训练作业的临时存储空间,此目录对于单卡d910,大小为400GB的SSD,磁盘为nvme ssd,读取速度 > 600MB/s,对于8卡d910存储空间为3.5TB,磁盘为nvme ssd,读取速度 > 600MB

sync_data方法是对于8卡d910节点的数据下载,因为会启动8个进程,每个进程对应1块npu,所以只需要有一个进程进行数据的下载即可,这里面是通过获取环境变量DEVICE_ID来控制的,DEVICE_ID为0的进程进行数据的下载,下载成功以后,其他7个进程收到下载完成的信号,再一起往下走。

download_data方法是对于单卡d910资源进行数据下载的逻辑

main函数,通过rank size来确定当前是单卡还是多卡,如果是多卡rank_size > 1.此时走多卡逻辑

进入main函数首先调用的是parse_args,需要在parse_args代码中添加如下代码来完成适配。因为云上会传入这两个参数

下面是进行data_loader.py文件的适配

云上环境变量中没有DEVICE_INDEX,可以使用RANK_ID或者DEVICE_ID进行替换,这里使用RANK_ID进行替换。

保存训练结果到OBS可以通过如下方式进行保存,例如VGG中,chpt保存在了./result目录下面,这是一个相对路径,result目录会被放到/home/work/workspace/device0,/home/work/workspace/device1下面,

每个进程会在/home/work/workspace目录下面创建一个属于自己的目录,下面的代码让0号进程上传ckpt到OBS

修改完这两个文件就可以正常提交作业了。

VGG修改后的train.py代码已经添加到附件,可以进行查看

注意:如果modelzoo的文档里面说要使用imagenet数据集进行测试,那就代表要使用全量的imagenet数据集,不能只上传少量数据进行测试,那样会触发bug。

昇腾社区modelzoo用例迁移至ModelArts指引

RTF 是RANK_TABLE_FILE的缩写

云上ModelArts在拉起进程之前会设置如下环境变量

DEVICE_ID: 使用 RTF 中记录的 device_id 设置该值

RANK_ID: 使用 RTF 中记录的 rank_id 设置该值

RANK_SIZE: 根据 RTF 中 device 的数目设置该值,例如 4 * D910,该值即为 4

HCCL_CONNECT_TIMEOUT: HCCL 集合通信超时时间,默认配置为 1800 s

附件: train.zip 1.76KB 下载次数:8次

AI开发平台ModelArts 迁移

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:GaussDB 100 OLTP: 为什么创建数据库需要 20G 空间,可以缩小吗?
下一篇:UI5和WebUI的View和Controller是如何绑定的
相关文章