CN117787389A - 用于共同优化神经网络及神经网络专用硬件的方法和装置 - Google Patents
用于共同优化神经网络及神经网络专用硬件的方法和装置 Download PDFInfo
- Publication number
- CN117787389A CN117787389A CN202311256502.6A CN202311256502A CN117787389A CN 117787389 A CN117787389 A CN 117787389A CN 202311256502 A CN202311256502 A CN 202311256502A CN 117787389 A CN117787389 A CN 117787389A
- Authority
- CN
- China
- Prior art keywords
- simulation
- hardware
- neural network
- computing unit
- performance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 73
- 238000013528 artificial neural network Methods 0.000 title claims description 51
- 238000004088 simulation Methods 0.000 claims abstract description 67
- 238000010801 machine learning Methods 0.000 claims abstract description 35
- 230000008569 process Effects 0.000 claims description 37
- 238000004590 computer program Methods 0.000 claims description 5
- 238000003860 storage Methods 0.000 claims description 4
- 230000006978 adaptation Effects 0.000 claims description 2
- 238000013461 design Methods 0.000 description 17
- 230000006399 behavior Effects 0.000 description 16
- 230000000903 blocking effect Effects 0.000 description 8
- 230000007704 transition Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000005457 optimization Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000005265 energy consumption Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 150000004820 halides Chemical class 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 238000001303 quality assessment method Methods 0.000 description 1
- 230000007420 reactivation Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000013179 statistical model Methods 0.000 description 1
- 238000001931 thermography Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000002604 ultrasonography Methods 0.000 description 1
- 230000001755 vocal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
用于确定计算单元上机器学习系统的性能的方法,所述方法包括以下步骤:根据所述计算单元的所提供的技术规范创建所述计算单元的硬件模型;并且基于所述机器学习系统创建模拟图。通过使用所述硬件模型和所述模拟图(12)模拟所述机器学习系统在所述计算单元上的执行,其中,所述模拟是基于事件的模拟,并且根据所述模拟的结果确定性能。
Description
技术领域
本发明涉及一种用于确定计算单元上的神经网络的性能的方法、一种用于鉴于最佳硬件性能方面共同优化神经网络配置和用于执行神经网络的计算单元的方法以及一种装置,计算机程序和机器可读存储介质。
背景技术
由于DNN(深度神经网络)的网络架构的复杂性不断增加,在嵌入式系统(英文:EmbeddedDevices(嵌入式设备))上使用深度神经网络(DNN)变得越来越困难。特别是,在考虑硬件的(hardwareberücksichtigend)神经架构搜索(NAS)的范畴内,神经网络(NN)优化的自动化可以实现性能更强大的DNN,但代价是大量的网络参数。在考虑到数百万个设计决策的情况下对用于在设备上执行DNN的有限的片上资源进行平衡使得手动优化机器学习(ML)加速器平台的开发变得困难。设计空间探索(Design Space Exploration,DSE)工具通过大范围的参数选择和架构决策而引导搜索过程,并实现算法和加速器的硬件/软件(HW/SW)协同设计。为了准确评估各个设计点这些工具使用预测方法,以估计特定参数决策是如何影响整体关键性能指标(KPI)的。
分析模型通过结合NN算子(Operator)属性、特别是操作者属性(Bedienerattributen)与定量硬件参数、诸如带宽或可用芯片资源等来提供对ML加速器上DNN的性能、如计算延迟、资源利用率或能耗的快速预测。然而,此类模型受限于狭窄的应用范围,在所述应用范围中通过简单的方程描述硬件行为。对于更复杂的架构,可以使用基于ML(机器学习)的方法,这些方法基于真实的硬件测量而训练统计模型。通过学习动态硬件效应,这些模型能够针对大量的工作负载和架构而准确预测加速器性能。然而,这种方法的缺点是需要耗时的训练,需要并不总是可访问的真实测量数据,尤其是在DNN系统设计的早期阶段。
为了实现用于在机器学习加速器上执行神经网络的最佳硬件性能(例如延迟、能耗、吞吐量)而必须鉴于网络要求方面权衡有限的片上资源(存储器、处理元件、总线宽度等)。由于在硬件和软件层级上在搜索空间中应考虑多达数十亿个决策,因此存在多个工具,这些工具通过评价硬件和软件的特定参数组合来使该过程自动化。这通常是通过拟定如下方程来完成的,所述方程被求解以提供关于延迟、能耗或资源利用率方面的系统性能估计。此类分析模型考虑了硬件参数、例如带宽、时钟频率或可用资源以及DNN的软件(SW)参数、例如层形状/类型或算子维度或量化。可以通过模拟来预测更复杂的系统行为,但针对模拟环境的构建可能需要花费大量耗费对各个系统组件进行手动建模。
本发明旨在改进根据神经网络描述创建模拟环境的过程以及硬件/软件协同设计(HW/SW Co Design)的执行。
本发明的优点
本发明提出了一种用于对ML加速器上的DNN(工作负载)进行基于模拟的性能预测的端到端方法。模拟模型可以提供比数学方程更准确的预测。本发明实现了用于在硬件/软件协同设计的范畴内使用的此类模型的创建过程的自动化。特别是,在更复杂的硬件/软件架构情况下,因此可以达成预测准确性增益。所获得的硬件/软件协同设计的模拟结果可用于优化神经网络参数和/或加速器架构。
另一个优点是,根据神经网络软件的定义创建模拟环境的过程的自动化实现了:共同优化算法和在其上使用该算法的专门化嵌入式设备。硬件或软件层级参数的变化可以直接转化为模拟设置(Simulationssetup)以验证系统性能。这导致了针对特定用例的定制硬件软件系统。
此外,本发明通过根据模拟结果适配加速器的硬件参数和/或DNN的软件参数,能够通过闭环模拟来验证在DNN的多个设计候选方案(Designkandidaten)上多个神经网络算子的执行。
本发明的其他方面是并列独立权利要求的主题。有利的扩展方案是从属权利要求的主题。
发明内容
在第一方面,本发明涉及一种用于确定计算单元上的机器学习系统的性能的计算机实现的方法。计算单元可以是针对机器学习系统的硬件加速器。利用硬件加速器,可以通过将特殊的计算密集型任务委托给专门用于这些任务的硬件来而达成减轻计算单元的主处理器的负载。该方法可以开始于包括获得机器学习系统和计算单元的技术规范的可选步骤。
接下来,根据所提供的计算单元的技术规范创建计算单元的硬件模型,并基于机器学习系统创建模拟图。模拟图可以理解为表征或控制模拟过程执行的图。可以根据技术规范中所定义的硬件模块为各个硬件组件、例如DMA、ALU、总线或存储器来设置(aufsetzen)硬件模型。这意味着:为了在专用硬件加速器上的神经网络的优化而进行模拟图的自动生成。
接下来是通过使用硬件模型和模拟图来模拟机器学习系统在计算单元上的执行,其中,该模拟是基于事件的模拟。通过基于事件的模拟框架进行建模的优点是:可以对硬件上各个操作的阻塞行为(Blockierverhalten)及其在硬件上的执行进行建模。
接下来是根据模拟的结果确定性能。性能可以是模拟的执行延迟。硬件上的操作根据其配置而被分配延迟,这些延迟在模拟运行期间被汇总。在模拟结束时,可以输出该总和作为性能预测。
提议:机器学习系统为神经网络,其中在创建模拟图的步骤中,神经网络图被机器学习编译器转换为树表示(Baumdarstellung)。所述树表示表征所有被分配的网络图硬件操作的执行顺序,而叶子则描述操作微细节(Mikrodetail),例如硬件操作的类型(例如加载、存储、计算)连同相关信息(输入、输出、地址、数据类型)。所述树表示优选地被转换成图,所述图是佩特里(Petri)网图。
佩特里网图使得能够对过程的执行顺序进行建模,其方式为,将这些过程表示为树状结构中的节点,这些节点通过可以存储令牌的边而连接。节点必须等到其输入连接上有固定数量的令牌可用,然后才能通过从中接收(übernehmen)令牌而被激活。结束被分配的任务后,它们将一些令牌放置到输出连接上,从而可以执行后续节点。可以通过这种设计方法来反映出硬件过程的阻塞行为。
机器学习编译器可以如TVM那样以内部树表示的方式说明原始神经网络图。使用树表示以及所有相关信息使得能够为合适的硬件执行描述创建模拟图。
此外,建议:使用基于事件的模拟来模拟内部硬件过程,通过这种方式,当其他组件的函数必须在可以开始实际执行之前终止时,硬件块会达到静止状态(Stillstand)。硬件过程可以理解为从存储器层次结构的不同区域中加载数据/在存储器层次结构的不同区域中存储数据,或者在计算单元中处理这些数据。
在本发明的第二方面中,提出了一种鉴于最佳硬件性能方面以及优选地鉴于神经网络的最佳性能方面而共同优化神经网络配置和用于执行神经网络的计算单元的计算机实现的方法。神经网络的性能可以表征神经网络的所确定结果的准确性和/或可靠性。
除了本发明的第一方面的方法步骤之外附加地,根据所确定的性能而确定:表征神经网络的参数和/或表征计算单元的参数的适配是否在相应参数的预给定参数范围内执行。如果已经对所述参数进行了改变,那么则基于经改变的参数而重新执行创建和执行模拟以及确定性能的步骤。可以设想的是,该方法被重复多次,直到达到计算单元和/或神经网络的预给定目标性能(Soll-Performance)。
硬件性能可以理解为延迟时间、能耗和/或吞吐量(英文:throughput)。表征计算单元的参数例如是存储空间大小、数据处理单元、总线宽度、带宽和/或时钟频率。表征神经网络的参数例如是层类型、层大小和/或量化。计算单元或神经网络的参数可以在固定范围内被改变,这直接影响到模块的能力和通用硬件模型。
此外,提议:当达成目标性能时,根据模拟已实现目标性能时所使用的表征计算单元的参数和表征神经网络的参数而制造和/或配置该计算单元。
在第三方面,本发明的第一或第二方面的机器学习系统、特别是神经网络是(图像)分类器或对象检测器或语义分割。
在本发明的另一方面中提议:本发明的第三方面的机器学习系统使用分类器来对传感器信号进行分类。该分类器采用根据本发明前述方面之一的方法,具有以下步骤:接收包括来自图像传感器的数据的传感器信号;确定取决于传感器信号的输入信号;以及馈送输入信号到分类器中以获得表征输入信号的分类的输出信号。
图像分类器将输入图像分配给预给定分类的一个或多个类别。例如,系列生产、名义上(nominell)相同的产品的图像可以用作输入图像。例如,图像分类器可以鉴于如下方面被训练:将输入图像分配给代表相应产品的质量评估的至少两个可能类别中的一个或多个。
图像分类器,例如神经网络可以配备有这种结构,所述结构可训练用于例如标识和区分成像的传感器图像中的行人和/或车辆和/或交通标志和/或交通灯和/或路面和/或人脸和/或医疗异常。替代地,分类器,例如神经网络可以配备有这种结构,所述结构可训练用于标识音频传感器信号中的口头命令。
术语图像基本上包括每种以二维或多维网格布置的信息分布。例如,所述信息可以是用任何成像模态、例如用光学相机、用热成像相机或用超声波所记录的图像像素的强度值。然而,任何其他数据,例如音频数据、雷达数据或激光雷达数据,也可以被转换为图像,然后以相同的方式被分类。
在另外的方面中,本发明涉及分别都被设置为执行上述方法的一种装置和一种计算机程序,以及涉及其上存储有该计算机程序的机器可读存储介质。
附图说明
下面参考附图更详细地解释本发明的实施方式。在这些图中:
图1示意性示出了在模拟环境中在软件层级上编译神经网络算子的步骤;
图2示意性地示出了神经网络的层的执行图和佩特里网图;和
图3示意性地示出了用于共同优化神经网络和神经网络的硬件加速器的实施例。
具体实施方式
对在ML加速器上执行DNN工作负载时的性能的估计需要在预测时间(速度)、估计模型可以处理的场景范围(复杂性)以及设置底层技术时的开销(Overhead)(灵活性)之间进行精确权衡。
所提出的方法使用模拟模型,以便在考虑到不同DNN硬件/软件系统的大量被支持的数据流、存储器层次结构和平台拓扑的情况下涵盖针对大量应用的硬件架构行为。通过使用层次结构(Hierarchie)可以实现在适配于这些特征的情况下的灵活性。所述层次结构可以理解如下:硬件过程的细节不是在各个指令的层级上被描述的,而是表达为在其核心中反映这种行为但速度明显更快的函数,因为不是每个单独的处理步骤都被执行,而是通过该函数而描述执行这些过程步骤的总体。
在硬件层级上,与设备实现或RTL模拟相比,使用虚拟原型来描述加速器架构使得能够快速执行硬件操作,而系统配置的更改则仅需要较少耗费。ML编译器到模拟环境的构建过程(Build-Prozess)中的合并实现了:创建执行图,用于直接根据DNN的描述在虚拟硬件上执行模拟。
图1示例性显示了用于将神经网络架构/加速器编译成用于模拟环境的软件的方法,该模拟环境模拟神经网络在加速器的虚拟硬件模型上的执行。编译器实现:对神经网络内核进行与硬件相关的更改,例如循环分块(Loop-Tiling)、展开(Unrolling)等。将这些内核转换为有硬件能力的执行图并在此自动地在图节点和虚拟硬件平台组件之间进行映射实现了:从操作符定义直到完成的模拟设置的连续编译。
通过具有模拟图的加速器架构的计算和通信单元而对神经网络内核流进行的表示提供了:纯软件描述无法表达的过程细节的层级,例如并行化或流水线化(Pipelining)。建议使用佩特里网作为针对构建此类图的基础,因为已经证实了可以使用底层机制精确地表达阻塞行为。有关佩特里网的更多详细细节,例如可参阅:AlexandreV Yakovlev和Albert M Koelmans的出版物,1996年,Petrinetze und digitalesHardware-Design(佩特里网和数字硬件设计),出自Advanced Course on Petri Nets(佩特里网高级课程)中,Springer,154-236。
这种设计方法使得能够描述大量数据流,其中为此优选地使用开源框架SimPy框架用于实现。
SimPy是Python中基于事件的模拟框架,它使用类似于SystemC的事件来同步函数执行。过程是耦合到在其他函数中产生的事件的函数。资源是过程可以相互访问的对象。可以同时访问共享资源的事件和过程被排队到模拟环境中,其中通过执行类似于SystemC模拟内核的行为的排队中的要素来执行模拟。
在优选实施方式中,通过如下SimPy资源来定义“库所(places)”,所述SimPy资源用于:从其中加载令牌/向其存储令牌并且如果这些传输被拒绝则进行阻塞。附加地,“变迁(transitions)”可以结合如下“库所”而予以定义,其执行用于向邻近位置保存或从邻近位置取得(Mitnehmen)令牌的阻塞过程。这为表示不同的算子调度(英文:operatorschedules)提供了有效的建模方法。通过将变迁分配到神经网络内核的硬件操作而创建了如下模拟图,该模拟图从软件的角度表示在硬件上处理时内核的行为,其中它们关于位置(Stellen)的连接的结构定义了执行顺序和时机(Timing)。
图2显示了如何可以通过执行图(11)来表达神经网络的卷积核。应该注意的是,为了简单起见,本示例中仅示出了最内部循环(kernel_w)。较高的循环层级(Loop-Ebene)将显现为通过返回路径上的边而连接的图形开头和结尾的附加位置。在此示例中,通过DMA传输而将数据直接从主存储器转移到执行矩阵乘法的计算单元。输入和内核数据的加载被并行化,由此阻塞计算节点块,直到来自这两个DMA事务(Transaktionen)的数据可用。在执行计算进程后,DMA将计算出的输出数据存储回主存储器。加载-计算-存储的整个流程被执行kernel_w次,由硬件节点周围的递归循环驱动。图表内的圆圈代表特定大小的位置(Ort),这意味着它们最多可以存储通过先前变迁所提供的固定数量(=大小)的令牌。所有变迁(方块)都通过位置连接。为了被激活,变迁会尝试从输入位置取得由get(获取)和stalls(停顿)参数而定义的固定数量的令牌,直到指定数量的令牌在该位置可用。成功获取所有必需的令牌后,该变迁执行所分配的硬件进程,并将由put(放置)指定的数量的令牌传输到输出位置,以等待直到在输入上重新执行新的令牌。如果输出位置已经存储了最大数量的令牌,则输出处的变迁被停止,直到该位置中有足够的空间。这种阻塞行为可以例如在计算过程比新数据的加载慢得多的情况下发生,通常对于计算密集型系统就是这种情况。在示例中,kernel_w令牌直接在加载变迁的输入节点处可用,从而理论上它们可以执行kernel_w次。然而,由于还存在从输出节点开始的反向路径因此在激活数据加载之前,令牌必须在连接到输入节点的所有位置处可用。由于该位置在返回路径上使用1个令牌而被初始化,因此输入处的负载会被激活一次,并且然后只有在加载、计算和存储的整个序列结束时才被会激活。根据这种结构,可以对加载-计算-存储序列(Load-Compute-Store-Sequenzen)的执行进行建模,其中所述序列针对整个循环嵌套(Loop-Nest)而被重复。通过改变循环嵌套结构可以表达更复杂的执行场景。在循环嵌套的不同阶段中插入加载进程可以表示:数据在存储器层次结构的不同层级之间的移动,而循环的展开则导致循环体进程(Loop-Body-/>)的并行执行。位置大小的选择连同放置和获取值(Put-and-Get-Werten)也会对硬件行为产生影响。如果例如图2中的反向路径是用值3触发的,则加载、计算和存储过程可以作为流水线而运行,而不是纯粹的顺序执行,因为输入负载可以执行3次而不会停顿,并且可以在重新激活时启动后续进程。
图2显示了如何使用佩特里网图(12)从软件层级描述表达硬件概念的简单示例。这些表示之间的转换可以通过使用机器学习编译器来实现。建议:针对从算子定义直到执行图的整个编译堆栈使用开源框架TVM。
TVM是一个开源编译器堆栈,用于对常用机器学习框架中的神经网络描述应用与硬件相关的修改。借助于两个内部表示(IR)和IR特定的库,可以将转换、例如算子融合应用于整个网络图,以及应用于单个操作符(Betreiber),其中相对于所设置的硬件后端而言,可以优化循环嵌套结构。
将图操作映射到编译流中已包含的模拟内核,使得能够端到端预测虚拟加速器平台上的内核执行周期。使用TVM特定的库终止神经网络操作符被称为软件层级修改。术语“调度”像是TVM使用的那样被用于描述算子计算,其方式为,将针对输入和输出的可变大小的张量(Tensor)结合其数学关系(例如加法或乘法)一起来定义。循环层级修改例如应用Halide语言(XuanYang、Mingyu Gau、Qiaoyi Liu、Jeff Setter、Jing Pu、Ankita Nayak、Steven Bell、Kaidi Cao、Heonjae Ha、Priyanka Raina等人,2020年的:InternationaleKonferenz zur Architekturunterstützung für Programmiersprachen undBetriebssysteme(关于编程语言和操作系统的架构支持的国际会议),369-383)用于分块(Kacheln)、展开或重新排序(Nachbestellen),可以从相同的未更改的计算定义出发描述大量不同的硬件调度表,而TVM规划库的使用则确保了结果的正确性。调度表被表示为抽象语法树(AST),其中操作符描述的For循环作为节点,在其主体上的硬件操作作为加载(Load)和计算(Compute)。对图节点和边的遍历使得能够访问硬件操作以及地址信息。在图2所示的场景中,kernel_w变量的for循环被表示为图节点,而循环体则表示为存储进程,并将2个数据负载的乘法输出写回主存储器。可以从算子索引计算出负载和存储器的地址信息,而循环边界则确定该进程的重复和接下来的地址值。将操作符调度表(Bedienerzeitplan)编译到执行图中会为循环体上的硬件操作生成变迁,其由反向路径包围,其中从AST节点导出put、get和place_size值。在AST结构已经定义了正确的执行顺序的同时,用于执行硬件操作的信息的检测使得直接从树定义对执行图的创建能够完全自动化地通过TVM传递基础设施(TVMs-Pass-Infrastruktur)来执行该过程。通过向现有TVM库添加特殊的用于并行化和流水线化的构造,可以扩展可以表达的调度表的数量,同时提供依赖于方法的解释用于创建与这些场景相关的模拟图。实际的行为近似是通过在模仿硬件功能性的虚拟原型上执行工作负载图而进行的。当构建模拟图时进行图操作到虚拟原型(VP)的映射。在此阶段执行映射使得能够在创建完整的图或执行模拟之前检查有效映射。这节省了时间,因为仅预先选择有效的调度表/硬件配置。如果对图操作的要求与实际硬件功能不符,例如:如果要传输的并行数据的量高于加载单元的带宽,则这会立即被识别出来。
例如,虚拟硬件类是在Python层级上定义的,这不仅提供了配置硬件属性时的灵活性,而且也提供了对于TVM和模拟图接口的高度兼容性。如果图1中的所有主要组件都以相同的抽象来表示,则在执行端到端的流(End-to-End-Flow)时仅产生很小的开销,因为不强制进行跨语言翻译。通过使用SimPy库构造进行实现,可以类似于SystemC的事务层级建模来表达硬件功能性。硬件要素的过程可以等到其他平台组件的过程完成以模仿如总线流量(Bus-Verkehr)或存储器访问等阻塞行为。这些过程可以作用到的范围受到灵活硬件属性集的限制,其中所有这些属性都与硬件类型有关。这些属性可以根据用户定义的配置文件进行配置,该配置文件可应用于针对与现代机器学习加速器架构相关的通信、计算、联网和数据存储的一系列硬件模板(Hardwarevorlagen)。与硬件和工作负载属性有关的时钟周期到硬件过程的分配生成针对模拟输出的周期计数,同时可以为每个类别注册硬件组件的活动的和静止状态的周期。所提出的方法中的模拟基于模拟图,该模拟图表示要作为数据流执行的软件工作耗费和硬件过程的执行顺序。被分配给特定硬件块的模拟图操作可以在实际模拟中对其进行占用以执行所设置的传输或计算数据的图操作。可以规定,硬件在运行时针对特定任务被编程和设置,例如可以相应地定义用于数据传输的地址,同时使硬件属性定义范围。图操作或所映射的硬件要素的所有过程都在公共模拟环境中进入等待队列排队,并以SimPy模拟内核的顺序被执行。提出了用于灵活创建模拟环境以估计ML加速器上DNN工作负载延迟的方法的实施方式。针对机器学习的编译器到所设置的流程中的集成使得能够从软件核心创建有硬件能力的模拟图,并以连续方式直接映射到虚拟加速器组件。使所有接口处于相同语言级(Sprachniveau)会有利于编译器、图形和虚拟平台模型的协作。为大量数据流和加速器架构组合生成模拟环境的能力有利于在硬件/软件协同设计的范畴内使用所提出的方法。将所提出的方法与TVM黑盒自动化工具AutoTVM相结合使得能够基于成本模型评估大量的内核调度表,其中通过模拟运行来训练所述成本模型。由于调度表的更改和硬件平台的更改是在Python层级上被执行的,因此对于通过在优化循环内评估这两者来执行DSE而言存在巨大的潜力。
图3示例性示出用于优化DNN(21a)和DNN的硬件加速器(21b)的参数的本发明的实施方式的信息流图表。DNN(21a)和硬件加速器可以用在诸如嵌入式设备(21)这样的移动设备中。移动设备优选地是直接利用在硬件加速器(21b)上执行的DNN(21a)而处理所检测的传感器值的传感器。该传感器可以使用DNN并根据其传感器数据来执行模式识别。
在图3的第一实施方式中,可以从块202开始。在此块中,给定要为其训练DNN的任务,其中DNN基于用于该任务的相对应的数据集而训练。例如,可以这样进行训练,使得DNN是图像分类器或类似的分类器。在训练完成后,在块203中存在经过训练的DNN及其架构,其被传递到在块204中的诸如TVM这样的机器学习编译器并被编译。
在图3的第二实施方式中,在块203中提供已经被训练的DNN。
通过使用诸如TVM这样的机器学习编译器,可以创建用于执行DNN的调度表。为了转换调度表而进行的编译器的合并使得能够每次软件中的参数发生更改时都可以重新创建模拟模型。
在块205中的调度表(英文:Schedule)存在之后,将其转换成块206中的模拟图。如先前所解释的,模拟图优选地是佩特里网图(12)。然后,该模拟图在块207中被提供给如下模拟,所述模拟对DNN在硬件上执行时的行为进行模拟。模拟结束时,根据DNN的行为,确定DNN在硬件上的性能。
除了刚刚解释的将DNN处理(Aufbereiten)成用于模拟的模拟图之外附加地,在块209中根据加速器(21b)的硬件属性来创建加速器(21b)的硬件模型。
硬件模型也被提供给块207中的模拟。因此,通过所述模拟而精确地模拟了DNN在加速器上的行为。
优选地,块207中的模拟是基于事件的模拟,例如SimPy。
基于模拟结果,接下来可以决定:加速器或硬件加速器上的DNN或具有硬件加速器的DNN中的系统的性能是否足够。如果性能足够,则可以相应地制造和/或配置移动设备(21)。如果性能不足够,那么,则可以相应地适配表征DNN的参数和/或表征硬件加速器的参数。换句话说,模拟结果提供了精确的性能评估,例如对于硬件/软件系统(21)的延迟的性能评估,其可以被反馈,以便对软件和硬件配置进行更改。例如,如果向计算单元提供数据会需要太多时间,则可以将更多带宽分配给硬件的通信单元,以便更快地提供更多数据。
在参数已经改变的情况下,可以重新执行刚刚描述的方法,以便利用经改变的硬件模型和/或图形而重新执行模拟。结果是:为了经优化地执行软件工作负载而定制的硬件。
这些变化通常需要改变软件调度表,其规定了数据供应和计算的执行顺序。与通用硬件相比,多次执行此优化循环可以改善性能,并且同时降低制造成本。优化过程的结果确定了最佳的硬件系统规范。
为了经改变的软件调度表生成新的模拟模型的能力使得能够在HW/SW协同设计的范畴内使用本发明。
在智能设备(英文:Smart Devices)的开发过程中,可以将KI算法与自己的硬件进行协同优化,其方式为,对在共同的模拟环境中的这两个层级上的参数变化的影响进行评估。
Claims (9)
1.一种用于确定计算单元(21b)上机器学习系统(21a)的性能的计算机实现的方法(20),所述方法包括以下步骤:
根据所述计算单元(21b)的所提供的技术规范创建所述计算单元的硬件模型;
基于所述机器学习系统(21a)创建模拟图(12);
通过使用所述硬件模型和所述模拟图(12)模拟所述机器学习系统(21a)在所述计算单元(21b)上的执行,其中,所述模拟是基于事件的模拟;
根据所述模拟的结果确定性能。
2.根据前述权利要求中任一项所述的方法(20),其中所述机器学习系统(21a)是神经网络,其中在创建所述模拟图(12)的步骤中,神经网络图被机器学习编译器转换为树表示,其中所述树表示被转换为佩特里网图(12),所述佩特里网图被提供给所述模拟。
3.根据前述权利要求中任一项所述的方法(20),其中使用基于事件的模拟来模拟内部硬件过程。
4.根据前述权利要求中任一项所述的方法(20),其中,所述计算单元(21b)是针对所述机器学习系统(21a)的硬件加速器。
5.一种用于鉴于最佳硬件性能方面共同优化神经网络配置和用于执行所述神经网络的计算单元(21b)的计算机实现的方法(20),所述方法包括根据前述权利要求中任一项所述的步骤,其中根据所确定的性能而确定:表征神经网络的参数和/或表征计算单元的参数的适配是否在相应参数的预给定参数范围内执行,其中,基于经改变的参数而重新执行创建和执行模拟以及确定性能的步骤,其中,该方式被重复多次,特别是直到达到预给定目标性能。
6.根据权利要求5所述的方法(20),其中当达成所述目标性能时,根据所述模拟已实现目标性能时所使用的表征所述计算单元的参数和表征所述神经网络的参数而制造和/或配置系统(21)。
7.一种被设置为执行根据前述权利要求中任一项所述的方法(20)的装置。
8.一种计算机程序,所述计算机程序包括指令,当所述程序由计算机执行时,所述指令使所述计算机执行根据权利要求1至6所述的方法。
9.一种机器可读存储介质,其上存储有根据权利要求8所述的计算机程序。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102022210228.2 | 2022-09-27 | ||
DE102022210228.2A DE102022210228A1 (de) | 2022-09-27 | 2022-09-27 | Verfahren und Vorrichtung zum gemeinsamen Optimieren eines neuronalen Netzes und einer für das neuronale Netz dedizierten Hardware |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117787389A true CN117787389A (zh) | 2024-03-29 |
Family
ID=90140129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311256502.6A Pending CN117787389A (zh) | 2022-09-27 | 2023-09-26 | 用于共同优化神经网络及神经网络专用硬件的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240104363A1 (zh) |
CN (1) | CN117787389A (zh) |
DE (1) | DE102022210228A1 (zh) |
-
2022
- 2022-09-27 DE DE102022210228.2A patent/DE102022210228A1/de active Pending
-
2023
- 2023-08-31 US US18/459,237 patent/US20240104363A1/en active Pending
- 2023-09-26 CN CN202311256502.6A patent/CN117787389A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102022210228A1 (de) | 2024-03-28 |
US20240104363A1 (en) | 2024-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | Machine learning on FPGAs to face the IoT revolution | |
US11205125B2 (en) | Scheduler and simulator for an area-efficient, reconfigurable, energy-efficient, speed-efficient neural network | |
Kumar et al. | The Codesign of Embedded Systems: A Unified Hardware/Software Representation: A Unified Hardware/Software Representation | |
Erbas et al. | A framework for system-level modeling and simulation of embedded systems architectures | |
Mariani et al. | OSCAR: An optimization methodology exploiting spatial correlation in multicore design spaces | |
Amiri et al. | FPGA-based soft-core processors for image processing applications | |
US20230118325A1 (en) | Method and apparatus having a memory manager for neural networks | |
Zhao et al. | Hardware compilation of deep neural networks: An overview | |
WO2021069211A1 (en) | Method of and apparatus for processing data of a deep neural network | |
Kang et al. | The extended activity cycle diagram and its generality | |
CN117787389A (zh) | 用于共同优化神经网络及神经网络专用硬件的方法和装置 | |
Li et al. | Compiler-driven simulation of reconfigurable hardware accelerators | |
Abeysinghe et al. | Optimizing openvx graphs for data movement | |
Kruppe et al. | Efficient Operator Sharing Modulo Scheduling for Sum-Product Network Inference on FPGAs | |
Bobda et al. | High-level synthesis of on-chip multiprocessor architectures based on answer set programming | |
Dong et al. | AKGF: Automatic Kernel Generation for DNN on CPU-FPGA | |
Tumeo et al. | Software defined accelerators from learning tools environment | |
Heinsius | Real-Time YOLOv4 FPGA Design with Catapult High-Level Synthesis | |
Cong | Hardware accelerated simulation and automatic design of heterogeneous architecture | |
CN117787171B (zh) | 基于多判别器的cgan图像转换的fpga拥塞预测方法及装置 | |
Del Sozzo | On how to effectively target FPGAs from domain specific tools | |
Renaud et al. | Automated Clustering and Pipelining of Dataflow Actors for Controlled Scheduling Complexity | |
Granell Escalfet | Accelerating Halide on an FPGA | |
Braatz et al. | SimPyler: A Compiler-Based Simulation Framework for Machine Learning Accelerators | |
US12008469B1 (en) | Acceleration of neural networks with stacks of convolutional layers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |