【AI系统】昇腾数据布局转换

简介: 华为昇腾NPU采用独特的NC1HWC0五维数据格式,旨在优化AI处理器的矩阵乘法运算和访存效率。此格式通过将C维度分割为C1份C0,适应达芬奇架构的高效计算需求,支持FP16和INT8数据类型。此外,昇腾还引入了NZ分形格式,进一步提升数据搬运和矩阵计算效率。AI编译器通过智能布局转换,确保在不同硬件上达到最优性能。

NHWC 的数据排布方式更适合多核 CPU 运算, NCHW 的数据排布方式更适合 GPU 并行运算。那么接下来让我们了解一下在华为昇腾的 NPU 中,这种特征图的存储方式。

截止到 2024 年,华为昇腾在私有格式的数据处理和特殊的数据形态越来越少,主要是得益于 AI 编译器和软件的迭代升级,更加合理地兼容业界主流的算子和数据排布格式。

昇腾数据排布

昇腾数据排布格式

数据排布格式的转换主要是将内部数据布局转换为硬件设备友好的形式,实际在华为昇腾的 AI 处理器中,为了提高通用矩阵乘法运算和访存的效率,一般既不选择 NHWC,也不选择 NCHW 来对多维数据进行存储。

这里我们将华为昇腾的数据排布作为一个案例,这种多维数据统一采用 NC1HWC0 的五维数据格式进行存储,具体的含义是将数据从 C 维度分割成 C1 份 C0。

如下图中所示,下图中将 N 这个维度进行了省略,原先的红色长方体展现的是 CHW 三个维度,将它在 C 维度分割成 C1 个长方体,每个长方体的三个维度为 C0HW,而后将这 C1 份长方体在内存中连续排列,此处的 C1=C/C0,如果不能除尽则向上取整,对应着上半篇中的内存对齐,也就是通道现在变成了 C0 个,其中 C0 对于 FP16 类型为 16,对于 INT8 类型则为 32,这部分数据需要连续存储。

NC1HWC0 示意图

这样子的数据排布我们从硬件的角度来进行分析,华为的达芬奇架构在 AI Core 中特意优化了矩阵乘法单元,矩阵计算单元可以快速完成两个 16x16 矩阵的相乘运算,等同于可以在极短时间内进行 $16^3=4096\quad\quad\quad$ 个乘加运算,并且可以实现 FP16 的运算精度,也就是说其可以针对 16 个 FP16 类型的数据进行快速的计算。这也就是我们对 C0 在 FP16 类型取 16,INT8 类型取 32 的部分原因。

下面我们来介绍一下如何转换出 NC1HWC0 数据格式,即将 NHWC 转换为 NC1HWC0 数据格式。具体操作:

  1. 将 NHWC 数据在 C 维度进行分割,变成 C1 份 NHWC0。

  2. 将 C1 份 NHWC0 在内存中连续排列,由此变成 NC1HWC0。

pytorch 中代码如下所示

Tensor.reshape([N, H, W, C1, C0]).transpose([0, 3, 1, 2, 4])

将 NCHW 转换为 NC1HWC0 数据格式

Tensor.reshape([N, C1, C0, H, W]).transpose([0, 1, 3, 4, 2])

Fractal Z & NZ 格式

ND 格式 (N-Dimension),是神经网络中最常见且最基本的张量存储格式,代表 N 维度的张量数据。

为了在达芬奇架构中更高效的搬运和进行矩阵计算,引入一种特殊的数据分形格式,NZ 格式。
如下图所示,我们以 4*4 的矩阵来进行举例,按照 NZ 格式数据在内存中的排布格式为[0,1,4,5,8,9,12,13,2,3,6,7,10,11,14,15],按照 ND 格式数据在内存中的排布格式为[0, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]。

NZ 示意图

如下图所示,NZ 分形操作中,整个矩阵被分为(H1 * W1)个分形,分形之间按照列主序排布,即类比行主序的存储方式,列主序是先存储一列再存储相邻的下一列,这样整体存储形状形如 N 字形;每个分形内部有(H0 * W0)个元素,按照行主序排布,形状如 Z 字形。

NZ 矩阵示意图

下面我们详细地对 NZ 格式(也被称为 NW1H1H0W0 格式)具体在内存中存储的维度优先顺序进行展开。先对一个分形内部进行行主序存储,再在一个完整矩阵中以分形宽度为划分,进行列主序存储,再依次对相邻的下一个矩阵进行存储。即此方式先按 W0 方向存储,再按 H0 方向存储,接着按照 H1 方向存储,随后按照 W1 方向存储,最后按 N 方向存储,直到所有数据存储完成。

下面我们介绍一下如何将 ND 数据格式转换为 NZ 数据格式:

将 ND 转换为 NZ 数据格式

(..., N,H, W )->
pad->
(..., N, H1*H0, W1*W0)->
reshape->
(..., N, H1, H0, W1, W0)->
transpose->
(..., N, W1, H1, H0, W0)

其中 pad 为平铺操作,reshape 将张量进行拆分,形状重塑,transpose 为转置操作。

除了 ND 和 NZ 格式,还有其他数据格式,如下图所示,图中最左侧小 z 大 Z,即为 ND 格式示意图,块内按照行排序,块间也按照行排序,常用于特征图的数据存储。

图中中间部分为小 n 大 Z,块内按照列排序,块间按照行排序,常用于权重的数据存储。图中右侧部分为小 z 大 N,即为 NZ 格式示意图,块内按照行排序,块间按照列排序,常用于卷积结果的输出。

众多数据格式示意图

AI 编译器布局转换算法

了解了基础知识与部分硬件中应用后,我们来了解一下在 AI 编译器中如何对数据布局进行转换优化。

首先,我们转换数据布局的目的是将将内部数据布局转化为后端设备(硬件)友好的形式,我们需要做的是尝试找到在计算图中存储张量的最佳数据布局,然后将布局转换节点插入到图中。

但其中有个需要十分注意的地方,布局转换也是需要很大的开销的,一旦涉及布局转换,就会有 I/O 操作,其产生的代价能否比的上数据格式转换后带来的性能优化也是需要我们重点考虑的部分。

具体地来说,比如 NCHW 格式操作在 GPU 上通常运行得更快,所以在 GPU 上转换为 NCHW 格式是较为有效的操作。

一些 AI 编译器依赖于特定于硬件的库来实现更高的性能,而这些库可能需要特定的布局,比如华为昇腾的 AI 编译器就依赖于 CANN 库,其中的特定布局我们在上文中已经提到。

同时也有许多设备需要配备异构计算单元,比如手机,其 SOC 中有丰富的 IP,arm 端侧的 GPU 还有 ISP 以及 DPU 等一系列不同计算单元。不同的单元可能需要不同的数据布局以更好地利用数据,这就需要 AI 编译器提供一种跨各种硬件执行布局转换的方法。

下面我们来看看数据转换具体是如何操作的。如下图所示,这两个都是数据转换的算子,数据转换我们在这里用 CASTDATA 算子来表示,左侧输入的数据格式为 NHWC,输出的数据格式为 NCHW,那么就需要一个数据转换算子节点来将数据格式由 NHWC 转换为 NCHW,右侧则相反过来,此处不再赘述。

数据转换节点示意图

接下来,我们来看略复杂一些的数据转换。如下图所示,首先像最左侧,此处我们两个算子使用的数据格式与输入输出时都相同,为 NCHW,那么此时 AI 编译器中就不需要加入数据转换节点。

中间部分,输入的数据格式为 NCHW,算子一需求的数据格式为 NHWC,需要在两者之间插入一个 CASTDATA NCHW TO NHWC 算子进行数据转换,算子二格式也为 NHWC,数据格式相同,不需要转换,输出的数据格式为 NCHW,那么在算子二到输出间需要插入一个 CASTDATA NHWC TO NCHW 算子进行数据转换。

最右侧的图中,输入的数据格式为 NCHW,算子一需求的数据格式为 NHWC,需要在两者之间插入一个 CASTDATA NCHW TO NHWC 算子进行数据转换,算子二格式为 NCHW,需要在算子一到算子二之间插入一个 CASTDATA NHWC TO NCHW 算子进行数据转换。输出与算子二数据格式相同,不做额外处理。

复杂数据转换节点示意图

首先我们来讲解一下训练场景下 AI 编译器的例子,例如 1×1 的卷积常常使用 NHWC 的数据格式,而如果到后面使用的是 3×3 的卷积常常使用 NCHW 的数据格式,AI 编译器此时能够感知上下文,得到这些存储格式的信息,这时候 AI 编译器就会根据具体的数据格式插入需要的转换算子,并且整个过程不会改变原先原计算图的其他内容。

再假设此时我们使用的是三个连续的 1×1 的卷积算子,使用的都是 NHWC 的数据格式,算子之间的数据格式是一样的,那么此时 AI 编译器需要取消掉多余的转换算子。

接着我们来讲解一下推理场景下 AI 编译器与训练场景下有什么不同,其中较大的区别是与会有在权重数据进行布局的转换。假设训练时使用的是 GPU 对神经网络进行训练,但是推理的时候会在更多的场景下进行使用,比如手机上进行推理,手机上较多使用的是 CPU,其进行推理时与在 GPU 上进行训练时的权重数据的布局可能会有所不同,那么此时就需要 AI 推理编译器插入一个权重布局的转换。

如果您想了解更多AI知识,与AI专业人士交流,请立即访问昇腾社区官方网站https://www.hiascend.com/ 或者深入研读《AI系统:原理与架构》一书,这里汇聚了海量的AI学习资源和实践课程,为您的AI技术成长提供强劲动力。不仅如此,您还有机会投身于全国昇腾AI创新大赛和昇腾AI开发者创享日等盛事,发现AI世界的无限奥秘~

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
5天前
|
人工智能 前端开发 小程序
2024年12月30日蜻蜓蜻蜓AI工具系统v1.0.0发布-优雅草科技本产品前端源代码已对外开源可免费商用-优雅草老八
2024年12月30日蜻蜓蜻蜓AI工具系统v1.0.0发布-优雅草科技本产品前端源代码已对外开源可免费商用-优雅草老八
2024年12月30日蜻蜓蜻蜓AI工具系统v1.0.0发布-优雅草科技本产品前端源代码已对外开源可免费商用-优雅草老八
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
AigcPanel:开源的 AI 虚拟数字人系统,一键安装开箱即用,支持视频合成、声音合成和声音克隆
AigcPanel 是一款开源的 AI 虚拟数字人系统,支持视频合成、声音克隆等功能,适用于影视制作、虚拟主播、教育培训等多种场景。
32 12
AigcPanel:开源的 AI 虚拟数字人系统,一键安装开箱即用,支持视频合成、声音合成和声音克隆
|
2天前
|
存储 人工智能 开发框架
Eliza:TypeScript 版开源 AI Agent 开发框架,快速搭建智能、个性的 Agents 系统
Eliza 是一个开源的多代理模拟框架,支持多平台连接、多模型集成,能够快速构建智能、高效的AI系统。
31 8
Eliza:TypeScript 版开源 AI Agent 开发框架,快速搭建智能、个性的 Agents 系统
|
1天前
|
机器学习/深度学习 人工智能 监控
AI在交通管理系统中的应用
AI在交通管理系统中的应用
31 23
|
3天前
|
存储 数据采集 算法
构建AI数据管道:从数据到洞察的高效之旅最佳实践
本文探讨了大模型从数据处理、模型训练到推理的全流程解决方案,特别强调数据、算法和算力三大要素。在数据处理方面,介绍了多模态数据的高效清洗与存储优化;模型训练中,重点解决了大规模数据集和CheckPoint的高效管理;推理部分则通过P2P分布式加载等技术提升效率。案例展示了如何在云平台上实现高性能、低成本的数据处理与模型训练,确保业务场景下的最优表现。
|
9天前
|
机器学习/深度学习 传感器 人工智能
开源AI视频监控系统在监狱安全中的应用——实时情绪与行为分析、暴力预警技术详解
针对监狱环境中囚犯情绪波动和复杂人际互动带来的监控挑战,传统CCTV系统难以有效预警暴力事件。AI视频监控系统基于深度学习与计算机视觉技术,实现对行为、情绪的实时分析,尤其在低光环境下表现优异。该系统通过多设备协同、数据同步及自适应训练,确保高精度识别(95%以上)、快速响应(<5秒),并具备24小时不间断运行能力,极大提升了监狱安全管理的效率与准确性。
|
2天前
|
人工智能 运维 API
PAI企业级能力升级:应用系统构建、高效资源管理、AI治理
PAI平台针对企业用户在AI应用中的复杂需求,提供了全面的企业级能力。涵盖权限管理、资源分配、任务调度与资产管理等模块,确保高效利用AI资源。通过API和SDK支持定制化开发,满足不同企业的特殊需求。典型案例中,某顶尖高校基于PAI构建了融合AI与HPC的科研计算平台,实现了作业、运营及运维三大中心的高效管理,成功服务于校内外多个场景。
|
5天前
|
人工智能 Cloud Native 数据管理
数据+AI融合趋势洞察暨阿里云OpenLake解决方案发布
Forrester是全球领先的市场研究与咨询机构,专注于新兴技术在各领域的应用。本文探讨如何加速现代数据管理,推动人工智能与客户业务的融合创新。面对数据标准缺乏、多云环境复杂性、新兴业务场景及过多数据平台等挑战,Forrester提出构建AI就绪的数据管理基石,通过互联智能框架、全局数据管理和DataOps、端到端数据管理能力、AI赋能的数据管理以及用例驱动的策略,帮助企业实现数据和AI的深度融合,提升业务价值并降低管理成本。
|
8天前
|
机器学习/深度学习 人工智能 自动驾驶
企业内训|AI大模型在汽车行业的前沿应用研修-某汽车集团
本课程是TsingtaoAI为某汽车集团高级项目经理设计研发,课程全面系统地解析AI的发展历程、技术基础及其在汽车行业的深度应用。通过深入浅出的理论讲解、丰富的行业案例分析以及实战项目训练,学员将全面掌握机器学习、深度学习、NLP与CV等核心技术,了解自动驾驶、智能制造、车联网与智能营销等关键应用场景,洞悉AI技术对企业战略布局的深远影响。
138 97
|
13天前
|
机器学习/深度学习 人工智能 物联网
AI赋能大学计划·大模型技术与应用实战学生训练营——湖南大学站圆满结营
12月14日,由中国软件行业校园招聘与实习公共服务平台携手魔搭社区共同举办的AI赋能大学计划·大模型技术与产业趋势高校行AIGC项目实战营·湖南大学站圆满结营。
AI赋能大学计划·大模型技术与应用实战学生训练营——湖南大学站圆满结营