基本概念
什么是模型训练
模型训练是机器学习和深度学习中,通过数据和算法不断优化模型参数的过程,旨在让模型从数据中学习到规律,从而具备对未知数据进行预测或做出决策的能力。
什么是算子
深度学习算法由一个个计算单元组成,可以称这些计算单元为算子(Operator,简称OP)。
在网络模型中,算子对应层中的计算逻辑,例如:卷积层(Convolution Layer)是一个算子;全连接层(Fully-connected Layer, FC layer)中的权值求和过程,是一个算子。在数学领域,一个函数空间到函数空间上的映射O:X→Y,都称为算子。
广义的讲,对任何函数进行某一项操作都可以认为是一个算子,比如微分算子,不定积分算子等。
什么是Ascend C
Ascend C是CANN针对算子开发场景推出的编程语言,原生支持C和C++标准规范,兼具开发效率和运行性能。基于Ascend C编写的算子程序,通过编译器编译和运行时调度,运行在昇腾AI处理器上。使用Ascend C,开发者可以基于昇腾AI硬件,高效的实现自定义的创新算法。您可以通过Ascend C主页了解更详细的内容。
什么是AI CPU算子
AI CPU负责执行昇腾AI处理器的CPU类算子(包括控制算子、标量和向量等通用计算),是AI Core算子的补充,主要承担非矩阵类、逻辑比较复杂的分支密集型计算。
可使用AI CPU方式实现自定义算子:
- 不适合跑在AI Core上的算子,例如,Dump、profiling等控制算子,Queue、Stack等资源状态类算子,TopK、Where等检索类算子。
- AI Core不支持的算子,算子需要某些数据类型,但AI Core不支持,例如Complex32、Complex64。
若存在相同算子类型的TBE算子与AI CPU算子,TBE算子的执行优先级高于AI CPU算子。
什么是TBE算子
TBE(Tensor Boost Engine)负责执行昇腾AI处理器中运行在AI Core上的算子,主要负责执行矩阵、向量、标量相关的计算密集型算子。
TBE提供了基于TVM(Tensor Virtual Machine)框架的自定义算子开发能力,通过TBE提供的API可以完成相应神经网络算子的开发。TBE给用户提供了两种算子开发方式 :DSL( Domain-Specific Language ,基于特性域语言)与TIK( Tensor Iterator Kernel, 张量嵌套内核),开发者可以根据需求自由选择。
什么是精度比对
精度比对是指通过NPU运行生成的dump数据与Ground Truth(基于GPU/CPU运行生成的npy数据)进行比对。实现自主研发算子与业界标准算子运算结果的差异比较。
什么是性能调优
采集昇腾处理器硬件、操作系统、进程及线程、函数等各层级的性能原始数据,性能调优工具导入原始数据后进行可视化的展示,并进行性能指标的分析,定位到具体瓶颈点和热点函数,最后输出优化建议,帮助用户快速定位和处理软件性能问题。
为什么要迁移训练脚本
昇腾NPU是AI算力的后起之秀,但目前训练和在线推理脚本大多是基于GPU的。由于NPU与GPU的架构差异,基于GPU的训练和在线推理脚本不能直接在NPU上使用。当前MindStudio提供PyTorch迁移工具,可以将基于GPU的脚本迁移为基于NPU的脚本的自动化方法,节省了人工手动进行脚本迁移的学习成本与工作量,大幅提升了迁移效率。