首页 > 其他分享 >【AI System】Ascend NPU 架构 & CANN 平台入门学习

【AI System】Ascend NPU 架构 & CANN 平台入门学习

时间:2024-08-31 23:22:48浏览次数:11  
标签:Core 16 AI Ascend 矩阵 System 计算 算子

Ascend NPU 架构 & CANN 平台入门学习

概述

昇腾 NPU 是专门用于 AI 训练/推理计算的 AI 专用处理器,其中的 AI Core 能够在很大程度上提高 AI 计算的效率。

本文将主要介绍 ASCEND NPU 的硬件架构 & 工作原理、AI Core 的计算模式以及异构计算平台 CANN 等内容。

NPU 硬件架构

NPU SOC 架构

Ascend 310 架构
  • AI Core:计算核心,负责执行矩阵、向量、标量计算密集的算子任务,采用达芬奇架构;
  • AI CPU:承担非矩阵类复杂计算,即负责执行不适合跑在 AI Core 上的算子;
  • TS Core:作为任务调度器(Task Scheduler,TS),以实现计算任务在 AI Core 上的高效分配和调度(专门服务于 AI Core 和 AI CPU,不承担任何其它的工作);
  • ARM CPU:控制芯片整体运行;
  • DVPP:数字视觉预处理子系统,完成图像视频编解码;
  • Cache & Buffer。

[image]

Ascend 910 架构
  • AI Core:32 个,上下各 16 个,中间放 buffer,方便更快地取数据;
  • Taishan Core:一部分为 AI CPU,承担部分 AI 计算,一部分为 Ctrl CPU,负责 SoC 控制功能,两类 CPU 占用的核数由软件进行分配;
  • TS CPU:负责任务调度,把算子任务切分之后,通过硬件调度器(HWTS)分发给 AI Core 或 AI CPU 执行计算;
  • Nimbus:提供 PCIe 接口和 Host CPU 对接;提供 NIC 用于跨服务器传递数据;集成一个 ARM CPU 核,执行启动、功耗控制等硬件管理任务;
  • Cache & Buffer。

[image]

NPU 达芬奇架构

NPU 的达芬奇架构中共包含 3 种类型的单元:

  • 计算单元:包含矩阵计算单元(DaVinci Core)、向量计算单元(Vector)、标量计算单元(Scalar);
  • 存储系统:AI Core 片上存储单元和相应数据通路构成存储系统;
  • 控制单元:计算过程提供指令控制,负责 AI Core 的运行。

[image]

[image]

计算单元
  • Cube Core:每次执行可以完成 fp16 的矩阵乘,如 C = A(16*16) * B(16*16),更大的矩阵运算需要先对矩阵进行分块(在 L1 Buffer 中进行缓存);
  • Vector Unit:算力低于 Cube,灵活度高(如数学中的求倒数、平方根等),Vector 所有计算的源数据和目标数据都会存储在 Unified Buffer 中(Unified Buffer 再与 L1 Buffer 进行交互),并按 32 Byte 对齐;
  • Scalar Unit:负责各类型标量数据运算和程序流程控制,算力最低,功能上类比小核 CPU,完成整个程序循环控制、分支判断、Cube/Vector 等指令地址和参数计算以及基本算术运算等;
  • Accumulator(累加器):把当前矩阵乘的结果与上一次计算的结果相加,可以用于完成卷积中增加 bias 等操作。

[image]

注意:AI Core 就是指 Cube Core,即矩阵计算单元。

存储单元
  • 存储控制单元(MTE):作为 AI Core 内部数据通路传输控制器,负责 AI Core 内部数据在不同缓冲区间的读写管理,以及完成一系列的格式转换操作;
  • 缓冲区:
    • 输入缓冲区(L1 Buffer):AI Core 采用了大容量片上缓冲区设计,通过增大片上缓存的数据量来减少数据从片外搬运到 AI Core 中的频次,从而降低数据搬运过程中所产生的功耗和时延,有效控制整体计算耗能和提升性能;
    • 输出缓冲区(Unified Buffer):用来存放神经网络中每层计算的中间结果,从而在进入下一层时方便获取数据。
  • 寄存器(SPR/GPR):寄存器资源主要是标量计算单元在使用。

[image]

上图中,HBM/DDR 和 L2 缓冲器都属于 AI Core 核外的数据存储系统。

数据通路是数据在 AI Core 中的流通路径,它有以下特点:

  • 多进单出,可通过并行输入来提高数据流入的效率;
  • 将多种输入数据处理完成后只生成输出特征矩阵,数据种类相对单一,单输出数据通路,可以节约芯片硬件资源。
控制单元
  • 系统控制模块:控制“任务块”(AI Core 中最小的任务计算粒度)的执行进程,在任务块执行完成后,系统控制模块会进行中断处理和状态申报。
  • 指令缓存;
  • 标量指令处理队列;
  • 指令发射模块:根据指令类型分别发送指令到对应的执行队列中;
  • 事件同步模块。

AI Core 电路结构

对于运算 C = A(16*16) * B(16*16),矩阵 C 中的每一个元素都需要进行 16 次乘法与 15 次加法计算得到(一个矩阵计算子电路)。

在 AI Core 中,共有 256 个矩阵计算子电路,每一条指令都可以并行完成 256 个矩阵 C 中的元素的计算。

[image]

NPU 工作原理

NPU 并行计算架构

  • 异步指令流:Scalar 计算单元读取指令序列,并把向量计算、矩阵计算、数据搬运指令发送给对应的指令队列,Vector 计算单元、Cube 计算单元、DMA 搬运单元异步地并行执行接收到的指令(“异步并行”:将串行的指令流分解);
  • 同步信号流:指令间可能会存在依赖关系,为了保证不同指令队列间的指令按照正确的逻辑关系执行,Scalar 计算单元也会给对应单元下发同步指令;
  • 计算数据流:DMA 搬入单元把数据搬运到 Local Memory,Vector/Cube 计算单元完成数据计算,并把计算结果回写到 Local Memory,DMA 搬出单元把处理好的数据搬运回 Global Memory。

[image]

AI Core 计算模式

Cube 单元能够高效地执行 MAC(矩阵乘加)操作,目前支持的矩阵大小为 16*16*16

[image]

注意:通常矩阵乘中两矩阵很大,因此数据是分块(Tiling)后送入 Cube 单元的,每送完一块,结果存放到累加器,最后得到结果。

在 CPU 的计算过程中,矩阵 A 按行扫描,矩阵 B 按列扫描。典型的存储方式是 A 和 B 都按照行方式进行存储(Row-Major),而内存读取按行读更方便,因此对 A 矩阵高效,对 B 矩阵低效。

为了提高内存读取的效率,NPU 将矩阵 B 的存储方式转成按列存储(Column-Major),通过改变矩阵存储的方式来提升矩阵计算的效率。

Cube Core 一条指令完成两个 16*16 矩阵的 MAC,相当于一个时钟周期进行 163 = 4096 个 MAC 运算。执行前将 A 按行、将 B 按列存放在 Input Buffer,并通过 Cube Core 计算得到 C,按行存放在 Output Buffer。

[image]

注意:矩阵 A 不需要转换,可以直接从 L1 Buffer 读取到 AI Core 里面;矩阵 B 需要预先读到 MTE 中进行转换),然后再读取到 AI Core 里进行计算。

矩阵的预处理:

  • 分块(Tiling):因为片上缓存容量有限,因此将整个矩阵 B 划分为多个子矩阵,并依次搬运到缓存中,最后得到结果矩阵 C;
  • 填充(Padding):A 和 B 都等分成同样大小的块(16*16),排不满的地方可以通过补 0 实现。

CANN 平台

整体架构

异构计算架构 CANN(Compute Architecture for Neural Networks)是华为针对 AI 场景推出的异构计算架构,向上支持多种 AI 框架,包括 MindSpore、PyTorch、TensorFlow 等,向下服务 AI 处理器与编程,发挥承上启下的关键作用,是提升昇腾 AI 处理器计算效率的关键平台。同时针对多样化应用场景,提供多层次编程接口,支持用户快速构建基于昇腾平台的AI应用和业务。

  • 计算语言开发接口:
    • 应用开发接口:提供深度学习推理计算、图像预处理、单算子加速计算能力;
    • 图开发接口:提供统一网络构图接口;
    • 算子开发接口:Ascend C 是 CANN 在算子开发场景的编程语言,原生支持 C&C++ 标准规范,最大化匹配用户开发习惯。
  • 计算服务层:
    • 昇腾算子库 AOL;
    • 昇腾调优引擎 AOE:用于在推理、训练等场景对模型、算子、子图等进行调优,充分利用硬件资源,提升网络性能。
  • 计算编译层:
    • 图转换:各种模型编译器;
    • 图编译:图准备、图优化、图拆分、图编译;
    • Tensor Boost Engine(TBE):算子融合、算子编译。
  • 计算执行层:类似于 CUDA 的 runtime,提供 stream 管理、context 管理等功能;
  • 基础服务层:资源管理、通信管理、设备管理、芯片 IP 驱动、公共服务。

[image]

CANN 官方社区:使用导读-从这里开始-CANN社区版8.0.RC3.alpha002开发文档-昇腾社区 (hiascend.com)

Ascend C 算子编程

Ascend C 算子编程使用 C++ 语言和 Ascend C 类库 API 进行开发。

Ascend C 类库 API:

  • 基本 API:计算 API、搬运 API、同步 API、……;
  • 高阶 API:Matmul API、Conv API、Softmax API、……。

Ascend C 算子编程采用 SPMD(单程序多数据编程)模式,即一个核的算子程序被调用时,会启动 N 个实例,每个运行实例称为一个 block,它们都执行相同的代码,有相同的参数,但参与计算的数据不同。

注意:block 类似于线程(进程),而 block_idx 类似于 thread_id,算子程序需要使用 block_idx 来进行数据并行计算切分。

推理应用开发

  • AMCT 模型压缩:支持量化、通道稀疏、张量分解,降低模型的数据量和计算量,提升计算性能;
    • 量化:将模型的权重和数据从浮点型转换为整型(比如:低精度 int8),从而生成更加轻量化的网络模型,减少数据和计算量;
    • 张量分解:分解卷积 Tensor,将一个大卷积转化成两个级联的小卷积,从而降低存储空间和计算量(张量分解处理后,需要重训练以保证模型精度);
    • 稀疏:通过结构剪枝,对模型中的部分算子裁剪部分权重和参数,从而得到参数量和计算量更小的网络模型(稀疏处理后,需要重训练以保证模型精度)。
  • ATC 模型转换工具:将开源框架的网络模型转换为适配昇腾 AI NPU 的 om 模型;
  • AOE 智能调优工具:支持算子计算过程的自动寻优,提升整体网络的性能。

标签:Core,16,AI,Ascend,矩阵,System,计算,算子
From: https://blog.csdn.net/weixin_44162047/article/details/141755989

相关文章

  • #Datawhale #AI夏令营 #Mobile Agent 设计与实践 (2)
    系列文章目录Task1:第一篇文章Task2(loading…)Task3(loading…)Task2文章目录前言一、创新场景的idea1.股票小助手2.群聊小助手3.壁纸生成助手4.桌面整理大师二、Mobile-Agent扩展初步实践*step1:controller修改**step2:Prompt修改**step3:主文件......
  • 社会实践实习报告还没写?推荐这款AI工具,一键高效生成
    随着科技的飞速发展人工智能逐渐渗透到各个领域为咱们的工作和学带来了极大的便利。在撰写社会实践实报告这一环节一款名为“锐智AI”的一键生成工具应运而生它以其高效、智能的特点成为了广大学生和职场人士的得力助手。本文将详细介绍锐智AI助手的功能、优势以及采用方法帮......
  • 大模型 | RAG 架构设计三阶段:Naive RAG 架构设计、Advanced RAG 架构设计、Agentic RA
    第一阶段:NaiveRAG架构设计大型语言模型(LLMs)虽然展现出卓越的性能,但在处理特定领域或知识密集型任务时,存在一些挑战,比如:产生虚假信息、知识陈旧以及推理过程的非透明性和不可追溯性。RAG技术作为一种有希望的解决方案,通过融合外部数据库的知识,有效应对了这些问题。它显著......
  • 1.2线性模型(Datawhale X 李宏毅苹果书 AI 夏令营)
    1.2线性模型(DatawhaleX李宏毅苹果书AI夏令营)如图,可以先设一个方程:$$y=b+wx_{1}$$而通过观察可以得到每隔7天就有一个循环,所以可以通过观察得到新的模型:$$y=b+\sum_{j=1}^{7}w_{j}x_{j}$$而采用该模型预估时,由于考虑了7天,所以训练数据上会得到比考虑1天较低的损失。......
  • Datawhale X 李宏毅苹果书 AI夏令营 Task3
    一、批量化归一    当误差表面崎岖不平,就意味着它比较难以训练,而利用批量化归一将崎岖的误差表面“铲平”则是其中的方法之一。如果是固定学习率,可能很难得到好的结果,因此才需要自适应的学习率。        当输入的特征,每一个维度的值,它的范围差距很大的时候,我......
  • Datawhale X 李宏毅苹果书 AI夏令营-深度学习入门班-task2-分段线性曲线
    引入上一篇文章中我们了解了机器学习中最基本的模型线性模型(Linearmodels),由于其过于简单(只能调整其斜率w与截距b)无法反映真实数据中多数折线或曲线情况这种限制称为模型偏差(modelbias)。下文介绍:如何构建更复杂,误差更小的函数解决问题。注:此处的bias与线性模型中的b不同。......
  • 蔚来发布“NT.Coconut椰子”系统,乐道L60 搭载城市绿洲AI智舱
    8月31日,在乐道智能系统发布会上,蔚来正式推出“NT.Coconut椰子”智能系统,该系统由智能应用、SkyOS天枢操作系统、智能硬件三大部分组成,旨在为用户带来更智能、更便捷的驾驶体验。SkyOS天枢操作系统:整车级别的领先全域操作系统乐道全系车型搭载SkyOS天枢操作系统,全面覆盖车联......
  • AI 自动化副业创收,手把手带你提升副业收益【AI大模型】
    副业创收已经成为行业趋势,在当前经济形势下,许多人面临着行业裁员的不确定性。为了增强个人的抗风险能力,寻求一份副业已经成为一种重要的趋势。这不仅是经济上的补充,更是对自由与独立的一种追求——它应让你自主掌控,不被外界束缚。通过精心打造的副业,你不仅可以灵活安排时间,......
  • Datawhale X 李宏毅苹果书 AI夏令营 Task2笔记
    Task2.1:《深度学习详解》-3.3&4&5自适应学习率的概念和方法,包括AdaGrad、RMSProp和Adam等优化器。-**训练网络时的梯度和损失变化**:训练网络时损失可能不再下降,但梯度范数不一定小,梯度可能在山谷壁间“震荡”,多数训练未到临界点就停止。-**不同学习率的影响**:学习率过大或过......
  • Datawhale X 李宏毅苹果书 AI夏令营-深度学习入门班-task1-初步了解机器学习
    机器学习概念就是使计算机模拟人类的学习过程,通过分析大量数据,完成任务,处理问题。这个过程简单来说就是,使计算机寻找到一个函数,构建起一个模型,通过数据使模型准确化,便于输出目标结果。机器学习类型机器学习根据其所需完成的任务不同,需要寻找不同类型的函数。类型一:回归(Regr......