前情提要
1. PyCharm常用操作和配置ModelArts插件使用,官方文档和介绍较为详细,这里不在叙述
2. 需要说明的是,我是用的插件版本是3.3.5,比教程中的应该是新一些,所以有些配置不同,主要是两点:(1)Image Path按照教程设置无效,导致无法启动训练作业,直接不设置就行了;(2)Data Path,即数据集存放路径,必须是本人账号的桶路径才行(也可能是因为教程中的桶区域不是北京四),所以无法按照教程设置,我下载数据集后,上传到自己的桶中,并指定路径即可。
操作
1. 直接运行,可以得到:
性能指标约为sec / step: 0.01,即每训练一步耗费的时间约为0.01秒,这应该是在纯CPU运行的情况下,即全部跑在鲲鹏处理器上。从负载图上,也能看到基本都是CPU在承担任务:
2. 进行NPU迁移
参照社区文档和老师的讲解,可以较好完成模型迁移,迁移后运行:
可以看到性能约为sec / step :0.002,提升了5倍,NPU果然效果显著,我想这还不是极限,因为目前仅迁移,还没有做性能调优,从系统负载图,也能看到NPU在承担计算任务了,但利用率不是很高,有很大提升空间。
大约15分40秒的时间,模型训练完成,如图所示:
性能和精度还是不错的。
2. 验证完成NPU迁移
这里要说明一下: 因不习惯使用ModelArts插件,所以我下载了数据集和代码,并进行了修改,已适配ModelArts的NoteBook的Ascend环境,故以下操作都是在ModelArts的NoteBook运行,而非训练作业。ModelArts的NoteBook的规格为
运行日志保存在./test/output//train_.log中,可以查看信息,我们来看看Ascend 910运行情况:
我们可以看到NPU的AI Core的利用率、Memory-Usage和HBM-Usage,这都显示已经运行在NPU上了,这里的利用率过低是因为同时进行了溢出检测等操作,而且这是同时在跑两个程序。如果不进行溢出检测,仅运行一个程序就好多了,如下图所示
3. 混合精度 + Loss Scale 使能
这里,我使用了静态Loss Scale,设置loss_scale = 1024,方便后续附加作业打印
4. 完成溢出检测使能
可以到overflow文件夹下查看信息,大体如图所示:
5. 附加题,使能 lossscale 后,打印出 loss scale 的具体值
查看./test/output//train_.log,可以看到打印的loss scale数值
至此,基本完成了。
如果问题,可联系tjulitianyi@163.com或在下方评论,谢谢。