CN116723191B - 利用加速装置执行数据流加速计算的方法和系统 - Google Patents
利用加速装置执行数据流加速计算的方法和系统 Download PDFInfo
- Publication number
- CN116723191B CN116723191B CN202310982667.5A CN202310982667A CN116723191B CN 116723191 B CN116723191 B CN 116723191B CN 202310982667 A CN202310982667 A CN 202310982667A CN 116723191 B CN116723191 B CN 116723191B
- Authority
- CN
- China
- Prior art keywords
- server
- client
- calculation
- hardware
- acceleration
- 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 120
- 230000001133 acceleration Effects 0.000 title claims abstract description 112
- 238000000034 method Methods 0.000 title claims abstract description 93
- 238000004891 communication Methods 0.000 claims abstract description 20
- 230000002159 abnormal effect Effects 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims description 4
- 238000007781 pre-processing Methods 0.000 claims description 3
- 239000000758 substrate Substances 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 46
- 230000005856 abnormality Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 230000008878 coupling Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- ROXBGBWUWZTYLZ-UHFFFAOYSA-N [6-[[10-formyl-5,14-dihydroxy-13-methyl-17-(5-oxo-2h-furan-3-yl)-2,3,4,6,7,8,9,11,12,15,16,17-dodecahydro-1h-cyclopenta[a]phenanthren-3-yl]oxy]-4-methoxy-2-methyloxan-3-yl] 4-[2-(4-azido-3-iodophenyl)ethylamino]-4-oxobutanoate Chemical compound O1C(C)C(OC(=O)CCC(=O)NCCC=2C=C(I)C(N=[N+]=[N-])=CC=2)C(OC)CC1OC(CC1(O)CCC2C3(O)CC4)CCC1(C=O)C2CCC3(C)C4C1=CC(=O)OC1 ROXBGBWUWZTYLZ-UHFFFAOYSA-N 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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/544—Buffers; Shared memory; Pipes
-
- 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/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明提供一种利用加速装置执行数据流加速计算的方法和系统。所述方法用于服务端,包括:客户端通过服务端利用加速装置执行数据流加速计算;服务端从客户端通过第一消息通信协议接收计算请求;服务端将计算请求对应的计算任务分配给加速装置,使相应加速装置对相应计算任务进行推理运算;服务端将计算结果返回给客户端;所述服务端与所述客户端位于不同的进程中。根据本发明的技术方案,能够使软硬件之间计算流程解耦,提高平台稳定性和可靠性。
Description
技术领域
本发明涉及人工智能计算技术领域,具体涉及一种利用加速装置执行数据流加速计算的方法和系统及计算设备。
背景技术
目前人工智能领域中基于数据流AI芯片的加速计算,在整个推理计算流程中软硬件计算流程是完全耦合的同步流程。多线程推理情况下,某个线程占用设备锁后,该线程中后续出现的计算异常会导致加速卡状态错误,或者设备锁无法正常释放,导致后续其他推理任务无法使用设备或者计算结果异常。在这种情况下,软件异常间接导致硬件资源不可用,降低了硬件平台整体的稳定性和可靠性。
为此,需要一种技术方案,能够提升硬件资源的可用性。
发明内容
本发明旨在提供用于利用加速装置执行数据流加速计算的方法和系统及计算设备,通过设置服务端,能够使软硬件之间计算流程解耦,提高平台稳定性和可靠性。
根据本发明的一方面,提供一种利用加速装置执行数据流加速计算的方法,所述方法包括:
客户端通过服务端利用加速装置执行数据流加速计算,所述方法用于所述服务端;
所述服务端从所述客户端通过第一消息通信协议接收计算请求;
所述服务端根据所述计算请求驱动加速装置完成推理运算;
所述服务端将所述加速装置的计算结果返回给所述客户端。
根据一些实施例,所述服务端从所述客户端通过第一消息通信协议接收计算请求,包括:
所述服务端接收所述客户端发送的推理请求,所述推理请求包含第一共享内存对象,所述第一共享内存对象指向的共享内存中存储有所述客户端准备的输入数据。
根据一些实施例,所述服务端从客户端通过第一消息通信协议接收计算请求,还包括:
所述服务端接收所述客户端发送的网络初始化请求,所述网络初始化请求包含第二共享内存对象,所述第二共享内存对象指向的共享内存中存储有网络模型数据;
所述服务端加载所述网络模型数据进行网络初始化,并返回初始化结果。
根据一些实施例,所述服务端接收所述客户端申请加速装置资源的请求消息,并回复包含可用设备编号的消息。
根据一些实施例,所述服务端根据所述计算请求驱动加速装置完成推理运算,包括:
所述服务端将所述计算请求对应的计算任务分配给所述至少一个加速装置,使相应加速装置对相应计算任务进行推理运算。
根据一些实施例,所述服务端将所述计算请求对应的计算任务分配给至少一个加速装置,包括:
所述服务端将所述计算任务拆分为至少一个硬件计算任务;
所述服务端为各硬件计算任务分配相应大小的输出地址;
所述服务端将拆分后的硬件计算任务按需推送至与相应加速装置关联的硬件计算任务缓存队列中等待处理;
与相应加速装置关联的线程从所述硬件计算任务缓存队列获取硬件计算任务,提交给所述相应加速装置进行计算。
根据一些实施例,所述服务端将所述至少一个加速装置的计算结果返回给所述客户端,包括:
在所述计算结果通过DMA从相应加速装置搬运到预先分配的输出地址后,所述服务端向所述客户端发送的结果返回消息,所述结果返回消息包含第三共享内存对象,所述第三共享内存对象指向存储所述计算结果的所述输出地址。
根据一些实施例,所述服务端持续检测加速装置状态;
所述加速装置发生状态异常时,所述服务端对所述加速装置进行复位处理。
根据一些实施例,所述硬件计算任务缓存队列使用半同步半异步的消息队列实现。
根据一些实施例,所述第一消息通信协议为RPC通信协议。
根据一些实施例,所述服务端进行初始化,包括:
所述服务端持续检测加速装置状态,在加速装置发生状态异常时,所述服务端对所述加速装置进行复位处理;
监听来自所述客户端的RPC消息。
根据一些实施例,所述服务端将拆分后的硬件计算任务按需推送至与相应加速装置关联的硬件计算任务缓存队列中等待处理,包括:
所述服务端轮询所述硬件计算任务缓存队列,使得各硬件计算任务缓存队列中的任务数量是均衡的。
根据一些实施例,所述服务端使用进程内的互斥锁对所述加速装置进行同步保护。
根据本发明的另一方面,提供一种用于数据流加速计算的系统,其特征在于,包括客户端、服务端、通用计算装置和加速装置,其中:
所述加速装置设置于所述通用计算装置;
所述客户端和所述服务端运行于所述通用计算装置;
所述客户端配置为:发送计算请求和进行输入预处理操作;
所述服务端配置为:从所述客户端通过第一消息通信协议接收计算请求,将所述计算请求对应的计算任务分配给所述至少一个加速装置,使相应加速装置对相应计算任务进行推理运算,所述服务端将所述至少一个加速装置的计算结果返回给所述客户端;
所述至少一个加速装置用于获取计算任务后进行推理计算。
根据本发明的另一方面,提供一种计算设备,包括:
处理器;以及
存储器,存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行如上任一项所述的方法。
根据本发明的另一方面,提供一种非瞬时性计算机可读存储介质,其上存储有计算机可读指令,当所述指令被处理器执行时,使得所述处理器执行如上任一项所述的方法。
根据本发明的实施例,服务端从客户端通过第一消息通信协议接收计算请求,将计算请求对应的计算任务分配给所述加速装置,使相应加速装置对相应计算任务进行推理运算后将计算结果返回给客户端,通过使服务端与客户端位于不同的进程中,客户端与加速装置完全解耦,有效避免软件异常导致加速装置异常的问题,提高加速装置的稳定性和可靠性。客户端在推理过程中不再需要获取硬件设备锁,同时推理流程形成天然的异步流程,软件异常流程不会影响到硬件设备层,客户端和服务端各自具备异常处理的能力,增加了软件平台的容灾容错能力和可扩展性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1示出根据示例实施例的数据流加速的系统示意图。
图2示出根据示例实施例的用于数据流加速计算的系统示意图。
图3示出根据示例实施例的利用加速装置执行数据流加速计算的方法流程图。
图4示出根据示例实施例的所述服务端从客户端通过第一消息通信协议接收计算请求的方法流程图。
图5示出根据示例实施例所述服务端将所述计算请求对应的计算任务分配给加速装置的方法流程图。
图6示出根据示例性实施例的计算设备的框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本发明将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本发明概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本发明所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的,因此不能用于限制本发明的保护范围。
近年来人工智能领域的迅速发展,端侧、边缘侧以及云侧等各个应用领域对硬件设备算力也提出了更高的要求。目前主流的算力以AI芯片为主,解决方案包括GPU、FPGA以及ASIC芯片等。数据流ASIC芯片以其高性能、高性价比、低功耗等特点在市场中占据一席之地。数据流架构区别于普通的冯·诺伊曼架构,它不需要传统的指令集架构来调配芯片的性能。数据流的架构没有特定的指令集,完全依托于数据流的流动次序控制计算执行次序,消除了因指令控制和数据搬运等因素产生的数据开销,大幅降低计算单元闲置。目前的方案整个硬件计算流程和软件计算流程完全耦合,在多线程推理的情况下,可能存在计算资源无法释放的问题。
为此,本发明提出一种利用加速装置执行数据流加速计算的方法,通过引入服务端,与客户端形成独立进程,并使客户端与加速装置完全解耦,有效避免应用软件异常导致加速装置异常的问题,提高加速装置的稳定性和可靠性。本文所称加速装置可包括加速卡、加速芯片等用于执行AI计算的数据流运算装置。
下面结合附图对本发明的示例实施例进行说明。
图1示出根据示例实施例的数据流加速的系统示意图。
参见图1,根据示例实施例的数据流加速的系统包括应用软件101、硬件驱动103、操作系统OS 105、数据流AI加速卡107、CPU 109、DDR内存111。
如图1所示,根据示例实施例的数据流AI芯片加速卡107在具备AISC芯片特性的同时,可具有更高的芯片利用率,能够提供更好的算力性价比。数据流AI加速卡107可由数据流来驱动计算过程,无指令操作,可以实现时钟级准确的计算,最大限度的减少硬件计算资源的空闲时间。数据流AI加速卡107可以PCIe板卡的形式与不同类型的通用计算设备进行适配,包括个人电脑、工业计算机、服务器等等。
下面描述基于图1所示架构的系统进行数据流加速计算的过程。
参见图1,所述数据流加速的系统中,应用软件101检查数据流AI加速卡107状态是否可用。
基于数据流AI加速卡107状态正常,所述应用软件101加载深度学习网络模型进行网络模型初始化,并加载输入数据,对输入进行预处理。
所述应用软件101获取设备锁,将预处理后的数据通过DMA(Direct MemoryAccess:存储器直接访问)方式搬运到所述DDR内存111上。
应用软件101通过硬件驱动103使能数据流AI加速卡107读取DDR内存111上的输入数据,执行推理流程。所述数据流AI加速卡107推理结束后,应用软件101释放设备锁,然后通过DMA从DDR内存111将计算结果搬运到系统内存,返回给应用软件101。
应用软件101收到推理结果后,继续执行对输出结果的后处理等流程。
图1所示架构系统中硬件设备锁的实现是基于共享内存和信号量来实现的。首先应用软件初始化阶段会在共享内存中初始化一段内存空间,用来维护加速板卡的状态信息,每一段共享内存维护一张加速板卡的基本信息。例如,如果存在N张加速卡,就维护N段共享内存。
多个进程或者多个应用使用加速卡时,通过获取共享内存中的加速卡状态信息来查询加速卡是否可用。通过维护共享内存中的加速卡状态信息中的信号量来实现对板卡的加锁和解锁。
图1所示的系统进行推理计算时,整个硬件计算流程和软件计算流程完全耦合,推理过程是完全的同步流程。多线程推理情况下,某个线程在占用设备锁后,如果后续该线程中的计算异常导致加速卡状态错误,或者线程崩溃导致设备锁无法正常释放,则可能会导致后续其他推理任务无法使用设备或者计算结果异常。在这种情况下,软件异常间接导致硬件资源不可用,降低了硬件平台整体的稳定性和可靠性。
图2示出根据示例实施例利用加速装置执行数据流加速计算的系统。
参见图2,根据示例实施例的利用加速装置执行数据流加速计算的系统包括客户端201、服务端203、通用计算装置205、以及至少一个加速装置207。加速装置207可包括存储器209,存储器209可为例如DDR内存。通用计算装置205可包括CPU 211及系统内存,客户端201和服务端203可通过操作系统运行于通用计算装置205。加速装置207设置于通用计算装置205,从而通过服务端203获取客户端201的计算任务后进行推理计算。
客户端201,例如至少一个应用软件,用于发送计算请求和进行输入预处理操作。
服务端203配置为:从所述客户端201通过第一消息通信协议接收计算请求,将所述计算请求对应的计算任务分配给所述至少一个加速装置207,使相应加速装置207对相应计算任务进行推理运算,所述服务端203将所述至少一个加速装置207的计算结果返回给所述客户端201。
根据一些实施例,所述服务端203可持续检测加速装置207的状态。加速装置207发生状态异常时,服务端203可对所述加速装置207进行复位处理。
在图2所示的系统架构中,客户端和服务端分别为独立的进程,服务端作为设备管理软件,可常驻在操作系统中。客户端和服务端可通过但不限于RPC(Remote ProcedureCall Protocol:远程过程调用协议)消息通信,进而驱动加速装置(例如,数据流AI加速卡)完成数据搬运和推理运算等流程,使得应用软件流程和硬件流程充分解耦。根据一些实施例,模型、输入/输出等较大的数据可通过共享内存进行传递。图2所示系统的其他细节可参考前面的方法描述。
图3示出根据示例实施例的利用加速装置执行数据流加速计算的方法。
如前面所说明的,根据本发明实施例的用于数据流加速计算的系统包括客户端、服务端和加速装置,其中客户端通过服务端利用至少一个加速装置执行数据流加速计算。如3所示的方法可用于服务端。
参见图3,在S301,所述服务端从所述客户端通过第一消息通信协议接收计算请求。
根据一些实施例,所述第一消息通信协议为RPC通信协议,所述服务端通过RPC服务化接口与客户端进行消息通信,服务端监听来自所述客户端的RPC消息。本领域技术人员理解,除RPC协议外,第一消息通信协议也可采用其他协议,例如单机场景下可以使用进程间通信的常用技术。
利用RPC(Remote Procedure CallProtocol:为远程调用协议)通信协议可以较为简单的实现单机进程间通信和多机分布式组件间通信的场景,可以使用一套软件框架同时适应边缘侧和云侧算力场景。此外,RPC还具有强大的治理功能,比如连接管理、健康监测、负载均衡、异常重试等。RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。在通信时,调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息。最后,客户端调用过程接收答复信息,获得进程结果,然后调用执行继续进行。
引入RPC通信后,客户端在推理过程中不再需要获取硬件设备锁,同时推理流程形成天然的异步流程,软件异常流程不会影响到硬件设备层。设备层的异常可以通过复位板卡和处理异常信息等在服务端自行处理,客户端的应用软件层无需感知。根据一些实施例,服务端启动后,检查加速装置等硬件状态,并监听相关RPC消息。
根据一些实施例,客户端发送计算请求到服务端,在服务端有任务消息队列缓存来自客户端的计算请求消息,此任务消息队列可通过RPC消息队列机制实现。
根据一些实施例,所述服务端接收所述客户端发送的推理请求,所述推理请求包含第一共享内存对象,所述第一共享内存对象指向的共享内存中存储有所述客户端准备的输入数据。服务端收到推理请求后,可获取使用加速装置的设备锁,通过DMA将输入数据搬运到加速装置的存储器上,执行推理流程。
根据一些实施例,所述服务端还可接收所述客户端申请加速装置资源的请求消息,并回复包含可用设备编号的消息。
根据一些实施例,服务端可接收所述客户端发送的网络初始化请求,加载所述网络模型数据进行网络初始化。参见图2所示的系统架构,根据示例实施例,所述服务端可只需使用进程内的互斥锁对所述加速装置进行同步保护,加速装置状态由服务端统一管理。对比现有技术通过信号量和共享内存实现的设备锁,主要差异是多应用间直接使用硬件设备相关接口,需要进行进程间的同步,所以使用共享内存和信号量的方式获取和释放设备锁。
在S303,所述服务端根据所述计算请求驱动加速装置完成推理运算。
例如,所述服务端将所述计算请求对应的计算任务分配给所述至少一个加速装置,使相应加速装置对相应计算任务进行推理运算。
根据一些实施例,在服务端对设备层(加速装置)进行建模,把计算数据打包成任务,采用异步的方式推送到硬件的计算队列等待处理,从而实现软硬件流程的解耦。服务端可对上层应用软件屏蔽硬件DMA数据搬运等硬件细节,更符合软件设计的高内聚、低耦合的原则。
在S305,所述服务端将所述计算结果返回给所述客户端。
根据一些实施例,服务端检测加速装置计算结束后,通知客户端推理完成。客户端收到推理完成的消息后获取推理结果,继续执行后处理流程。
根据一些实施例,在计算结果通过DMA从所述加速装置搬运到服务端预先分配的输出地址后,所述服务端向所述客户端发送结果返回消息。结果返回消息可包含第三共享内存对象,所述第三共享内存对象指向前述存储计算结果的输出地址。
根据一些实施例,客户端的异常可以通过重新发送初始化请求、推理请求等完成正常的计算流程。加速装置等硬件状态异常可以通过服务端不断检测硬件状态进行复位等处理,客户端无需感知,进而实现软件流程和硬件加速计算的完全解耦。
根据一些实施例,服务端作为常驻服务,可具有异常处理能力和稳定性,能够保证加速装置(例如,数据流AI加速卡)等硬件资源管理平台的稳定性。同时,基于平台化的思想,对硬件资源状态的监控提供了更好的可扩展性。
根据一些实施例,服务端会对硬件设备端(加速装置)进行建模,可不断检测硬件计算和数据搬运等硬件流程中上报的错误,如DMA超时、推理超时、地址错误等异常信息。针对不同的信息,服务端可进行不同的处理,例如复位板卡状态等。根据示例实施例,客户端和服务端分别位于不同的进程中,客户端产生的异常不会导致服务端异常,并使客户端与加速装置完全解耦,有效避免应用软件异常导致加速装置异常的问题,提高加速装置的稳定性和可靠性。
图4示出根据示例实施例的所述服务端从客户端通过第一消息通信协议接收计算请求的方法流程图。
参见图4,在S401,所述服务端接收所述客户端申请加速装置资源的请求消息,并回复包含可用设备编号的消息。
根据一些实施例,通过回复可用的设备编号,客户端可在后续发送网络初始化请求时确定使用的加速装置数量。
在S403,所述服务端接收所述客户端发送的网络初始化请求。
根据一些实施例,服务端可根据接收到的RPC消息确定网络初始化请求。
根据一些实施例,所述网络初始化请求可包含第二共享内存对象,所述第二共享内存对象指向的共享内存中存储有网络模型数据。
在S405,所述服务端加载所述网络模型数据进行网络初始化 ,并返回初始化结果。
根据一些实施例,服务端接收所述客户端发送的网络初始化请求后,加载所述网络模型数据进行网络初始化,并返回初始化结果给客户端。例如,网络初始化可包括通过DMA将网络模型数据搬运至加速装置存储器,以及一些其他基础信息的计算和维护。
根据一些实施例,设想存在两个客户端A、B同时使用同一加速装置dev_0的场景。假设客户端A完成初始化开始推理,而客户端B刚刚开始初始化。在实际流程中,网络初始化和推理流程会对加速装置的状态进行修改更新。网络初始化的流程中涉及加速装置状态更新和模型数据的搬运,加速装置推理流程也涉及读写寄存器和数据搬运的流程。这些加速装置状态和数据搬运是与硬件计算流程强相关的,因此在多客户端A和B分别在两个不同的流程中时,需要进行加锁保护。根据前述本发明实施例,服务端可只需使用进程内的互斥锁对所述加速装置进行同步保护。
图5示出根据示例实施例所述服务端将所述计算请求对应的计算任务分配给加速装置的方法流程图。
参见图5,在S501,所述服务端将所述计算任务拆分为至少一个硬件计算任务。
服务端做任务拆分,得到的任务即为硬件可以执行计算的最小任务单元。
根据一些实施例,由于加速装置计算对输入数据的排列有具体要求,任务拆分可将推理请求的输入数据按照固定格式进行拆分重排。
例如,假设硬件计算的限制是1 batch(批量)或者4 batch,推理请求的输入batch是N。如果采用1 batch模式,则要拆成N个1 batch的硬件计算任务;如果采用4 batch模式,当N<4时需要进行数据填充;当N>4 时,则拆分成若干个完成的4 batch数据后,其余数据进行填充成4 batch。
在S503,所述服务端为各硬件计算任务分配相应大小的输出地址。
根据一些实施例,对于输出,可分配相应大小的输出地址,以用于接收计算结果。
在S505,所述服务端将拆分后的硬件计算任务按需推送至与相应加速装置关联的硬件计算任务缓存队列中等待处理。
根据一些实施例,每个加速装置可关联一个硬件计算任务缓存队列。在计算任务拆分之后,可将拆分的硬件计算任务推送到硬件计算任务缓存队列等待处理。例如,服务端在进行任务分配时,可轮询所述硬件计算任务缓存队列,使得各硬件计算任务缓存队列中的任务数量是均衡的。根据一些实施例,所述硬件计算任务缓存队列可使用半同步半异步的消息队列实现。
根据一些实施例,每个加速装置可关联一个线程,该线程可从所述硬件计算任务缓存队列获取硬件计算任务,提交给所述相应加速装置进行计算。
根据实施例,每个加速装置可建模为具有硬件设备状态、硬件计算任务缓存队列等信息,并可对应多个模型。根据一些实施例,每个加速装置所使用的模型可能是动态变化的,可能随着客户端的状态进行增删,因此诸如这些操作流程需要进行加互斥锁保护。
根据示例实施例,客户端发送的计算请求可为多batch数据,每个计算请求可对应一次RPC消息发送传递。每个计算请求对应的计算任务实际上可拆分成一个或者多个硬件计算任务,加速装置与多个硬件计算任务的分配关系可由服务端负责管理,更有利于加速装置资源管理。
通过对示例实施例的描述,本领域技术人员易于理解,根据本发明实施例的技术方案至少具有以下优点中的一个或多个。
根据实施例,通过引入服务端,与客户端形成独立进程,并使客户端与加速装置完全解耦,有效避免应用软件异常导致加速装置异常的问题,提高加速装置的稳定性和可靠性。软件流程和硬件流程充分解耦,客户端和服务端各自具备异常处理的能力,提高了硬件加速卡平台的稳定性和容灾容错的能力。同时,增加了软件平台的可扩展性,便于硬件状态监测和上报,更有利于加速装置的设备资源管理。
根据实施例,模型、输入/输出等较大的数据可通过共享内存进行传递,可减少数据传输量,提升资源利用率和计算效率。利用RPC可以较为简单的实现单机进程间通信和多机分布式组件间通信的场景,可以使用一套软件框架同时适应边缘侧和云侧算力场景。
根据实施例,客户端在推理过程中不再需要获取硬件设备锁,同时推理流程形成天然的异步流程,软件异常流程不会影响到硬件设备层。服务端可对上层应用软件屏蔽硬件DMA数据搬运等硬件细节,更符合软件设计的高内聚、低耦合的原则。
图6示出根据本发明示例实施例的计算设备的框图。
如图6所示,计算设备30包括处理器12和存储器14。计算设备30还可以包括总线22、网络接口16以及I/O接口18。处理器12、存储器14、网络接口16以及I/O接口18可以通过总线22相互通信。
处理器12可以包括一个或多个通用CPU(Central Processing Unit,处理器)、微处理器、或专用集成电路等,用于执行相关程序指令。根据一些实施例,计算设备30还可包括为处理器12进行加速的高性能显示适配器(GPU)20。
存储器14可以包括易失性存储器形式的机器系统可读介质,例如随机存取存储器(RAM)、只读存储器(ROM)和/或高速缓存存储器。存储器14用于存储包含指令的一个或多个程序以及数据。处理器12可读取存储在存储器14中的指令以执行上述根据本发明实施例的方法。
计算设备30也可以通过网络接口16与一个或者多个网络通信。该网络接口16可以是无线网络接口。
总线22可以为包括地址总线、数据总线、控制总线等。总线22提供了各组件之间交换信息的通路。
需要说明的是,在具体实施过程中,计算设备30还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微型驱动器以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器IC)、网络存储设备、云存储设备,或适合于存储指令和/或数据的任何类型的媒介或设备。
本发明实施例还提供一种计算机程序产品,该计算机程序产品包括存储计算机程序的非瞬时性计算机可读存储介质,该计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种方法的部分或全部步骤。
本领域的技术人员可以清楚地了解到本发明的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列、集成电路等。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
以上具体地展示和描述了本发明的示例性实施例。应可理解的是,本发明不限于这里描述的详细结构、设置方式或实现方法;相反,本发明意图涵盖包含在所附条款的精神和范围内的各种修改和等效设置。
Claims (10)
1.一种利用加速装置执行数据流加速计算的方法,其特征在于,客户端通过服务端利用加速装置执行数据流加速计算,所述方法用于所述服务端,所述方法包括:
所述服务端从所述客户端通过第一消息通信协议接收计算请求,包括:所述服务端接收所述客户端发送的推理请求,所述推理请求包含第一共享内存对象,所述第一共享内存对象指向的共享内存中存储有所述客户端准备的输入数据;
所述服务端根据所述计算请求驱动加速装置完成推理运算,包括:
所述服务端将所述计算请求对应的计算任务拆分为至少一个硬件计算任务;
所述服务端为各硬件计算任务分配相应大小的输出地址;
所述服务端将拆分后的硬件计算任务按需推送至与相应加速装置关联的硬件计算任务缓存队列中等待处理;
与相应加速装置关联的线程从所述硬件计算任务缓存队列获取硬件计算任务,提交给所述相应加速装置进行计算,使相应加速装置对相应硬件计算任务进行推理运算;
所述服务端将所述加速装置的计算结果返回给所述客户端,包括:在所述计算结果通过直接存储器访问方式从相应加速装置搬运到预先分配的输出地址后,所述服务端向所述客户端发送的结果返回消息,所述结果返回消息包含第三共享内存对象,所述第三共享内存对象指向存储所述计算结果的所述输出地址。
2.根据权利要求1所述的方法,其特征在于,所述服务端从客户端通过第一消息通信协议接收计算请求,还包括:
所述服务端接收所述客户端发送的网络初始化请求,所述网络初始化请求包含第二共享内存对象,所述第二共享内存对象指向的共享内存中存储有网络模型数据;
所述服务端加载所述网络模型数据进行网络初始化,并返回初始化结果。
3.根据权利要求2所述的方法,其特征在于,所述服务端从客户端通过第一消息通信协议接收计算请求,还包括:
所述服务端接收所述客户端申请加速装置资源的请求消息,并回复包含可用设备编号的消息。
4.根据权利要求1所述的方法,其特征在于,
所述硬件计算任务缓存队列使用半同步半异步的消息队列实现。
5.根据权利要求1所述的方法,其特征在于,所述第一消息通信协议为远程过程调用通信协议。
6.根据权利要求5所述的方法,其特征在于,还包括,
所述服务端持续检测加速装置状态,在加速装置发生状态异常时,所述服务端对所述加速装置进行复位处理;
监听来自所述客户端的RPC消息。
7.根据权利要求1所述的方法,其特征在于,所述服务端将拆分后的硬件计算任务按需推送至与相应加速装置关联的硬件计算任务缓存队列中等待处理,包括:
所述服务端轮询所述硬件计算任务缓存队列,使得各硬件计算任务缓存队列中的任务数量是均衡的。
8.根据权利要求1所述的方法,其特征在于,所述服务端使用进程内的互斥锁对加速装置进行同步保护。
9.一种利用加速装置执行数据流加速计算的系统,其特征在于,包括客户端、服务端、通用计算装置和至少一个加速装置,其中:
所述加速装置设置于所述通用计算装置;
所述客户端和所述服务端运行于所述通用计算装置;
所述客户端配置为:发送计算请求和进行输入预处理操作;
所述服务端配置为:
从所述客户端通过第一消息通信协议接收计算请求:所述服务端接收所述客户端发送的推理请求,所述推理请求包含第一共享内存对象,所述第一共享内存对象指向的共享内存中存储有所述客户端准备的输入数据,
将所述计算请求对应的计算任务分配给所述至少一个加速装置,使相应加速装置对相应计算任务进行推理运算:所述服务端将所述计算任务拆分为至少一个硬件计算任务,所述服务端为各硬件计算任务分配相应大小的输出地址,所述服务端将拆分后的硬件计算任务按需推送至与相应加速装置关联的硬件计算任务缓存队列中等待处理,与相应加速装置关联的线程从所述硬件计算任务缓存队列获取硬件计算任务,提交给所述相应加速装置进行计算,使相应加速装置对相应硬件计算任务进行推理运算;
所述服务端将所述至少一个加速装置的计算结果返回给所述客户端:包括:在所述计算结果通过直接存储器访问方式从相应加速装置搬运到预先分配的输出地址后,所述服务端向所述客户端发送的结果返回消息,所述结果返回消息包含第三共享内存对象,所述第三共享内存对象指向存储所述计算结果的所述输出地址;
所述至少一个加速装置用于获取计算任务后进行推理计算。
10.一种计算设备,其特征在于,包括:
处理器;以及
存储器,存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310982667.5A CN116723191B (zh) | 2023-08-07 | 2023-08-07 | 利用加速装置执行数据流加速计算的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310982667.5A CN116723191B (zh) | 2023-08-07 | 2023-08-07 | 利用加速装置执行数据流加速计算的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116723191A CN116723191A (zh) | 2023-09-08 |
CN116723191B true CN116723191B (zh) | 2023-11-10 |
Family
ID=87875498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310982667.5A Active CN116723191B (zh) | 2023-08-07 | 2023-08-07 | 利用加速装置执行数据流加速计算的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116723191B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102323917A (zh) * | 2011-09-06 | 2012-01-18 | 中国人民解放军国防科学技术大学 | 一种基于共享内存实现多进程共享gpu的方法 |
CN111949493A (zh) * | 2020-09-16 | 2020-11-17 | 苏州浪潮智能科技有限公司 | 一种基于推理应用的边缘ai服务器功耗测试方法及装置 |
US10853129B1 (en) * | 2019-03-19 | 2020-12-01 | Amazon Technologies, Inc. | Accelerator based inference service |
CN112418427A (zh) * | 2020-11-25 | 2021-02-26 | 广州虎牙科技有限公司 | 深度学习的统一推理服务的提供方法、装置、系统及设备 |
CN112784989A (zh) * | 2019-11-08 | 2021-05-11 | 阿里巴巴集团控股有限公司 | 推理系统、推理方法、电子设备及计算机存储介质 |
CN113988299A (zh) * | 2021-09-27 | 2022-01-28 | 苏州浪潮智能科技有限公司 | 支持多模型多芯片的推理服务器的部署方法、系统及电子设备 |
CN116362336A (zh) * | 2023-06-02 | 2023-06-30 | 之江实验室 | 一种模型推理交互方法、电子设备、可读存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10776164B2 (en) * | 2018-11-30 | 2020-09-15 | EMC IP Holding Company LLC | Dynamic composition of data pipeline in accelerator-as-a-service computing environment |
-
2023
- 2023-08-07 CN CN202310982667.5A patent/CN116723191B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102323917A (zh) * | 2011-09-06 | 2012-01-18 | 中国人民解放军国防科学技术大学 | 一种基于共享内存实现多进程共享gpu的方法 |
US10853129B1 (en) * | 2019-03-19 | 2020-12-01 | Amazon Technologies, Inc. | Accelerator based inference service |
CN112784989A (zh) * | 2019-11-08 | 2021-05-11 | 阿里巴巴集团控股有限公司 | 推理系统、推理方法、电子设备及计算机存储介质 |
CN111949493A (zh) * | 2020-09-16 | 2020-11-17 | 苏州浪潮智能科技有限公司 | 一种基于推理应用的边缘ai服务器功耗测试方法及装置 |
CN112418427A (zh) * | 2020-11-25 | 2021-02-26 | 广州虎牙科技有限公司 | 深度学习的统一推理服务的提供方法、装置、系统及设备 |
CN113988299A (zh) * | 2021-09-27 | 2022-01-28 | 苏州浪潮智能科技有限公司 | 支持多模型多芯片的推理服务器的部署方法、系统及电子设备 |
CN116362336A (zh) * | 2023-06-02 | 2023-06-30 | 之江实验室 | 一种模型推理交互方法、电子设备、可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116723191A (zh) | 2023-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10936535B2 (en) | Providing remote, reliant and high performance PCI express device in cloud computing environments | |
US20190089574A1 (en) | Computer Cluster Arrangement for Processing a Computation Task and Method for Operation Thereof | |
US9304849B2 (en) | Implementing enhanced error handling of a shared adapter in a virtualized system | |
US9996484B1 (en) | Hardware acceleration for software emulation of PCI express compliant devices | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
US8677034B2 (en) | System for controlling I/O devices in a multi-partition computer system | |
WO2016115831A1 (zh) | 一种虚拟机容错的方法、装置及系统 | |
US20140372801A1 (en) | Implementing shared adapter configuration updates concurrent with maintenance actions in a virtualized system | |
CN103744716A (zh) | 一种基于当前vcpu调度状态的动态中断均衡映射方法 | |
CN109656646B (zh) | 一种远程桌面控制方法、装置、设备及虚拟化芯片 | |
CN112087332B (zh) | 一种云边协同下的虚拟网络性能优化系统 | |
CN112988346B (zh) | 任务处理方法、装置、设备及存储介质 | |
WO2022134809A1 (zh) | 模型训练处理方法、装置、计算机设备及介质 | |
CN110998530A (zh) | 一种虚拟机资源分配系统、方法及计算机程序 | |
CN110990110A (zh) | 一种基于Sriov网卡的虚拟机创建方法及装置 | |
CN114691286A (zh) | 服务器系统、虚拟机创建方法及装置 | |
CN115604144A (zh) | 测试方法及装置、电子设备和存储介质 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
US10437754B1 (en) | Diagnostic fault management controller for distributed computing | |
CN116560803B (zh) | 基于sr-iov的资源管理方法及相关装置 | |
CN116723191B (zh) | 利用加速装置执行数据流加速计算的方法和系统 | |
CN114138472B (zh) | 业务数据处理方法、装置和系统 | |
CN114911589A (zh) | 跨数据平台的融合计算方法、系统、终端及存储介质 | |
CN109617954B (zh) | 一种创建云主机的方法和装置 | |
CN108551484B (zh) | 用户信息同步方法、装置、计算机装置及存储介质 |
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 |