人工智能
-
2007第一次热潮,ResNet-50视觉识别超过人类
-
2020第二次热潮,Alpha Fold2战胜李世石
-
2022GPT,第三次热潮,底层硬件的突破,大模型+大数据的世界。多模态。
-
AI创新从预测推断向内容生成拓展
-
AI的应用,智能家居,无人超市。
华为进军AI
-
2018.10推理芯片
-
2019.9训练集群Atlas900
-
2020.AI 框架minspore
全栈AI平台
-
底层系列硬件:
-
端:智能终端,手机
-
边:(小盒子)一般做推理的中等算力的硬件。同时抗风沙,抗高温。
-
云:服务器集群,从网络一侧下发资源。
-
-
CANN异构计算框架
-
提供一系列API,资源接口
-
对应于CUDA
-
-
AI框架–昇思
-
应用层
-
ModelArts,HIAI Service,MindX DL ,MindX Edge, ModelZoo, MindX SDK
-
-
行业应用
-
互联网,推荐
-
金融,单据识别
-
昇腾AI处理器
硬件
-
CPU+NPU+网卡+编解码
-
达芬奇框架
-
NPU通过163的计算单元计算矩阵
-
GPU靠多个线程的小核并行运算
-
软件
-
异构计算架构
-
NPU执行计算任务
- CPU分发任务,通过信息同步
-
-
融合算子库
-
算子融合,减少中间数据搬入搬出的开销
-
切分逻辑固定,提供高阶API直接使用.
-
算子不断优化
-
-
生态迁移
-
自动工具链
-
软硬件协同优化
训练加速
-
数据:自动流水,图优化
-
计算:多个优化算子
-
通信:HCCL通信算子
推理加速
-
AMCT模型瘦身:混合精度
二进制算子库
ascend C 是天然支持多个shape的。但是多个二进制算子模板也可以(转到ascendC比较麻烦)
计算图执行下沉技术
切分为多个子图,下沉到对应的硬件处理芯片。实现自动流水
自动调优
AOE命令遍历二进制模板调优
Ascend C算子编程语言
特点
C/C++规范 自动化流水并行调度 结构化核函数编程
CPU/NPU孪生调试 :模拟NPU环境,解决精度问题,打印流水图,帮助分析性能
AI Core
AI core是昇腾ai处理器的计算核心,采用达芬奇架构
逻辑架构
-
存储系统:三级存储层
-
控制单元:
-
指令控制,这些指令是异步下发的,下发到相应的任务的队列(向量、矩阵、存储转换)
-
事件同步。
-
-
计算单元
AI Core内部并行计算架构
Ascend C将上述架构简化为:
-
计算单元
-
搬运单元
-
存储单元
-
Local 核内存储
-
Global 核外,NPU 内存储
-
-
异步指令流
-
同步指令流
-
计算指令流:DMA
算子
定义
-
算子对应网络中层或节点的计算逻辑
-
数学上:一个函数空间到一个函数空间上的映射
概念
-
算子名称:算子的实例,都是一个算子,用于表示网络中特定算子。这样方便定位哪一个算子出了问题
-
算子类型:Conv1 Conv2都是Convolution类型的
-
数据容器:张量,存储算子输入输出数据的容器。张量描述符:
-
名称:
-
形状:(10,)
-
数据类型:int 、fp16
-
数据排布格式:物理排布。通常4D的图。将4维数据存储到线性结构。首先读到的数据是最右维。
-
N
-
H
-
W
-
C
-
-
-
轴
-
shape(4,20,20,3)对应的轴是(0,1,2,3)
-
Device模块
host的内存
device的内存(global memary)
核函数
-
Ascend C
__global__ __aicore__ void kernel_name(argument list);
-
调用
-
kernel_name<<<blockDim,l2ctrl,stream>>>(arg list)
-
blockDim:使用几个aicore
-
stream:任务队列,管理任务并行,严格保序。
需要结果时,拿这个stream等异步的结果,实现同步。
-
-
输入输出变量的类型都是
__gm__ unit8_t*
编程模型——SPMD模型
单程序多数据,数据拆分。
API
提供高级api。
Muls-标量双目指令-矢量计算-基础API-Ascend C API-Ascend C API-算子开发接口-CANN社区版8.0.RC2.alpha003开发文档-昇腾社区
编程范式
-
矢量编程范式:CopyIn ,Compute,CopyOut
-
矩阵编程范式
流水任务
数据通路
for循环并没有执行,只是加到了指令队列