转载:【AI系统】关键设计指标

简介: 本文介绍了AI芯片的关键设计指标及其与AI计算模式的关系,涵盖计算单位(如OPS、MACs、FLOPs)、关键性能指标(精度、吞吐量、时延、能耗、成本、易用性)及优化策略,通过算术强度和Roofline模型评估AI模型在芯片上的执行性能,旨在帮助理解AI芯片设计的核心考量与性能优化方法。

前面我们已经对 AI 的计算模式有了初步的认识,那么这些计算模式具体是如何和 AI 芯片设计结合起来的呢?接下来我们将从 AI 芯片关键设计指标的角度来进一步拓展对 AI 计算体系的思考。

计算单位

市场上当一款 AI 芯片产品发布时候,经常会通过一些指标数据说明产品的能力,比如芯片制程,内存大小,核心数,带宽,算力等,这些指标体现了 AI 产品的核心竞争力。

为了帮助理解这些指标,我们先来了解一下 AI 算法领域常用的计算单位。

OPS

OPS,Operations Per Second, 每秒操作数。1 TOPS 代表处理器每秒进行一万亿次($10^{12}$)计算。

OPS/W:每瓦特运算性能。TOPS/W 评价处理器在 1W 功耗下运算能力的性能指标。

MACs

Multiply-Accumulate Operations,乘加累计操作。1 MACs 包含一个乘法操作与一个加法操作,通常 $1MACs = 2FLOPs$。

FLOPs

Floating Point Operations, 浮点运算次数,用来衡量模型计算复杂度,常用作神经网络模型速度的间接衡量标准。对于卷积层来说,FLOPs 的计算公式如下:

$$ FLOPs = 2 \cdot H \cdot W \cdot C_{in} \cdot K \cdot K \cdot C_{out} $$

MAC

Memory Access Cost,内存占用量,用来衡量模型在运行时的内存占用情况。对卷积层来说,MAC 的计算公式如下:

$$ H_{in} \cdot W_{in} \cdot C_{in}+ H_{out} \cdot W_{out} \cdot C_{out}+K \cdot K \cdot C_{in} \cdot C_{out} $$

AI 芯片关键指标

AI 芯片设计的目标是低成本高效率的执行 AI 模型,所以衡量 AI 芯片的关键指标涉及 AI 模型软件应用层面的指标和 AI 芯片硬件市场竞争力指标两个方面,展开如下:

精度 Accuracy

在 AI 芯片中,精度是一个非常关键的指标,它指的是模型在处理任务时输出结果与实际情况之间的接近程度。理解 AI 芯片的精度指标可以从以下两个角度:

  • 计算精度,比如支持计算支持的位宽,FP32/FP16 等,可以保证多少位宽内的计算结果无误差。

  • 模型效果精度,AI 模型不同的任务有不同的模型效果评价标准,比如 ImageNet 图像识别任务的准确率,回归任务的均方误差等。

吞吐量 Throughput

吞吐量指芯片在单位时间内能处理的数据量。对于具有多核心的芯片,可以处理更多并行任务,吞吐量往往更高。在不同的应用场景,对精度和吞吐量的需求是不同的。

时延 Latency

AI 芯片的时延是指从输入数据传入芯片开始,到输出结果产生的时间间隔。对于需要快速响应的应用场景,如自动驾驶、智能监控等,较低的推理时延是至关重要的。

但是 AI 芯片在执行时候往往是通过应用程序来和用户交互,而在交互应用程序(TTA)中,时延指的是用户输入某个操作或请求后,系统完成相应处理并产生输出结果之间的时间间隔。因此在 TTA 环境中,时延的影响尤为重要,因为用户通常期望系统能够快速响应他们的操作,以提供流畅的用户体验。优化时延可以通过多方面的手段,包括优化系统架构、加速处理流程、减少网络延迟等,从而提高系统的响应速度和性能表现。

能耗 Energy

AI 芯片的能耗指的是在执行 AI 任务时芯片所消耗的能量。随着 AI 应用的广泛普及,对于 AI 芯片的能效和能耗成为了重要关注的焦点之一。

在 AI 任务中,通常需要大量的计算资源来执行复杂的算法,例如神经网络模型的训练和推断。因此,AI 芯片的能耗通常与其性能密切相关。高性能的 AI 芯片通常会消耗更多的能量,而低功耗的设计则可以减少能源消耗并延长电池寿命,这对于移动设备和物联网设备等场景尤为重要。

AI 芯片的能耗取决于多个因素,包括芯片架构、制造工艺、工作负载和优化程度等。一些创新的设计和技术可以帮助降低 AI 芯片的能耗,例如专门针对 AI 计算任务进行优化的架构、低功耗制造工艺、智能功耗管理等。

在选择 AI 芯片时,通常需要权衡性能和能效之间的平衡 AI,以满足具体应用场景的需求。对于一些需要长时间运行或依赖于电池供电的设备,低能耗的 AI 芯片可能更具吸引力,而对于需要高性能计算的场景,则可能更关注芯片的计算能力和性能表现。

系统价格 Cost

价格是市场选择 AI 产品时的重要考量指标。对搭建一个 AI 系统来说,要综合考虑硬件成本以及与之相关的系统集成和全栈生态系统的成本。只有综合考虑这些方面,才能更好地评估 AI 芯片的实际成本和性能表现,从而为实际应用场景做出合适的选择。

硬件自身价格:这是指 AI 芯片本身的制造成本,包括芯片设计、制造、封装、测试等环节的费用。硬件自身价格直接影响到芯片的成本效益比,对于消费市场和大规模部署的场景尤为重要。较低的硬件价格可以降低设备制造成本,提高产品的竞争力。

系统集成上下游全栈等成本:除了硬件本身的成本外,还需要考虑与 AI 芯片相关的系统集成和全栈生态系统的成本。这包括软件开发、算法优化、系统集成、测试验证、软件支持等方面的成本。在实际应用中,AI 芯片往往需要与其他硬件设备、软件系统以及云端服务进行集成,这些集成成本也需要被考虑进来。

易用性 Flexibility

一个好的 AI 芯片产品应该提供完善的软硬件支持、丰富的文档和教程、灵活的编程语言和框架支持,以及便捷的硬件接口和集成支持,从而满足开发者在不同应用场景下的需求,提高开发效率和用户体验。AI 芯片的易用性的具体理解为:

  • 文档和教程:良好的文档和教程能够帮助用户更好地了解 AI 芯片的特性、功能和使用方法,降低学习成本,提高开发效率。

  • 软件支持和开发工具:一个易于使用的 AI 芯片应该提供完善的软件开发工具链,包括丰富的 API、SDK、开发环境等,使开发者可以快速上手并进行应用程序的开发和调试。

  • 硬件接口和集成支持:AI 芯片应该提供标准化的接口和通信协议,便于与其他硬件设备和系统进行集成,从而实现更广泛的应用场景。

  • 性能优化和调试工具:AI 芯片应该提供丰富的性能分析和调试工具,帮助开发者对应用程序进行性能优化和故障排查,提高系统的稳定性和可靠性。

关键设计点

AI 芯片设计的关键点围绕着如何提高吞吐量和降低时延,以及低时延和 Batch Size 之间权衡。具体的实现策略主要表现在 MACs 和 PE 两个方向。

MACs

减少 MACs:MACs 是指在神经网络推理过程中进行的一种常见的计算操作,在 AI 芯片设计中,去掉没有用的 MACs 意味着优化计算资源的利用,以提高性能和效率。通过减少网络的 MACs,芯片上对应增加稀疏数据的硬件结构,提升控制流和数据传输执行效率,达到节省时钟周期的效果。

降低 MAC 执行时间:硬件上单次 MAC 的执行时间和时钟频率和指令开销有关,所以还可以通过增加时钟频率和减少指令开销来降低单次 MAC 的执行时间。

PE

PE,处理单元(Processing Element),PE 是芯片中负责执行计算任务的基本单元,每个处理单元通常包含多个算术逻辑单元(ALU)和寄存器等计算资源,可以并行地执行多个计算任务。PE 在神经网络推理和训练中起着至关重要的作用,其数量和性能直接影响着芯片的计算能力和效率。设计高效的处理单元是提升 AI 芯片性能的重要手段之一。关于 PE 的优化设计方向有两个方面:

  1. 增加 PE 的核心数量。增加 PE 数量意味着更多的 MACs 并发,可以通过采用更高纳米制程技术,可以增加单位面积的芯片上的 PE 密度。

  2. 增加 PE 利用率。实际硬件执行中由于指令调度,数据传输通信等一些限制,PE 的利用率一般并不高,通过增加 PE 利用率也能达到提高吞吐量和降低时延的效果。增加 PE 利用率既包括硬件设计方面的优化,也包括软件算法方面的改进。以下是一些可以考虑的方面:

  • 并行计算:设计支持高效并行计算的硬件结构,使得多个处理单元能够同时执行计算任务,提高处理单元的利用率。比如使用并行处理器架构、硬件流水线设计等方式。

  • 负载均衡:在设计神经网络模型时,合理分配计算任务到不同的处理单元上,确保各个处理单元的负载均衡,避免某些处理单元空闲或过载。比如通过动态调度算法和任务分配策略来实现负载均衡。

  • 数据重用:利用数据重用技术,减少数据在处理单元之间的传输次数,提高数据在处理单元内的重复利用率。比如通过设计高速缓存结构、优化数据存取模式等方式来实现。

计算性能仿真

当我们根据关键指标完成了 AI 芯片的设计之后,不同的 AI 模型在这个芯片上的执行性能都一样吗?或者怎如何评估 AI 模型在这款 AI 芯片上的执行情况?

如果一个模型在 AI 芯片上因为芯片的内部 cache 空间有限导致性能无法提升,认为该模型属于内存受限模型(Memory Bound);如果一个模型在 AI 芯片上因为芯片的计算单元有限导致性能无法提升,则认为该模型属于算力受限模型(Computation Bound)。

算术强度概念

一个模型在 AI 芯片的执行过程大概可以分为三步:1)从外部存储搬移数据到计算单元,2)计算算元进行计算,3)把结果搬回外部存储空间。

再精简的说,就是搬移数据和计算这两件事情。对硬件平台 AI 芯片来说,数据搬移的带宽和计算单元(算力)是固定的值,所以当我们拿到一个 AI 模型时候,可以根据上面提到的 FLOPs 和 MACs 概念,统计出该模型的总 FLOPs(浮点运算次数)和总 MAC(内存占用量)需求,假设用 bytes 表指代内存占用量,用 ops 指代浮点运算次数,用 bw 表示 AI 芯片的数据搬移带宽,用 $π$ 表示 AI 芯片的 PE 个数,也就是算力。

那么搬移数据的时间是 $t1= bytes / bw$,计算的时间是 $t2= ops / π$。对 AI 芯片的执行来说,搬移数据和计算是两件不同的事情,硬件内部进行指令流水执行时候,可以认为是并行的过程,所以当 $t1 > t2$ 时候,模型搬移时间大于计算时间,AI 模型在这个 AI 芯片上最终一定是内存受限的;当 $t1 < t2$ 时候,模型搬移时间小于计算时间,AI 模型在这个芯片上最终是属于计算受限。

bw、π 和 AI 芯片有关,bytes 和 ops 和 AI 模型有关,当模型是内存受限时候 , $t1 > t2$ 具体的参数代入,并将不等号两边进行位置调换,那么就变成了下面公式的模样,不等号左侧是 AI 芯片计算带宽和内存带宽的比值,称为操作字节比,不等号右侧是 AI 模型的运算次数和内存占用量的比值,称为算术强度(arithmetic intensity)。

$$ t1 > t2 \\ \rightarrow bytes / bw > ops / π \\ \rightarrowπ/bw > ops/bytes $$

根据算术强度和操作字节比的概念,我们很容易评估出一个 AI 模型在指定 AI 芯片上的理论性能情况。下面展示一个具体的示例。

以 V100 GPU 执行 GEMM 为例,V100 的 FP16 峰值计算性能是 125TFLOPS,片外存储带宽约为 900GB/s,片上 L2 带宽为 3.1TB/s。

  • 如果输入数据来自片外存储器,操作字节比约为 125/0.9≈138.9
  • 如果输入数据来自片上存储器,操作字节比约为 125/3.1≈40

对于 FP16 数据类型,(M, K ,N) 形状的一个矩阵乘来说,算术强度为:

$$ \frac{2 \times M \times N \times K}{2\times (M \times K + K \times N + M \times N)}=\frac{M \times N \times K}{(M \times K + K \times N + M \times N)} $$

当矩阵乘 (M, K, N) 的值是 (8192, 128, 8192) 时候,算术强度是 124.1,低于 V100 的操作字节比 138.9,该算子操作为内存受限型。

当矩阵乘 (M, K, N) 的值是 (8192, 8192, 8192) 时候,算术强度是 2730,远高于 V100 的操作字节比 138.9,该算子操作是计算受限型。

Roofline 性能评估

实际上不同模型在特定硬件平台的执行效率情况,可以利用Roofline Model建模进行预估。Roofline Model 建模是指通过简化硬件计算平台架构,根据计算平台的算力和带宽上限这两个参数和算子的算术强度信息,评估出其能达到的最大性能。如下图所示,横坐标是算子的算术强度,纵坐标表示该算子能达到的最高浮点运算性能,则该算子能达到的最大理论性能公式为:

$$ P = min(peak_{performance}, ops/byte * bw) $$

当一个算子的算术强度值落在红色区域位置时候,该算子表现为内存受限;而落在绿色区域时候,该算子表现为算力受限。所以最好的情况就是 x 轴的算术强度值是在红色和绿色交接的那条绿色直线上的时候,该计算平台的带宽和算力得到了一个很好的平衡。

通过对 AI 芯片进行性能仿真可以帮助我们确认性能瓶颈,并在软件层面进行优化。如下图是根据 Roofline Model 进行计算性能仿真的示意图,下面 Step1-Step7 展示了七种由于软件任务或者硬件设计导致不同性能表现的情况,根据这些表现分析,开发人员通过调整相应的软件策略或者改善硬件设计,来进一步提高计算平台的仿真性能。

  • Step1, Step2:当计算平台的资源没有限制,通过软件最大化配置任务负载或者数据并行策略,来达到最好的执行性能。这时候性能瓶颈在于软件调度策略。

  • Step3, Step4:由于固定的 PE 维度或者 size, 导致有的 PE 在任务周期的不是 100% 被激活。比如有 7 个计算任务,分给 4 个 PE 执行,则需要 2 个 cycle,但是其中有个 PE 的激活率是 50%,这种情况下的计算性能就没有达到峰值性能。

  • Step5:当到计算单元的内存容量有限时候,即使计算所需的数据被很快的送到,也没有足够的地方存放,继而到达一个算力性能瓶颈。

  • Step6, Step7:当计算平台自身提供的带宽有限,即使算力很多,内存空间很多,实际的仿真性能也不能更高了。

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

相关文章
|
11天前
|
机器学习/深度学习 存储 人工智能
【AI系统】昇思MindSpore并行
本文介绍昇思MindSpore的并行训练技术,包括张量重排布、自动微分等,旨在简化并行策略搜索,提高大规模模型训练效率。文章探讨了大模型带来的挑战及现有框架的局限性,详细说明了MindSpore如何通过技术创新解决这些问题,实现高效的大模型训练。
61 20
【AI系统】昇思MindSpore并行
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
转载:【AI系统】AI的领域、场景与行业应用
本文概述了AI的历史、现状及发展趋势,探讨了AI在计算机视觉、自然语言处理、语音识别等领域的应用,以及在金融、医疗、教育、互联网等行业中的实践案例。随着技术进步,AI模型正从单一走向多样化,从小规模到大规模分布式训练,企业级AI系统设计面临更多挑战,同时也带来了新的研究与工程实践机遇。文中强调了AI基础设施的重要性,并鼓励读者深入了解AI系统的设计原则与研究方法,共同推动AI技术的发展。
转载:【AI系统】AI的领域、场景与行业应用
|
11天前
|
机器学习/深度学习 人工智能 分布式计算
【AI系统】混合并行
混合并行融合了数据并行、模型并行和流水线并行,旨在高效利用计算资源,尤其适合大规模深度学习模型训练。通过将模型和数据合理分配至多个设备,混合并行不仅提升了计算效率,还优化了内存使用,使得在有限的硬件条件下也能处理超大型模型。3D混合并行(DP+PP+TP)是最先进的形式,需至少8个GPU实现。此策略通过拓扑感知3D映射最大化计算效率,减少通信开销,是当前深度学习训练框架如Deepspeed和Colossal AI的核心技术之一。
56 15
【AI系统】混合并行
|
8天前
|
存储 人工智能 vr&ar
转载:【AI系统】CPU 基础
CPU,即中央处理器,是计算机的核心部件,负责执行指令和控制所有组件。本文从CPU的发展史入手,介绍了从ENIAC到现代CPU的演变,重点讲述了冯·诺依曼架构的形成及其对CPU设计的影响。文章还详细解析了CPU的基本构成,包括算术逻辑单元(ALU)、存储单元(MU)和控制单元(CU),以及它们如何协同工作完成指令的取指、解码、执行和写回过程。此外,文章探讨了CPU的局限性及并行处理架构的引入。
转载:【AI系统】CPU 基础
|
8天前
|
人工智能 缓存 并行计算
转载:【AI系统】CPU 计算本质
本文深入探讨了CPU计算性能,分析了算力敏感度及技术趋势对CPU性能的影响。文章通过具体数据和实例,讲解了CPU算力的计算方法、算力与数据加载之间的平衡,以及如何通过算力敏感度分析优化计算系统性能。同时,文章还考察了服务器、GPU和超级计算机等平台的性能发展,揭示了这些变化如何塑造我们对CPU性能的理解和期待。
转载:【AI系统】CPU 计算本质
|
11天前
|
存储 人工智能 PyTorch
【AI系统】张量并行
在大模型训练中,单个设备难以满足需求,模型并行技术应运而生。其中,张量并行(Tensor Parallelism, TP)将模型内部的参数和计算任务拆分到不同设备上,特别适用于大规模模型。本文介绍了张量并行的基本概念、实现方法及其在矩阵乘法、Transformer、Embedding和Cross Entropy Loss等场景中的应用,以及通过PyTorch DeviceMesh实现TP的具体步骤。
46 11
【AI系统】张量并行
|
8天前
|
机器学习/深度学习 存储 人工智能
转载:【AI系统】计算之比特位宽
本文详细介绍了深度学习中模型量化操作及其重要性,重点探讨了比特位宽的概念,包括整数和浮点数的表示方法。文章还分析了不同数据类型(如FP32、FP16、BF16、FP8等)在AI模型中的应用,特别是FP8数据类型在提升计算性能和降低内存占用方面的优势。最后,文章讨论了降低比特位宽对AI芯片性能的影响,强调了在不同应用场景中选择合适数据类型的重要性。
转载:【AI系统】计算之比特位宽
|
8天前
|
机器学习/深度学习 人工智能 并行计算
转载:【AI系统】AI轻量化与并行策略
本文探讨了AI计算模式对AI芯片设计的重要性,重点分析了轻量化网络模型和大模型分布式并行两大主题。轻量化网络模型通过减少模型参数量和计算量,实现在资源受限设备上的高效部署;大模型分布式并行则通过数据并行和模型并行技术,解决大模型训练中的算力和内存瓶颈,推动AI技术的进一步发展。
转载:【AI系统】AI轻量化与并行策略
|
11天前
|
存储 机器学习/深度学习 人工智能
【AI系统】完全分片数据并行 FSDP
本文深入探讨了AI框架中针对权重数据、优化器数据和梯度数据的分布式并行实现,特别是在PyTorch框架下的具体方案。文章首先回顾了通用数据并行和分布式数据并行的概念,重点讨论了同步与异步数据并行的差异。接着,文章详细介绍了如何在PyTorch中实现弹性数据并行,特别是完全分片数据并行(FSDP)的机制,包括其如何通过分片模型状态和剩余状态来减少内存消耗,提高训练效率。此外,文章还探讨了混合精度训练、损失缩放和内存消耗估算等关键技术,为理解和实施高效的分布式训练提供了全面的指导。
44 9
【AI系统】完全分片数据并行 FSDP
|
11天前
|
机器学习/深度学习 人工智能 PyTorch
【AI系统】数据并行
数据并行是一种在分布式AI系统中广泛应用的技术,通过将数据集划分成多个子集并在不同计算节点上并行处理,以提高计算效率和速度。在大规模机器学习和深度学习训练中,数据并行可以显著加快模型训练速度,减少训练时间,提升模型性能。每个计算节点接收完整的模型副本,但处理不同的数据子集,从而分摊计算任务,提高处理速度和效率。数据并行按同步方式可分为同步数据并行和异步数据并行,按实现方式包括数据并行、分布式数据并行、完全分片的数据并行等。其中,分布式数据并行(DDP)是当前应用最广泛的并行算法之一,通过高效的梯度聚合和参数同步机制,确保模型一致性,适用于大型NPU集群和AI系统。
65 7
【AI系统】数据并行