昇腾社区modelzoo用例迁移至ModelArts指引
什么是昇腾社区的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.cn/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。
RTF 是RANK_TABLE_FILE的缩写
云上ModelArts在拉起进程之前会设置如下环境变量
DEVICE_ID
: 使用RTF
中记录的device_id
设置该值RANK_ID
: 使用RTF
中记录的rank_id
设置该值RANK_SIZE
: 根据RTF
中 device 的数目设置该值,例如 4 * D910,该值即为 4HCCL_CONNECT_TIMEOUT
:HCCL
集合通信超时时间,默认配置为1800
s
- 点赞
- 收藏
- 关注作者
评论(0)