CN112101565A - 基于加速芯片的模型迭代实现方法和装置 - Google Patents
基于加速芯片的模型迭代实现方法和装置 Download PDFInfo
- Publication number
- CN112101565A CN112101565A CN202010937393.4A CN202010937393A CN112101565A CN 112101565 A CN112101565 A CN 112101565A CN 202010937393 A CN202010937393 A CN 202010937393A CN 112101565 A CN112101565 A CN 112101565A
- Authority
- CN
- China
- Prior art keywords
- parallel
- queue
- calculation
- functions
- queues
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computational Linguistics (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
Abstract
本说明书提供一种基于加速芯片的模型迭代实现方法,包括:确定在机器学习模型训练或推理的一次迭代中执行的所有计算函数、计算函数的执行顺序、以及计算函数的输入参数和输出参数;将所有计算函数划分为N个并行队列,每个并行队列中的计算函数按照执行顺序排列;N为不小于2的自然数;采用计算函数的输入参数和输出参数,发现所有并行队列之间相互的队列依赖关系;对具有队列依赖关系的两个计算函数,在被依赖的计算函数上添加执行完毕的通知事件,在具有函数依赖的计算函数上添加对所述通知事件的依赖;并行执行所述N个并行队列。
Description
技术领域
本说明书涉及数据处理技术领域,尤其涉及一种基于加速芯片的模型迭代实现方法和装置。
背景技术
AI(Artificial Intelligence,人工智能)已经走入了普通大众的视野,在日常生活中可以看到很多与AI相关的产品或服务,例如在人脸识别、车辆定损(图片识别)、机器人客服等多种场景中AI都得到了广泛应用,并且取得了显著效果。
实现AI的基础是完成运算量巨大的计算任务,例如机器学习模型,尤其是深度学习(DL,Deep Learning)的训练和推理任务,这些都需要强大的计算能力来支撑。实际应用中常常采用GPU(Graphics Processing Unit,图形处理器)等加速芯片来运行模型的训练和推理任务。GPU具有高速并行计算能力,如何充分利用这一能力,是加快模型训练或推理任务处理速度的关键所在。
发明内容
有鉴于此,本说明书提供一种基于加速芯片的模型迭代实现方法,包括:
确定在机器学习模型训练或推理的一次迭代中执行的所有计算函数、计算函数的执行顺序、以及计算函数的输入参数和输出参数;
将所有计算函数划分为N个并行队列,每个并行队列中的计算函数按照执行顺序排列;N为不小于2的自然数;
采用计算函数的输入参数和输出参数,发现所有并行队列之间相互的队列依赖关系;第一并行队列对第二并行队列的队列依赖关系包括所有满足以下条件的第一并行队列中某个第一计算函数对第二并行队列中某个第二计算函数的函数依赖:不存在执行顺序先于所述第一计算函数的第一并行队列中其他计算函数对所述第二计算函数的函数依赖,也不存在第一并行队列中执行顺序先于所述第一计算函数的其他计算函数对第二并行队列中执行顺序后于所述第二计算函数的其他计算函数的函数依赖;当所述第二计算函数是第二并行队列中输出参数包括所述第一计算函数的输入参数的计算函数中执行顺序最后的一个时,所述第一计算函数对所述第二计算函数具有函数依赖;
对具有队列依赖关系的两个计算函数,在被依赖的计算函数上添加执行完毕的通知事件,在具有函数依赖的计算函数上添加对所述通知事件的依赖;
并行执行所述N个并行队列。
本说明书还提供了一种基于加速芯片的模型迭代实现装置,包括:
循环结构单元,用于确定在机器学习模型训练或推理的一次迭代中执行的所有计算函数、计算函数的执行顺序、以及计算函数的输入参数和输出参数;
并行队列单元,用于将所有计算函数划分为N个并行队列,每个并行队列中的计算函数按照执行顺序排列;N为不小于2的自然数;
队列依赖单元,用于采用计算函数的输入参数和输出参数,发现所有并行队列之间相互的队列依赖关系;第一并行队列对第二并行队列的队列依赖关系包括所有满足以下条件的第一并行队列中某个第一计算函数对第二并行队列中某个第二计算函数的函数依赖:不存在执行顺序先于所述第一计算函数的第一并行队列中其他计算函数对所述第二计算函数的函数依赖,也不存在第一并行队列中执行顺序先于所述第一计算函数的其他计算函数对第二并行队列中执行顺序后于所述第二计算函数的其他计算函数的函数依赖;当所述第二计算函数是第二并行队列中输出参数包括所述第一计算函数的输入参数的计算函数中执行顺序最后的一个时,所述第一计算函数对所述第二计算函数具有函数依赖;
时序控制单元,用于对具有队列依赖关系的两个计算函数,在被依赖的计算函数上添加执行完毕的通知事件,在具有函数依赖的计算函数上添加对所述通知事件的依赖;
并行执行单元,用于并行执行所述N个并行队列。
本说明书提供的一种计算机设备,包括:存储器和加速芯片;所述存储器上存储有可由加速芯片运行的计算机程序;所述加速芯片运行所述计算机程序时,执行基于加速芯片的模型迭代实现方法所述的步骤。
本说明书还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被加速芯片运行时,执行上述基于加速芯片的模型迭代实现方法所述的步骤。
由以上技术方案可见,本说明书的实施例中,将机器学习模型训练或推理的一次迭代中的所有计算函数划分为N个并行队列,在各个并行队列之间基于输入参数和输出参数建立不同队列的计算函数之间的队列依赖关系,通过通知事件和对通知事件的依赖限定具有队列依赖关系的计算函数的执行时序,使得N个并行队列能够并行执行,从而能够将一次迭代的计算过程自动并行化为N个队列来执行,更为充分的利用了加速芯片的并行处理能力,提高了模型训练和推理的运算速度,并且无需人工工作即可适应于各种机器学习模型。
附图说明
图1是调用加速芯片进行机器学习模型的训练或推理的流程图;
图2是本说明书实施例中一种基于加速芯片的模型迭代实现方法的流程图;
图3是本说明书实施例的一个例子中由基础队列生成并行队列的示意图;
图4是由加速芯片虚拟化而成的服务器端、客户端和通信模块的结构示意图;
图5是本说明书实施例中一种基于加速芯片的模型迭代实现装置的逻辑结构图。
具体实施方式
本说明书的实施例提出一种新的基于加速芯片的模型迭代实现方法,将一次迭代中的计算函数划分为N个并行队列,基于依据计算函数的输入参数和输出参数建立的队列依赖关系,在具有队列依赖关系的计算函数上添加通知事件或对通知事件的依赖,使不同并行队列中计算函数能够按照时序要求来执行,从而无需人工工作即可自动将任一机器学习模型的迭代运算转换为N个并行任务,能够更为充分的利用加速芯片的并行处理能力,加快训练或推理的运算速度。
本说明书的实施例运行在加速芯片上,可以是运行在一个物理的加速芯片上,也可以是运行在两个到多个物理的加速芯片上,并且这两个到多个加速芯片可以安装在同一个物理设备上,也可以安装在两个到多个物理设备上,均不做限定。当运行在两个到多个加速芯片上时,这些加速芯片之间可以相互通信,具体通信方式不做限定,可以是同一个物理设备上不同应用程序、进程、线程等之间的通信方式,如IPC(Inter-ProcessCommunication,进程间通信);也可以是不同物理设备之间基于网络的通信方式,如TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)、RDMA(Remote Direct Memory Access,远程直接内存访问)等。
其中,加速芯片可以是CPU(Central Processing Unit,中央处理器)之外的任意一种用于加速计算任务的芯片,如GPU、FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)、ASIC(Application-specific integrated circuit,专用集成电路)、类脑芯片、可重构通用AI芯片等。
CPU在调用加速芯片进行机器学习模型的训练或推理时,其流程通常如图1所示。CPU先初始化加速芯片,为本训练或推理任务进行资源分配;初始化机器学习模型,包括初始化所采用的模型参数;然后开始模型的训练和推理,在训练或推理的每次迭代中由加速芯片执行迭代运算并在迭代运算完成后同步迭代进度,在进度同步后一次迭代完成,再开始下一次迭代。
每次迭代的迭代运算由多个按照一定顺序执行的计算函数(OP,operation)构成。加速芯片在被调用时,会得到在迭代运算中要执行的所有计算函数、每个计算函数的输入参数和输出参数、以及所有计算函数的执行顺序。加速芯片通常按照这些计算函数的执行顺序来依次执行各个计算函数,但是这样无法充分发挥加速芯片高速并行处理的优势。因此在本说明书的实施例中,自动生成两个到多个计算函数的队列,并且并行执行这些队列,以加快迭代运算的处理速度。
本说明书的实施例中,基于加速芯片的模型迭代实现方法的流程如图2所示。
步骤210,确定在机器学习模型训练或推理的一次迭代中执行的所有计算函数、计算函数的执行顺序、以及计算函数的输入参数和输出参数。
加速芯片在被调用进行每次的迭代运算时,会得到要执行的所有计算函数、每个计算函数的输入参数和输出参数,以及计算函数的执行顺序。根据加速芯片被调用的具体方式,可以采用不同的方式从中提取出一次迭代中的上述信息。
例如,假设加速芯片一直被调用运行同一个机器学习模型训练任务或同一个机器学习模型推理任务,则每次迭代的上述信息会循环出现,提取一次循环中的所有计算函数、每个计算函数的输入参数和输出参数,以及计算函数的执行顺序即可。
再如,可以在缓冲区中缓冲最近接收的L个计算函数、这些计算函数的执行顺序、以及每个计算函数的输入参数和输出参数,从中提取按照相同的执行顺序重复执行的若干个计算函数,作为一次迭代中执行的所有计算函数。换言之,在缓冲的L个计算函数中发现机器学习模型训练任务或机器学习模型推理任务的计算函数的迭代循环结构,从而得到一次迭代的上述信息。其中,L为自然数,L的值不小于一次迭代运算中所有计算函数总数目的2倍,例如可以是一次迭代运算中所有计算函数总数目的3倍或更多。
步骤220,将所有计算函数划分为N(N为不小于2的自然数)个并行队列,每个并行队列中的计算函数按照执行顺序排列。
可以综合考虑实际应用场景中迭代运算的各个计算函数的执行时长、计算函数之间的输入输出关系、加速芯片的资源分配等因素,来决定将所有计算函数划分为N个队列的具体方式,本说明书的实施例不做限定。其中,计算函数之间的输入输出关系表示一个计算函数的输入参数是其他计算函数的输出参数的情形,这种情形下该计算函数需要得到其他计算函数的执行结果后才能正常执行。例如,当计算函数α的输入参数包括计算函数β的输出参数时,则在尚未划分并行队列前计算函数β的执行顺序早于计算函数α,计算函数α需要在计算函数β执行完毕后才能执行,因为计算函数α的执行依赖于获知计算函数β的输出结果。
在一种实现方式中,可以按照计算函数的执行顺序,将第1到第N个计算函数分别划分到第1到第N个队列中,将第(N+1)到第2N个计算函数分别划分到第1到第N个队列中,以此类推。
在另一种实现方式中,可以先根据相邻计算函数的输入输出关系生成若干个基础队列,再基于基础队列生成并行队列。在生成基础队列时,将按照执行顺序排列的所有计算函数截断为M个基础队列,第i(i为从1到M-1的自然数)个基础队列的最后一个计算函数与第(i+1)个基础队列的第一个计算函数之间不存在输入输出关系,即第i个基础队列的最后一个计算函数的输出参数不包括第(i+1)个基础队列的第一个计算函数的输入参数。在生成并行队列时,将(M-N)个基础队列中的计算函数添加到其他N个基础队列中,生成N个并行队列,每个并行队列中的计算函数按照执行顺序排列;在这一实现方式中,N为从2到M的自然数。
具体而言,在生成基础队列时,可以按照计算函数的执行顺序依次查看相邻的两个计算函数之间是否有输入输出关系,如果有,这两个计算函数划入同一个基础队列,如果没有,则增加一个基础队列,以顺序在后的计算函数作为新增加的基础队列里的第一个计算函数。例如,假设某机器学习模型训练任务的一次迭代的迭代运算由9个计算函数构成,按照执行顺序,这9个计算函数依次为OP0、OP1、OP2、……、直到OP8,先查看OP0与OP1之间是否有输入输出关系,如果有,则将OP0与OP1归入基础队列A,如果没有,则将OP0归入基础队列A,将OP1归入基础队列B;假设OP0与OP1之间有输入输出关系,则继续查看OP1与OP2之间是否有输入输出关系,如果有,将OP2归入基础队列A,如果没有,将OP2归入基础队列B;如此类推,直到根据OP7与OP8之间的输入输出关系将OP8归入某个基础队列。
生成M个基础队列后,再基于基础队列生成2到M个并行队列。可以从M个基础队列中确定N个基础队列,将其他(M-N)基础队列中的每个计算函数分别加入到N个基础队列中的一个,得到N个并行队列,然后按照执行顺序排列每个并行队列中的计算函数。如果生成M个并行队列,则可以直接将M个基础队列作为M个并行队列。
可以采用任意的方式将(M-N)基础队列中的计算函数加入到其他N个基础队,不做限定。考虑到计算函数的执行顺序,第j(j是从1到(M-1)的自然数)个基础队列中的计算函数,比第(j+1)个队列中的计算函数在执行顺序上更靠前,可以以第1到第N个基础队列为基底,将第(N+1)到第M个基础队列中的计算函数添加到第1到第N个基础队列中,在并行执行时能够更早的开始执行各个并行队列,从而能够达到更快的处理速度。
仍以前述有9个计算函数的迭代运算为例,假设生成3个基础队列,基础队列A中有OP0、OP1和OP2共3个计算函数,基础队列B中有OP3和OP4共2个计算函数,基础队列C中有OP5、OP6、OP7和OP8共4个计算函数,则基于这3个基础队列,可以生成2到3个并行队列。假设生成2个并行队列,可以将基础队列C中4个计算函数中的2个,OP5和OP6添加到基础队列A中,将另外2个OP7和OP8添加到基础队列B中,再按照执行顺序分别排列添加后基础队列A和基础队列B中的计算函数,形成2个并行队列,如图3所示的并行队列A和并行队列B。
步骤230,采用计算函数的输入参数和输出参数,发现所有并行队列之间相互的队列依赖关系。
如前所述,计算函数之间可能存在输入输出关系。当两个存在输入输出关系的计算函数在同一个并行队列中时,由于并行队列中的计算函数按照执行顺序排列,同一个并行队列中的计算函数是否有输入输出关系都不会影响各个计算函数的正常运行。当存在输入输出关系的两个计算函数在不同的并行队列中时,如果并行执行各个并行队列,则需要对这两个并行队列的执行时序进行控制,以便每个并行队列能够正常运行。
本说明书实施例中,采用两个队列的队列依赖关系来限定两个队列中计算函数的执行时序。
便于描述起见,设两个并行队列为第一并行队列和第二并行队列,第一并行队列中的每个计算函数均称为第一计算函数,第二并行队列中的每个计算函数均称为第二计算函数。如果若干个第二计算函数的输出参数中包含有某个第一计算函数的输入参数,则这些第二计算函数中在第二并行队列中执行顺序最后的一个成为与该第一计算函数具有函数依赖的第二计算函数。换言之,当某个第二计算函数是第二并行队列中输出参数包括某个第一计算函数的输入参数的计算函数中执行顺序最后的一个时,该第一计算函数对该第二计算函数具有函数依赖。在这一函数依赖中,该第一计算函数为具有函数依赖的计算函数,该第二计算函数为被依赖的计算函数。
第一并行队列和第二并行队列之间相互的队列依赖关系包括第一并行队列对第二并行队列的队列依赖关系和第二并行队列对第一并行队列的队列依赖关系。其中,第一并行队列对第二并行队列的队列依赖关系包括满足以下条件的第一计算函数对第二计算函数的函数依赖:不存在执行顺序先于该第一计算函数的第一并行队列中其他计算函数对该第二计算函数的函数依赖,也不存在第一并行队列中执行顺序先于该第一计算函数的其他计算函数对第二并行队列中执行顺序后于该第二计算函数的其他计算函数的函数依赖。可见,第一并行队列与第二并行队列之间可以存在很多个第一计算函数对第二计算函数的函数依赖,但不一定每个上述函数依赖都会成为第一并行队列对第二并行队列的队列依赖。当一项函数依赖所要求的两个计算函数的时序可以被另一项函数依赖所限定时,则前者在控制两个并行队列的执行时序时是冗余的,没有必要成为队列依赖关系。上述条件即是用来排除冗余的函数依赖。另外,第一并行队列对第二并行队列的队列依赖关系可以包括1个到多个第一计算函数对第二计算函数的函数依赖。
本说明书的实施例中,所有并行队列之间相互的队列依赖关系包括任意两个并行队列之间相互的队列依赖关系,或者说,包括任何一个并行队列对其他各个并行队列的队列依赖关系。
发现队列依赖关系的具体方式不做限定。例如,在发现第一并行队列对第二并行队列的队列依赖关系时,可以先对第一并行队列中的每个第一计算函数,查找其对第二计算函数的函数依赖;对所有找到的第一计算函数对第二计算函数的函数依赖,筛选出满足上述条件的函数依赖,作为第一并行队列对第二并行队列的队列依赖关系。
步骤240,对具有队列依赖关系的两个计算函数,在被依赖的计算函数上添加执行完毕的通知事件,在具有函数依赖的计算函数上添加对该通知事件的依赖。
可以采用通知事件来对不同队列中具有队列依赖关系的计算函数的执行时序进行控制。具体而言,设第一并行队列对第二并行队列的队列依赖关系包括某个第一计算函数对某个第二计算函数的函数依赖,则在被依赖的该第二计算函数上添加执行完毕的通知事件,令该第二计算函数在执行完毕后发出通知事件;并在具有函数依赖的该第一计算函数上添加对该通知事件的依赖,令该第一计算函数在收到该通知事件后才能开始执行。这样,即可控制该第一计算函数与该第二计算函数的正确执行时序。
通知事件、对通知事件的依赖、通知事件的收发等的具体实现方式可以根据实际应用场景中的操作系统、编程环境、并行队列的形式等因素来决定,本说明书实施例对不做限定。例如,对加速芯片运行在同一物理设备上的应用场景,通知事件可以是进程间的消息,可以采用进程间通信或消息队列等方式来传递;再如,对加速芯片运行在不同物理设备上的应用场景,通知事件可以是网络报文,基于互联网进行报文收发等。
假设对图3所示的并行队列A和并行队列B,在步骤230中发现的队列依赖关系包括2个函数依赖:并行队列B中OP3对并行队列A中OP1的函数依赖、以及并行队列A中OP6对并行队列B中OP4的函数依赖,则这两个并行队列在Nvidia(英伟达公司)的GPU产品上运行时,可以先创建2个计算队列(vStream0和vStream1)和2个事件(vEvt0和vEvt1),其中vStream0和vStream1分别用于提交并行队列A和并行队列B,vEvt0和vEvt1用于在根据队列依赖关系中的2个函数依赖对并行队列A和并行队列B的执行进度进行控制。
具体而言,在将并行队A和并行队列B中的OP分别提交到vStream0和vStream1中时,在提交OP1后添加vEvt0,从而在OP1执行完毕后发出通知,在提交OP3之前添加对vEvt0的依赖(可以通过应用程序接口cuStreamWaitEvent来实现),从而在收到vEvt0的通知后才启动OP3的执行;类似的,在提交OP4后添加vEvt1,在提交OP6之前添加对vEvt1的依赖。
步骤250,并行执行N个并行队列。
在通过队列依赖关系为不同并行队列中计算函数的执行时序添加控制机制后,可以并行执行N个并行队列,以便充分利用加速芯片的并行处理能力,更加快速的完成机器学习模型的训练或推理。
需要说明的是,对相同的机器学习模型训练或推理任务,一次迭代中生成的并行队列及其队列依赖关系可以用于后续的训练或推理任务,而不需要在每次迭代中都执行一次步骤210至步骤230,后续的训练和推理任务可以直接执行步骤240至步骤250。
在绝大多数情况下,当将串行执行的多个计算函数分拆为N个并行队列并行执行时,可以更好的利用计算资源,加快机器学习模型训练或推理的运算速度。但是,迭代运算的速度并不会随着N的增加而持续下降,过多的并行队列可能引起资源竞争,而使得运算速度不如并行队列数量较少的情形。能够最大程度提高运算速度的并行队列数目与实际应用场景中可供迭代运算使用的空闲计算资源、计算函数的复杂程度、计算函数之间的函数依赖等因素有关。
在大多数机器学习模型的训练或推理场合,相同的迭代运算(每次运算的具体数据会有不同)要进行非常多次。如果在这些场合中采用基础队列来生成并行队列,可以对合适的并行队列数量(即N的值)来进行动态决策。具体而言,在生成M个基础队列后,可以将N依次设置为从2到M范围内的若干个值,统计N为各个设置值时并行执行N个队列的耗时,将耗时最少的设置值作为后续训练或推理中使用的N值。可见,通过自动按照N的设置值来动态生成并行队列,能够自动筛选出更为适合于当前场景的并行度。
例如,可以先将N设置为2,统计2个并行队列的迭代运算的耗时;再将N增加到3,统计3个并行队列的迭代运算的耗时;如果N=3的耗时比N=2的耗时更短则继续将N增加到4;以此类推,直到增加N的值后迭代运算的耗时变长而不是继续变短,则将N固定为对应于最短耗时的N值,来进行后续的训练或推理。
另外,对于经常使用的机器学习模型或计算函数,可以在各个机器学习模型的训练或推理任务的迭代运算中,在并行执行N个并行队列时,在资源需求表中记录每个计算函数的输入参数、并行队列数目、所使用加速芯片的硬件资源、以及该计算函数的执行时长。在面对新的训练或推理任务时,在将一次迭代运算中所有计算函数划分为N个并行队列前,按照各个计算函数的输入参数、所使用加速芯片的硬件资源,在资源需求表中查找对应的并行队列数目和执行时长,将使得所有计算函数的执行时长更短的并行队列数目作为N。
这样,在记录了足够多的计算函数的输入参数、并行队列数目、所使用加速芯片的硬件资源、计算函数的执行时长的关联信息后,可以按照一个训练或推理任务中包含的计算函数、实际使用的硬件资源来评估不同并行队列数目的迭代运算耗时,从而能够在实际运行迭代运算前就确定更为适合当前场景的N值。
可见,本说明书的实施例中,将一次迭代中的所有计算函数划分为N个并行队列,在各个并行队列之间基于输入参数和输出参数建立不同队列的计算函数之间的队列依赖关系,在具有队列依赖关系的计算函数上添加通知事件或对通知事件的依赖来限定具有队列依赖关系的计算函数的执行时序,使得N个并行队列能够并行执行,从而无需人工工作即可自动将任一机器学习模型的迭代运算转换为N个并行任务,更为充分的利用了加速芯片的并行处理能力,提高了模型训练和推理的运算速度。
在一些应用场景中,将加速芯片的硬件资源和计算能力抽象虚拟化为服务器端、客户端和通信三个模块,其结构可以如图4所示。其中,客户端模块提供了一组加速芯片运行时的动态链接库,向使用加速芯片计算资源的应用程序提供了访问加速芯片所需的API(Application Programming Interface,应用程序接口),如功能和控制类API(包括自动发现计算函数间函数依赖的API等);服务器端模块是在加速芯片上长时间运行的后台进程,负责对加速芯片硬件进行抽象、封装、虚拟化以及服务端其他各项功能的优化执行(如生成并行队列、多个并行队列执行时的调度控制等);通信模块负责实现客户端与服务器端之间的API传输控制机制,包括IPC通信机制或者基于TCP/IP、RDMA的通信机制。虚拟化而成的服务器端、客户端可以实际运行在同一个物理设备上,也可以运行在不同的物理设备上。
本说明书的实施例可以运行在上述应用场景的服务器端和客户端,由通信模块来在服务器端和客户端之间进行信息传递。通常负责运行机器学习模型训练或推理任务的应用程序通过调用客户端提供的API,将要执行的计算函数、计算函数的输入参数和输出参数传递给客户端,然后由客户端和服务器端协同完成本说明书实施例中的各个步骤。
在一个例子中,可以由客户端确定在机器学习模型训练或推理的一次迭代中执行的所有计算函数、计算函数的执行顺序、以及计算函数的输入参数和输出参数(即由客户端执行步骤210),然后将上述信息传递给服务器端,由服务器端负责执行后续的所有步骤(包括步骤220至步骤250,以及一些实现方式中动态调整并行队列数目的步骤)。
在另一个例子中,也可以由客户端将从API接口得到的要执行的计算函数、计算函数的输入参数和输出参数传递给服务器端,由服务器端负责执行本说明书实施例中的所有步骤。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书的一个应用示例中,在将GPU虚拟化为图4所示的模块结构后,应用程序通过调用客户端提供的API,来运行深度学习模型训练任务。应用程序按照训练任务的迭代运算中各个OP的执行顺序,来将要运行的OP、OP的输入参数和输出参数传递给客户端。
在深度学习模型训练任务的执行过程中,一次迭代中所有OP及其输入参数和输出参数会按照执行顺序循环出现。客户端可以归纳得到迭代的循环结构,从循环结构中提取出一次迭代的所有OP、OP的执行顺序以及每个OP的输入参数和输出参数。
客户端将一次迭代的所有OP、OP的执行顺序以及每个OP的输入参数和输出参数传递给服务器端。
服务器端按照OP的执行顺序,将一次迭代的所有OP截断为M个基础队列,第i个基础队列的最后一个计算函数与第(i+1)个基础队列的第一个计算函数之间不存在输入输出关系。
服务器端将N设置为2,将第3个到第M个基础队列中的OP分别添加到第1个基础队列和第2个基础队列中,生成2个并行队列,并在每个并行队列中按照执行顺序对OP进行排序。
服务器端基于每个并行队列每个OP的输入参数、与执行顺序先于该OP的另一个并行队列中各个OP的输出参数,来发现该OP对另一个并行队列中OP的函数依赖。然后在一个并行队列中OP对另一个并行队列中OP的各个函数依赖中,筛选出该并行队列对另一个并行队列的队列依赖关系。筛选条件请参见前述对步骤S230的描述,不再重复。
服务器端按照N的值创建2个计算队列(vStream)以及对应于所有队列依赖关系中函数依赖数量的事件(vEvt),在每个计算队列中分别提交一个并行队列中的OP。对具有队列依赖关系的两个OP,在被依赖的OP提交后添加vEvt,该vEvt将在该OP执行完毕后发出通知事件;在提交具有函数依赖的OP前添加对该vEvt的依赖,使得具有函数依赖的OP将在收到该vEvt的通知事件后才能启动执行。
服务器端并行执行2个并行队列,并统计2个并行队列的执行时长。
在下一次迭代运算中,服务器端将N值置为3,将第4个到第M个基础队列中的OP添加到第1个到第3个基础队列中,生成3个并行队列。服务器端发现3个并行队列的队列依赖关系,按照队列依赖关系来添加通知事件和对通知事件的依赖,并行执行3个并行队列并统计3个并行队列的执行时长。
如果3个并行队列的执行时长小于2个并行队列的执行时长,则在下一次迭代时,服务器的将N的值置为4来运行迭代运算。重复这一过程直到执行时长开始增大,或者N的值达到M。将N的值确定为执行时长最短的设置值。
在确定N的值以后,训练任务的后续迭代运算中可以不再改变N值,而一直使用执行时长最短的设置值。
本应用示例可以灵活部署在裸机、容器或虚拟机环境中。
在裸机环境,可以将服务器端和客户端都运行在主机操作系统上(例如linux),服务器端通过GPU驱动接管所有GPU的访问(包括根据配置独占使用某GPU或共享使用某GPU)。客户端如果与服务器端在同一个物理设备上,通信可以采用IPC方式;如不在同一个物理设备上,可采用TCP/IP或RDMA通信。
在容器环境中,服务器端可以以容器化方式运行,接管物理GPU,导出虚拟GPU资源。客户端可以运行在同一个物理设备上,链接服务器端,客户端与服务器端的通信可以采用IPC或者网络方式。
在典型的虚拟机环境中,GPU以直通方式被分配给指定的虚拟机。在VM guest OS(虚拟机的客机操作系统)里,启动服务器端和/或客户端,之后可以以等同于裸机环境的方式运行。
与上述流程实现对应,本说明书的实施例还提供了一种基于加速芯片的模型迭代实现装置。该装置是运行在加速芯片上的逻辑意义上的装置,通过加速芯片将对应的计算机程序指令读取到内存中运行而形成。
图5所示为本说明书实施例提供的一种基于加速芯片的模型迭代实现装置,包括循环结构单元、并行队列单元、队列依赖单元、时序控制单元和并行执行单元,其中:循环结构单元用于确定在机器学习模型训练或推理的一次迭代中执行的所有计算函数、计算函数的执行顺序、以及计算函数的输入参数和输出参数;并行队列单元用于将所有计算函数划分为N个并行队列,每个并行队列中的计算函数按照执行顺序排列;N为不小于2的自然数;队列依赖单元用于采用计算函数的输入参数和输出参数,发现所有并行队列之间相互的队列依赖关系;第一并行队列对第二并行队列的队列依赖关系包括所有满足以下条件的第一并行队列中某个第一计算函数对第二并行队列中某个第二计算函数的函数依赖:不存在执行顺序先于所述第一计算函数的第一并行队列中其他计算函数对所述第二计算函数的函数依赖,也不存在第一并行队列中执行顺序先于所述第一计算函数的其他计算函数对第二并行队列中执行顺序后于所述第二计算函数的其他计算函数的函数依赖;当所述第二计算函数是第二并行队列中输出参数包括所述第一计算函数的输入参数的计算函数中执行顺序最后的一个时,所述第一计算函数对所述第二计算函数具有函数依赖;时序控制单元用于对具有队列依赖关系的两个计算函数,在被依赖的计算函数上添加执行完毕的通知事件,在具有函数依赖的计算函数上添加对所述通知事件的依赖;并行执行单元用于并行执行所述N个并行队列。
一种是实现方式中,所述装置还包括基础队列单元,用于将按照执行顺序排列的所有计算函数截断为M个基础队列,第i个基础队列的最后一个计算函数的输出参数不包括第(i+1)个基础队列的第一个计算函数的输入参数;M为不小于2的自然数,i为从1到M-1的自然数;所述并行队列单元具体用于:将(M-N)个基础队列中的计算函数添加到其他N个基础队列中,生成N个并行队列,每个并行队列中的计算函数按照执行顺序排列;N为不大于M的自然数。
上述实现方式中,所述并行队列单元将(M-N)个基础队列中的计算函数添加到其他N个基础队列中,包括:将第(N+1)到第M个基础队列的计算函数添加到第1到第N个基础队列中。
上述实现方式中,所述装置还包括队列数目评估单元,用于将N依次设置为从2到M范围内的若干个值,统计N为各个设置值时并行执行N个队列的耗时,将耗时最少的设置值作为后续训练或推理中使用的N值。
可选的,所述装置还包括资源需求记录单元,用于在并行执行N个并行队列时,在资源需求表中记录每个计算函数的输入参数、并行队列数目、所使用加速芯片的硬件资源、以及该计算函数的执行时长;所述装置还包括队列数目查询单元,用于在将所有计算函数划分为N个并行队列前,按照各个计算函数的输入参数、所使用加速芯片的硬件资源,在资源需求表中查找对应的并行队列数目和执行时长,将使得所有计算函数的执行时长更短的并行队列数目作为N。
可选的,所述循环结构单元具体用于:在缓冲区中缓冲最近接收的L个计算函数、执行顺序以及计算函数的输入参数和输出参数,从中提取按照相同的执行顺序重复执行的若干个计算函数,作为一次迭代中执行的所有计算函数;L为不小于2倍计算函数总数目的自然数。
可选的,所述加速芯片虚拟化为客户端和服务器端;所述循环结构单元运行在客户端,其他单元运行在服务器端。
本说明书的实施例提供了一种计算机设备,该计算机设备包括存储器和加速芯片。其中,存储器上存储有能够由加速芯片运行的计算机程序;加速芯片在运行存储的计算机程序时,执行本说明书实施例中基于加速芯片的模型迭代实现方法的各个步骤。对基于加速芯片的模型迭代实现方法的各个步骤的详细描述请参见之前的内容,不再重复。
本说明书的实施例提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被加速芯片运行时,执行本说明书实施例中基于加速芯片的模型迭代实现方法的各个步骤。对基于加速芯片的模型迭代实现方法的各个步骤的详细描述请参见之前的内容,不再重复。
以上所述仅为本说明书的较佳实施例而已,并不用以限制请求保护的其他实施例,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在请求保护的范围之内。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书的实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书的实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (16)
1.一种基于加速芯片的模型迭代实现方法,包括:
确定在机器学习模型训练或推理的一次迭代中执行的所有计算函数、计算函数的执行顺序、以及计算函数的输入参数和输出参数;
将所有计算函数划分为N个并行队列,每个并行队列中的计算函数按照执行顺序排列;N为不小于2的自然数;
采用计算函数的输入参数和输出参数,发现所有并行队列之间相互的队列依赖关系;第一并行队列对第二并行队列的队列依赖关系包括所有满足以下条件的第一并行队列中某个第一计算函数对第二并行队列中某个第二计算函数的函数依赖:不存在执行顺序先于所述第一计算函数的第一并行队列中其他计算函数对所述第二计算函数的函数依赖,也不存在第一并行队列中执行顺序先于所述第一计算函数的其他计算函数对第二并行队列中执行顺序后于所述第二计算函数的其他计算函数的函数依赖;当所述第二计算函数是第二并行队列中输出参数包括所述第一计算函数的输入参数的计算函数中执行顺序最后的一个时,所述第一计算函数对所述第二计算函数具有函数依赖;
对具有队列依赖关系的两个计算函数,在被依赖的计算函数上添加执行完毕的通知事件,在具有函数依赖的计算函数上添加对所述通知事件的依赖;
并行执行所述N个并行队列。
2.根据权利要求1所述的方法,所述方法还包括:将按照执行顺序排列的所有计算函数截断为M个基础队列,第i个基础队列的最后一个计算函数的输出参数不包括第(i+1)个基础队列的第一个计算函数的输入参数;M为不小于2的自然数,i为从1到M-1的自然数;
所述将所有计算函数划分为N个并行队列,每个并行队列中的计算函数按照执行顺序排列,包括:将(M-N)个基础队列中的计算函数添加到其他N个基础队列中,生成N个并行队列,每个并行队列中的计算函数按照执行顺序排列;N为不大于M的自然数。
3.根据权利要求2所述的方法,所述将(M-N)个基础队列中的计算函数添加到其他N个基础队列中,包括:将第(N+1)到第M个基础队列的计算函数添加到第1到第N个基础队列中。
4.根据权利要求2所述的方法,所述方法还包括:将N依次设置为从2到M范围内的若干个值,统计N为各个设置值时并行执行N个队列的耗时,将耗时最少的设置值作为后续训练或推理中使用的N值。
5.根据权利要求1所述的方法,所述方法还包括:在并行执行N个并行队列时,在资源需求表中记录每个计算函数的输入参数、并行队列数目、所使用加速芯片的硬件资源、以及该计算函数的执行时长;
所述方法还包括:在将所有计算函数划分为N个并行队列前,按照各个计算函数的输入参数、所使用加速芯片的硬件资源,在资源需求表中查找对应的并行队列数目和执行时长,将使得所有计算函数的执行时长更短的并行队列数目作为N。
6.根据权利要求1所述的方法,所述确定在机器学习模型训练或推理的一次迭代中执行的所有计算函数、计算函数的执行顺序、以及计算函数的输入参数和输出参数,包括:在缓冲区中缓冲最近接收的L个计算函数、执行顺序以及计算函数的输入参数和输出参数,从中提取按照相同的执行顺序重复执行的若干个计算函数,作为一次迭代中执行的所有计算函数;L为不小于2倍计算函数总数目的自然数。
7.根据权利要求1所述的方法,所述加速芯片虚拟化为客户端和服务器端;
所述确定在机器学习模型训练或推理的一次迭代中执行的所有计算函数、计算函数的执行顺序、以及计算函数的输入参数和输出参数的步骤,由应用客户端执行,后续步骤由加速服务端执行。
8.一种基于加速芯片的模型迭代实现装置,包括:
循环结构单元,用于确定在机器学习模型训练或推理的一次迭代中执行的所有计算函数、计算函数的执行顺序、以及计算函数的输入参数和输出参数;
并行队列单元,用于将所有计算函数划分为N个并行队列,每个并行队列中的计算函数按照执行顺序排列;N为不小于2的自然数;
队列依赖单元,用于采用计算函数的输入参数和输出参数,发现所有并行队列之间相互的队列依赖关系;第一并行队列对第二并行队列的队列依赖关系包括所有满足以下条件的第一并行队列中某个第一计算函数对第二并行队列中某个第二计算函数的函数依赖:不存在执行顺序先于所述第一计算函数的第一并行队列中其他计算函数对所述第二计算函数的函数依赖,也不存在第一并行队列中执行顺序先于所述第一计算函数的其他计算函数对第二并行队列中执行顺序后于所述第二计算函数的其他计算函数的函数依赖;当所述第二计算函数是第二并行队列中输出参数包括所述第一计算函数的输入参数的计算函数中执行顺序最后的一个时,所述第一计算函数对所述第二计算函数具有函数依赖;
时序控制单元,用于对具有队列依赖关系的两个计算函数,在被依赖的计算函数上添加执行完毕的通知事件,在具有函数依赖的计算函数上添加对所述通知事件的依赖;
并行执行单元,用于并行执行所述N个并行队列。
9.根据权利要求8所述的装置,所述装置还包括:基础队列单元,用于将按照执行顺序排列的所有计算函数截断为M个基础队列,第i个基础队列的最后一个计算函数的输出参数不包括第(i+1)个基础队列的第一个计算函数的输入参数;M为不小于2的自然数,i为从1到M-1的自然数;
所述并行队列单元具体用于:将(M-N)个基础队列中的计算函数添加到其他N个基础队列中,生成N个并行队列,每个并行队列中的计算函数按照执行顺序排列;N为不大于M的自然数。
10.根据权利要求9所述的装置,所述并行队列单元将(M-N)个基础队列中的计算函数添加到其他N个基础队列中,包括:将第(N+1)到第M个基础队列的计算函数添加到第1到第N个基础队列中。
11.根据权利要求9所述的装置,所述装置还包括:队列数目评估单元,用于将N依次设置为从2到M范围内的若干个值,统计N为各个设置值时并行执行N个队列的耗时,将耗时最少的设置值作为后续训练或推理中使用的N值。
12.根据权利要求8所述的装置,所述装置还包括:资源需求记录单元,用于在并行执行N个并行队列时,在资源需求表中记录每个计算函数的输入参数、并行队列数目、所使用加速芯片的硬件资源、以及该计算函数的执行时长;
所述装置还包括:队列数目查询单元,用于在将所有计算函数划分为N个并行队列前,按照各个计算函数的输入参数、所使用加速芯片的硬件资源,在资源需求表中查找对应的并行队列数目和执行时长,将使得所有计算函数的执行时长更短的并行队列数目作为N。
13.根据权利要求8所述的装置,所述循环结构单元具体用于:在缓冲区中缓冲最近接收的L个计算函数、执行顺序以及计算函数的输入参数和输出参数,从中提取按照相同的执行顺序重复执行的若干个计算函数,作为一次迭代中执行的所有计算函数;L为不小于2倍计算函数总数目的自然数。
14.根据权利要求8所述的装置,所述加速芯片虚拟化为客户端和服务器端;
所述循环结构单元运行在客户端,其他单元运行在服务器端。
15.一种计算机设备,包括:存储器和加速芯片;所述存储器上存储有可由加速芯片运行的计算机程序;所述加速芯片运行所述计算机程序时,执行如权利要求1到7任意一项所述的步骤。
16.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被加速芯片运行时,执行如权利要求1到7任意一项所述的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010937393.4A CN112101565B (zh) | 2020-09-08 | 2020-09-08 | 基于加速芯片的模型迭代实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010937393.4A CN112101565B (zh) | 2020-09-08 | 2020-09-08 | 基于加速芯片的模型迭代实现方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112101565A true CN112101565A (zh) | 2020-12-18 |
CN112101565B CN112101565B (zh) | 2023-07-11 |
Family
ID=73752010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010937393.4A Active CN112101565B (zh) | 2020-09-08 | 2020-09-08 | 基于加速芯片的模型迭代实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112101565B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190187718A1 (en) * | 2017-12-18 | 2019-06-20 | GM Global Technology Operations LLC | Detecting features from multi-modal images |
CN110554909A (zh) * | 2019-09-06 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 任务的调度处理方法、装置及计算机设备 |
CN111290842A (zh) * | 2018-12-10 | 2020-06-16 | 北京京东尚科信息技术有限公司 | 一种任务执行方法和装置 |
-
2020
- 2020-09-08 CN CN202010937393.4A patent/CN112101565B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190187718A1 (en) * | 2017-12-18 | 2019-06-20 | GM Global Technology Operations LLC | Detecting features from multi-modal images |
CN111290842A (zh) * | 2018-12-10 | 2020-06-16 | 北京京东尚科信息技术有限公司 | 一种任务执行方法和装置 |
CN110554909A (zh) * | 2019-09-06 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 任务的调度处理方法、装置及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112101565B (zh) | 2023-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11593365B2 (en) | Splitting a time-range query into multiple sub-queries for serial execution | |
CN110162413B (zh) | 事件驱动方法及装置 | |
AU2019201544B2 (en) | Distributed multiple tier multi-node serverless framework for complex analytics task execution | |
Vats et al. | Performance evaluation of K-means clustering on Hadoop infrastructure | |
US11016971B2 (en) | Splitting a time-range query into multiple sub-queries for parallel execution | |
US20180150326A1 (en) | Method and apparatus for executing task in cluster | |
JP7039631B2 (ja) | アクセスリクエストを管理するための方法、装置、デバイス、および記憶媒体 | |
US11061729B2 (en) | Throttling logging processes | |
US10862765B2 (en) | Allocation of shared computing resources using a classifier chain | |
US20180341516A1 (en) | Processing jobs using task dependencies | |
US10296390B2 (en) | Feedback mechanism for controlling dispatching work tasks in a multi-tier storage environment | |
CN112507330A (zh) | 一种基于分布式沙箱的恶意软件检测系统 | |
JP5030647B2 (ja) | 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム | |
EP3553658A1 (en) | Distributed multiple tier multi-node serverless framework for complex analytics task execution | |
CN113407343A (zh) | 一种基于资源分配的业务处理方法、装置及设备 | |
US20230325149A1 (en) | Data processing method and apparatus, computer device, and computer-readable storage medium | |
CN112101565B (zh) | 基于加速芯片的模型迭代实现方法和装置 | |
CN109976905B (zh) | 内存管理方法、装置和电子设备 | |
CN107493205B (zh) | 一种设备集群扩容性能预测方法及装置 | |
KR102413924B1 (ko) | 복수의 컴퓨팅 노드를 이용한 고성능 클라우드 서비스 시스템에서의 프로세스 그룹 관리 방법 및 그 시스템 | |
CN114691873A (zh) | 自动驾驶日志数据的语义化处理方法、装置及存储介质 | |
Martínez-Castaño et al. | Building python-based topologies for massive processing of social media data in real time | |
US11340949B2 (en) | Method and node for managing a request for hardware acceleration by means of an accelerator device | |
KR20220071895A (ko) | 오토 스케일링 방법, 장치 및 시스템 | |
US9697036B2 (en) | Method and apparatus for generating unique identifier for distributed computing environment |
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 |