使用ModelArt平台昇腾芯片,将Restnet50模型迁移到猫狗分类实验
一、实验环境:
Pytorch:1.8.1
Python:3.7
NPU:AICore
二、实验过程:
1.上传数据集“dogs-vs-cats-redux-kernels-edition”,解压得到train和test文件夹。实验过程如下:
加载数据集时遇到的问题,不能传输超出100M的数据集,但是猫狗数据集总共387M,因此采用远程Kaggle链接下载,结果如图所示:


解压后得到train和test文件夹:

2.训练之前下载Restnet50的预训练模型:

将Resnet的最后一个全连接层更换为2,代码如下:

模型结构:

在训练中导入NPU和AMP模块:

重新书写Dataset类,初始化时加载文件路径,完成数据增强操作,在__getitem__方法中实现根据索引index读取对应的数据和标签label,并规定dog是1,cat是0。

训练中将传统的计算模型output和loss语句放入AMP模块下,以自动完成数据的计算并在loss回传和参数更新中使用Ascend自带的scalar模块进行更新:

3.开始在训练中使用NPU:

4.训练结果


实验总结:
总体实验较为简单,数据集处理较为繁琐,在书写Dataset和DataLoader时需要不断考虑NPU是否可以适配,后经过torch_npu的自动迁移,发现无需将cuda相关的函数以及字符修改,自动迁移可以进行自动更换,方便我们使用。其次需要将模型迁移到不同数据集时更换预训练的网络层,以避免输出与label不匹配。
Ascend使用整体情况,发现模型在npu’和cpu之间转换时耗时太长,同样的实验环境,在gpu中可能需要更少时间,后续计划着重研究如何调用Ascend来优化模型训练时间。
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐

所有评论(0)