Fork me on GitHub

华为深度解读达芬奇架构:3D Cube计算引擎加速运算

  作者:阿迷

  IT 之家 8 月 22 日消息此前,华为正式推出了麒麟 810 芯片,这款芯片采用华为自研的达芬奇架构,其 AI 得分在苏黎世联邦理工学院推出的 AI Benchmark 榜单中位列前三。

  华为在文章中同时表示,8 月 23 日,采用达芬奇架构的 AI 芯片 Ascend910 将正式商用发布,同时与之配套的新一代 AI 开源计算框架 MindSpore 也将同时亮相。

  针对达芬奇框架,华为中国今天发文进行深度科普。以下则是华为对达芬奇框架的科普内容。

  源起:为什么要做达芬奇架构?

  华为预测,到 2025 年全球的智能终端数量将会达到 400 亿台,智能助理的普及率将达到 90%,企业数据的使用率将达到 86%。可以预见,在不久的将来,AI 将作为一项通用技术极大地提高生产力,改变每个组织和每个行业。为了实现 AI 在多平台多场景之间的协同,华为设计达芬奇计算架构,在不同体积和功耗条件下提供强劲的 AI 算力。

  初见:达芬奇架构的核心优势

  达芬奇架构,是华为自研的面向 AI 计算特征的全新计算架构,具备高算力、高能效、灵活可裁剪的特性,是实现万物智能的重要基础。具体来说,达芬奇架构采用 3D Cube 针对矩阵运算做加速,大幅提升单位功耗下的 AI 算力,每个 AI Core 可以在一个时钟周期内实现 4096 个 MAC 操作,相比传统的 CPU 和 GPU 实现数量级的提升。


3D Cube

  同时,为了提升 AI 计算的完备性和不同场景的计算效率,达芬奇架构还集成了向量、标量、硬件加速器等多种计算单元。同时支持多种精度计算,支撑训练和推理两种场景的数据精度要求,实现 AI 的全场景需求覆盖。

  深耕:达芬奇架构的 AI 硬实力

  科普1:常见的 AI 运算类型有哪些?

  在了解达芬奇架构的技术之前,我们先来弄清楚一下几种 AI 运算数据对象:

  • 标量(Scalar):由单独一个数组成
  • 向量(Vector):由一组一维有序数组成,每个数由一个索引(index)标识
  • 矩阵(Matrix):由一组二维有序数组成,每个数由两个索引(index)标识
  • 张量(Tensor):由一组n维有序数组成,每个数由n个索引(index)标识

  其中,AI 计算的核心是矩阵乘法运算,计算时由左矩阵的一行和右矩阵的一列相乘,每个元素相乘之后的和输出到结果矩阵。在此计算过程中,标量(Scalar)、向量(Vector)、矩阵(Matrix)算力密度依次增加,对硬件的 AI 运算能力不断提出更高要求。

  典型的神经网络模型计算量都非常大,这其中 99% 的计算都需要用到矩阵乘,也就是说,如果提高矩阵乘的运算效率,就能最大程度上提升 AI 算力——这也是达芬奇架构设计的核心:以最小的计算代价增加矩阵乘的算力,实现更高的 AI 能效。

  科普2:各单元角色分工揭秘,Da Vinci Core 是如何实现高效 AI 计算的?

  在 2018 年全联接大会上,华为推出 AI 芯片 Ascend 310(昇腾 310),这是达芬奇架构的首次亮相,Ascend 310 相当于 AI 芯片中的 NPU。

  其中,Da Vinci Core 只是 NPU 的一个部分,Da Vinci Core 内部还细分成很多单元,包括核心的 3D Cube、Vector 向量计算单元、Scalar 标量计算单元等,它们各自负责不同的运算任务实现并行化计算模型,共同保障 AI 计算的高效处理。

  3D Cube 矩阵乘法单元是 AI 计算的核心,这部分运算由 3D Cube 完成,Buffer L0A、L0B、L0C 则用于存储输入矩阵和输出矩阵数据,负责向 Cube 计算单元输送数据和存放计算结果。

  虽然 Cube 的算力很强大,但只能完成矩阵乘运算,还有很多计算类型要依靠 Vector 向量计算单元来完成。Vector 的指令相对来说非常丰富,可以覆盖各种基本的计算类型和许多定制的计算类型。

  Scalar 标量运算单元主要负责 AI Core 的标量运算,功能上可以看作一个小 CPU,完成整个程序的循环控制,分支判断,Cube、Vector 等指令的地址和参数计算以及基本的算术运算等。

  科普3:3D Cube 计算方式的独特优势是什么?

  不同于以往的标量、矢量运算模式,华为达芬奇架构以高性能 3D Cube 计算引擎为基础,针对矩阵运算进行加速,大幅提高单位面积下的 AI 算力,充分激发端侧 AI 的运算潜能。以两个N*N的矩阵A*B乘法为例:如果是N个 1D 的 MAC,需要N2的 cycle 数;如果是 1 个N2的 2D MAC 阵列,需要N个 Cycle;如果是 1 个N维 3D 的 Cube,只需要 1 个 Cycle。


图中计算单元的数量只是示意,实际可灵活设计

  达芬奇架构将大幅提升算力,16*16*16 的 3D Cube 能够显著提升数据利用率,缩短运算周期,实现更快更强的 AI 运算。举例来说,同样是完成 4096 次运算,2D 结构需要 64 行*64 列才能计算,3D Cube 只需要 16*16*16 的结构就能算出。其中,64*64 结构带来的问题是:运算周期长、时延高、利用率低。

  达芬奇架构的这一特性也体现在麒麟 810 上。作为首款采用达芬奇架构 NPU 的手机 SoC 芯片,麒麟 810 实现强劲的 AI 算力,在单位面积上实现最佳能效,FP16 精度和 INT8 量化精度业界领先。

  麒麟 810 支持自研中间算子格式 IR 开放,算子数量多达 240+,处于业内领先水平。更多算子、开源框架的支持以及提供更加完备的工具链将助力开发者快速转换集成基于不同 AI 框架开发出的模型,极大地增强了华为 HiAI 移动计算平台的兼容性、易用性,提高开发者的效率,节约时间成本,加速更多 AI 应用的落地。

  预见:达芬奇架构解锁 AI 无限可能

  基于灵活可扩展的特性,达芬奇架构能够满足端侧、边缘侧及云端的应用场景,可用于小到几十毫瓦,大到几百瓦的训练场景,横跨全场景提供最优算力。

  以 Ascend 芯片为例,Ascend-Nano 可以用于耳机电话等 IoT 设备的使用场景;Ascend-Tiny 和 Ascend-Lite 用于智能手机的 AI 运算处理;在笔记本电脑等算力需求更高的便携设备上,由 Ascend 310(Ascend-Mini)提供算力支持;而边缘侧服务器上则需要由 Multi-Ascend 310 完成 AI 计算;至于超复杂的云端数据运算处理,则交由算力最高可达 256 [email protected] 的 Ascend 910(Ascend-Max)来完成。正是由于达芬奇架构灵活可裁剪、高能效的特性,才能实现对上述多种复杂场景的 AI 运算处理。

  同时,选择开发统一架构也是一个非常关键的决策。统一架构优势很明显,那就是对广大开发者非常利好。基于达芬奇架构的统一性,开发者在面对云端、边缘侧、端侧等全场景应用开发时,只需要进行一次算子开发和调试,就可以应用于不同平台,大幅降低了迁移成本。不仅开发平台语言统一,训练和推理框架也是统一的,开发者可以将大量训练模型放在本地和云端服务器,再将轻量级的推理工作放在移动端设备上,获得一致的开发体验。

  在算力和技术得到突破性提升后,AI 将广泛应用于智慧城市、自动驾驶、智慧新零售、机器人、工业制造、云计算 AI 服务等场景。未来,AI 将应用更加广泛的领域,并逐渐覆盖至生活的方方面面。

来自:
IT之家

作者:Johnson
原创文章,版权所有,转载请保留原文链接。