芯片:终端设备、边缘计算、云服务。(昇腾310、910等)
芯片使能:CANN
AI架构:Mindspore、TensorFlow、Pytorch、Caffe
应用使能:ModelArts等
计算资源层:系统对数据处理和数据运算执行
芯片使能层:实现解决方案对外能力开放,以及基于计算图的业务流的控制和运行
应用层:包括基于Ascend平台开发的各种应用,以及Ascend提供给用户进行算法开发、调优的应用类工具
应用开发框架,加速推理,加载模型做推理
向上供应用程序等调用,向下调用GE执行器、运行管理器、驱动等进行加速计算
构筑一个由简单概念组成的多层连接网络来定义复杂对象,计算机通过对这个网络的迭代计算与训练后,可以掌握这个对象的特征,一般称这种方法为深度学习(DeepLearning,DL)。
①环境准备②GPU训练复现③模型迁移④单Device训练⑤(可选)分布式训练⑥训练精度调优⑦训练性能调优⑧模型固化⑨离线推理或在线推理⑩推理精度调优⑪推理性能调优
1. 了解为什么要做模型迁移
2. 了解模型迁移的两种迁移方式
3. 掌握如何进行模型迁移
除了昇思MindSpore外,TensorFlow等其他深度学习框架下的模型并不能直接在昇腾910 AI处理器上训练,转换后的模型能够高效运行在昇腾910 AI处理器上。
1.自动迁移(推荐)
2.手工迁移
通过工具对原始脚本进行AST语法树扫描,可自动分析原生的TensorFlow API在昇腾AI处理器上的支持度,并将原始的TensorFlow训练脚本自动迁移成昇腾AI处理器支持的脚本,对于无法自动迁移的API,可以参考工具输出的迁移报告,对训练脚本进行相应的适配修改。
三种当前Ascend910上支持TensorFlow的三种API开发训练脚本迁移:Estimator,Sess.run,Keras
Estimator:
使用Estimator进行训练脚本开发的一般步骤(迁移同):
(from npu_bridge.npu_init import *)
1.数据预处理,创建函数input_fn;(直接迁移,无需修改)
2.模型构建,构建模型函数model_fn;(一般直接迁移,无需修改)
3.运行配置,实例化Estimator,传入Runconfig类对象作为运行参数;
4.执行训练,在Estimator上调用训练方法Estimator。train(),利用指定输入对模型进行固定步数的训练。
1.数据预处理。直接迁移,无需修改。
但如果在创建dataset时,使用dataset.batch返回动态shape,需要设置drop_remainder为TRUE,使其固定shape。
dataset = dataset.batch(batch_size,drop_remainder=True)
2.模型构建。一般直接迁移,无需修改。
如果原始网络中使用到了tf.device,需要删除相关代码;
如果在model中使用了gelu和dropout接口,推荐修改为NPU提供的高 性能接口。
3.运行配置。原始TensorFlow通过RunConfig配置运行参数;
将TensorFlow的RunConfig迁移为NPURunConfig。
4.创建Estimator。利用指定输入对模型进行固定步数训练。将TensorFlow的Estimator迁移为NPUEstimator。
5.执行训练。利用指定输入对模型进行固定步长训练。无需修改。
(from npu_bridge.npu_init import *)
1.数据预处理;同Estimator。
2.模型搭建/计算Loss/梯度更新;同Estimator。
3.创建session并初始化资源;
tf.Session原生功能在CANN平台上全部支持。
4.执行训练。Sess.run部分直接迁移,无需改造。
但如果用户训练脚本中没有使用with创建session,那么需要在迁移后的脚本中显示调用sess.close()。
sess = tfSession(config=config)
sess.run(…)
sess.close()
OBS(数据集;模型)↔ModelArts(训练平台)↔Pycharm Toolkit(训练任务的下发)
- 对象存储服务(OBS):基于对象的海量存储服务,为客户提供数据存储能力。
- ModelArts平台:面向AI开发者的一站式开发平台,可进行数据处理、模型训练以及模型部署等操作,但自身不具备存储服务。
- Pycharm插件ToolKit:为开发者提供快速的将本地代码提交到公有云的训练环境,功能有代码上传、提升训练作业、将训练日志获取到本地展示等。
- 准备模型
- 准备数据
- 编译程序
- 运行程序
日志位置:默认为”CANN软件安装目录/ascend/log”
日志中关键信息: