发布日期:2026-06-17 04:56 点击次数:138

获利于现存的硬件和加快器尊龙凯时体育,深度学习在,2010,年代初驱动兴起,在这种复古下,议论东说念主员和工程师漠视了更复杂、更大的模子。然则,内存耗尽和实行工夫等适度仍然是一个挑战。由于诡计资源的适度,这些挑战在工程和生意界限变得愈加凸起。
连年来,跟着更大、更复杂的模子的普及,优化模子以使其或者以最小的资源耗尽输出尽可能高的质地已成为一个关键问题。这一主题在深度学习模子的推理阶段的遑急性是双重的。这种遑急性除了运行时的优化(速率和内存耗尽)外,还与模子熟识环境和推理环境之间的相反筹商。一般来说,在环境中熟识和推理模子并不老是可能的。因此,提供将开发和熟识流程与部署和推理流程分开的条目一直是机器学习工程师和议论东说念主员珍惜的问题之一。
在本系列著作中,咱们预计打算通过贬责底层细节来议论在,ONNX,和,ONNX,Runtime,的匡助下优化神经网罗模子所面对的挑战。
在第,1,部分中,咱们将回来模子优化和加快要领的先容,并阐明注解需要通用中间默示,ONNX,的原因。在第,2,部分中,咱们将久了了解,ONNX,Runtime,的构建块。
本文为第1部分,接下来,咱们将笼统推理阶段可用的优化和加快要领:
1、推理加快栈
推理加快栈由不同级别构成,至少应使用其中一个级别才智兑现更快的推理。它不错分为三种类型的级别:
硬件拓荒处于加快器的当先级别。CPU、GPU、TPU,等单位实行诡计。尽管存在相反,但更快的诡计可带来更快的模子推导。然则,由于摩尔定律等原因,硬件加快存在根蒂适度。
任何不改变模子的加快齐属于此类别。这些要领用于优化诡计图,使模子保握不变。
这些要领分为两组:
这些库(举例,cuDNN、MKL-DNN,等)粗造用于图形诡计,并为主要使用,GPU,并行性的常见流程(举例前向和后向卷积、池化、范例化、激活层)提供高度诊治的兑现。
咱们稍后会商量这些软件加快器组。
这些类型的加快通过改变模子或架构来加快推理流程。这些要领的要点是放弃模子中可能存在的冗余,或保留模子的遑急信息并丢弃不太遑急的信息。
这些要领可分为三类:
2、图编译器
在之前的推理加快堆栈中,图形编译器被说起为软件加快器之一。在本节中,咱们将更久了地商量它们。
大多数深度学习架构齐不错使用有向无环图(DAG)来姿首,其中每个节点代表一个神经元。若是一个节点的输出是另一个节点的输入,则两个节点通过一条边运动。与此,DAG,默示同样,诡计图中的节点默示向量运算符,而它们的边默示它们之间的数据依赖关连。
当咱们在,TensorFlow,或,PyTorch,中界说神经网罗时,该网罗将成为诡计图,然后在所需的硬件上实行。因此,诡计图不错被视为中间默示(IR),这关于优化和在不同拓荒上实行止境灵验。
诡计图复杂度随大小线性增多。图编译器骨子上在此时发挥作用。他们的方针是优化生成的诡计图以在给定硬件上进行推理。
然则,使用图编译器的最大挑战源于框架和编译器粗造是彼此独处开发的:
图编译器(举例,TVM、TensorRT、OpenVino,等)将深度学习框架中的高档诡计图映射到不错在给定硬件上实行的操作。在编译诡计图或将其映射到硬件时,编译器会对硬件实行优化以擢升推理速率。这些优化包括:
图的结构指定了操作的实行规矩。功课退换议论详情实行一系列操作的最好规矩。
粗造不错通过应用一些基本操作来兑现此最好规矩;操作包括:
诡计图粗造包含相对粗造或具有荒谬硬件内核的操作序列。
好多编译器齐欺诈了这一事实,通过和会操作(若是可能)并放弃无须要的内存造访。
在许厚情况下齐不错看到操作和会;举例,卷积、ReLU,和,BatchNorm,粗造组合成一个操作。
优化的一部分是详情方针硬件的最好操作分派,尤其是在多台拓荒上的推理阶段。
图编译器提供了一个特等的硬件抽象层,可加快各式拓荒上的推理流程。操作左证不同的战略进行退换。
若是有多个不同的拓荒,则每个拓荒齐有我方的随时可运行的操作队伍。在这种情况下,图编译器通过详情为图中的不同节点分派优先级所需的适宜退换战略并议论跨拓荒依赖性来实行优化。
今天,每个框架齐有我方的诡计图默示。此外,框架粗造针对特定目标进行优化(举例快速熟识、复古复杂架构、在移动拓荒上进行推理等)。因此,开发东说念主员不错左证上述方针之也曾受所需的框架。
左证上述内容,要求使用不同框架开发的模子或者在职何环境中并左证该环境的建设最好地责任。换句话说,咱们需要一个共同的中间默示。
3、ONNX,一种通用的中间默示
ONNX,是一种通用的中间默示(IR),有助于在该界限缔造雄伟的生态系统。通过提供诡计图的通用默示,ONNX,可匡助开发东说念主员左证其目标给与正确的框架,使作家或者专注于创造性的纠正,并使硬件供应商或者促进其平台上的优化。
ONNX,的三个主要任务不错列出如下:
ONNX,文献骨子上是一个可膨胀的范例,由三部分构成:
前两种情况骨子上一说念酿成了交流的中间默示或,IR。内置运算符的完竣列表也不错在此处和此处找到。
ONNX,以左券缓冲区局势存储数据。此局势是一种具有我方的,IR,和编译器的数据序列化要领。在左券缓冲区的,IR,局势中,界说了将要交换的音书。音书中的每个字段齐用独一的数字编号,何况在信推辞换中只传输此数字,以幸免发送多数信息。在这种局势中,只详情数据类型和数据规矩。每个数据齐由使用它的软件阐明注解。
举例,在,Protocol,Buffers,局势中,具有以下规格的节点:
界说如下:
诡计图的其他组件(举例图、节点、特征、张量等)具有同样的结构。
ONNX,中最高档别的数据结构是,Protocol,Buffers,中界说为,ModelProto,的“模子”:
举例,,opset_import,是提供给模子的“操作集”标志符的蚁合。兑现必须复古蚁合中的通盘运算符,不然将推辞该模子。篡改、增多或减少运算符的数目可能会导致,opset,的新版块。因此,ONNX,中的操作是版块化的。
通过在大多数当场数据上运行模子,在给定框架中开发的模子将转念为,ONNX,局势。这种转念以这么的面孔发生:实行的操作映射到,ONNX,操作,最终将通盘这个词模子图映射到,ONNX,局势。
由于,ONNX,文献是二进制文献,因此不错使用,Protocol,Buffers,编译器解码后检查其内容。在,ONNX,源代码中,布局了此结构偏执阐明注解面孔,可用于对二进制模子进行编码息争码。
将,ONNX,模子解码为左券缓冲区局势:
也不错编码为,ONNX,模子:
此外,还开发了,Netron、VisualDL,和,Zetane,等器具来抽象可视化,ONNX,模子诡计图,不错通过将,ONNX,模子提供给它们来进行视觉检查。
不才一篇著作中尊龙凯时体育,咱们将商量,ONNX,运行时构建块。
Powered by 尊龙凯龙时官网进入网页 @2013-2022 RSS地图 HTML地图