【IC】AI处理器核心--第二部分 用于处理 DNN 的硬件设计

第 II 部分 用于处理 DNN 的硬件设计

第 3 章 关键指标和设计目标

在过去的几年里,对 DNN 的高效处理进行了大量研究。因此,讨论在比较和评估不同设计和拟议技术的优缺点时应考虑的关键指标非常重要,这些指标应纳入设计考虑中。虽然效率通常仅与每瓦每秒的操作次数相关(例如,每秒每瓦特的浮点运算数为 FLOPS/W 或每秒每瓦万亿次操作数为 TOPS/W),但它实际上由更多指标组成,包括准确性、吞吐量、延迟、能耗、功耗、成本、灵活性和可扩展性。报告一组全面的这些指标非常重要,以便全面了解设计或技术所做的权衡。

在本章中,我们将
• 讨论这些指标中的每一个的重要性;
• 细分影响每个量度的因素。如果可行,提出描述因素和指标之间关系的方程;
• 描述如何将这些指标纳入DNN 硬件和DNN 模型(即工作负载)的设计考虑因素中
• 指定应为给定量度报告的内容,以便进行适当的评估。

最后,我们将提供一个案例研究,说明如何将所有这些指标整合在一起,以对给定的方法进行整体评估。但首先,我们将讨论每个指标。

3.1 准确性

准确性用于指示给定任务的结果质量。DNN 可以在各种任务上实现最先进的准确性,这是推动当今 DNN 普及和广泛使用的关键原因之一。用于测量准确性的单位取决于任务。例如,对于图像分类,准确率报告为正确分类图像的百分比,而对于对象检测,准确率报告为平均平均精度均值 (mAP),这与真阳性率和假阳性率之间的权衡有关。
影响准确性的因素包括任务和数据集的难度1。例如,ImageNet 上的分类比 MNIST 上的分类要困难得多,对象检测或语义分割比分类更难。因此,在 MNIST 上表现良好的 DNN 模型不一定在 ImageNet 上表现良好。
在困难的任务或数据集上实现高精度通常需要更复杂的 DNN 模型(例如,更多的 MAC操作和更不同的权重、层形状的多样性增加等),这可能会影响硬件处理 DNN 模型的效率。
因此,应根据任务和数据集的难度来解释准确性2。 使用经过充分研究、广泛使用的 DNN 模型、任务和数据集来评估硬件,可以更好地解释准确性指标的重要性。最近,在通用计算 [114] 的 SPEC 基准影响的推动下,一些行业和学术组织将一套广泛的 DNN 模型(称为 MLPerf)放在一起,作为一组经过充分研究的通用 DNN 模型,以评估性能并实现各种软件框架、硬件加速器和云平台的公平比较,以便对 DNN 进行训练和推理 [115]3。该套件包括各种类型的 DNN(例如 CNN、RNN 等)适用于各种任务,包括图像分类、对象识别、翻译、语音转文本、推荐、情感分析和强化学习。

1理想情况下,稳健性和公平性应与准确性一起考虑,因为这些因素之间也存在相互作用;然而,这些都是正在进行的研究领域,超出了本书的范围。
2打个比方,在高中考试中 10 个答案中答对 9 个与在大学考试中答对 10 个答案中的 9 个不同。人们必须超越分数,考虑考试的难度。
3早期的 DNN 基准测试工作,包括 DeepBench [116] 和 Fathom [117],现在已经被 MLPerf 归入其中。

3.2 吞吐量和延迟

吞吐量用于指示在给定时间段内可以处理的数据量或可以完成的任务执行次数。高吞吐量通常对应用程序至关重要。例如,以每秒 30 帧的速度处理视频对于提供实时性能是必要的。对于数据分析,高吞吐量意味着可以在给定的时间内分析更多的数据。随着视觉数据量呈指数级增长,高吞吐量大数据分析变得越来越重要,尤其是在需要根据分析采取行动时(例如,安全或恐怖主义预防;医疗诊断或药物发现)。吞吐量通常报告为每秒的操作数。在推理的情况下,吞吐量以每秒推理数报告,或以每次推理的秒数表示运行时间。
延迟(延时 Latency)是输入数据到达系统与生成结果之间的时间。低延迟对于实时交互式应用程序(如增强现实、自主导航和机器人技术)是必要的。延迟通常以秒为单位报告。
吞吐量和延迟通常被认为是可以直接相互派生的。然而,它们实际上是非常不同的。一个典型的例子是众所周知的对输入数据进行批处理的方法(例如,将多个图像或帧一起批处理以进行处理)以提高吞吐量,因为它会分摊开销,例如加载权重;但是,批处理也会增加延迟(例如,在每秒 30 帧和 100 帧的批处理中,某些帧将经历至少 3.3 秒的延迟),这对于实时应用程序(如高速导航)来说是不可接受的,因为高速导航会减少可用于航向校正的时间。因此,根据方法的不同,同时实现低延迟和高吞吐量有时可能会有所不同,并且两者都应该报告4
有几个因素会影响吞吐量和延迟。在吞吐量方面,每秒的推理次数受以下因素影响:
i n f e r e n c e s s e c o n d = o p e r a t i o n s s e c o n d ∗ 1 o p e r a t i o n s i n f e r e n c e ( 3.1 ) \frac{inferences}{second}=\frac{operations} {second} * \frac{1}{\frac{operations}{inference}} \quad (3.1) secondinferences=secondoperationsinferenceoperations13.1
其中,每秒的操作数由 DNN 硬件和 DNN 模型决定,而每次推理的操作数由 DNN 模型决定。

当考虑由多个处理元件 (PE) 组成的系统时,其中 PE 对应于执行单个 MAC作的简单或原始内核,每秒的作数可以进一步分解如下:
在这里插入图片描述

第一项反映单个 PE 的峰值吞吐量,第二项反映并行量,而最后一项反映由于架构无法有效利用 PE 而导致的退化。
由于处理 DNN 的主要作是 MAC,因此我们将互换使用操作数和 MAC操作数。

4这里描述的现象也可以使用队列理论中的利特尔定律 [118] 来理解,其中平均吞吐量和平均延迟之间的关系与飞行中的平均任务数有关,定义如下:
througnput ‾ = tasks-in-flight ‾ latency ‾ \overline {\text{througnput}}=\frac{\overline{\text {tasks-in-flight}}}{\overline{\text{latency}}} througnput=latencytasks-in-flight
以 DNN 为中心的利特尔定律版本的吞吐量以每秒推理数衡量,延迟以秒为单位,动态推理(相当于飞行任务数),以同时处理的批次中的图像数量来衡量。这有助于解释为什么增加动态推理数量以提高吞吐量可能会适得其反,因为一些增加动态推理数量的技术(例如批处理)也会增加延迟。

可以通过增加每秒的周期数(对应于更高的时钟频率)来提高单个 PE 的峰值吞吐量,方法是减少电路的关键路径或微架构级数,或每个作的周期数,这可能会受到 MAC 设计的影响(例如,非流水线多周期 MAC 每个作将有更多的周期)。
虽然上述方法增加了单个 PE 的吞吐量,但可以通过增加 PE 的数量来提高整体吞吐量,从而增加可以并行执行的最大 MAC作数。PE 的数量由 PE 的面积密度和系统的面积成本决定。如果系统的面积成本是固定的,那么增加 PE 的数量需要增加 PE 的面积密度(即减少每个 PE 的面积)或牺牲片上存储面积以换取更多的 PE。但是,减少片上存储会影响 PE 的利用率,我们接下来将对此进行讨论。
增加 PE 的密度也可以通过减少与向 MAC 提供作数相关的 logic 来实现。这可以通过用单个 logic控制多个 MACs 来实现。这类似于基于指令的系统(如 CPU 和 GPU)中的情况,这些系统通过使用大型聚合指令(例如,单指令、多数据 (SIMD)/矢量指令;单指令、多线程 (SIMT)/张量指令)来减少指令簿记开销,其中单个指令可用于启动多个操作。
PE 的数量和单个 PE 的峰值吞吐量仅表示所有 PE 都执行计算(100% 利用率)时的理论最大吞吐量(即峰值性能)。实际上,可实现的吞吐量取决于这些 PE 的实际利用率,该利用率受以下几个因素的影响:
在这里插入图片描述
第一个术语反映了将工作负载分配到 PE 的能力,而第二个术语反映了这些活动 PE 处理工作负载的效率。
活动 PE 的数量是接收工作的 PE 的数量;因此,最好将工作负载分配给尽可能多的 PE。分配工作负载的能力取决于架构的灵活性,例如片上网络,以支持 DNN 模型中的层形状。在片上网络的约束下,活动 PE 的数量也由映射过程对 PE 的特定工作分配决定。映射过程涉及将每个 MAC作(包括交付适当的作数)在空间和时间上放置和调度到 Pe 上。可以将映射视为 DNN 硬件的编译器。片上网络和映射的设计将在第 5 章和第 6 章中讨论。
活动 PE 的利用率在很大程度上取决于及时向 PE 交付工作,以便活动 PE 在等待数据到达时不会变为空闲状态。这可能会受到 (片上和片外) 内存和网络的带宽和延迟的影响。带宽要求可能会受到DNN 模型中数据可重用量以及内存层次结构和数据流可利用的数据重用量的影响。数据流确定作的顺序以及数据的存储和重用位置。还可以使用更大的批处理大小来增加数据重用量,这也是增加批处理大小可以提高吞吐量的原因之一。第 5 章和第 6 章讨论了数据传输和内存带宽的挑战。活动 PE 的利用率也会受到跨 PE 分配的工作不平衡的影响,这可能发生在利用稀疏性时(即,避免与乘以零相关的不必要工作);工作量较少的 PE 变为空闲状态,因此利用率较低。
在这里插入图片描述

PE 的数量和 PE 的利用率之间也存在相互作用。例如,降低 PE 需要等待数据的可能性的一种方法是在 PE 附近或内部本地存储一些数据。但是,这需要增加分配给片上存储的芯片面积,如果芯片面积固定,这将减少 PE 的数量。因此,一个关键的设计考虑因素是分配多少区域进行计算(这会增加 PE 的数量)与片上存储(这会增加 PE 的利用率)。
可以使用 Eyexam 捕获这些因素的影响,Eyexam 是一种系统的方法,用于理解 DNN 处理器的性能限制作为 DNN 模型和加速器设计的特定特征的函数。Eyexam包括并扩展了著名的车顶线模型[119]。如图 3.1 所示,roofline 模型将平均带宽需求和峰值计算能力与性能相关联。Eyexam 在第 6 章中介绍。
虽然公式 (3.1) 中每次推理的作数取决于 DNN 模型,但每秒作数取决于 DNN 模型和硬件。例如,如第 9 章所述,设计具有高效层形状(也称为高效网络架构)的 DNN 模型可以减少DNN 模型的MAC操作以及每次推理的操作。然而,这种 DNN 模型可能会导致各种各样的层形状,其中一些层的 PE 利用率可能很差,因此会降低每秒的总操作量,如公式 (3.2) 所示。
对每秒作数的更深入考虑是,并非所有作都是平等的,因此每个作的周期数可能不是恒定的。例如,如果我们考虑任何乘以 0 都是零的事实,那么某些 MAC作是无效的(即,它们不会改变累积值)。无效作的数量是 DNN 模型和输入数据的函数。这些无效的 MAC作可能需要更少的周期或根本不需要周期。相反,我们只需要处理有效(或非零)MAC作,其中两个 inputs 都非零;这被称为利用稀疏性,这将在第 8 章中讨论。
仅处理有效的 MAC作可以通过增加每个周期的(总)作数来增加每秒的(总)作数5。理想情况下,硬件将跳过所有无效的作;然而,在实践中,设计硬件以跳过所有无效的作可能具有挑战性,并导致硬件复杂性和开销增加,如第 8 章所述。例如,设计仅识别其中一个作数(例如权重)中的 0 而不是同时识别两者的硬件可能更容易。因此,无效的作可以进一步分为那些被硬件利用的作(即跳过)和那些未被硬件利用的作(即未跳过)。因此,硬件实际执行的作数是有效作数加上未利用的无效作数。
方程 (3.4) 显示了如何将每个周期的作分解为:

  1. 每个周期的有效作数加上未开发的无效作数,对于给定的硬件加速器设计,这在某种程度上保持不变;
  2. 有效作与有效作加上未开发的无效作的比率,这是指硬件开发无效作的能力(理想情况下,未开发的无效作应为零,并且该比率应为 1)
  3. (总)作中的有效作数,这与稀疏量有关,取决于 DNN 模型。

随着稀疏量的增加(即,(总)作中的有效作数减少),每个周期的作数增加,随后每秒作数增加,如公式 (3.2) 所示:
在这里插入图片描述
5总作是指有效和无效的作。

在这里插入图片描述
但是,利用稀疏性需要额外的硬件来识别输入何时为零,以避免执行不必要的 MAC作。额外的硬件可以增加关键路径,从而减少每秒的周期数,还可以降低 PE 的区域密度,从而减少给定区域的 PE 数量。这两个因素都会减少每秒作数,如公式 (3.2) 所示。因此,附加硬件的复杂性可能会导致在减少未开发的无效作数量与增加关键路径或减少 PE 数量之间进行权衡。
最后,设计支持降低精度(即每个作数和每个作的位数更少)的硬件和 DNN 模型(如第 7 章所述)也可以增加每秒的作数。每个作数的位数较少意味着支持给定作所需的内存带宽会减少,这可能会提高 PE 的利用率,因为它们不太可能缺乏数据。此外,可以减少每个 PE 的面积,从而增加给定区域的 PE 数量。这两个因素都会增加每秒的作数,如公式 (3.2) 所示。但请注意,如果需要支持多个级别的精度,则需要额外的硬件,这可以再次增加关键路径并降低 PE 的面积密度,这两者都可以减少每秒的作次数,如公式 (3.2) 所示。
在本节中,我们讨论了影响每秒推理次数的多个因素。表 3.1 对因素是由硬件、DNN 模型还是两者决定进行分类。
总之,仅 DNN 模型中的 MAC作数量不足以评估吞吐量和延迟。虽然 DNN 模型可以根据网络架构(即层形状)以及权重和激活的稀疏性影响每次推理的 MAC作数量,但对DNN 模型的吞吐量和延时的影响取决于硬件添加支持以识别这些方法的能力,而不会显著降低 PE 的利用率、PE 数量或每秒周期数。这就是为什么 MAC作的数量不一定是吞吐量和延迟的良好代理(例如,图 3.2),并且设计具有硬件在循环中的高效 DNN 模型通常更有效。第 9 章讨论了在循环中使用硬件设计 DNN 模型的技术。
在这里插入图片描述
同样,硬件中的 PE 数量及其峰值吞吐量不足以评估吞吐量和延迟。如公式 (3.2) 所示,报告硬件上 DNN 模型的实际运行时间以考虑其他影响(例如 PE 利用率)至关重要。理想情况下,应在明确指定的 DNN 模型上执行此评估,例如,作为 MLPerf 基准测试套件一部分的模型。此外,应将批处理大小与吞吐量一起报告,以便评估延迟。

3.3 能源效率和功耗

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17379.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter Gradle 命令式插件正式移除,你迁移旧版 Gradle 配置了吗?

在 Flutter 3.29 版本里官方正式移除了 Flutter Gradle Apply 插件,其实该插件自 3.19 起已被弃用,同时 Flutter 团队后续也打算把 Flutter Gradle 从 Groovy 转换为 Kotlin,并将其迁移到使用 AGP(Android Gradle Plugin&#xff…

C++类和对象进阶:运算符重载深度详解

C类和对象进阶:运算符重载 前言引入运算符重载定义语法注意事项重载为全局函数重载为成员函数运算符重载的本质 默认赋值运算符重载(默认成员函数)编译器自己生成的赋值运算符重载函数需要自己实现的场景总结默认赋值运算符重载 拷贝构造函数和赋值重载的区分验证 总…

three.js 使用geojson ,实现中国地图区域,边缘流动效果

three.js 使用geojson ,实现中国地图区域,边缘流动效果 在线链接:https://threehub.cn/#/codeMirror?navigationThreeJS&classifyexpand&idgeoBorder 国内站点预览:http://threehub.cn github地址: https://github.co…

PortSwigger——WebSockets vulnerabilities

文章目录 一、WebSockets二、Lab: Manipulating WebSocket messages to exploit vulnerabilities三、Lab: Manipulating the WebSocket handshake to exploit vulnerabilities四、Using cross-site WebSockets to exploit vulnerabilities4.1 跨站WebSocket劫持(cro…

【数据结构初阶第十节】队列(详解+附源码)

好久不见。。。别不开心了,听听喜欢的歌吧 必须有为成功付出代价的决心,然后想办法付出这个代价。云边有个稻草人-CSDN博客 目录 一、概念和结构 二、队列的实现 Queue.h Queue.c test.c Relaxing Time! ————————————《有没…

AVL树:高效平衡的二叉搜索树

🌟 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。🌟 引言🤔 在数据结构的奇妙世界里,二叉搜索树(BST)原本是查找数据的好帮手。想象一下…

Qt Designer菜鸟使用教程(实现一个本地英文翻译软件)

1 安装Qt Designer 安装这个包的时候会自带安装 Qt Designer, 安装目录为python的安装根目录的 Lib/site-packages/qt5_applications/Qt/bin 目录下。 pip install pyqt5-tools2 新建窗体 2.1 新建主窗体 创建之后如下图: 设置主窗口大小: 设置窗…

机械学习基础-5.分类-数据建模与机械智能课程自留

data modeling and machine intelligence - CLASSIFICATION 为什么我们不将回归技术用于分类?贝叶斯分类器(The Bayes Classifier)逻辑回归(Logistic Regression)对逻辑回归的更多直观理解逻辑 /sigmoid 函数的导数我们…

C++ 网络编程

1. socket Socket 是一种用于网络通信的编程接口,它提供了一种类似于文件描述符的接口,允许不同计算机之间的进程进行通信。Socket 可以工作在多种协议上,最常用的是 TCP/IP 和 UDP/IP 协议 1.1 UDP 1.1.1 概念 UDP(用户数据报协…

C/C++内存管理

目录 前言 1、C/C内存划分 2、C语言中的动态内存管理方式 3、C内存管理方式 3.1操作内置类型 3.2操作自定义类型 3.3为什么对应的new和delete必须搭配使用(了解) 4、operator new与operator delete函数 5、new和delete的实现原理 5.1内置类型 5…

微软开源GraphRAG的使用教程-使用自定义数据测试GraphRAG

微软在今年4月份的时候提出了GraphRAG的概念,然后在上周开源了GraphRAG,Github链接见https://github.com/microsoft/graphrag,截止当前,已有6900Star。 安装教程 官方推荐使用Python3.10-3.12版本,我使用Python3.10版本安装时,在…

RK3568平台开发系列讲解(调试篇)网卡队列均衡负载

🚀返回专栏总目录 文章目录 一、RPS 的介绍1. RPS 的工作原理2. RPS 配置3. 启用和调优 RPS4. RPS 优势二、下行测试iperf测试沉淀、分享、成长,让自己和他人都能有所收获!😄 RPS(Receive Packet Steering) 是一种用于提高网络接收性能的技术,通常用于多核处理器系统中…

RagFlow + Docker Desktop + Ollama + DeepSeek-R1本地部署自己的本地AI大模型工具

前期准备 首先,我们需要下载 Ollama 以及配置相关环境。 Ollama 的 GitHub仓库 (https://github.com/ollama/ollama)中提供了详细的说明,简单总结如下: Step1:下载 Ollama 下载(https://ollama.com/dow…

变分边界详解

起因 当时看VAE论文时有这么一段,但是看完直接一头雾水,这都那跟哪,第一个公式咋做的变换就变出那么一堆。网上搜了很多博客都语焉不详,只好自己来写一篇,希望能解答后来人的疑惑。 公式1 参考文章:证据…

云消息队列 ApsaraMQ Serverless 演进:高弹性低成本、更稳定更安全、智能化免运维

如今,消息队列已成为分布式架构中不可或缺的关键服务,为电商、物联网、游戏和教育等行业,提供了异步解耦、集成、高性能和高可靠的核心价值。 过去一年,我们发布了云消息队列 ApsaraMQ 全系列产品 Serverless 化,面向…

【蓝桥杯嵌入式】8_IIC通信-eeprom读写

全部代码网盘自取 链接:https://pan.baidu.com/s/1PX2NCQxnADxYBQx5CsOgPA?pwd3ii2 提取码:3ii2 1、电路图 这个电路允许通过I2C总线与EEPROM(M24C02-WMN6TP)和数字电位器(MCP4017T-104ELT)进行通信。EEPROM用于存储数据,而数字电位器可以用…

DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件

1 DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件 1.1 背景 AI能力再强,如果不能在企业的自有业务上产生助益,那基本也是一无是处。将企业的自有业务上传到线上训练,那是脑子进水的做法&#xff…

Java常用设计模式面试题总结(内容详细,简单易懂)

设计模式的分类 创建型模式:通过隐藏对象创建的细节,避免直接使用 new 关键字实例化对象,从而使程序在判断和创建对象时更具灵活性。常见的模式包括: 工厂模式抽象工厂模式单例模式建造者模式原型模式 结构型模式:通…

使用HX搭建UNI-APP云开发项目(适合新手小白与想学云开发的宝子)

什么是uni-app云开发 uni-app云开发是uni-app提供的一套后端服务,它可以帮助开发者快速搭建起一个完整的后端服务,包括数据库、云函数、存储等。开发者只需要关注前端页面的开发,后端服务由uni-app云开发提供。 uni-app云开发的优势: 快速搭建后端服务:uni-app云开发提供了…

零基础学CocosCreator·第九季-网络游戏同步策略与ESC架构

课程里的版本好像是1.9,目前使用版本为3.8.3 开始~ 目录 状态同步帧同步帧同步客户端帧同步服务端ECS框架概念ECS的解释ECS的特点EntityComponentSystemWorld ECS实现逻辑帧&渲染帧 ECS框架使用帧同步&ECS 状态同步 一般游戏的同步策略有两种:…