昇腾训练营学习笔记

人工智能

  1. 2007第一次热潮,ResNet-50视觉识别超过人类

  2. 2020第二次热潮,Alpha Fold2战胜李世石

  3. 2022GPT,第三次热潮,底层硬件的突破,大模型+大数据的世界。多模态。

  4. AI创新从预测推断向内容生成拓展

  5. AI的应用,智能家居,无人超市。

华为进军AI

  1. 2018.10推理芯片

  2. 2019.9训练集群Atlas900

  3. 2020.AI 框架minspore

全栈AI平台

  1. 底层系列硬件:

    1. 端:智能终端,手机

    2. 边:(小盒子)一般做推理的中等算力的硬件。同时抗风沙,抗高温。

    3. 云:服务器集群,从网络一侧下发资源。

  2. CANN异构计算框架

    1. 提供一系列API,资源接口

    2. 对应于CUDA

  3. AI框架–昇思

  4. 应用层

    1. ModelArts,HIAI Service,MindX DL ,MindX Edge, ModelZoo, MindX SDK

  5. 行业应用

    1. 互联网,推荐

    2. 金融,单据识别

昇腾AI处理器

硬件

  1. CPU+NPU+网卡+编解码

  2. 达芬奇框架

    • NPU通过163的计算单元计算矩阵

    • GPU靠多个线程的小核并行运算

软件

  1. 异构计算架构

    1. NPU执行计算任务

    2. CPU分发任务,通过信息同步
  2. 融合算子库

    • 算子融合,减少中间数据搬入搬出的开销

    • 切分逻辑固定,提供高阶API直接使用.

    • 算子不断优化

  3. 生态迁移

    • 自动工具链

软硬件协同优化

训练加速
  1. 数据:自动流水,图优化

  2. 计算:多个优化算子

  3. 通信:HCCL通信算子

推理加速
  1. AMCT模型瘦身:混合精度

二进制算子库

ascend C 是天然支持多个shape的。但是多个二进制算子模板也可以(转到ascendC比较麻烦)

计算图执行下沉技术

切分为多个子图,下沉到对应的硬件处理芯片。实现自动流水

自动调优

AOE命令遍历二进制模板调优

Ascend C算子编程语言

特点

C/C++规范 自动化流水并行调度 结构化核函数编程

CPU/NPU孪生调试 :模拟NPU环境,解决精度问题,打印流水图,帮助分析性能

AI Core

AI core是昇腾ai处理器的计算核心,采用达芬奇架构

逻辑架构
  1. 存储系统:三级存储层

  2. 控制单元:

    • 指令控制,这些指令是异步下发的,下发到相应的任务的队列(向量、矩阵、存储转换)

    • 事件同步。

  3. 计算单元

AI Core内部并行计算架构

Ascend C将上述架构简化为:

  1. 计算单元

  2. 搬运单元

  3. 存储单元

    1. Local 核内存储

    2. Global 核外,NPU 内存储

  1. 异步指令流

  2. 同步指令流

  3. 计算指令流:DMA

算子

定义
  1. 算子对应网络中层或节点的计算逻辑

  2. 数学上:一个函数空间到一个函数空间上的映射

概念
  1. 算子名称:算子的实例,都是一个算子,用于表示网络中特定算子。这样方便定位哪一个算子出了问题

  2. 算子类型:Conv1 Conv2都是Convolution类型的

  3. 数据容器:张量,存储算子输入输出数据的容器。张量描述符:

    • 名称:

    • 形状:(10,)

    • 数据类型:int 、fp16

    • 数据排布格式:物理排布。通常4D的图。将4维数据存储到线性结构。首先读到的数据是最右维。

      • N

      • H

      • W

      • C

    1. shape(4,20,20,3)对应的轴是(0,1,2,3)

Device模块

host的内存

device的内存(global memary)

核函数
  1. Ascend C __global__ __aicore__ void kernel_name(argument list);

  2. 调用

    1. kernel_name<<<blockDim,l2ctrl,stream>>>(arg list)

    2. blockDim:使用几个aicore

    3. stream:任务队列,管理任务并行,严格保序。

      需要结果时,拿这个stream等异步的结果,实现同步。

  3. 输入输出变量的类型都是 __gm__ unit8_t*

编程模型——SPMD模型

单程序多数据,数据拆分。

API

提供高级api。
Muls-标量双目指令-矢量计算-基础API-Ascend C API-Ascend C API-算子开发接口-CANN社区版8.0.RC2.alpha003开发文档-昇腾社区

编程范式
  1. 矢量编程范式:CopyIn ,Compute,CopyOut

  2. 矩阵编程范式

流水任务

数据通路

for循环并没有执行,只是加到了指令队列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值