CN116149797B - 面向异构场景的ai统一计算方法、装置、设备及介质 - Google Patents
面向异构场景的ai统一计算方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN116149797B CN116149797B CN202310348238.2A CN202310348238A CN116149797B CN 116149797 B CN116149797 B CN 116149797B CN 202310348238 A CN202310348238 A CN 202310348238A CN 116149797 B CN116149797 B CN 116149797B
- Authority
- CN
- China
- Prior art keywords
- computing
- memory
- unified
- computing device
- graph
- 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.)
- Active
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 172
- 238000011084 recovery Methods 0.000 claims abstract description 28
- 238000013473 artificial intelligence Methods 0.000 claims description 313
- 238000000034 method Methods 0.000 claims description 69
- 230000008569 process Effects 0.000 claims description 30
- 238000010586 diagram Methods 0.000 claims description 28
- 238000003860 storage Methods 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 11
- 238000009826 distribution Methods 0.000 claims description 10
- 238000005457 optimization Methods 0.000 claims description 8
- 230000001133 acceleration Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 description 23
- 238000007726 management method Methods 0.000 description 16
- 239000011159 matrix material Substances 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 238000011161 development Methods 0.000 description 7
- 230000006399 behavior Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000013467 fragmentation Methods 0.000 description 3
- 238000006062 fragmentation reaction Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000004064 recycling Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- JEIPFZHSYJVQDO-UHFFFAOYSA-N iron(III) oxide Inorganic materials O=[Fe]O[Fe]=O JEIPFZHSYJVQDO-UHFFFAOYSA-N 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种面向异构场景的AI统一计算方法、装置、设备及介质。包括:获取AI计算图,并将AI计算图转义为中间表达后,将中间表达形式的AI计算图拆分为多个图单元;将各图单元编译为至少一种类型的计算设备能识别的计算字节码单元,并提供给AI计算框架中的运行时***;其中,各计算设备中预先实现多个标准计算接口;运行时***在将各计算字节码单元分发调度至目标计算设备后,调用各标准计算接口实施计算,并响应于内存访问指令,统一内存管理器对各目标计算设备进行统一的内存分配和回收。本发明实施例的技术方案屏蔽了不同芯片厂商的设备差异性对上层AI计算框架的影响,实现了不同芯片厂商对主流AI计算框架的兼容和复用。
Description
技术领域
本发明实施例涉及AI(人工智能,Artificial Intelligence)计算技术,尤其涉及一种面向异构场景的AI统一计算方法、装置、设备及介质。
背景技术
人工智能计算平台主要包括AI计算芯片和AI计算框架。其中,AI计算芯片是实现AI算力的有效载体,AI计算框架是基于AI计算芯片建立的具有使能上层AI应用的基础软件平台。
目前,在AI应用领域,相当规模的AI应用均构筑在少数几个主流的AI计算框架之上。因此,计算芯片厂商为了复用主流的AI计算框架,需要耗费大量精力将所开发的AI计算芯片与主流的AI计算框架进行适配。此外,随着AI技术的不断发展,越来越多的计算场景中需要使用异构或者超异构计算,然而,主流的AI计算框架存在着硬件支持性单一、可移植性差以及无法有效使能多个异构AI芯片实施混合计算等缺陷,无法满足下一代AI技术的发展需要。
发明内容
本发明提供一种面向异构场景的AI统一计算方法、装置、设备及介质,以屏蔽不同芯片厂商的设备差异性对上层AI计算框架的影响,实现不同芯片厂商对主流AI计算框架的兼容和复用。
第一方面,本发明实施例提供了一种面向异构场景的AI统一计算方法,该方法由配置于AI计算框架和异构AI计算平台之间的统一计算抽象层执行,包括:
获取AI计算框架生成的AI计算图,并使用AI编译器将AI计算图转义为中间表达后,将中间表达形式的AI计算图拆分为多个图单元;
将各图单元编译为异构AI计算平台中至少一种类型的计算设备能识别的计算字节码单元,并将各计算字节码单元提供给AI计算框架中的运行时***;
其中,AI计算平台的各计算设备中预先实现统一计算抽象层定义的多个标准计算接口;运行时***在将各计算字节码单元分发调度至AI计算平台中匹配的目标计算设备后,调用各标准计算接口实施计算;
响应于运行时***在实施计算过程中向统一内存管理器发送的内存访问指令,统一内存管理器对各目标计算设备进行统一的内存分配和回收。
第二方面,本发明实施例提供了一种面向异构场景的AI统一计算装置,该装置由配置于AI计算框架和异构AI计算平台之间的统一计算抽象层执行,其特征在于,包括:
图单元生成模块,用于获取AI计算框架生成的AI计算图,并使用AI编译器将AI计算图转义为中间表达后,将中间表达形式的AI计算图拆分为多个图单元;
图单元编译及分发模块,用于将各图单元编译为异构AI计算平台中至少一种类型的计算设备能识别的计算字节码单元,并将各计算字节码单元提供给AI计算框架中的运行时***;
其中,AI计算平台的各计算设备中预先实现统一计算抽象层定义的多个标准计算接口;运行时***在将各计算字节码单元分发调度至AI计算平台中匹配的目标计算设备后,调用各标准计算接口实施计算;
内存分配与回收单元,用于响应于运行时***在实施计算过程中向统一内存管理器发送的内存访问指令,统一内存管理器对各目标计算设备进行统一的内存分配和回收。
第三方面,本发明实施例提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的一种面向异构场景的AI统一计算方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的一种面向异构场景的AI统一计算方法。
本发明实施例的技术方案,以统一计算抽象层为底座,使得上层AI计算框架下发的计算指令能以一致的行为接口调用到不同的计算设备,屏蔽了不同芯片厂商的计算设备计算差异性对上层AI计算框架的影响,此外,通过使用AI编译器将AI计算图转换为计算字节码单元在多个同构或者异构计算设备间的分发,可以应对大规模分布式场景和复杂的异构计算场景,同时,通过使用统一内存管理策略,可以屏蔽不同芯片厂商的计算设备内存使用差异性对上层AI计算框架的影响,最终可以实现不同芯片厂商对主流AI计算框架的兼容和复用。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据现有技术提供的一种不同厂商的计算芯片的AI计算和内存管理形式的比对图;
图2是根据本发明实施例一提供的一种面向异构场景的AI统一计算方法的流程图;
图3是根据本发明实施例二提供的一种面向异构场景的AI统一计算方法的流程图;
图4是根据本发明实施例的方法所适用的一种异构计算与异构计算字节码的编译、打包以及分发形式的示意图;
图5是根据本发明实施例的方法所适用的一种运行时***通过调用标准计算接口实施计算的结构示意图;
图6是根据本发明实施例三提供的一种面向异构场景的AI统一计算方法的流程图;
图7是根据本发明实施例的方法所适用的一种统一设备内存管理形式的结构示意图;
图8是根据本发明实施例三提供的一种统一内存管理器对各目标计算设备进行统一的内存分配和回收方法的流程图;
图9是根据本发明实施例四提供的一种面向异构场景的AI统一计算装置的结构示意图;
图10是实现本发明实施例的面向异构场景的AI统一计算方法的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于理解本发明的各实施例,首先将现有技术中AI智能计算平台中包括的AI计算芯片(后文也称为计算硬件)和AI计算框架的相关知识和交互方式进行简单介绍。
如前所述,AI计算芯片是实现AI算力的有效载体,而AI计算框架是基于AI计算芯片建立的具有使能上层AI应用的基础软件平台。AI计算芯片的落地及推广除硬件设计与制造工艺等技术外,最关键的因素是“生态链”,也即围绕AI计算芯片所构建的完整软硬件生态***。目前主流的人工智能计算平台是围绕个别厂商的硬件平台而搭建起来的,其生态形式对其它硬件厂商并不友好,实现对现有AI生态的兼容及复用是今后开展完整国产化替代的必经之路。
以深度学习为代表的神经网络算法是AI计算的普遍形式,其相应计算任务具有逻辑控制难度低、并行运算量大以及存储需求高等特点,进而计算硬件需要支持多核并行运算、低延时以及高效的线性代数运算能力,需要在短时间内高效地处理大量非结构化数据,如文本、图像、语音以及视频等。而AI计算框架是对模型算法、数据处理以及计算调度的封装,其面向开发者提供了一套标准的AI开发接口,包含算法库和工具链等,使得开发人员基于AI框架能够进行高效的算法模型设计、训练和验证。此外,在模型部署阶段,AI计算框架面向终端用户提供简单而高效的推理服务支持。
AI计算框架在整个人工智能技术体系中处于核心位置,起到承上启下作用,AI计算框架对下调用底层硬件计算资源,屏蔽底层差异并提供可靠的模型执行环境,对上支撑AI应用算法模型搭建,为算法工程化提供标准的开发和部署环境。“AI计算芯片+AI计算框架”的组合形式在一定程度上决定了人工智能产业应用的主体技术路线,其研究与研发能够促进生态链以及周围产业的发展,随着其价值的不断凸显,AI计算框架已经成为了人工智能产业创新的焦点之一,引起了学术界与产业界的广泛重视。
在AI应用领域,我国虽然产业面广、后发优势显著,但相当规模的AI应用均构筑在国际主流AI计算框架之上,从硬件适配到算子开发,从模型库的完备到算法模型构建,这几个主流厂商始终把控着AI生态链的顶端。目前我国人工智能软硬件生态面临多样化、复杂化、碎片化的挑战,亟需推进AI计算框架硬件适配、算子接口标准化工作,而各厂商硬件架构设计及接口规范很难统一,主流计算AI框架对国产AI计算芯片并不友好,导致国产AI计算芯片需要艰难适配主流框架,始终因兼容性制约着大规模推广,难以实现完全的软硬件全栈自主可控。
另一方面,异构或者超异构计算是适应未来人工智能应用场景多元化与复杂化的有效解决形式,目前主流AI计算框架,包括近年来兴起的国产AI计算框架,均存在着硬件支持性单一、可移植性差、无法有效进行异构场景计算等缺陷。因此,亟需研究一种面向异构场景的AI统一计算方法,以实现AI计算框架在复杂和超异构场景下灵活且高效的计算。
其中,在图1中示出了现有技术提供的一种不同厂商的计算芯片的AI计算和内存管理形式的比对图。
如1中的左侧部分所示,上层AI计算框架与硬件厂商英伟达的硬件产品实现了强绑定,也就是说,主流AI计算框架是基于英伟达硬件产品(GPU(Graphics ProcessingUnit,图形处理器))和软件栈搭建的。AI计算框架下发AI计算图给运行时***后,运行时***通过英伟达软件栈中的CUDA并行编程接口经硬件抽象层(NV)访问计算设备,将该AI计算图拆分成算子库调用形式在不同的GPU中实施计算,并在计算过程中,通过运行时***经CUDA并行编程接口调用内存管理器(NV)对各GPU进行设备内存的管理。
此时,如果其他硬件厂商想要复用该上层AI计算框架而不是自己单独开发一套AI计算框架,具体的,如图1中的右侧部分所示,则该厂商中的各项软硬件产品,硬件抽象层(TOPs),内存管理器(Tops)、DSA(Domain Specific Architecture,领域专用架构)计算芯片以及DSA设备内存均需要花费大量的人力、物力去适配该AI计算框架,以复用该AI计算框架实现基于DSA的AI计算需求,这就大大增加了DSA芯片的开发和维护难度,更别提同时适配多个主流的AI计算框架。
此外,其现有技术中的内存管理方式是对AI计算设备内存进行浅层次应用程序接口包装,以供上层AI计算框架直接操作计算设备的内存,各类计算设备之间内存管理方式互不兼容且易出现计算设备内存碎片化的现象,严重降低计算设备的使用效率。
有鉴于此,本发明实施例提供了一种新的面向异构场景的AI计算解决方案,以统一计算抽象层作为连接AI计算框架与计算设备的中间件,设置在AI计算框架和计算设备之间,用于屏蔽异构硬件差异带来的AI生态不兼容的问题。其中,该统一计算抽象层向上为AI计算框架提供一致的计算调用接口,向下通过预先构建的统一异构硬件接入层兼容不同的计算设备。
实施例一
图2为本发明实施例一提供的一种面向异构场景的AI统一计算方法的流程图,本实施例可适用于使用同一AI计算框架在异构场景进行AI统一计算的情况;该方法可以由配置于AI计算框架和异构AI计算平台之间的统一计算抽象层执行,该统一计算抽象层可以配置在终端、服务器或者服务器集群中,本实施例对此并不进行限制。
如图2所示,该方法包括:
S110、获取AI计算框架生成的AI计算图,并使用AI编译器将AI计算图转义为中间表达后,将中间表达形式的AI计算图拆分为多个图单元。
如前所述,所述AI计算框架是基于AI计算芯片建立的具有调用上层AI应用功能的基础软件平台。目前,主流的AI计算框架主要包括:Pytorch,Tensorflow,Mindspore,PaddlePaddle以及Oneflow等。
AI计算主要是指基于设定AI模型实施计算,AI模型可以理解为一个由大量神经元广泛的互相连接形成的复杂网络***。因此,AI模型可通过AI计算图进行描述,AI计算图一般为有向无环图形式,可由多个顶点和边构成。每个顶点对应一个计算算子。计算算子可以用来执行例如:加、减、乘、除或者卷积等运算逻辑,具有一个或者多个输入,以及一个或者多个输出。
一般来说,AI计算图属于依赖编程语言的高层表示,为了将该AI计算图转换为计算设备能够识别的底层执行代码,需要对该AI计算图进行一次或者多次低层表示的转换。具体的,可以首先通过AI编译器(AI Compiler)将AI计算图转义为较低层级的中间表达(Intermedium Representation,IR)后,将该AI计算图首先拆分为多个图单元。进而,通过以图单元为单元,可以将各图单元再次转义为底层执行代码后,分配至异构AI计算平台中的一个或者多个计算设备执行。
AI编译器可以为基于MLIR(Multi-Level Intermediate Representation)框架实现的编译器等,本实施例对此并不进行限制。所述中间表达可以理解为从语法分析后到生成目标机器码之前的源程序中间表现形式,即中间代码。简单来讲,中间表示更接近机器语言,是连接前后端的一种中间代码。
在本实施例中,图单元可以理解为AI计算图的子单元,即每个图单元均为所述中间表达形式的AI计算图的一部分,携带有中间表达形式的AI计算图中的部分信息,相应的,每个图单元中可以包括有一个或若干个计算算子。
S120、将各图单元编译为异构AI计算平台中至少一种类型的计算设备能识别的计算字节码单元,并将各计算字节码单元提供给AI计算框架中的运行时***。
其中,AI计算平台的各计算设备中预先实现统一计算抽象层定义的多个标准计算接口;运行时***在将各计算字节码单元分发调度至AI计算平台中匹配的目标计算设备后,调用各标准计算接口实施计算。
可选的,所述异构AI计算平台中可以包括多个不同类型的计算设备,计算设备可以理解为设定类型的计算芯片,例如GPU、DSA以及CPU(Central processing unit,中央处理器)等。上述的一个或者多个同类型的计算设备可以配置在同一机柜中,也可以配置于不同空间位置的多个机柜中,或者,上述的一个或者多个不同类型的计算设备同样可以配置在同一机柜或者不同机柜中。
其中,计算字节码单元可以理解为与设定图单元相对应的,用于实现设定图单元中定义的计算逻辑的底层执行代码,该底层执行代码可以被设定类型的计算设备识别并直接执行。
在本实施例中,可以首先根据每个图单元中各计算算子的计算特征,首先确定出将哪个图单元分配至哪类计算设备合适,之后,按照与计算设备类型匹配的编译规则,将各图单元编译为其所适配类型的计算设备所能识别的计算字节码单元。
进一步的,在将多个图单元编译得到多个计算字节码单元之后,可以将上述多个计算字节码单元提供给AI计算框架中的运行时***(Runtime)。运行时***在接收到上述各计算字节码单元后,将上述各计算字节码单元分发调度至一个或者多个同类型或者不同类型的计算设备中实施计算。
在本实施例中,运行时***在将各计算字节码单元分发调度至AI计算平台中匹配的目标计算设备后,不再像现有技术那样调用与某一硬件厂商匹配的硬件抽象层中的各种接口或特定厂商提供的算子库接口,控制各计算设备实施计算,而是可以统一调用统一计算抽象层定义的多个标准计算接口,控制各计算设备实施计算。
具体的,本实施例在统一计算抽象层中进一步定义了统一硬件接入层(Unifiedheterogeneous hardware interface,UHHI),UHHI用于对不同硬件厂商的硬件抽象层中的各种接口进行更高层次的抽象,以形成对上层AI计算框架一致的调用接口。相应的,AI计算平台中的每个计算设备只要实现该UHHI定义的接口规范,即实现对上层AI计算框架的复用。
在一个具体的例子中,对于从主机内存中复制数据到计算设备内存这一操作,UHHI仅需要针对这一操作定义一个标准化的调用接口,并定义该调用接口的输入输出数据形式即可,每个类型的计算设备在实现该功能时,基于其硬件架构的不同,具体的实现形式可能各有不同,但是,由于在UHHI进行了一次统一的上层抽象,各个计算设备只要相应实现接口功能即可,在UHHI中实现了对具体硬件的差异性屏蔽。
S130、响应于运行时***在实施计算过程中向统一内存管理器发送的内存访问指令,统一内存管理器对各目标计算设备进行统一的内存分配和回收。
在本实施例中,在运行时***调用各标准计算接口,控制接收到计算字节码单元的各计算设备实施计算的过程中,可能会涉及到对各计算设备的内存管理。具体的,当一个计算设备完成了一项计算后,需要在本机或设备内存中分配出一段内存空间存储该计算结果;或者,当一个计算设备完成对一项数据的使用后,可能需要将该数据所占用的内存空间进行回收等。
在本实施例中,为了解决现有技术直接调用不同计算设备的设备应用程序接口(Application Programming Interface,API),操作计算设备内存的方式,所带来的各计算设备之间内存管理方式互不兼容且易出现计算设备内存碎片化等问题,提出了使用统一内存管理器,采用统一的内存管理策略,对各目标计算设备进行统一的内存分配和回收的实现方式。
其中,所述内存访问指令包括:对异构AI计算平台中任一计算设备中设定存储空间大小的内存分配指令,或者,对任一计算设备中指定存储区域的内存回收指令,该内存分配指令或者内存回收指令由运行时***在实施计算过程中产生,并发送至该统一计算抽象层中的统一内存管理器执行。
本发明实施例的技术方案,以统一计算抽象层为底座,使得上层AI计算框架下发的计算指令能以一致的行为接口调用到不同的计算设备,屏蔽了不同芯片厂商的计算设备计算差异性对上层AI计算框架的影响,此外,通过使用AI编译器将AI计算图转换为计算字节码单元在多个同构或者异构计算设备间的分发,可以应对大规模分布式场景和复杂的异构计算场景,同时,通过使用统一内存管理策略,可以屏蔽不同芯片厂商的计算设备内存使用差异性对上层AI计算框架的影响,最终可以实现不同芯片厂商对主流AI计算框架的兼容和复用。
实施例二
图3为本发明实施例二提供的一种面向异构场景的AI统一计算方法的流程图,本实施例以上述实施例为基础进行细化,在本实施例中,将获取AI计算框架生成的AI计算图,并使用AI编译器将AI计算图转义为中间表达后,将中间表达形式的AI计算图拆分为多个图单元,以及,将各图单元编译为异构AI计算平台中至少一种类型的计算设备能识别的计算字节码单元的操作进行细化。如图3所示,该方法包括:
S310、使用AI编译器将AI计算图转义为中间表达,并根据所述中间表达推导AI计算图中每个计算算子的输入输出数据类型以及输入输出数据尺寸。
如前所述,通过AI编译器的编译处理,可以将高层表示的AI计算图,转义为低层级的中间表达,该中间表达可以被计算机识别和解析。通过对该中间表达进行解析,可以推导出该AI计算图中每个计算算子的输入输出数据类型以及输入输出数据尺寸。
其中,输入输出数据类型包括输入数据类型和输出数据类型,输入输出数据尺寸包括输入数据尺寸和输出数据尺寸。
输入数据类型可以理解为一个计算算子的每个输入数据项的数据类型。该输入数据项可以为前一计算算子的输出结果,也可以为一个预设的常量操作数等。数据类型可以为标量、矩阵、张量,整型或者浮点型等。相类似的,输出数据类型可以理解为一个计算算子的每个输出数据项的数据类型,一个计算算子可以具有一个或者多个输入数据项,以及一个或者多个输出数据项。
输入数据尺寸可以理解为一个计算算子的每个输入数据项的数据尺寸,例如,如果一个输入数据项为标量,则该输入数据项的数据尺寸可以为该数据的字长,例如16bit或者32bit等,如果一个输入数据项为一个张量,则该输入数据项可以为2*2或者2*2*3等张量尺寸。相类似的,输出数据尺寸可以理解为一个计算算子的每个输出数据项的数据尺寸。
S320、根据AI计算图中每个计算算子的输入输出数据类型以及输入输出数据尺寸,将中间表达形式的AI计算图拆分为多个图单元。
在本实施例中,在推导出AI计算图中每个计算算子的输入输出数据类型以及输入输出数据尺寸后,可以按照预设的一个或者多个AI计算图拆分规则,将AI计算图拆分为可以由多个计算设备分别执行的图单元。
其中,每个图单元中包括至少一个计算算子,并记录每个计算算子的算子类型、输入输出形式以及负载形态。
具体的,算子类型是对一个计算算子所执行的计算逻辑的概述,算子类型可以包括:加、减、乘、卷积以及基于设定激活函数的激活运算等。输入输出形态可以是指以一个图单元为整体后,针对该图单元的一个或者多个输入数据项的数据尺度以及一个或者多个输出数据项的数据尺寸,负载形态可以用于描述一个图单元的各输入数据项的来源,具体包括操作数以及前一图单元的输出中的至少一项。
在本实施例的一个可选的实施方式中,可以根据按照计算算子数量限定规则,计算算子的类型限定规则或者计算算子的输入输出数据尺寸限定规则等,本实施例对此并不进行限制。
S330、根据图单元中各计算算子的计算特性,以及AI计算平台中各类型的计算设备的硬件特性,确定与每个图单元分别对应的计算设备类型。
其中,一个图单元中可以包括一个或者多个计算算子,进而可以根据一个图单元中包括的算子数量,或者是算子类型的属性特征,确定出一个图单元的计算特征。进而,通过结合AI计算平台中各类型的计算设备的硬件特性,可以确定适宜执行每个图单元的计算设备类型。
示例性的,假设图单元A中包括的计算算子数量较多,重复计算量较大,计算耗时较长,则可以确定图单元A的计算特征为计算密集型,进而,可以确定与图单元A对应的计算设备类型为非常适宜进行密集计算的GPU;又例如,假设图单元B中包括的算子数量较少,但是这些算子的计算逻辑都比较复杂,则可以确定图单元B的计算特征为复杂逻辑型,进而,可以确定与图单元B对应的计算设备类型为非常适宜进行少量复杂逻辑计算的CPU等。
通过上述设置,可以建立AI计算图中的每个图单元与匹配的计算设备类型之间的对应关系。
S340、按照与每个图单元的计算设备类型匹配的编译规则,将每个图单元分别编译为匹配计算设备类型的计算字节码单元。
由于不同类型的计算设备,其所能执行的计算字节码的格式不尽相同,因此,可以预先在该统一计算抽象层中内置与不同计算设备类型分别适配的底层编译器,将每个图单元分别编译为匹配计算设备类型的计算字节码单元。
S350、将各计算字节码单元提供给AI计算框架中的运行时***,运行时***在将各计算字节码单元分发调度至AI计算平台中匹配的目标计算设备后,调用各标准计算接口实施计算。
在本实施例中,在将每个图单元编译为匹配的计算字节码单元后,可以将每个计算字节码单元分别进行打包,并将每个数据包分别发送至AI计算框架中的运行时***。
其中,运行时***可以将各计算字节码单元分发调度至同一机柜中的多个相同或不同类型的目标计算设备,或者,调度至不同机柜中的多个相同或不同类型的目标计算设备,以实现同构和/或异构计算。
具体的,可以根据AI计算图的具体计算场景,将所有图单元打包得到的计算字节码单元发往同种类型的计算设备(相当于传统计算场景);或者,还可以将所有图单元打包得到的计算字节码单元发往不同类型的计算设备(相当于异构或者混合计算场景);或者,还可以将所有图单元打包得到的计算字节码单元发往同种类型的跨机柜计算设备(相当于传统分布式计算场景);或者,还可以将所有图单元打包得到的计算字节码单元发往不同类型的跨机柜计算设备(相当于分布式混合计算场景)等。
在本实施例中,AI计算平台的各计算设备中预先实现统一计算抽象层定义的多个标准计算接口;运行时***在将各计算字节码单元分发调度至AI计算平台中匹配的目标计算设备后,调用各标准计算接口实施计算。
作为示例而非限定,可以在统一计算抽象层的统一硬件接入层(UHHI)中定义了以下设备调用的多个标准计算接口:
用于实现计算设备初始化以及计算设备能力查询的设备接口;用于管理计算核加载、计算核释放、计算核实例的缓存以及加速计算设备调用的模块接口;用于实现一个计算算子操作实例的计算核接口;用于实现异步操作下事件同步的事件接口;用于实现多个异步计算核调用顺序执行的流接口;用于指向分配在计算设备上的一块内存,并实现跳跃访问的设备内存地址接口;用于在计算设备上分配和回收缓冲区域的设备缓冲区接口;用于实现计算设备与主机之间的内存分配和复制的内存接口;以及用于将异构AI计算平台中产生的错误码转换为平***立的错误码,并将平***立的错误码进行可识别字符串形式展示的异步处理接口。
在上述各实施例的基础上,所述UHHI标准计算接口可基于C++或Rust等编程语言实现对不同计算设备功能调用的高层次封装。
在上述各实施例的基础上,所述UHHI标准计算接口使用与具体硬件无关的虚拟数据类型,仅当相应硬件平台实现该接口功能时才进行虚拟数据类型的实例化,也即,在构建各所述标准计算接口时,使用与计算设备无关的虚拟数据类型实现,具体的,该虚拟数据类型可以为句柄形式的数据类型。
通过上述设置,基于所述UHHI标准计算接口,不同类型的计算设备之间的差异性在各接口实现后端屏蔽。
S360、响应于运行时***在实施计算过程中向统一内存管理器发送的内存访问指令,统一内存管理器对各目标计算设备进行统一的内存分配和回收。
本发明实施例的技术方案,通过获取AI计算框架生成的AI计算图,以统一计算抽象层为底座,使得上层AI计算框架下发的计算指令能以一致的行为接口调用到不同的计算设备,屏蔽了不同芯片厂商的计算设备计算差异性对上层AI计算框架的影响,此外根据图单元中各算子的计算特性,以及AI计算平台中各类型的计算设备的硬件特性,将每个图单元分别编译为匹配计算设备类型的计算字节码单元,并将各计算字节码单元提供给AI计算框架中的运行时***,可以应对大规模分布式场景和复杂的异构计算场景,同时,通过使用统一内存管理策略,可以屏蔽不同芯片厂商的计算设备内存使用差异性对上层AI计算框架的影响,最终可以实现不同芯片厂商对主流AI计算框架的兼容和复用。
为了更加形象的描述本发明实施例,在图4中给出了本发明实施例的方法所适用的一种异构计算与异构计算字节码的编译、打包以及分发形式的示意图。
如图4所示,图单元1为所述中间表达形式的AI计算图的一个图单元;进一步的,所述图单元1中包括:负载形态W与负载形态Y,矩阵乘法函数算子与输出O1,即在该图单元中,计算算子为矩阵乘法函数,函数的输入数据为W与Y,经所述矩阵乘法函数计算得到的输出为O1,且所述负载形态W与负载形态Y的尺寸大小分别为输入形式(2*3)与(3*2)的矩阵,O1的输出形式为(2*2)的矩阵。相应的,针对图单元2,所述图单元2中包括:负载形态O1与负载形态h,加法函数算子与输出O2,即在该图单元中,计算算子为加法函数,函数的输入数据为O1与h,经所述加法函数计算得到的输出为O2,且所述负载形态O1与负载形态h的尺寸大小分别为输入形式(2*2)的矩阵与常数,O2的输出形式为(2*2)的矩阵,其中,所述O1为占位负载,即所述O1在该计算图中的含义为所述图单元2的O1位置的输入信息为图单元1的O1位置的输出信息。相应的,针对图单元3,所述图单元3中包括:负载形态O2,激活函数算子与输出O3,即在该图单元中,计算算子为激活函数,函数的输入数据为O2,经所述加法函数计算得到的输出为O3,且所述负载形态O2的尺寸大小为输入形式(2*2)的矩阵,O3的输出形式为(2*2)的矩阵;进一步的,所述O2为图单元3的占位负载。通过本实施例可知,所述计算算子的输入信息的负载形态可以为矩阵负载、常数负载以及上级函数的输出数据占位负载等形态。
进一步的,所述图4中的AI计算图经过拆分后,形成图4中的各图单元,之后将各图单元编译打包为异构AI计算平台中至少一种类型的计算设备能识别的计算字节码单元,并通过异构字节码分发器将各计算字节码单元分发调度至对应的计算设备。示例性的,如图4所示中的图单元1首先被分发调度至GPU以完成与所述图单元1中包含的信息对应的计算,同时,图单元1中的信息被编译为GPU可以识别的计算字节码单元,在GPU中进行计算后得到输出形式为(2*2)的输出数据O1;进一步的,如图4所示,上述计算步骤中得到的计算结果O1通过数据连接传输至DSA中,并作为DSA的占位负载,之后图单元2再被分发调度至DSA以完成与所述图单元2中包含的信息对应的计算,同时,图单元2中的信息被编译为DSA可以识别的计算字节码单元,在DSA中进行计算后得到输出形式为(2*2)的输出数据O2;同理,上述计算步骤中得到的计算结果O2通过数据连接传输至CPU中,并作为CPU的占位负载,之后图单元3再被分发调度至CPU以完成与所述图单元3中包含的信息对应的计算,同时,图单元3中的信息被编译为CPU可以识别的计算字节码单元,在CPU中进行计算后得到输出形式为(2*2)的输出数据O3。
在本实施例中,如图5所示,通过获取AI计算框架生成的AI计算图,并使用AI编译器将AI计算图转义为中间表达后,将中间表达形式的AI计算图拆分为多个图单元,之后将各图单元编译为异构AI计算平台中至少一种类型的计算设备能识别的计算字节码单元,并通过异构字节码分发器将各计算字节码单元提供给AI计算框架中的运行时***,运行时***通过统一异构硬件接入层调用各个计算设备上预先实现的标准计算接口,使计算设备完成计算工作,最后由运行时***接收各个计算设备的计算结果,并向统一内存管理器中查询所述计算结果所需要的储存地址是否满足计算结果的储存条件,统一内存管理器基于内存访问指令与各个计算设备的内存使用情况对各目标计算设备进行统一的内存分配和回收,并将查询信息反馈给运行时***以完成计算结果的储存工作。
实施例三
图6为本发明实施例三提供的一种面向异构场景的AI统一计算方法的流程图,本实施例以上述实施例为基础进行细化,在本实施例中具体是对响应于运行时***在实施计算过程中向统一内存管理器发送的内存访问指令,统一内存管理器对各目标计算设备进行统一的内存分配和回收的方法进行细化。如图6所示,该方法包括:
S610、获取AI计算框架生成的AI计算图,并使用AI编译器将AI计算图转义为中间表达后,将中间表达形式的AI计算图拆分为多个图单元。
S620、将各图单元编译为异构AI计算平台中至少一种类型的计算设备能识别的计算字节码单元,并将各计算字节码单元提供给AI计算框架中的运行时***。
其中,AI计算平台的各计算设备中预先实现统一计算抽象层定义的多个标准计算接口;运行时***在将各计算字节码单元分发调度至AI计算平台中匹配的目标计算设备后,调用各标准计算接口实施计算。
S630、响应于运行时***在实施计算过程中对所述统一计算抽象层定义的内存分配和回收接口的调用,统一内存管理器对各目标计算设备进行统一的内存分配和回收;其中,所述内存分配和回收接口为虚拟应用程序接口。
在本实施例中,与传统的设备内存管理形式相比,所述统一的设备内存管理策略使用所述统一硬件接入层对设备内存分配及回收采取更高层次抽象,而不直接调用设备驱动API,以统一不同计算设备间内存管理入口。其中,该更高层次的抽象具体是指基于统一计算抽象层中预先定义的虚拟应用程序接口来实现具体的内存分配和回收功能。
在本实施例中,如图7所示,具体的,所述统一计算抽象层中的异构字节码分发器将各计算字节码单元提供给AI计算框架中的运行时***,运行时***通过统一异构硬件接入层调用各个计算设备上预先实现的标准计算接口,使计算设备完成计算工作,最后由运行时***接收各个计算设备的计算结果,并向统一内存管理器中查询所述计算结果所需要的储存地址是否满足计算结果的储存条件,统一内存管理器基于内存访问指令与各个计算设备的内存使用情况,通过内存分配与回收接口对各目标计算设备进行统一的内存分配和回收,并将查询信息反馈给运行时***以完成计算结果的储存工作。
在本实施例中,经统一的设备内存管理策略调用虚拟应用程序接口的过程中监听其设备内存分配,初始化设备内存池,对每次分配及回收行为均在内存池中作相应记录,包括分配内存块大小、目标设备以及实际分配到的设备内存指针等,并以此建立初始的内存池,以达到异构设备的内存池可以进行统一管理的目的。
相应的,统一内存管理器中配置有计算设备内存池,在计算设备内存池中,分别针对异构AI计算平台中的不同计算设备存储内存分配记录;内存分配记录中包括计算设备中的已规划缓存块,以及已规划缓存块的当前占用状态。
具体的,如果异构AI计算平台共有5个计算设备,则可以在该计算设备内存池创建5个彼此隔离的存储空间,用于存储每个计算设备的存储内存分配记录。具体的,上述内存分配记录可以以内存块大小为键(key),其值(value)为一串(或一个)缓存块指针标识该内存块是否被占用的标记,当串中所有缓存块均被占用时,当前键对应节点置占满状态,否则为未占满状态;此外,以键(内存块大小)为节点建立二叉搜索树,以快速定位适合的节点,也即,缓存查找。
可选的,响应于运行时***在实施计算过程中对所述统一计算抽象层定义的内存分配和回收接口的调用,统一内存管理器对各目标计算设备进行统一的内存分配和回收,可以包括:
响应于运行时***在实施计算过程中对统一计算抽象层定义的内存分配和回收接口的调用,统一内存管理器获取对第一计算设备的内存分配请求;统一内存管理器在设备内存池中查询与第一计算设备匹配的第一内存分配记录,确定第一计算设备中是否存在与该内存分配请求所需的内存大小匹配的目标缓存块;统一内存管理器在确定存在目标缓存块时,将目标缓存块分配给第一计算设备,并更新第一内存分配记录;统一内存管理器在确定不存在目标缓存块时,如果查询到第一计算设备中存在满足内存分配请求的剩余内存,则从剩余内存中规划出所述内存大小的目标缓存块分配给第一计算设备,并更新第一内存分配记录。
其中,所述第一计算设备为进行计算并得到计算结果,并需要对计算结果进行存储的计算设备;进一步的,所述已规划缓存块为第一计算设备中被规划于用来储存计算结果的缓存块;进一步的,所述占用状态包括:已占用状态与未占用状态。若当前缓存块中存在缓存信息,则所述缓存块的占用状态为已占用,反之,则为未占用。
进一步的,在统一内存管理器在确定不存在目标缓存块之后,还可以包括:统一内存管理器如果查询到第一计算设备中不存在满足内存分配请求的剩余内存,则在第一内存分配记录中查找大于所述内存大小且处于未占用状态的最小缓存块;统一内存管理器如果查找到所述最小缓存块,则将所述最小缓存块分配给第一计算设备,并更新第一内存分配记录;统一内存管理器如果未查找到所述最小缓存块,则在第一内存分配记录中查询未占用状态的空闲缓存块,并在所述第一计算设备中释放所述缓存块后,更新所述第一内存分配记录;统一内存管理器再次查询第一计算设备中是否存在满足内存分配请求的剩余内存;统一内存管理器如果查询到第一计算设备中存在满足内存分配请求的剩余内存,则从剩余内存中规划出所述内存大小的目标缓存块分配给第一计算设备,并更新第一内存分配记录。
进一步的,在统一内存管理器再次查询第一计算设备中是否存在满足内存分配请求的剩余内存之后,还可以包括:统一内存管理器如果查询到第一计算设备中不存在满足内存分配请求的剩余内存,则根据所述第一内存分配记录中每个已规划缓存块的访问频次,对所述第一计算设备进行内存优化;统一内存管理器在完成对第一计算设备的内存优化后,继续查询第一计算设备中是否存在满足内存分配请求的剩余内存;统一内存管理器如果查询到第一计算设备中存在满足内存分配请求的剩余内存,则从剩余内存中规划出所述内存大小的目标缓存块分配给第一计算设备,并更新第一内存分配记录。
其中,所述优化操作可以为内存搬移操作,即:将不经常使用的缓存块从设备内存搬移到主机内存。
进一步的,在统一内存管理器继续查询第一计算设备中是否存在满足内存分配请求的剩余内存之后,还可以包括:统一内存管理器如果未查询到第一计算设备中存在满足内存分配请求的剩余内存,则在异构AI计算平台中获取与第一计算设备匹配的关联计算设备;统一内存管理器执行在设备内存池中查询与关联计算设备匹配的关联内存分配记录的操作,尝试将关联计算设备中的内存分配给第一计算设备。
其中,统一内存管理器在异构AI计算平台中获取与第一计算设备匹配的关联计算设备,包括:统一内存管理器在异构AI计算平台中获取与所述第一计算设备同处于相同机柜且属于相同类型的关联计算设备。
可选的,响应于运行时***在实施计算过程中对所述统一计算抽象层定义的内存分配和回收接口的调用,统一内存管理器对各目标计算设备进行统一的内存分配和回收,可以包括:响应于运行时***在实施计算过程中对所述统一计算抽象层定义的内存分配和回收接口的调用,统一内存管理器获取对第二计算设备的内存释放请求,并在所述内存释放请求中,获取释放内存块;统一内存管理器在设备内存池中查询与第二计算设备匹配的第二内存分配记录,并在第二内存分配记录中,将释放内存块的当前占用状态更新为未占用状态。
具体的,图8为根据本发明实施例三提供的一种统一内存管理器对各目标计算设备进行统一的内存分配和回收方法的流程图,如图所示:
首先,响应于运行时***在实施计算过程中对统一计算抽象层定义的内存分配和回收接口的调用,统一内存管理器获取对第一计算设备的设定大小内存块的内存分配请求后,统一内存管理器确定第一计算设备中是否存在满足要求且空闲的目标缓存块,如果所述目标缓存块存在,则直接将目标缓存块分配给第一计算设备以储存对应的计算结果,并将与第一计算设备对应的第一内存分配记录中的该目标缓存块的状态定义为已占用;若所述目标缓存块不存在,则统一内存管理器查找第一计算设备中是否存在大于所述内存大小且处于未占用状态的最小缓存块,若存在,则将目标缓存块分配给第一计算设备以储存对应的计算结果,并将第一内存分配记录中的该目标缓存块的状态定义为已占用;若所述目标缓存块不存在,则对第一计算设备进行内存的释放,即将未全部占用的缓存块进行释放并在第一内存分配记录中更新相应的释放状态,之后再次查询第一计算设备中是否存在满足内存分配请求的剩余内存,如果此时确定所述目标缓存块存在,则将目标缓存块分配给第一计算设备以储存对应的计算结果,并将第一内存分配记录中的该目标缓存块的状态定义为已占用;若所述目标缓存块不存在,则继续查询第一计算设备中是否存在满足内存分配请求的剩余内存,即未规划缓存块,如果未规划缓存块中存在目标缓存块,则在第一计算设备中分配出该目标缓存块以储存对应的计算结果,并将第一内存分配记录中的该目标缓存块的状态定义为已占用;若所述目标缓存块不存在,则在异构AI计算平台中获取与第一计算设备匹配的关联计算设备,并尝试将关联计算设备中的内存分配给第一计算设备。
本发明实施例的技术方案,由配置于AI计算框架和异构AI计算平台之间的统一计算抽象层执行,通过获取AI计算框架生成的AI计算图,统一计算抽象层为底座,使得上层AI计算框架下发的计算指令能以一致的行为接口调用到不同的计算设备,屏蔽了不同芯片厂商的计算设备计算差异性对上层AI计算框架的影响,此外,通过使用AI编译器将AI计算图转换为计算字节码单元在多个同构或者异构计算设备间的分发,可以应对大规模分布式场景和复杂的异构计算场景,同时,响应于运行时***在实施计算过程中向统一内存管理器发送的内存访问指令,统一内存管理器对各目标计算设备进行统一的内存分配和回收,可以屏蔽不同芯片厂商的计算设备内存使用差异性对上层AI计算框架的影响,最终可以实现不同芯片厂商对主流AI计算框架的兼容和复用。
实施例四
图9为本发明实施例四提供的一种面向异构场景的AI统一计算装置,由配置于AI计算框架和异构AI计算平台之间的统一计算抽象层执行。
如图9所示,该装置包括:
图单元生成模块910,用于获取AI计算框架生成的AI计算图,并使用AI编译器将AI计算图转义为中间表达后,将中间表达形式的AI计算图拆分为多个图单元;
图单元编译及分发模块920,用于将各图单元编译为异构AI计算平台中至少一种类型的计算设备能识别的计算字节码单元,并将各计算字节码单元提供给AI计算框架中的运行时***;
其中,AI计算平台的各计算设备中预先实现统一计算抽象层定义的多个标准计算接口;运行时***在将各计算字节码单元分发调度至AI计算平台中匹配的目标计算设备后,调用各标准计算接口实施计算;
内存分配与回收单元930,用于响应于运行时***在实施计算过程中向统一内存管理器发送的内存访问指令,统一内存管理器对各目标计算设备进行统一的内存分配和回收。
本发明实施例的技术方案,由配置于AI计算框架和异构AI计算平台之间的统一计算抽象层执行,通过获取AI计算框架生成的AI计算图,并使用AI编译器将AI计算图转义为中间表达后,将中间表达形式的AI计算图拆分为多个图单元,之后将各图单元编译为异构AI计算平台中至少一种类型的计算设备能识别的计算字节码单元,并将各计算字节码单元提供给AI计算框架中的运行时***,最后响应于运行时***在实施计算过程中向统一内存管理器发送的内存访问指令,统一内存管理器对各目标计算设备进行统一的内存分配和回收,实现了AI计算框架在异构场景的计算,解了决异构场景对AI计算框架的影响,从而简化了异构计算难度,提升了AI计算框架的计算性能。
在上述实施例的基础上,图单元生成模块910,包括:
计算图转义单元,用于使用AI编译器将AI计算图转义为中间表达,并根据所述中间表达推导AI计算图中每个计算算子的输入输出数据类型以及输入输出数据尺寸;
计算图拆分单元,用于根据AI计算图中每个计算算子的输入输出数据类型以及输入输出数据尺寸,将中间表达形式的AI计算图拆分为多个图单元;
其中,每个图单元中包括至少一个计算算子,并记录每个计算算子的算子类型、输入输出形式以及负载形态。
在上述实施例的基础上,图单元编译及分发模块920,包括:
设备类型确定单元,用于根据图单元中各计算算子的计算特性,以及AI计算平台中各类型的计算设备的硬件特性,确定与每个图单元分别对应的计算设备类型;
图单元编译单元,用于按照与每个图单元的计算设备类型匹配的编译规则,将每个图单元分别编译为匹配计算设备类型的计算字节码单元。
在上述实施例的基础上,图单元编译及分发模块920,具体用于:
运行时***将各计算字节码单元分发调度至同一机柜中的多个相同或不同类型的目标计算设备,或者,调度至不同机柜中的多个相同或不同类型的目标计算设备,以实现同构和/或异构计算。
在上述实施例的基础上,内存分配与回收单元930,包括:
内存分配与回收单元,用于响应于运行时***在实施计算过程中对所述统一计算抽象层定义的内存分配和回收接口的调用,统一内存管理器对各目标计算设备进行统一的内存分配和回收;其中,所述内存分配和回收接口为虚拟应用程序接口。
在上述实施例的基础上,内存分配与回收单元,进一步包括:
第一内存分配请求获取单元,用于响应于运行时***在实施计算过程中对统一计算抽象层定义的内存分配和回收接口的调用,统一内存管理器获取对第一计算设备的内存分配请求;
其中,统一内存管理器中配置有计算设备内存池,在计算设备内存池中,分别针对异构AI计算平台中的不同计算设备存储内存分配记录;内存分配记录中包括计算设备中的已规划缓存块,以及已规划缓存块的当前占用状态;
第一目标缓存块确定单元,用于统一内存管理器在设备内存池中查询与第一计算设备匹配的第一内存分配记录,确定第一计算设备中是否存在与该内存分配请求所需的内存大小匹配的目标缓存块;
第一内存分配记录单元,用于统一内存管理器在确定存在目标缓存块时,将目标缓存块分配给第一计算设备,并更新第一内存分配记录;
第一内存分配记录更新单元,用于统一内存管理器在确定不存在目标缓存块时,如果查询到第一计算设备中存在满足内存分配请求的剩余内存,则从剩余内存中规划出所述内存大小的目标缓存块分配给第一计算设备,并更新第一内存分配记录。
在上述实施例的基础上,第一内存分配记录更新单元,进一步包括:
最小缓存块查找单元,用于统一内存管理器如果查询到第一计算设备中不存在满足内存分配请求的剩余内存,则在第一内存分配记录中查找大于所述内存大小且处于未占用状态的最小缓存块;
最小缓存块分配单元,用于统一内存管理器如果查找到所述最小缓存块,则将所述最小缓存块分配给第一计算设备,并更新第一内存分配记录;
缓存块释放单元,用于统一内存管理器如果未查找到所述最小缓存块,则在第一内存分配记录中查询未占用状态的空闲缓存块,并在所述第一计算设备中释放所述缓存块后,更新所述第一内存分配记录;
剩余内存查询单元,用于统一内存管理器再次查询第一计算设备中是否存在满足内存分配请求的剩余内存;
剩余内存规划单元,用于统一内存管理器如果查询到第一计算设备中存在满足内存分配请求的剩余内存,则从剩余内存中规划出所述内存大小的目标缓存块分配给第一计算设备,并更新第一内存分配记录。
在上述实施例的基础上,剩余内存查询单元,进一步包括:
内存优化单元,用于统一内存管理器如果查询到第一计算设备中不存在满足内存分配请求的剩余内存,则根据所述第一内存分配记录中每个已规划缓存块的访问频次,对所述第一计算设备进行内存优化;
剩余内存二次查询单元,用于统一内存管理器在完成对第一计算设备的内存优化后,继续查询第一计算设备中是否存在满足内存分配请求的剩余内存;
统一内存管理器如果查询到第一计算设备中存在满足内存分配请求的剩余内存,则从剩余内存中规划出所述内存大小的目标缓存块分配给第一计算设备,并更新第一内存分配记录。
在上述实施例的基础上,剩余内存二次查询单元,进一步还包括:
关联计算设备匹配单元,用于统一内存管理器如果未查询到第一计算设备中存在满足内存分配请求的剩余内存,则在异构AI计算平台中获取与第一计算设备匹配的关联计算设备;
关联内存分配单元,用于统一内存管理器执行在设备内存池中查询与关联计算设备匹配的关联内存分配记录的操作,尝试将关联计算设备中的内存分配给第一计算设备。
在上述实施例的基础上,关联计算设备匹配单元,进一步包括:
关联计算设备获取单元,用于统一内存管理器在异构AI计算平台中获取与所述第一计算设备同处于相同机柜且属于相同类型的关联计算设备。
在上述实施例的基础上,内存分配与回收单元,还包括:
第二内存块释放单元,用于响应于运行时***在实施计算过程中对所述统一计算抽象层定义的内存分配和回收接口的调用,统一内存管理器获取对第二计算设备的内存释放请求,并在所述内存释放请求中,获取释放内存块;
第二内存分配单元,用于统一内存管理器在设备内存池中查询与第二计算设备匹配的第二内存分配记录,并在第二内存分配记录中,将释放内存块的当前占用状态更新为未占用状态。
本发明实施例所提供的面向异构场景的AI统一计算装置可执行本发明任意实施例所提供的面向异构场景的AI统一计算方法,具备执行方法相应的功能模块和有益效果。
实施例五
图10示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图10所示,电子设备10包括至少一个处理器11,至少一个AI计算单元12(可以理解为AI芯片)、以及与至少一个处理器11和至少一个AI计算单元12通信连接的存储器,如只读存储器(ROM)13、随机访问存储器(RAM)14等,其中,存储器存储有可被至少一个处理器11或者至少一个AI计算单元12执行的计算机程序,处理器11或者AI计算单元12可以根据存储在只读存储器(ROM)13中的计算机程序或者从存储单元19加载到随机访问存储器(RAM)14中的计算机程序,来执行各种适当的动作和处理。在RAM 14中,还可存储电子设备10操作所需的各种程序和数据。处理器11、AI计算单元12、ROM 13以及RAM 14通过总线15彼此相连。输入/输出(I/O)接口16也连接至总线15。其中,AI计算单元12中包含有内存模块,该内存模块等同于本发明各实施例中AI计算框架中各计算设备中的设备内存。
电子设备10中的多个部件连接至I/O接口16,包括:输入单元17,例如键盘、鼠标等;输出单元18,例如各种类型的显示器、扬声器等;存储单元19,例如磁盘、光盘等;以及通信单元20,例如网卡、调制解调器、无线通信收发机等。通信单元20允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、AI计算单元12的一些示例包括但不限于图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11或者AI计算单元12执行上文所描述的各个方法和处理,例如面向异构场景的AI统一计算方法。
相应的,该方法由配置于AI计算框架和异构AI计算平台之间的统一计算抽象层执行,包括:
获取AI计算框架生成的AI计算图,并使用AI编译器将AI计算图转义为中间表达后,将中间表达形式的AI计算图拆分为多个图单元;
将各图单元编译为异构AI计算平台中至少一种类型的计算设备能识别的计算字节码单元,并将各计算字节码单元提供给AI计算框架中的运行时***;
其中,AI计算平台的各计算设备中预先实现统一计算抽象层定义的多个标准计算接口;运行时***在将各计算字节码单元分发调度至AI计算平台中匹配的目标计算设备后,调用各标准计算接口实施计算;
响应于运行时***在实施计算过程中向统一内存管理器发送的内存访问指令,统一内存管理器对各目标计算设备进行统一的内存分配和回收。
在一些实施例中,面向异构场景的AI统一计算方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元19。在一些实施例中,计算机程序的部分或者全部可以经由ROM 13和/或通信单元20而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 14并由处理器11或者AI计算单元12执行时,可以执行上文描述的面向异构场景的AI统一计算方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行面向异构场景的AI统一计算方法。
本文中以上描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的***和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
Claims (16)
1.一种面向异构场景的人工智能AI统一计算方法,由配置于AI计算框架和异构AI计算平台之间的统一计算抽象层执行,其特征在于,包括:
获取AI计算框架生成的AI计算图,并使用AI编译器将AI计算图转义为中间表达后,将中间表达形式的AI计算图拆分为多个图单元;
将各图单元编译为异构AI计算平台中至少一种类型的计算设备能识别的计算字节码单元,并将各计算字节码单元提供给AI计算框架中的运行时***;
其中,AI计算平台的各计算设备中预先实现统一计算抽象层定义的多个标准计算接口;运行时***在将各计算字节码单元分发调度至AI计算平台中匹配的目标计算设备后,调用各标准计算接口实施计算;标准计算接口为统一计算抽象层中形成的对AI计算框架一致的调用接口,AI计算平台的各计算设备通过实现各标准计算接口的接口规范,实现对AI计算框架的复用;
响应于运行时***在实施计算过程中向统一内存管理器发送的内存访问指令,统一内存管理器对各目标计算设备进行统一的内存分配和回收。
2.根据权利要求1所述的方法,其特征在于,使用AI编译器将AI计算图转义为中间表达后,将中间表达形式的AI计算图拆分为多个图单元,包括:
使用AI编译器将AI计算图转义为中间表达,并根据所述中间表达推导AI计算图中每个计算算子的输入输出数据类型以及输入输出数据尺寸;
根据AI计算图中每个计算算子的输入输出数据类型以及输入输出数据尺寸,将中间表达形式的AI计算图拆分为多个图单元;
其中,每个图单元中包括至少一个计算算子,并记录每个计算算子的算子类型、输入输出形式以及负载形态。
3.根据权利要求2所述的方法,其特征在于,将各图单元编译为异构AI计算平台中至少一种类型的计算设备能识别的计算字节码单元,包括:
根据图单元中各计算算子的计算特性,以及AI计算平台中各类型的计算设备的硬件特性,确定与每个图单元分别对应的计算设备类型;
按照与每个图单元的计算设备类型匹配的编译规则,将每个图单元分别编译为匹配计算设备类型的计算字节码单元。
4.根据权利要求1所述的方法,其特征在于,运行时***将各计算字节码单元分发调度至AI计算平台中匹配的目标计算设备的方式,包括:
运行时***将各计算字节码单元分发调度至同一机柜中的多个相同或不同类型的目标计算设备,或者,调度至不同机柜中的多个相同或不同类型的目标计算设备,以实现同构和/或异构计算。
5.根据权利要求1所述的方法,其特征在于,所述标准计算接口的类型包括下述至少一项:
用于实现计算设备初始化以及计算设备能力查询的设备接口;
用于管理计算核加载、计算核释放、计算核实例的缓存以及加速计算设备调用的模块接口;
用于实现一个计算算子操作实例的计算核接口;
用于实现异步操作下事件同步的事件接口;
用于实现多个异步计算核调用顺序执行的流接口;
用于指向分配在计算设备上的一块内存,并实现跳跃访问的设备内存地址接口;
用于在计算设备上分配和回收缓冲区域的设备缓冲区接口;
用于实现计算设备与主机之间的内存分配和复制的内存接口;以及
用于将异构AI计算平台中产生的错误码转换为平***立的错误码,并将平***立的错误码进行可识别字符串形式展示的异步处理接口。
6.根据权利要求5所述的方法,其特征在于,在构建各所述标准计算接口时,使用与计算设备无关的虚拟数据类型实现。
7.根据权利要求1-6任一项所述的方法,其特征在于,响应于运行时***在实施计算过程中向统一内存管理器发送的内存访问指令,统一内存管理器对各目标计算设备进行统一的内存分配和回收,包括:
响应于运行时***在实施计算过程中对所述统一计算抽象层定义的内存分配和回收接口的调用,统一内存管理器对各目标计算设备进行统一的内存分配和回收;其中,所述内存分配和回收接口为虚拟应用程序接口。
8.根据权利要求7所述的方法,其特征在于,响应于运行时***在实施计算过程中对所述统一计算抽象层定义的内存分配和回收接口的调用,统一内存管理器对各目标计算设备进行统一的内存分配和回收,包括:
响应于运行时***在实施计算过程中对统一计算抽象层定义的内存分配和回收接口的调用,统一内存管理器获取对第一计算设备的内存分配请求;
其中,统一内存管理器中配置有计算设备内存池,在计算设备内存池中,分别针对异构AI计算平台中的不同计算设备存储内存分配记录;内存分配记录中包括计算设备中的已规划缓存块,以及已规划缓存块的当前占用状态;
统一内存管理器在设备内存池中查询与第一计算设备匹配的第一内存分配记录,确定第一计算设备中是否存在与该内存分配请求所需的内存大小匹配的目标缓存块;
统一内存管理器在确定存在目标缓存块时,将目标缓存块分配给第一计算设备,并更新第一内存分配记录;
统一内存管理器在确定不存在目标缓存块时,如果查询到第一计算设备中存在满足内存分配请求的剩余内存,则从剩余内存中规划出所述内存大小的目标缓存块分配给第一计算设备,并更新第一内存分配记录。
9.根据权利要求8所述的方法,其特征在于,在统一内存管理器在确定不存在目标缓存块之后,还包括:
统一内存管理器如果查询到第一计算设备中不存在满足内存分配请求的剩余内存,则在第一内存分配记录中查找大于所述内存大小且处于未占用状态的最小缓存块;
统一内存管理器如果查找到所述最小缓存块,则将所述最小缓存块分配给第一计算设备,并更新第一内存分配记录;
统一内存管理器如果未查找到所述最小缓存块,则在第一内存分配记录中查询未占用状态的空闲缓存块,并在所述第一计算设备中释放所述缓存块后,更新所述第一内存分配记录;
统一内存管理器再次查询第一计算设备中是否存在满足内存分配请求的剩余内存;
统一内存管理器如果查询到第一计算设备中存在满足内存分配请求的剩余内存,则从剩余内存中规划出所述内存大小的目标缓存块分配给第一计算设备,并更新第一内存分配记录。
10.根据权利要求9所述的方法,其特征在于,在统一内存管理器再次查询第一计算设备中是否存在满足内存分配请求的剩余内存之后,还包括:
统一内存管理器如果查询到第一计算设备中不存在满足内存分配请求的剩余内存,则根据所述第一内存分配记录中每个已规划缓存块的访问频次,对所述第一计算设备进行内存优化;
统一内存管理器在完成对第一计算设备的内存优化后,继续查询第一计算设备中是否存在满足内存分配请求的剩余内存;
统一内存管理器如果查询到第一计算设备中存在满足内存分配请求的剩余内存,则从剩余内存中规划出所述内存大小的目标缓存块分配给第一计算设备,并更新第一内存分配记录。
11.根据权利要求10所述的方法,其特征在于,在统一内存管理器继续查询第一计算设备中是否存在满足内存分配请求的剩余内存之后,还包括:
统一内存管理器如果未查询到第一计算设备中存在满足内存分配请求的剩余内存,则在异构AI计算平台中获取与第一计算设备匹配的关联计算设备;
统一内存管理器执行在设备内存池中查询与关联计算设备匹配的关联内存分配记录的操作,尝试将关联计算设备中的内存分配给第一计算设备。
12.根据权利要求11所述的方法,其特征在于,统一内存管理器在异构AI计算平台中获取与第一计算设备匹配的关联计算设备,包括:
统一内存管理器在异构AI计算平台中获取与所述第一计算设备同处于相同机柜且属于相同类型的关联计算设备。
13.根据权利要求8所述的方法,其特征在于,响应于运行时***在实施计算过程中对所述统一计算抽象层定义的内存分配和回收接口的调用,统一内存管理器对各目标计算设备进行统一的内存分配和回收,包括:
响应于运行时***在实施计算过程中对所述统一计算抽象层定义的内存分配和回收接口的调用,统一内存管理器获取对第二计算设备的内存释放请求,并在所述内存释放请求中,获取释放内存块;
统一内存管理器在设备内存池中查询与第二计算设备匹配的第二内存分配记录,并在第二内存分配记录中,将释放内存块的当前占用状态更新为未占用状态。
14.一种面向异构场景的人工智能AI统一计算装置,由配置于AI计算框架和异构AI计算平台之间的统一计算抽象层执行,其特征在于,包括:
图单元生成模块,用于获取AI计算框架生成的AI计算图,并使用AI编译器将AI计算图转义为中间表达后,将中间表达形式的AI计算图拆分为多个图单元;
图单元编译及分发模块,用于将各图单元编译为异构AI计算平台中至少一种类型的计算设备能识别的计算字节码单元,并将各计算字节码单元提供给AI计算框架中的运行时***;
其中,AI计算平台的各计算设备中预先实现统一计算抽象层定义的多个标准计算接口;运行时***在将各计算字节码单元分发调度至AI计算平台中匹配的目标计算设备后,调用各标准计算接口实施计算;标准计算接口为统一计算抽象层中形成的对AI计算框架一致的调用接口,AI计算平台的各计算设备通过实现各标准计算接口的接口规范,实现对AI计算框架的复用;
内存分配与回收单元,用于响应于运行时***在实施计算过程中向统一内存管理器发送的内存访问指令,统一内存管理器对各目标计算设备进行统一的内存分配和回收。
15.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-13中任一项所述的一种面向异构场景的人工智能AI统一计算方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-13中任一项所述的一种面向异构场景的人工智能AI统一计算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310348238.2A CN116149797B (zh) | 2023-04-04 | 2023-04-04 | 面向异构场景的ai统一计算方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310348238.2A CN116149797B (zh) | 2023-04-04 | 2023-04-04 | 面向异构场景的ai统一计算方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116149797A CN116149797A (zh) | 2023-05-23 |
CN116149797B true CN116149797B (zh) | 2023-07-07 |
Family
ID=86340922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310348238.2A Active CN116149797B (zh) | 2023-04-04 | 2023-04-04 | 面向异构场景的ai统一计算方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116149797B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116560666B (zh) * | 2023-07-10 | 2023-09-22 | 上海燧原科技有限公司 | 基于多层级代码生成的ai前端统一计算方法、装置及介质 |
CN117331541A (zh) * | 2023-10-27 | 2024-01-02 | 北京智源人工智能研究院 | 面向动态图框架和异构芯片的编译与运行方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463709A (zh) * | 2019-09-09 | 2021-03-09 | 上海登临科技有限公司 | 可配置的异构人工智能处理器 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111899150A (zh) * | 2020-08-28 | 2020-11-06 | Oppo广东移动通信有限公司 | 数据处理方法、装置、电子设备及存储介质 |
US11915056B2 (en) * | 2020-10-15 | 2024-02-27 | Nec Corporation | Combination of multiple data processing and machine learning frameworks for a target hardware |
CN112529175B (zh) * | 2020-11-05 | 2022-03-18 | 上海交通大学 | 神经网络的编译方法、***、计算机存储介质及编译设备 |
CN113168349A (zh) * | 2021-03-26 | 2021-07-23 | 珠海全志科技股份有限公司 | Ai处理器的内存分配方法、计算机装置及计算机可读存储介质 |
CN113867950A (zh) * | 2021-09-26 | 2021-12-31 | 浪潮电子信息产业股份有限公司 | 一种统一异构计算***,一种ai加速平台 |
CN114201156B (zh) * | 2021-12-10 | 2022-08-05 | 北京百度网讯科技有限公司 | 接入方法、装置、电子设备及计算机存储介质 |
US20220222584A1 (en) * | 2022-04-01 | 2022-07-14 | Yamini Nimmagadda | Heterogeneous compute-based artificial intelligence model partitioning |
CN115686527A (zh) * | 2022-11-01 | 2023-02-03 | 深圳思谋信息科技有限公司 | 基于算子的编译方法、装置、计算机设备和存储介质 |
CN115495095B (zh) * | 2022-11-18 | 2023-03-21 | 上海燧原科技有限公司 | 张量程序的整程序编译方法、装置、设备、介质及集群 |
-
2023
- 2023-04-04 CN CN202310348238.2A patent/CN116149797B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463709A (zh) * | 2019-09-09 | 2021-03-09 | 上海登临科技有限公司 | 可配置的异构人工智能处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN116149797A (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116149797B (zh) | 面向异构场景的ai统一计算方法、装置、设备及介质 | |
CN111124656B (zh) | 用于向专用计算资源分配任务的方法、设备和计算机可读存储介质 | |
CN108062246B (zh) | 用于深度学习框架的资源调度方法和装置 | |
CN111310936A (zh) | 机器学***台、装置、设备及存储介质 | |
US9684493B2 (en) | R-language integration with a declarative machine learning language | |
CN103858099A (zh) | 用于在异构计算机上编译和运行高级程序的技术 | |
CN110033091B (zh) | 一种基于模型进行预测的方法和装置 | |
CN112698921B (zh) | 一种逻辑代码运行方法、装置、计算机设备和存储介质 | |
CN111858027B (zh) | 一种软件机器人协同处理方法及*** | |
CN113504902B (zh) | 工业app集成开发***及相关设备 | |
WO2021000971A1 (zh) | 操作数据的生成方法、装置及相关产品 | |
CN113626128B (zh) | 视听媒体微服务第三方模块接入方法、***、电子设备 | |
CN113988299A (zh) | 支持多模型多芯片的推理服务器的部署方法、***及电子设备 | |
CN104317578A (zh) | 基于引擎Lua脚本应用和引擎与Lua脚本相互调用方法及装置 | |
CN115510358A (zh) | 流程引擎结合动态表单实现业务工作流的方法及*** | |
US20110209007A1 (en) | Composition model for cloud-hosted serving applications | |
CN105100180A (zh) | 集群节点动态加载的方法、装置及*** | |
CN113448650A (zh) | 直播功能插件加载方法、装置、设备及存储介质 | |
US8510530B1 (en) | Memory management for programs operating asynchronously | |
CN111324395B (zh) | 调用方法、装置和计算机可读存储介质 | |
CN105653347A (zh) | 一种服务器、资源管理方法及虚拟机管理器 | |
US12008353B2 (en) | Parsing tool for optimizing code for deployment on a serverless platform | |
CN116192670A (zh) | 环境部署方法、装置、设备及介质 | |
US11435989B2 (en) | Thread-local return structure for asynchronous state machine | |
KR20010110097A (ko) | 작업흐름-관리-시스템에서의 보관 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: Room a-522, 188 Yesheng Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306 Patentee after: Shanghai Suiyuan Technology Co.,Ltd. Country or region after: China Address before: Room a-522, 188 Yesheng Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306 Patentee before: SHANGHAI ENFLAME TECHNOLOGY Co.,Ltd. Country or region before: China |
|
CP03 | Change of name, title or address |