CN114840352A - 分批处理机器学习模型的输入 - Google Patents
分批处理机器学习模型的输入 Download PDFInfo
- Publication number
- CN114840352A CN114840352A CN202210301067.3A CN202210301067A CN114840352A CN 114840352 A CN114840352 A CN 114840352A CN 202210301067 A CN202210301067 A CN 202210301067A CN 114840352 A CN114840352 A CN 114840352A
- Authority
- CN
- China
- Prior art keywords
- input
- machine learning
- inputs
- learning model
- batch
- 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.)
- Pending
Links
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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Machine Translation (AREA)
Abstract
用于分批处理机器学习模型的输入的方法、系统和装置,包括在计算机存储介质上编码的计算机程序。所述方法中的一种包括:接收请求流,每个请求识别相应的输入以供由第一机器学习模型处理;将来自每个请求的所述相应的输入添加到输入的第一队列以供由所述第一机器学习模型处理;在第一时间确定到所述第一时间时为止所述第一队列中的输入的计数等于或者超过最大批大小,并且作为响应:从到所述第一时间时为止所述队列中的所述输入生成第一成批输入,使得所述第一成批输入中的输入的计数等于所述最大批大小,并且提供所述第一成批输入以供由所述第一机器学习模型处理。
Description
分案说明
本申请属于申请日为2016年12月21日的中国发明专利申请201680084418.2的分案申请。
技术领域
本说明书涉及使用机器学习模型来处理输入。
背景技术
机器学习模型接收输入并且基于所接收到的输入生成输出,例如预测的输出。一些机器学习模型是参数模型并且基于所接收到的输入且基于模型的参数值生成输出。
一些机器学习模型是采用模型的多个层来为所接收到的输入生成输出的深度模型。例如,深度神经网络包括输出层和一个或多个隐藏层,所述一个或多个隐藏层各自对所接收到的输入应用非线性变换以生成输出。
发明内容
一般而言,本说明书描述一种用于分批处理机器学习模型的输入的系统。
可借助于安装在系统上的软件、固件、硬件或其组合来如此配置一个或多个计算机的系统,所述软件、固件、硬件或其组合在操作中使系统执行动作。可借助于具有指令来如此配置一个或多个计算机程序,所述指令当由数据处理装置执行时,使该装置执行动作。
可实现本说明书中描述的主题的特定实施例以便实现以下优点中的一个或多个。通过像本说明书中所描述的那样分批处理机器学习模型的输入,可更有效地使用由系统使用来执行模型的操作的硬件资源,同时确保不超过最大可接受的等待时间。特别地,可优化高吞吐量硬件资源,例如图形处理单元(GPU)和其它硬件加速器,同时维持可接受的等待时间。在系统维护多个机器学习模型的情形下,可有效地分批处理用于那些模型中的每一个的输入。通过为多个机器学习模型中的每一个维护相应的队列,可有效地实现可被系统用于处理机器学习输入的硬件加速器的虚拟化。
在下面的附图和描述中阐述本说明书的主题的一个或多个实施例的细节。根据说明书、附图和权利要求书,主题的其它特征、方面和优点将变得显而易见。
附图说明
图1图示示例机器学习系统。
图2是用于分批处理输入以供由机器学习模型处理的示例过程的流程图。
图3是用于为多个机器学习模型中的每一个维护相应的队列的示例过程的流程图。
在各个附图中相似的附图标记和名称指示相似的元件。
具体实施方式
本说明书一般地描述在输入被机器学习模型处理之前分批处理机器学习模型的输入的系统。
图1图示示例机器学习系统100。机器学习系统100是作为计算机程序实现在一个或多个位置中的一个或多个计算机上的系统的示例,在所述一个或多个位置中可实现在下面描述的系统、组件和技术。
机器学习系统100是提供由机器学习模型响应于来自远离机器学习系统100定位的用户的请求而生成的模型输出的系统。
例如,用户设备104的用户102可通过数据通信网络112(例如,局域网(LAN)或广域网(WAN)(例如,因特网)或这些网络的组合,所述网络中的任一个可以包括无线链路)向机器学习系统100提交包括要由机器学习模型120A处理的输入114的请求。
作为响应,机器学习系统100可通过使用机器学习模型120A来处理输入114而针对输入114生成模型输出128,并且然后提供模型输出128作为对请求的响应的一部分。
因此,机器学习系统100可允许用户利用机器学习模型120A和由机器学习系统100维护的任何其它机器学习模型的预测能力,而不必使训练并维护机器学习模型所必需的本地计算资源可用或者不必具有训练并维护机器学习模型所需要的知识。
特别地,机器学习系统100包括模型处理系统110,所述模型处理系统110维护机器学习模型120A以及可选地其它机器学习模型,例如,机器学习模型120N,以用于处理在由机器学习系统100的用户提交的请求中接收到的输入时使用。
在一些实施方式中,模型处理系统110是将给定维护的机器学习模型的操作表示为包括通过有向边连接的节点的计算图的系统。计算图中的每个节点表示一个操作。到节点的进入边表示到节点中的输入流,即,由节点表示的操作的输入。来自节点的传出边表示由该节点表示的操作的输出流以被用作由另一节点表示的操作的输入。因此,将图中的第一节点连接到图中的第二节点的有向边指示通过由第一节点表示的操作生成的输出被用作由第二节点表示的操作的输入。
为了使用机器学习模型来处理输入,模型处理系统110跨越多个设备分发由图中的节点表示的操作并且使这些设备通过执行由节点表示的操作来共同地处理输入。
一般地,设备是独立于其它设备而执行操作的硬件资源。例如,每个设备可具有它自己的处理单元。设备可以是图形处理单元(GPU)或中央处理单元(CPU)。作为图示,一个机器可托管一个或多个设备,例如多个CPU和GPU。
在http://download.tensorflow.org/paper/whitepaper2015.pdf处可获得的Martin Abadi等人的TensorFlow:Large-Scale Machine Learning on HeterogeneousDistributed Systems中描述了跨越多个设备分发由计算图的节点表示的操作以处理机器学习模型的输入的示例系统。
为了优化可被模型处理系统110利用的硬件资源(例如,设备)的使用,模型处理系统110通过由模型处理系统110所维护的机器学习模型中的每一个来支持成批输入的处理。
用于给定机器学习模型的成批输入是多个单独的输入的组合,对所述多个单独的输入并行地执行机器学习模型的操作中的至少一些。
例如,如果机器学习模型是包括将参数矩阵乘以从网络的当前输入生成的层输入作为生成层输出的一部分的操作的神经网络,则可对于给定成批输入中的每个单独的输入并行地执行矩阵乘法。
在一些实施方式中,机器学习模型将成批输入作为单个输入来处理,即,对于成批输入并行地执行机器学习模型的所有操作。
通过使用机器学习模型来处理成批输入,模型处理系统110生成对于成批输入中的每个输入包括相应的模型输出的成批输出。
一般地,机器学习模型的每个输入和由机器学习模型生成的每个模型输出是张量。张量是数值或其它值(例如,字符串)的多维数组,所述数值或其它值具有与数组的维度对应的具体阶。例如,标量值是0阶张量,数值的矢量是1阶张量,并且矩阵是2阶张量。
取决于单独的输入的配置,成批输入可以是由单独的张量组成的单个高阶张量,或者是具有与单独的张量相同的阶但是为单独的张量的级联的单个张量。假设成批输入是单个张量,所对应的成批输出也可以是单个张量,并且模型处理系统110可以跟踪单个输出张量的哪一个部分表示针对哪一个单独的输入张量的模型输出。
为了生成成批输入以供由模型处理系统110处理,机器学习系统100也包括分批处理系统130。
分批处理系统130维护用于由模型处理系统110所维护的每个机器学习模型的队列,例如,用于机器学习模型120A的队列140A,以及可选地,用于机器学习模型120N的队列140N。每个队列包括被接收以供由所对应的机器学习模型处理的输入。
当对于给定队列中的请求来说满足某些准则时,分批处理系统130从队列中的输入生成成批输入并且将成批输入提供给模型处理系统110以供由所对应的机器学习模型处理,例如,提供成批输入136以供由机器学习模型120A处理。在下面参考图2对生成成批输入进行描述。
模型处理系统110使用所对应的机器学习模型来处理成批输入以生成成批输出,例如,针对使用机器学习模型120A生成的成批输入136的成批输出138,并且将成批输出提供给分批处理系统130。
分批处理系统130提供包括在成批输入中的每个单独的模型输出作为对所对应的请求的响应。也就是说,分批处理系统130提供每个单独的模型输出作为对被包括在为其生成模型输出的输入中的请求的响应。
一般地,模型处理系统110分配一个或多个线程来处理由分批处理系统130生成的成批输入。在一些情况下,线程是允许分批处理系统130与模型处理系统110对接的客户端线程。在一些其它情况下,线程直接地表示可被模型处理系统110利用来处理成批输入的硬件资源的分配。
在分批处理系统130管理用于多个机器学习模型的队列的实施方式中,当线程变得可用时,分批处理系统130选择机器学习模型并且将成批输入调度给所选择的机器学习模型以供由可用线程处理。在下面参考图3对选择机器学习模型进行更详细的描述。
图2是用于分批处理输入以供由机器学习模型处理的示例过程200的流程图。为了方便,过程200将被描述为由位于一个或多个位置中的一个或多个计算机的系统来执行。例如,适当地编程的机器学习系统(例如,图1的机器学习系统100)可执行过程200。
系统接收各自包括输入以供由机器学习模型处理的请求流(步骤202)。
系统将每个输入添加到输入的队列以供由机器学习模型处理(步骤204)。也就是说,系统维护特定于机器学习模型并且包括尚待处理的机器学习模型的输入的队列,并且将机器学习模型的每个输入添加到所维护的队列。
在指定时间,系统确定是否从队列中的输入生成成批输入。例如,系统可确定是否每当新的输入被添加到队列时、每当自进行最后确定以来指定数目的输入已被添加到队列时或者以指定时间间隔生成成批输入。
特别地,为了在每个指定时间进行确定,系统确定到指定时间时为止队列中的输入的计数是否等于最大批大小(步骤206)。
在一些实施方式中,最大批大小由系统管理员或另一实体指定。在其它实施方式中,系统基于机器学习模型的架构并且基于可用硬件资源的特性来确定用于机器学习模型的最大批大小。例如,给定在由机器学习模型处理输入期间处理的张量的大小,系统可将最大批大小确定为使可用硬件资源的吞吐量最大化的值。
如果在队列中存在比最大批大小少的输入,则系统确定队列中的最旧输入(即,被最近添加到队列的输入)是否太旧(步骤208)。特别地,系统确定队列中的最旧输入是否比等待时间参数旧。一般地,等待时间参数是由系统管理员或其它实体指定的值,所述值定义可在请求被系统接收的时间与对请求的响应由系统传送的时间之间接受多少等待时间。
如果在队列中存在比最大批大小少的输入并且队列中的最旧输入不太旧,则系统避免生成成批输入,并且,在下一个指定时间,系统再次确定是否从队列中的输入生成成批输入,即,系统返回到下一个指定时间执行步骤206。
如果队列中的输入的计数等于或者超过最大批大小或者如果在队列中存在比最大批大小少的输入并且队列中的最旧输入不太旧,则系统从队列中的输入生成成批输入(步骤210)。
如果队列中的输入的计数等于或者超过最大批大小,则系统生成成批输入,使得成批输入中的输入的计数等于最大批大小,即,生成包括队列中的N个最旧输入的成批输入,其中N是最大批大小。
如果队列中的输入的计数小于最大值但是队列中的最旧输入太旧,则系统生成包括队列中的所有输入但是具有比最大批大小少的输入的成批输入。通过即使输入的计数小于最大批大小也在最旧输入超过等待时间参数时生成批量输入,系统可在处理机器学习模型的输入时维护可接受水平的等待时间。
在一些实施方式中,系统生成包括到指定时间时为止队列中的所有输入的成批输入并且将所生成的成批输入视为要由机器学习模型处理的最终成批输入。
在一些其它实施方式中,系统在所生成的成批输入被处理之前修改它。特别地,在一些硬件平台上,每个不同的批大小引发资源,例如,模型的编译时间和/或存储已编译的模型的存储器。为了说明这个,在这些实施方式中,系统维护识别小于最大大小的多个可接受的批大小的数据,并且由机器学习模型处理的每个成批输入具有等于最大批大小的大小或可接受的批大小中的一个的大小。通过仅生成具有可接受的批大小中的一个或最大批大小的批,可减少由系统使用的资源同时仍然确保可接受的等待时间。
在这些实施方式中,系统确定所生成的成批输入中的输入的计数是否在两个可接受的批大小之间,即,大于第一可接受的批大小并且小于第二可接受的批大小,而不是等于可接受的批大小中的任一个。如果是的话,则系统将占位符输入添加到成批输入,使得成批输入中的输入的计数等于第二可接受的批大小。占位符输入可以是例如来自队列的已经被包括在所生成的成批输入中的输入的副本。例如,系统可以从成批输入中的输入中随机选择一个输入并且复制该输入,直到成批输入中的输入的计数等于第二可接受的批大小为止。
一旦系统已生成成批输入,系统就提供成批输入以供由机器学习模型处理(步骤212)。
在已使用机器学习模型处理了成批输入以为成批输入中的每个单独的输入生成相应的模型输出之后,系统响应于所对应的请求而提供模型输出。在系统将占位符输入添加到成批输入的情况下,系统丢弃为占位符输入而生成的模型输出。
如上所述,在一些实施方式中,系统为多个机器学习模型中的每一个维护相应的队列。
例如,系统可以维护多个模型以适应对维护模型(即,从版本1开始、然后得以升级到版本2并且随着时间的推移而依次类推的模型)的滚动升级。每个版本可以具有已被调整以更好地与最新的训练数据匹配的参数。在从版本i升级到i+1的同时,由系统接收到的一些请求可以旨在供版本i使用,然而其它请求可能已经旨在供版本i+1使用。为了说明这个,系统同时地为对两个版本的请求服务。
维护模型中的每一个均可以具有与其它维护模型不同的最大批大小、不同的可接受的批大小或不同的等待时间参数中的一个或多个。
管理由机器学习模型对输入的处理的模型处理系统可以分配一个或多个客户端线程或一个或多个处理线程以用于处理由系统生成的成批输入。在这些实施方式中,系统对来自多个队列的成批输入进行调度以进行处理并且在线程变得可用时提供下一个调度的批输入。
图3是用于为多个机器学习模型中的每一个维护相应的队列的示例过程300的流程图。为了方便,过程300将被描述为由位于一个或多个位置中的一个或多个计算机的系统来执行。例如,适当地编程的机器学习系统(例如,图1的机器学习系统100)可执行过程300。
系统为多个机器学习模型中的每一个维护相应的队列(步骤302)。也就是说,每个队列仅包括要由所对应的机器学习模型处理的输入,而不包括要由通过系统维护的其它机器学习模型处理的输入。
系统确定线程已变得可用于处理成批输入(步骤304)。也就是说,系统确定被分配用于处理由系统生成的成批输入的线程已变得可用于处理新的成批输入。
系统选择多个机器学习模型中的一个(步骤306)并且从用于所选择的机器学习模型的队列中提供成批输入以用于使用线程来处理(步骤308)。
系统可以各种方式中的任一种选择机器学习模型。
例如,在一些实施方式中,系统允许机器学习模型中的每一个平等访问可被系统利用的线程。在这些实施方式中,系统可使用循环调度(round robin scheduling)或向每个维护的机器学习模型给予平等访问的另一调度算法来在可用线程上对成批输入进行调度。
然而,在一些其它实施方式中,某些机器学习模型优于由系统维护的其它机器学习模型被给予优先权。在这些实施方式中,系统可使用比其它维护的机器学习模型更频繁地选择优先化机器学习模型的调度方案来选择机器学习模型。例如,如果系统维护模型A和模型B,则系统可以对成批输入进行调度如下:AABAABAAB,依此类推,即,使得模型A被选择的频率是模型B的两倍。
本说明书中描述的主题和功能操作的实施例可用数字电子电路、用有形地具体实现的计算机软件或固件、用计算机硬件(包括本说明书中公开的结构及其结构等同物)或者用它们中的一个或多个的组合加以实现。本说明书中描述的主题的实施例可作为一个或多个计算机程序(即,编码在有形非暂时性程序载体上以供由数据处理装置执行或者控制数据处理装置的操作的计算机程序指令的一个或多个模块)被实现。可替选地或此外,可将程序指令编码在人工生成的传播信号(例如,机器生成的电、光或电磁信号)上,所述信号被生成来对信息进行编码以便传输到适合的接收器装置以供由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备,或它们中的一个或多个的组合。然而,计算机存储介质不是传播信号。
术语“数据处理装置”包含用于处理数据的所有种类的装置、设备和机器,作为示例包括可编程处理器、计算机或多个处理器或计算机。装置可包括专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。装置除了包括硬件之外,还可包括为所述计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
计算机程序(其也可以被称为或者描述为程序、软件、软件应用、模块、软件模块、脚本或代码)可用任何形式的编程语言编写,所述编程语言包括编译或解释语言或声明或过程语言,并且它可被以任何形式部署,包括作为独立程序或者作为模块、组件、子例行程序或适合于在计算环境中使用的其它单元。计算机程序可以但不必对应于文件系统中的文件。可在保持其它程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、在专用于所述程序的单个文件中或者在多个协调文件(例如,存储一个或多个模块、子程序或代码的各部分的文件)中存储程序。可将计算机程序部署成在一个计算机上或者在位于一个站点处或者分布在多个站点上并且通过通信网络互连的多个计算机上执行。
如本说明书中所使用的,“引擎”或“软件引擎”指代提供与输入不同的输出的软件实现的输入/输出系统。引擎可以是功能性的编码块,诸如库、平台、软件开发套件(“SDK”)或对象。可在包括一个或多个处理器和计算机可读介质的任何适当类型的计算设备上实现每个引擎,所述计算设备例如服务器、移动电话、平板计算机、笔记本计算机、音乐播放器、电子书阅读器、膝上型或台式计算机、PDA、智能电话或其它固定或便携式设备。附加地,可以在相同的计算设备上或者在不同的计算设备上实现两个或更多个引擎。
本说明书中描述的过程和逻辑流程可通过一个或多个可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能而被执行。过程和逻辑流程也可由专用逻辑电路执行,并且装置也可作为专用逻辑电路被实现,所述专用逻辑电路例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
作为示例,适合于执行计算机程序的计算机包括可基于通用微处理器或专用微处理器或两者,或任何其它种类的中央处理单元。一般地,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的必要元件是用于执行或者实行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。一般地,计算机还将包括或者在操作上耦合以从用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘)接收数据或者将数据传送到用于存储数据的一个或多个大容量存储设备,或者兼而有之。然而,计算机不必具有此类设备。此外,计算机可被嵌入在另一设备(例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪速驱动器)等)中。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,作为示例包括半导体存储器设备,例如,EPROM、EEPROM和闪速存储器设备;磁盘,例如,内部硬盘或可移动盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充,或者并入专用逻辑电路。
为了提供与用户的交互,可在计算机上实现本说明书中描述的主题的实施例,所述计算机具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)监视器、LCD(液晶显示器)监视器或OLED显示器)以及用于向该计算机提供输入的输入设备,例如,键盘、鼠标或存在敏感显示器或其它表面。其它种类的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以任何形式接收来自用户的输入,包括声学、语音或触觉输入。此外,计算机可通过向由用户使用的设备发送资源并且从由用户使用的设备接收资源来与用户交互;例如,通过响应于从web浏览器接收到的请求而向用户的客户端设备上的web浏览器发送web页面。
可在计算系统中实现本说明书中描述的主题的实施例,所述计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有用户可用来与本说明书中描述的主题的实施方式交互的图形用户界面或Web浏览器的客户端计算机),或者包括一个或多个此类后端、中间件或前端组件的任何组合。系统的组件可通过任何形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如,因特网。
计算系统可包括客户端和服务器。客户端和服务器一般地彼此远离并且通常通过通信网络来交互。客户端和服务器的关系借助于在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。
虽然本说明书包含许多具体实施方式细节,但是这些不应该被解释为对任何发明的或可以要求保护的范围构成限制,而是相反被解释为可能特定于特定发明的特定实施例的特征的描述。也可在单个实施例中相结合地实现在本说明书中在单独的实施例的上下文中描述的某些特征。相反地,也可在多个实施例中单独地或者按照任何适合的子组合实现在单个实施例的上下文中描述的各种特征。此外,尽管特征可以在上面被描述为按照某些组合起作用并且甚至最初如此要求保护,但是可在一些情况下从要求保护的组合中去除来自该组合的一个或多个特征,并且要求保护的组合可以涉及子组合或子组合的变化。
类似地,虽然在附图中按照特定次序描绘操作,但是这不应该被理解为要求按照所示特定次序或者按照顺序次序执行此类操作,或者要求执行所有图示的操作以实现所希望的结果。在某些情况下,多任务处理和并行处理可以是有利的。此外,上述的实施例中的各种系统模块和组件的分离不应该被理解为在所有实施例中要求这种分离,并且应该理解的是,所描述的程序组件和系统通常可一般地被一起集成在单个软件产品中或者包装到多个软件产品中。
已经描述了主题的特定实施例。其它实施例在以下权利要求的范围内。例如,权利要求中叙述的动作可被按照不同的次序执行并仍然实现所希望的结果。作为一个示例,附图中描绘的过程不一定要求所示的特定次序或顺序次序来实现期望的结果。在某些实施方式中,多任务处理和并行处理可以是有利的。
Claims (7)
1.一种分批处理机器学习模型的输入的方法,包括:
接收请求流,每个请求识别相应的输入以供由第一机器学习模型处理;
将来自每个请求的所述相应的输入添加到输入的第一队列以供由所述第一机器学习模型处理;
在第一时间确定到所述第一时间时为止所述第一队列中的输入的计数等于或者超过最大批大小,并且作为响应:
从到所述第一时间时为止所述队列中的所述输入生成第一成批输入,使得所述第一成批输入中的输入的计数等于所述最大批大小,并且
提供所述第一成批输入以供由所述第一机器学习模型处理,其中所述第一机器学习模型利用计算图系统来管理对输入的处理;以及
在第二时间确定(i)到所述第二时间时为止所述队列中的输入的计数小于所述最大批大小但是(ii)所述队列中的最旧输入比等待时间参数旧,并且作为响应:
从到所述第二时间时为止所述队列中的所述输入生成第二成批输入,使得所述第二成批输入中的输入的计数小于所述最大批大小,并且
提供所述第二成批输入以供由所述第一机器学习模型处理;
其中,所述计算图系统将所述第一机器学习模型在给定成批输入的处理期间的操作表示为计算图,所述计算图包括多个节点和有向边,每个节点表示相应的操作,每个有向边将相应的第一节点连接到相应的第二节点,所述相应的第二节点表示接收由所述相应的第一节点表示的操作的输出作为输入的操作;
并且其中,所述方法进一步包括:
维护包括所述第一队列的多个队列,其中,每个队列与来自多个机器学习模型的相应的机器学习模型对应;
确定线程已变得可用于由所述多个机器学习模型中的一个机器学习模型处理成批输入;以及
从所述多个机器学习模型中选择所述第一机器学习模型,并且作为响应,提供所述第一成批输入以供在已变得可用的所述线程上处理;以及
基于可用于处理所述机器学习模型的输入的硬件资源的特性和所述机器学习模型的架构来确定所述最大批大小。
2.根据权利要求1所述的方法,其中,生成所述第二成批输入包括:
确定所述第二成批输入中的所述输入的计数大于第一可接受的批大小且小于第二可接受的批大小,并且作为响应,将占位符输入添加到所述第二成批输入,使得所述第二成批输入中的所述输入的计数等于所述第二可接受的批大小。
3.根据权利要求2所述的方法,其中,每个占位符输入是已经在所述第二成批输入中的相应的输入的副本。
4.根据权利要求1所述的方法,其中,所述计算图系统通过在多个设备之中指派由所述计算图中的所述节点表示的所述操作来处理成批输入。
5.根据权利要求1所述的方法,其中,提供所述第一成批输入以供由所述第一机器学习模型处理包括将所述第一成批输入提供给所述计算图系统,并且其中,提供所述第二成批输入以供由所述第一机器学习模型处理包括将所述第二成批输入提供给所述计算图系统。
6.一种包括一个或多个计算机和存储指令的一个或多个存储设备的系统,所述指令当由所述一个或多个计算机执行时,使所述一个或多个计算机执行根据权利要求1-5中任一项所述的方法。
7.一种或多种存储指令的非暂时性计算机存储介质,所述指令当由一个或多个计算机执行时,使所述一个或多个计算机执行根据权利要求1-5中任一项所述的方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/091,381 | 2016-04-05 | ||
US15/091,381 US10789544B2 (en) | 2016-04-05 | 2016-04-05 | Batching inputs to a machine learning model |
PCT/US2016/068090 WO2017176333A1 (en) | 2016-04-05 | 2016-12-21 | Batching inputs to a machine learning model |
CN201680084418.2A CN108885571B (zh) | 2016-04-05 | 2016-12-21 | 分批处理机器学习模型的输入 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680084418.2A Division CN108885571B (zh) | 2016-04-05 | 2016-12-21 | 分批处理机器学习模型的输入 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114840352A true CN114840352A (zh) | 2022-08-02 |
Family
ID=57794380
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680084418.2A Active CN108885571B (zh) | 2016-04-05 | 2016-12-21 | 分批处理机器学习模型的输入 |
CN202210301067.3A Pending CN114840352A (zh) | 2016-04-05 | 2016-12-21 | 分批处理机器学习模型的输入 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680084418.2A Active CN108885571B (zh) | 2016-04-05 | 2016-12-21 | 分批处理机器学习模型的输入 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10789544B2 (zh) |
EP (1) | EP3430511A1 (zh) |
CN (2) | CN108885571B (zh) |
WO (1) | WO2017176333A1 (zh) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11004010B2 (en) * | 2016-12-30 | 2021-05-11 | eSentire, Inc. | Processing real-time processing requests using machine learning models |
WO2018144534A1 (en) * | 2017-01-31 | 2018-08-09 | The Regents Of The University Of California | Hardware-based machine learning acceleration |
WO2018176000A1 (en) | 2017-03-23 | 2018-09-27 | DeepScale, Inc. | Data synthesis for autonomous control systems |
US11893393B2 (en) | 2017-07-24 | 2024-02-06 | Tesla, Inc. | Computational array microprocessor system with hardware arbiter managing memory requests |
US10671349B2 (en) | 2017-07-24 | 2020-06-02 | Tesla, Inc. | Accelerated mathematical engine |
US11157441B2 (en) | 2017-07-24 | 2021-10-26 | Tesla, Inc. | Computational array microprocessor system using non-consecutive data formatting |
US11409692B2 (en) | 2017-07-24 | 2022-08-09 | Tesla, Inc. | Vector computational unit |
CN109840597B (zh) * | 2017-11-28 | 2023-04-07 | 珠海市君天电子科技有限公司 | 一种模型预测方法、装置、电子设备及存储介质 |
US10360482B1 (en) * | 2017-12-04 | 2019-07-23 | Amazon Technologies, Inc. | Crowd-sourced artificial intelligence image processing services |
CN109496319A (zh) * | 2018-01-15 | 2019-03-19 | 深圳鲲云信息科技有限公司 | 人工智能处理装置硬件优化方法、系统、存储介质、终端 |
US11561791B2 (en) | 2018-02-01 | 2023-01-24 | Tesla, Inc. | Vector computational unit receiving data elements in parallel from a last row of a computational array |
US11836576B2 (en) | 2018-04-13 | 2023-12-05 | International Business Machines Corporation | Distributed machine learning at edge nodes |
US11948073B2 (en) * | 2018-04-20 | 2024-04-02 | Advanced Micro Devices, Inc. | Machine learning inference engine scalability |
US11215999B2 (en) | 2018-06-20 | 2022-01-04 | Tesla, Inc. | Data pipeline and deep learning system for autonomous driving |
US11361457B2 (en) | 2018-07-20 | 2022-06-14 | Tesla, Inc. | Annotation cross-labeling for autonomous control systems |
US11636333B2 (en) | 2018-07-26 | 2023-04-25 | Tesla, Inc. | Optimizing neural network structures for embedded systems |
US11562231B2 (en) | 2018-09-03 | 2023-01-24 | Tesla, Inc. | Neural networks for embedded devices |
CN113039556B (zh) | 2018-10-11 | 2022-10-21 | 特斯拉公司 | 用于使用增广数据训练机器模型的系统和方法 |
US11196678B2 (en) | 2018-10-25 | 2021-12-07 | Tesla, Inc. | QOS manager for system on a chip communications |
US11320995B2 (en) * | 2018-10-31 | 2022-05-03 | Western Digital Technologies, Inc. | Transferring computational operations to controllers of data storage devices |
US11769041B2 (en) | 2018-10-31 | 2023-09-26 | Advanced Micro Devices, Inc. | Low latency long short-term memory inference with sequence interleaving |
US11816585B2 (en) | 2018-12-03 | 2023-11-14 | Tesla, Inc. | Machine learning models operating at different frequencies for autonomous vehicles |
US11537811B2 (en) | 2018-12-04 | 2022-12-27 | Tesla, Inc. | Enhanced object detection for autonomous vehicles based on field view |
CN110033091B (zh) | 2018-12-13 | 2020-09-01 | 阿里巴巴集团控股有限公司 | 一种基于模型进行预测的方法和装置 |
JP6832329B2 (ja) * | 2018-12-18 | 2021-02-24 | 富士通株式会社 | データ構造 |
CN111353575A (zh) | 2018-12-20 | 2020-06-30 | 超威半导体公司 | 用于卷积神经网络的图块化格式 |
US11610117B2 (en) | 2018-12-27 | 2023-03-21 | Tesla, Inc. | System and method for adapting a neural network model on a hardware platform |
US11989013B2 (en) * | 2019-01-18 | 2024-05-21 | Nec Corporation | Abnormality detection apparatus, abnormality detection system, and learning apparatus, and methods for the same and non-temporary computer-readable medium storing the same |
US10997461B2 (en) | 2019-02-01 | 2021-05-04 | Tesla, Inc. | Generating ground truth for machine learning from time series elements |
US11567514B2 (en) | 2019-02-11 | 2023-01-31 | Tesla, Inc. | Autonomous and user controlled vehicle summon to a target |
US10956755B2 (en) | 2019-02-19 | 2021-03-23 | Tesla, Inc. | Estimating object properties using visual image data |
CN111723918A (zh) | 2019-03-18 | 2020-09-29 | 超威半导体公司 | 用于卷积内核的自动生成和调谐工具 |
CN110378479B (zh) * | 2019-06-11 | 2023-04-14 | 平安科技(深圳)有限公司 | 基于深度学习的图片输入方法、装置及终端设备 |
US11769076B2 (en) * | 2019-10-14 | 2023-09-26 | Micron Technology, Inc. | Memory sub-system with a virtualized bus and internal logic to perform a machine learning operation |
CN112257870B (zh) * | 2019-11-08 | 2024-04-09 | 安徽寒武纪信息科技有限公司 | 机器学习指令的转换方法及装置、板卡、主板、电子设备 |
CN111580827B (zh) * | 2020-04-30 | 2021-09-28 | 腾讯科技(深圳)有限公司 | 机器学习模型的编译优化方法和装置 |
WO2021243489A1 (zh) * | 2020-05-30 | 2021-12-09 | 华为技术有限公司 | 一种神经网络的数据处理方法及装置 |
CN112732444A (zh) * | 2021-01-12 | 2021-04-30 | 北京工业大学 | 一种面向分布式机器学习的数据划分方法 |
US11509746B2 (en) * | 2021-02-17 | 2022-11-22 | Salesforce.Com, Inc. | Distributing user requests to cloud computing systems across regions using a machine learning model |
US11887583B1 (en) * | 2021-06-09 | 2024-01-30 | Amazon Technologies, Inc. | Updating models with trained model update objects |
US11514370B1 (en) * | 2021-12-03 | 2022-11-29 | FriendliAI Inc. | Selective batching for inference system for transformer-based generation tasks |
US20230289292A1 (en) * | 2022-03-10 | 2023-09-14 | Nvidia Corporation | Method and apparatus for efficient access to multidimensional data structures and/or other large data blocks |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6971084B2 (en) * | 2001-03-02 | 2005-11-29 | National Instruments Corporation | System and method for synchronizing execution of a batch of threads |
US7519566B2 (en) * | 2004-02-11 | 2009-04-14 | Oracle International Corporation | Method and apparatus for automatically and continuously updating prediction models in real time based on data mining |
US7765549B1 (en) * | 2004-06-30 | 2010-07-27 | Affiliated Computer Services, Inc. | Distributing batches of items in a workflow |
US7929707B1 (en) * | 2007-09-06 | 2011-04-19 | Elcomsoft Co. Ltd. | Use of graphics processors as parallel math co-processors for password recovery |
US8666997B2 (en) * | 2010-12-08 | 2014-03-04 | Microsoft Corporation | Placeholders returned for data representation items |
US9342786B2 (en) * | 2012-06-15 | 2016-05-17 | California Institute Of Technology | Method and system for parallel batch processing of data sets using Gaussian process with batch upper confidence bound |
US10325219B2 (en) * | 2014-07-18 | 2019-06-18 | Facebook, Inc. | Parallel retrieval of training data from multiple producers for machine learning systems |
CN105183624B (zh) * | 2015-08-28 | 2017-05-31 | 北京理工大学 | 一种基于数据匹配的仿真回放方法 |
US10198298B2 (en) * | 2015-09-16 | 2019-02-05 | Salesforce.Com, Inc. | Handling multiple task sequences in a stream processing framework |
-
2016
- 2016-04-05 US US15/091,381 patent/US10789544B2/en active Active
- 2016-12-21 CN CN201680084418.2A patent/CN108885571B/zh active Active
- 2016-12-21 WO PCT/US2016/068090 patent/WO2017176333A1/en active Application Filing
- 2016-12-21 EP EP16825975.2A patent/EP3430511A1/en not_active Ceased
- 2016-12-21 CN CN202210301067.3A patent/CN114840352A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN108885571B (zh) | 2022-04-15 |
CN108885571A (zh) | 2018-11-23 |
WO2017176333A1 (en) | 2017-10-12 |
EP3430511A1 (en) | 2019-01-23 |
US10789544B2 (en) | 2020-09-29 |
US20170286864A1 (en) | 2017-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885571B (zh) | 分批处理机器学习模型的输入 | |
US20220027202A1 (en) | Stream-based accelerator processing of computational graphs | |
US11087216B2 (en) | Modifying computational graphs | |
US11769061B2 (en) | Processing computational graphs | |
US11763146B1 (en) | Processing loops in computational graphs | |
CN114429201A (zh) | 在图形处理单元上执行计算图 | |
WO2022236128A1 (en) | Asynchronous distributed data flow for machine learning workloads |
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 |