人工智能 深度学习编译器接口 征求意见稿_第1页
人工智能 深度学习编译器接口 征求意见稿_第2页
人工智能 深度学习编译器接口 征求意见稿_第3页
人工智能 深度学习编译器接口 征求意见稿_第4页
人工智能 深度学习编译器接口 征求意见稿_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

3人工智能深度学习编译器接口本文件规范了深度学习编译器的接口功能与输入、输出参数,并提出了相应的测试方法。本文件适用于深度学习编译器的设计与实现,也可为深度学习编译器的集成和应用提供参考。2规范性引用文件下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。GB/T41867-2022信息技术人工智能术语ISO/IEC/IEEE24765:2017系统与软件工程术语(Systemsandsoftwareengineering—Vocabulary)ISO/IECTR17903:2024信息技术人工智能机器学习设备概览(Informationtechnology—Artificialintelligence—Overviewofmachinelearningcomputingdevices)3术语和定义GB/T41867-2022界定的以及下列术语和定义适用于本文件。3.1深度学习deeplearning通过训练具有许多隐藏层的神经网络来创建丰富层次表示的方法。注:深度学习是机器学习的一个子集。[来源:GB/T41867-2022,3.2.27]3.2深度学习编译器deeplearningcompiler一种面向深度学习模型进行计算图优化和编译的工具。深度学习编译器可将深度学习模型或领域特定语言源代码转化为人工智能加速芯片的可执行代码,实现高效地训练和推理。3.3人工智能加速处理器artificialintelligenceacceleratingprocessor人工智能加速芯片artificialintelligenceacceleratingchip具备适配人工智能算法的运算微架构,能够完成人工智能应用运算处理的集成电路元件。[来源:GB/T41867-2022,3.1.5]3.44中间表示intermediaterepresentation深度学习编译器在将源代码转换为可执行代码的过程中使用的一种中间表示形式。中间表示在这个过程中用于表示程序的结构和语义信息,以便进行进一步的优化和代码生成。3.5计算图computationalgraph用来表示数学函数,由节点和连接构成的有向图。[来源:ISO/IEC/IEEE24765:2017,3.1762.1,有修改]3.6子图sub-computationalgraph计算图中的一个部分图,它包含一组节点和边,形成一个相对独立的子结构。子图是从整体计算图中划分出来的,可以代表某个特定的模块、层或操作序列。3.7算子operator表示行动的数学或逻辑符号,或函数的名称。[来源,ISO/IECTR17903:2024,3.15,有修改]3.8领域特定语言domainspecificlanguage专注于某个应用程序领域的计算机语言。本文件中的领域特定语言是一种编写在人工智能加速芯片上运行深度神经网络计算内核的并行编程语言。4缩略语以下缩略语适用于本文件。AI人工智能(ArtificialIntelligence)API应用编程接口(ApplicationProgrammingInterface)BF16布瑞恩半精度浮点数(BrainFloating-point)DSL领域特定语言(DomainSpecificLanguage)FP1616位半精度浮点(16-bithalf-precisionFloatingPoint)FP3232位单精度浮点(32-bitsingle-precisionFloatingPoint)GPU图形处理单元(GraphicProcessingUnit)ID标识符(Identification)TF32张量单精度浮点数(TensorFloating-point)5概述55.1技术架构深度学习编译器通对模型或领域特定语言源代码进行图生成、图转换、图调度、算子生成等操作,生成AI加速芯片可执行代码。深度学习编译器可接受来自深度学习框架API或模型文件的输入,也可以接受领域特定语言源代码作为输入。对于来自深度学习框架API或模型文件的输入,编译器通过图生成、图转换、图调度、算子生成等操作,获得可在AI加速芯片执行的文件;对于领域特定语言源代码,编译器调用算子生成器获得可在AI加速芯片执行的文件。图1描述了深度学习编译器的技术架构。注:图中实线部分对应本文件规定的范畴,虚线部分仅表明本文件规定接口所处的位置及与其它部件或组件的关图1深度学习编译器技术架构a)图生成模块:对深度学习模型文件进行获取、编辑并生成计算图中间表示,包括计算图加载和计算图编辑两个子模块。图生成模块接口定义见第6章;b)图转换模块:通过对输入的计算图进行优化、拆分、递降等过程,将其换为多个子图,同时将计算图中的算子下降为更细粒度的算子表达。图转换模块接口定义见第7章;c)图调度模块:根据计算任务的内存占用,对计算资源进行动态管理;同时根据计算任务间依赖关系,选择合适调度策略将任务并行执行以加速计算图执行。图调度模块包括资源管理和子图调度两个子模块。图调度可在深度学习编译器中实现,也可在深度学习框架中实现。若该模块在深度学习框架中实现,则由框架触发执行。图调度模块接口定义见第8章;d)领域特定语言源代码:使用DSL编写算子文件可简化和优化深度神经网络计算内核的定义与编写过程,提高开发效率和模型性能。深度学习编译器宜支持DSL相关接口的解析和处理,DSL基础操作接口见第9章;e)算子生成器:算子生成器根据领域特定语言源代码或图转换的输出文件,生成AI加速芯片可以执行的算子代码。算子生成器接口定义见第10章。5.2技术流程图2描述了深度学习编译器技术流程,可分为计算图编译和计算图执行两个过程。6注1:图中的编译包含离线编译和在线编译两种形式,离线编译是一种预先在开发环境中完成的编译过程;在线编译是在运行时进行编译的过程。根据编译器实现不同,可选注2:图中实线部分对应本文件规定的范畴,虚线部分仅表明本文件规定接口所处的位置及与其它部件或组件的关图2.深度学习编译器技术流程图a)计算图编译过程:根据不同输入类型,执行不同模块进行编译。1)若输入为深度学习框架API或模型文件:编译器通过图生成将其编译为计算图子图,再通过图优化、图拆分模块将其编译为优化后计算图子图,并通过图递降表达为相关算子。2)若输入为领域特定语言源代码:编译器将通过算子生成器将其离线编译为符合AI加速芯片的可执行文件。b)计算图执行过程:图调度模块进行算子生成器与可执行文件的选择性加载与调用。1)算子生成器的调用:若子图的前置依赖已完成,则进行算子生成器的调用;否则不进行算子生成器的调用。2)可执行文件的加载和调用:若AI加速芯片算子库、使能软件与可执行文件可表达同一种计算语义,则编译器进行可执行文件的加载和调用。5.3接口效果基于本文件实现的深度学习编译器统一接口,其效果测试方法见附录A。6图生成模块接口6.1概述图生成模块包括计算图加载和计算图编辑两个子模块。计算图加载是深度学习编译器加载深度学习模型计算图的过程。计算图编辑是对计算图进行节点编辑、属性编辑、模式替换等操作的过程。6.2计算图加载6.2.1计算图加载计算图加载接口的输入为深度学习框架中的模型,包含了需加载的计算图信息,输出为计算图,包含节点和连接信息,接口定义见表1。7表1计算图加载接口6.2.2计算图节点计算图由相互关联的节点构成,计算图节点表示计算操作的数据结构,例如卷积、池化、全连接等。计算图节点属性定义见表2,包括操作、名称、调用对象、调用参数、关键字参数5个属性。表2计算图节点属性定义6.2.3操作属性类型计算图节点中的操作属性描述了节点执行的具体计算逻辑或功能。操作属性类型如表3所示,可分为占位符、获取参数、调用函数、调用模块、调用方法、输出、节点块、判断、循环等。表3计算图节点操作属性类型代表输入参数。名称属性表示输入参数的名称,调用对象同样是参数的名称,调用参数包含两种情况:1.空。2.函数输入的默认值,每个参从模块层次结构中检索参数。名称是分配给获得结果的名称,调用参数是参数在模块层次结构中的完全限定名称,调用参数和关键字参数忽略不用给定参数进行函数调用。名称是返回结果的名称,调用对象是要执行的表示计算图的输出。名称和调用对象均为输出,调用参用给定参数调用模块层次结构中的前向运行方法。名称是返回结果的名称,调用对象是模块层次结构中要调用的模块的完全限定名称,调用参数8调用一个值的方法。名称是返回结果的名称,调用对象是应用于对象本身参数的方法的字符串名称,调用参数和关键字参数表示调用方法的参数,在流程流中表示一系列子节点的开始,子节点的结束为输出。名称为该节在控制流中表示条件判断,根据判断结果,该节点后跟随一个条件判断为对象均为if,调用参数[0]为判断条件,调用参数[1]和调用参数[2]分别在控制流中表示循环语句,循环体为该节点后跟随的节点块。名称和调用对象均为loop,调用参数[0]为最大循环次数,调用参数[1]为初始循环条件,在循环体的返回节点输出中调用参数[0]为6.3计算图编辑作为内部功能性调用接口,深度学习编译器宜提供计算图编辑接口,包括节点编辑接口、属性编辑接口、遍历和访问接口、模式替换接口、图序列化及反序列化接口、可视化接口。计算图编辑接口使得编译器可对计算图进行简化,其接口定义见附录B。7图转换模块接口7.1概述深度学习编译器的图转换包括图优化、图拆分、图递降三个过程:a)图优化指在同一层次的中间表达中对图进行特定的优化。图优化过程是一种等效的转换,不应改变图的任何语义;b)图拆分指根据计算资源,将计算图拆分成多个子图,以便在多个硬件设备上并行执行;c)图递降是指将从深度学习框架中获取的计算图逐级转换到芯片编译器所支持子图中间表示的过程。图递降过程是一种等效的转换,不应改变计算图的任何语义。经过图递降之后,计算图可在不同的硬件和软件平台上进行优化和执行。图递降可以是一种完全的逐级转换,也可以是一种部分逐级转换。7.2图优化图优化包括优化算法的注册和计算图优化执行两过程。图优化过程通过对原计算图进行算子融合、内存优化等操作,得到优化后的计算图,从而减少冗余计算,其接口定义见表4。表4图优化接口列表将图优化算法注册到注册算法后的优化算97.3图拆分图拆分是将计算图拆分成多个子图,以便在多个硬件设备上并行执行的过程,具体步骤如下:a)节点依赖分析:对整个计算图进行依赖分析,确定各个节点之间的依赖关系。根据依赖关系确定哪些节点可以并行执行,以及如何将计算图划分为多个子图。b)图拆分:根据硬件设备的特性和性能需求,选择合适的拆分策略,对计算图进行拆分,并确定每个子图的运行设备。图拆分包括依赖分析、图拆分2个接口,见表5定义。表5图拆分接口列表7.4图递降图递降是一系列从高层子图中间表示到低层子图中间表示的逐级转换过程。子图中间表示中包含一个或多个有依赖关系的算子,具体步骤如下:a)定义递降前的原子图中间表示;b)定义递降后的目标子图中间表示;c)注册上述递降的配对模式;d)重复a)~c),注册所有需要图递降的模式;e)遍历计算图,进行图递降操作。图递降接口如表6定义。表6图递降接口8图调度模块接口8.1概述图调度由资源管理、子图调度两个操作组成。图调度功能也可由深度学习框架实现,编译器提供互操作能力。8.2资源管理资源管理包括设备内存的分配与释放,流的创建与销毁。设备内存用于计算图输入输出以及中间结果的储存。图调度前需要准备好所需存储空间,任务执行完毕后需释放所占用的存储空间。流资源被用于图调度过程中,需在整个调度过程中进行创建与释放。资源管理接口定义见表7。表7资源管理接口配在AI加速芯片设备上分小放针配在AI加速芯片设备上异小流放针流流贝贝流在AI加速芯片设备上同在AI加速芯片设备上异8.3子图调度子图调度包括设备流管理器、计算图队列、计算图到设备流的映射数据结构。a)设备流管理器:缓存图调度所需流资源,管理流之间的同步和依赖,包含设备流创建,设备流销毁等方法。该成员变量应必选支持,英文名称为devicestreammanager;b)计算图队列:存储和管理已经调度计算图的数据结构,可在队列尾部添加新的计算图。该成员变量应必选支持,英文名称为graph_list;c)计算图到设备流的映射:映射中键为计算图对象,值为该计算图调度执行的设备流。多个计算图可以映射到同一个设备流。该成员变量应必选支持,英文名称为graph_stream_mapping。子图调度接口定义见表8,参数包括新的计算图、调度优化算法、设备流到计算图队列的映射。表8子图调度接口定义9领域特定语言接口领域特定语言宜支持对程序ID、加载张量、存储张量、构建块指针、指针前移、创建张量、创建全零张量、创建连续张量、点积、转置、改变形状等基础操作接口的解析和处理,接口定义见附录C。10算子生成器接口算子生成器根据DSL算子源代码文件或图转换模块的输出结果,生成可在硬件执行的算子执行文件。接口定义见表9。表9算子生成器接口定义(资料性)接口效果测试方法A.1图生成模块接口图生成模块接口包括计算图加载和计算图编辑2类,计算图加载接口测试方法见表A.1,计算图编辑接口测试方法见表A.2。表A.1计算图加载接口效果测试表A.2计算图编辑接口效果测试3)检查节点编辑、属性编辑、遍历和访问、模式替换、图序列化与反序列化接口参数实现4)使用节点编辑、属性编辑、遍历和访问、模式替换、图序列化与反序列化对计算图进行2)节点编辑、属性编辑、模式替换、图序列化与反序列化操作正确执行,输出结果与6.33)若支持可视化,则可视化接口可准确反映计算图结构。A.2图转换模块接口图转换模块接口包括图优化接口、图拆分接口、图递降接口,其功能测试方法分别见表A.3、表A.4与表A.5。表A.3图优化接口效果测试2)准备待优化的计算图作为输入,包括需要2)图优化接口正确实现了所预定的优化策略;3)优化后的计算图保持原有逻辑和功能。表A.4图拆分接口效果测试表A.5图递降接口效果测试2)所有递降配对模式均注册成功,且模式可以被正确匹配;3)可按照注册的配对模式正确执行递降,生成预期的子图。A.3图调度模块接口图转换模块接口包括资源管理接口、子图调度接口,其功能测试方法分别见表A.6与表A.7。在子图调度接口功能测试过程中,应对子图调度类的实现进行检测。表A.6资源管理接口效果测试4)进行流的创建与销毁,并使用工具检查流的3)分配的内存在释放后恢复到可用状态,表A.7子图调度接口效果测试2)检查子图调度类的实现与8.3规定是否一致,成员变量包括设备流管理器、计算图队3)实现调度优化,将输入计算图绑定到其执行所需的设备流,并正确记录计算图队列和计A.4领域特定语言相关接口DSL相关接口测试方法分别见表A.8。表A.8DSL语言应支持操作接口的效果测试2)使用DSL语言实现附录C规定的基本操作接口;1)可使用DSL语言实现附录C规定的基本操作接口,且输入输出参数与标准定义一致;2)执行每个基本操作接口可产生预期的输出;3)执行多个基本操作接口的组合,可产生预期的输出。A.5算子生成器接口算子生成器接口测试方法见表A.9。表A.9算子生成器接口功能测试4)创建执行图转换后的子图中间表示文件,以及对应的算子生成器输出预期结果,作为测2)算子生成器可正确执行DSL算子文件或子A.6接口性能与稳定性测试使用本文件规定的编译器接口实现深度框架与AI加速芯片适配后的系统推理性能、压力与稳定性方面应达到下列要求:a)性能测试:提供可供性能分析的数据来衡量模型推理性能,例如固定配置下的平均推理延时;b)稳定性测试:保证多次推理精度误差在一定范

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论