一、实验环境:

Pytorch:1.8.1

Python:3.7

NPU:AICore

二、实验过程:

1.上传数据集“dogs-vs-cats-redux-kernels-edition”,解压得到train和test文件夹。实验过程如下:

加载数据集时遇到的问题,不能传输超出100M的数据集,但是猫狗数据集总共387M,因此采用远程Kaggle链接下载,结果如图所示:

image.png

image.png

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

image.png

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

image.png

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

image.png

模型结构:

image.png

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

image.png

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

image.png

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

image.png

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

image.png

4.训练结果

cke_28458.png

cke_24892.png

实验总结:

        总体实验较为简单,数据集处理较为繁琐,在书写Dataset和DataLoader时需要不断考虑NPU是否可以适配,后经过torch_npu的自动迁移,发现无需将cuda相关的函数以及字符修改,自动迁移可以进行自动更换,方便我们使用。其次需要将模型迁移到不同数据集时更换预训练的网络层,以避免输出与label不匹配。

        Ascend使用整体情况,发现模型在npu’和cpu之间转换时耗时太长,同样的实验环境,在gpu中可能需要更少时间,后续计划着重研究如何调用Ascend来优化模型训练时间。

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐