一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分布式计算流水线处理的制作方法

2022-10-26 19:39:08 来源:中国专利 TAG:


1.本说明书涉及训练机器学习模型,包括神经网络。


背景技术:

2.神经网络是采用一个或多个非线性单元层来预测接收到的输入的输出的机器学习模型。除了输出层之外,一些神经网络还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中的下一层(即,下一隐藏层或输出层)的输入。网络的每层根据相应网络参数集的当前值从接收到的输入生成输出。


技术实现要素:

3.本说明书描述了用于通过使用多个可用计算设备来提供用于硬件加速器消耗的经预处理的数据而提高专用硬件加速器的计算吞吐量的技术。
4.这些技术通常涉及接收预处理操作的处理流水线和表示要在多个硬件加速器上执行的操作的操作数据。由操作数据表示的操作例如能够是用于训练或执行机器学习模型的操作。由操作数据指定的操作能够包括硬件加速器被优化以执行的操作,例如矩阵乘法。处理流水线能够将操作数据指定为具有表示操作的节点和表示操作之间的数据依赖关系的边的计算图。
5.被指派预处理操作的计算设备能够被配置成连续地预处理输入,以用于由被指派处理流水线的操作数据的硬件加速器进行最终处理。硬件加速器能够被配置成从被指派预处理操作的多个计算设备取出排队的输入。
6.硬件加速器是具有被配置成执行专用计算的专用硬件的计算设备,例如图形处理单元(“gpu”)、现场可编程门阵列(“fgpa”)和专用集成电路(“asic”),包括张量处理单元(“tpu”)。硬件加速器还能够包括一个或多个中央处理单元(“cpu”),以用于执行与专用计算不相关的功能,例如网络计算、数据解压缩或编译,例如将作为计算图接收的操作数据编译成能够由硬件加速器执行的操作集。
7.计算设备通常包括通用设备,这些通用设备能够被配置成接收数据并执行预处理操作,例如,将数据格式化成要由硬件加速器接收的合适的格式。鉴于硬件加速器的专用性质和与更广泛可用的通用计算设备相比通常更高的成本,实现本说明书中描述的技术的系统通常包括比加速器更多的通用设备。
8.此外,因为专用硬件加速器通常能够以比通用设备能够将原始输入数据转换成用于该硬件加速器的经预处理的输入的速度快几个数量级的速度处理数据,所以可能出现计算瓶颈,其中硬件加速器在其等待更多输入变得可用时会间歇性地空闲,即,硬件加速器会经历用于进行处理的可用输入的“饥饿”。随着硬件加速器的增量改进继续超过通用设备的计算改进,这种计算瓶颈只会恶化。基于存储器读取速度和网络带宽也会出现类似的瓶颈。
9.通过采用本说明书中描述的技术,被指派操作数据的每个硬件加速器能够使硬件加速器从其提取输入的计算设备的数量按比例调节,以限制或防止饥饿,即,提高给硬件加
速器的经预处理的输入的计算吞吐量,因此硬件加速器空闲和等待输入的时间有限或完全消除。硬件加速器能够实现负载平衡技术以从计算设备取出训练数据作为单独输入,或作为来自相应计算设备的批量输入。
10.本说明书中描述的主题能够在特定实现方式中实现,以实现以下优点中的一个或多个。通过更优化的数据吞吐量,能够更有效地利用专用硬件加速器,该数据吞吐量先前受到数据能够通过传统方法被预处理和提供给加速器的速率阻碍。硬件加速器能够被配置成从被指派为预处理硬件加速器的输入数据的多个计算设备提取数据。
11.表示用于训练机器学习模型(例如,神经网络)的操作的处理流水线能够在减少计算和操作成本以及减少由处理流水线表示的每个任务的完成时间方面被更有效地训练。
12.除了减少计算瓶颈之外,跨通用计算设备的数据生成的分布能够缓解存储器瓶颈,该存储器瓶颈通常将处理输入数据的计算设备的处理速度限制到在任何一个时间能够被高速缓存在计算设备上的存储器量,因为能够利用被指派给硬件加速器的多个计算设备的集体存储器。
13.类似地,本说明书中描述的技术能够通过提取原始输入数据并将原始输入数据简化成集体形成训练示例的相关特征来减少网络拥塞,该训练示例能够被直接发送到加速器进行处理,而无需由加速器本身进行预处理。
14.因为硬件加速器构建和维护起来通常比廉价且广泛可用的通用设备更昂贵,所以本说明书中描述的技术能够便宜且有效地按比例调节提供用于硬件加速器消耗的数据的多个计算设备。该系统能够灵活地将指派给暂时不可用或有缺陷的计算设备的硬件加速器重新指派给其它可用的计算设备,以减轻对硬件加速器处理的中断。
15.随着硬件加速器被改进的硬件取代,额外的计算设备能够以编程方式指派以跟上加速器的增加的计算需求。实现本说明书中描述的技术的分布式计算系统能够被配置成标识每个硬件加速器的计算设备与硬件加速器指派的相应比率,这能够跨一组不同架构和计算特性的硬件加速器而灵活地实现。
16.本说明书的主题的一个或多个实现方式的细节在附图和以下描述中阐述。本主题的其它特征、方面和优点将从说明书、附图和权利要求中变得显而易见。
附图说明
17.图1示出了用于执行处理流水线的操作的示例分布式计算系统。
18.图2a示出了互连到硬件加速器的计算设备。
19.图2b示出了具有互连到硬件加速器的附加计算设备的图2a中示出的计算设备。
20.图2c示出了互连到硬件加速器并且具有不可用的计算设备的图2b中示出的计算设备。
21.图3是用于训练被表示为计算图的神经网络的示例过程的流程图。
22.各种附图中相同的附图标记和名称指示相同的元件。
具体实施方式
23.图1示出了用于执行处理流水线105的操作的示例分布式计算系统100。处理流水线105能够由客户端设备102提供。分布式计算系统100能够接收标识处理流水线105的数据
和输入数据110,并生成与对输入数据110执行由处理流水线105表示的操作相对应的输出数据115。
24.处理流水线105包括预处理操作120和操作数据125。处理流水线105能够被表示为由分布式计算系统100实现的处理应用程序接口(“api”)130的功能定义的软件对象。处理api 130能够定义一个或多个功能,当由适当配置的客户端设备(例如,客户端设备102)执行时,该一个或多个功能使客户端设备创建对应于处理流水线105的软件对象,以及特别是预处理操作120和操作数据125。
25.预处理操作是需要对输入数据执行以准备该数据以用于由机器学习模型进行处理的任何操作。
26.预处理操作120能够接收作为输入的原始数据,并且生成过滤掉无关或不相关信息的经预处理的数据作为输出。
27.除了过滤掉无用信息之外,执行预处理操作120的计算设备能够处理原始数据并执行数据增广。例如,如果原始数据表示图像的集合,则计算设备能够执行预处理操作120以裁剪、旋转或以其它方式操纵每个图像,以准备在硬件加速器上进行处理。
28.作为另一个示例,如果处理流水线105表示用于训练或执行机器学习模型(例如,神经网络)的操作,则预处理操作120能够是用于准备原始输入数据的操作,这些原始输入数据要作为用于在分布式计算系统100的硬件加速器上部署的机器学习模型的适当格式化的输入而被接收,如下所述。预处理操作的示例能够包括对输入数据进行二值化、标准化或归一化;将输入数据重构成可接受的数据格式,例如张量;以及对输入数据的特征进行编码,例如,分类特征的one-hot编码。
29.操作数据125能够被表示为具有多个节点和一条或多条边的计算图。计算图的每个节点表示多个操作中的相应操作。对于计算图中的任意两个节点u和v,一条边(u,v)是有向边并且表示从u到v的数据依赖关系。从u到v的数据依赖关系是指由节点u表示的操作生成输出,该输出是到由节点v表示的操作的输入。因此,必须在执行节点v的操作之前执行节点u操作。
30.计算图能够表示用于通过神经网络处理输入的操作,例如,作为训练或推理的一部分。神经网络能够被配置成接收任何类型的数字数据输入作为网络输入,并生成任何类型的网络输出,即,基于网络输入的任何类型的分数、分类或回归输出,作为执行机器学习任务的一部分。神经网络通过执行多个操作来处理输入以生成网络输出。每个操作都能够接收零个或更多个输入,并且能够生成输出。例如,输入和输出能够是标量值、分类值、向量、矩阵或张量。张量是数字或其它值(例如字符串)的多维数组,具有与数组的维数相对应的特定阶数。例如,标量值是0阶张量,数值向量是1阶张量,并且矩阵是2阶张量。
31.当被训练时,神经网络被配置成通过处理输入并针对该输入生成输出来执行机器学习任务,其中该输出与神经网络被训练以执行的任务相对应。示例如下。
32.在一些情况下,神经网络是卷积神经网络,其被配置成接收输入图像并处理输入图像以生成输入图像的网络输出,即,执行某种图像处理任务。例如,任务可以是图像分类,并且由神经网络针对给定图像生成的输出可以是一组对象类别中的每个类别的分数,其中,每个分数表示该图像包含属于该类别的对象的图像的估计的可能性。作为另一个示例,任务能够是图像嵌入生成,并且由神经网络生成的输出能够是输入图像的数字嵌入。作为
又一示例,任务能够是对象检测,并且由神经网络生成的输出能够标识输入图像中描绘特定类型的对象的位置。
33.作为另一个示例,如果到神经网络的输入是互联网资源(例如,网页)、文档或文档的部分或从互联网资源、文档或文档的部分中提取的特征,则任务能够是分类资源或文档,即,由神经网络针对给定的internet资源、文档或文档的一部分生成的输出可以是一组主题中的每个主题的分数,其中每个分数表示该internet资源、文档或文档的部分是与该主题有关的估计的可能性。
34.作为另一个示例,如果到神经网络的输入是特定广告的展示上下文的特征,则由任务神经网络生成的输出可以是表示该特定广告将被点击的估计的可能性的分数。
35.作为另一个示例,如果到神经网络的输入是针对用户的个性化推荐的特征,例如表征该推荐的上下文的特征,例如表征用户采取的先前动作的特征,则由任务神经网络生成的输出可以是一组内容项中的每个内容项的分数,其中每个分数表示该用户将对被推荐内容项做出积极响应的估计的可能性。
36.作为另一个示例,如果到神经网络的输入是一种语言的文本序列,则由神经网络生成的输出可以是另一种语言的一组文本片段中的每个文本片段的分数,其中每个分数表示该另一种语言的文本片段是输入文本到该另一种语言的恰当翻译的估计的可能性。
37.作为另一个示例,如果到神经网络的输入是口头语言的文本序列,则由神经网络生成的输出可以是大声说出的输入文本的音频音轨。
38.作为另一个示例,如果到神经网络的输入是表示口头话语的序列,则由任务神经网络生成的输出可以是一组文本片段中的每个文本片段的分数,每个分数表示该文本片段是该话语的正确转录的估计的可能性。
39.作为另一示例,如果到神经网络的输入是包括一个或多个对象和机器人的环境的一个或多个图像,则由神经网络生成的输出可以定义一个或多个命令,该一个或多个命令当由机器人执行时使机器人根据某个目标(例如,抓住并移动物体,对物体进行分类,或避开物体)来操纵该一个或多个物体。
40.作为另一个示例,如果到神经网络的输入是电子记录,例如电子健康记录,则由神经网络生成的输出可以是指定电子记录的特性的数据,例如关于对应于该电子健康记录的患者的健康的预测。
41.作为另一个示例,如果到神经网络的输入是对强化学习代理在环境中的状态的观察,则由神经网络生成的输出可以定义代理响应于该观察而采取的动作。
42.处理api 130能够定义用于根据提供的操作、输入参数和输出参数来生成计算图的功能。这些操作和参数能够例如作为由客户端设备102执行并实现处理api 130的软件程序的一部分来提供。
43.处理api 130能够定义当由客户端设备102执行时使客户端设备102利用与处理流水线105及其在分布式计算系统100上的执行相对应的元数据127来填充软件对象的功能。例如,元数据127能够指定能够由调度引擎145在调度处理流水线105以在分布式计算系统100中执行时使用的信息,例如,与处理流水线105相关联的用户的身份、执行处理流水线105的优先级以及在其上执行处理流水线105的优选类型的计算设备。如下所述,元数据127还能够指定要被指派处理流水线105的计算设备和硬件加速器的数量的条件。
44.此外,处理api 130能够被实现为围绕用于生成计算图的功能的预先存在的库的“封装器”,例如,作为tensorflow库的api封装器。api封装器是指具有定义成调用其它api中定义的功能但具有对(i)功能逻辑、(ii)参数或两者的修改、删除或添加的功能的api。
45.分布式计算系统100包括一个或多个硬件加速器a-m 135a-m(统称为“硬件加速器135”)和一个或多个计算设备a-n 140a-n(统称为“计算设备140”)。
46.在本说明书中,硬件加速器是具有专用逻辑电路的一个或多个专用处理单元并且被配置成执行专用处理任务(例如,矩阵乘法)的计算设备。硬件加速器能够包括fgpa、asic、gpu和tpu。硬件加速器还能够具有被配置用于通用计算(即,未被配置用于执行专用操作)的一个或多个处理单元。硬件加速器能够被配置成执行用于训练或执行神经网络所必需的专用处理。
47.例如,硬件加速器能够包括在与硬件加速器相同的硬件上物理实现的一个或多个“主机”cpu。主机cpu能够根据任何传统架构(例如冯诺依曼架构或哈佛或经修改的哈佛架构)来设计。硬件加速器的主机cpu能够被配置成执行不是硬件加速器被配置成执行的专用操作的操作。例如,主机cpu能够被配置成执行操作以传送和请求硬件加速器的和来自计算设备的经预处理的输入。
48.主机cpu还能够被配置成将操作数据编译成硬件加速器能够执行的机器可读指令集。与硬件加速器不同,本说明书中使用“计算设备”来指代未被配置成执行专用操作的通用计算设备。计算设备140中的每个计算设备能够包括一个或多个cpu。
49.计算设备140和硬件加速器135被互连为网络150。计算设备140和硬件加速器135能够被配置成(即,通过网络150中的一个或多个通信链路)将数据传送到一个或多个其它计算设备或硬件加速器以及从一个或多个其它计算设备或硬件加速器传送数据。例如,每个设备和加速器能够物理耦合,例如通过线缆物理连接,或者能够以其它方式耦合,例如通过无线连接耦合。
50.分布式计算系统包括调度引擎145。调度引擎145能够被配置成接收处理流水线105并将操作指派给计算设备140和硬件加速器135。调度引擎145能够是任何合适的调度器。
51.图2a示出了互连到硬件加速器a-c 210(统称为“硬件加速器210”)的计算设备a-e 200a-e(统称为“计算设备200”)。具体而言,每个硬件加速器能够被互连到计算设备200。作为示例,考虑表示用于训练神经网络的操作的处理流水线:(i)用于准备训练示例的预处理操作;(ii)表示用于训练神经网络的操作的操作数据;以及(iii)附加的元数据。
52.包括计算设备200和硬件加速器210的分布式计算系统能够通过调度器引擎(i)向每个计算设备指派预处理操作和(ii)向每个硬件加速器指派计算图。
53.计算设备200中的每个计算设备能够生成经预处理的输入作为训练示例。具体而言,计算设备200中的每个计算设备能够处理输入数据以生成多个训练示例,使得被指派操作数据的硬件加速器能够接收这些训练示例作为输入,并且根据操作数据来处理这些训练示例。
54.计算设备200中的每个计算设备能够执行预处理操作以生成训练示例作为单独的无状态服务。具体而言,即使计算设备200正在预处理相同的数据集,计算设备200中的每个计算设备也能够生成彼此独立的训练示例,例如,作为随机化的训练示例。结果,硬件加速
器210自由地从任何计算设备取出训练示例,其中两个硬件加速器在基本相似的批量训练示例上训练的风险可忽略不计。
55.计算设备200中的每个计算设备在生成训练示例之后能够将训练示例入队到由计算设备维护的相应队列中。由计算设备维护的队列的元素能够是单独的训练示例,例如,在计算图用于训练神经网络的示例中,或者队列的元素能够是批量训练示例。在任何时候,队列都包含零个或更多个等待由硬件加速器处理的训练示例。
56.训练示例能够单独地或集体地被生成,例如,作为张量。当硬件加速器从计算设备取出输入时,计算设备将一个或多个元素从计算设备的相应队列中出队,并通过互连的网络将该一个或多个出队的元素传输到硬件加速器。
57.计算设备的队列能够被维护在本地存储器或远离计算设备但能够由计算设备外部(例如通过网络)访问的存储器中。尽管本说明书将由相应计算设备预处理过的训练示例的集合描述为队列,但所描述的主题的实现方式不限于通常称为队列的数据结构类型。换言之,计算设备200能够被配置成根据任何常规数据结构(例如,作为堆栈)来存储(“入队”)相应训练示例,并且能够被配置成通过任何常规访问协议(例如先进先出、先进后出或后进先出)来提供训练示例(“出队”)。
58.继续该示例,调度器引擎能够向硬件加速器中的每个硬件加速器指派处理流水线的操作数据。硬件加速器210能够从一个或多个计算设备取出训练示例。由调度器引擎能够基于负载平衡和硬件加速器的单独的能力来自动设定特定硬件加速器从多少计算设备和哪些计算设备取出数据。
59.通常,调度器引擎能够计算每个硬件加速器的表示当被指派给硬件加速器时能够向硬件加速器提供预处理输入以减轻或消除硬件加速器的饥饿的计算设备的数量的比率。
60.例如,考虑硬件加速器a 210a是第一代张量处理单元,并且硬件加速器b 210b和c 210c是第二代张量处理单元。这里,“代”是指相同类型的硬件加速器(例如,tpu)的性能的增量变化。后一代硬件加速器通常比前一代硬件加速器执行得更好,例如,这是因为计算能力的提高。
61.基于每个硬件加速器的相应类型,调度器引擎能够指派对应数量的计算设备以匹配每个硬件加速器的计算能力。继续该示例,硬件加速器a被指派一个计算设备,即计算设备b 200b。然而,计算能力都比硬件加速器a高的硬件加速器b和c都各自被指派两个计算设备:向硬件加速器b指派计算设备a 200a和计算设备d 200d,并且向硬件加速器c指派计算设备c 200c和计算设备e 200e。
62.硬件加速器的比率能够通过首先确定硬件加速器在给定时间段(例如,1秒)内能够处理多少训练示例来确定。例如,如果硬件加速器能够在110毫秒内处理一批1024个示例,那么硬件加速器在一秒(1000毫秒)内能够处理的训练示例的近似数量为或每秒大约9,309个训练示例。根据计算的速率,调度器引擎能够将可用的计算设备指派给该硬件加速器,直到在加速器正在处理的同时由所指派的设备每秒能够向硬件加速器提供至少大约9,309个训练示例。能够针对实现的每种类型的硬件加速器预先计算训练示例处理速率,并且调度器引擎能够基于预先计算的速率来将适当比率的计算设备自动指派给特定硬件加速器。
63.通过基于每个硬件加速器的计算能力来按比例调节指派给每个硬件加速器的计算设备的数量,分布式计算系统能够提高硬件加速器的计算吞吐量并减轻或防止利用率不足(或“饥饿”),因为硬件加速器能够比能够提供的更快地处理训练示例。
64.尽管在图2a中每个硬件加速器都被描绘为已经被指派一个或多个独特的计算设备,即没有两个硬件加速器共享相同的计算设备,但在一些实现方式中,两个硬件加速器能够共享相同的计算设备。类似于分布式计算系统能够基于硬件加速器的计算能力来向每个硬件加速器指派计算设备,分布式计算系统也能够基于每个计算设备的计算能力来向每个硬件加速器指派计算设备。
65.例如,如果计算设备具有满足预定计算阈值的计算能力,则分布式计算系统能够将多个硬件加速器指派给该计算设备。分布式计算系统能够基于每个硬件加速器的计算能力来确定计算阈值。
66.附加地或替代地,分布式计算系统的每个硬件加速器能够被配置成从每个可用计算设备取出入队的数据元素。例如,硬件加速器能够被配置成从所有可用计算设备随机取出入队的数据元素。替代地,硬件加速器能够被配置成从每个可用计算设备顺序地取出入队的数据元素,例如,基于计算设备的标识符,例如网络地址。通过从每个计算设备一致地取出数据,硬件加速器能够减少由于多个硬件加速器试图从相同计算设备取出数据而导致的网络拥塞。
67.通过如上所述指派计算设备,分布式计算系统能够将计算需求从硬件加速器的一个或多个主机cpu转移出来,以释放主机cpu来执行其它任务。以下描述将针对单个主机cpu进行,但可以理解,硬件加速器能够实现多于一个cpu。
68.通常,主机cpu能够被配置成执行处理流水线的预处理操作。传统上,依靠硬件加速器的主机cpu为其对应的硬件加速器预处理输入数据会导致上述计算瓶颈,这是因为即使本领域最先进的硬件加速器也可能包括缺乏匹配硬件加速器的吞吐量的计算能力的主机cpu。因此,分布式计算系统能够被配置成支持主机cpu的用于预处理数据以供对应的硬件加速器消耗的任务。
69.在这样做时,分布式计算系统还能够通过减少主机cpu为硬件加速器对数据集执行预处理操作所需的外部存储器读取的数量来克服存储器瓶颈。例如,将预处理操作视为用于生成用于训练神经网络的训练示例的预处理操作。鉴于硬件加速器的一个主机cpu可能需要来自外部存储器的特定数量的读/写操作来将输入数据加载到存储器中以进行预处理,指派给相同硬件加速器的多个计算设备能够在相同的时间量内提供更多的训练示例。
70.硬件加速器的主机cpu能够被配置成执行其它任务而不是为硬件加速器预处理数据,以进一步利用计算设备140和硬件加速器135的分布式布置。在一些实现方式中,硬件加速器的主机cpu能够批量处理来自指派给其对应的硬件加速器的多个计算设备的经预处理的输入。在这样做时,硬件加速器自由地从多个不同的计算设备取出经预处理的输入数据,并减轻到任何一个特定计算设备的网络流量。
71.主机cpu还能够被配置成解压缩先前由计算设备140中的计算设备使用压缩算法(例如lz77算法)压缩的经预处理的输入数据。压缩的数据是指已经被转换成一种表示的数据,该表示比其未压缩的原始对应物消耗更少的存储器来存储。在生成一批经预处理的输入数据之后,计算设备140能够被配置成在将数据添加到相应队列之前压缩每批数据。当硬
件加速器将一批压缩的数据从队列中出队时,硬件加速器的主机cpu能够被配置成首先解压缩该数据。通过解压缩经预处理的输入数据,网络压力被进一步减小,这是因为更少的数据跨网络150整体传输。
72.分布式计算系统能够被配置成执行处理流水线,该处理流水线包括对于任何一个硬件加速器来说太大而无法存储在存储器中的操作数据。在一些实现方式中,分布式计算系统被配置成将表示为计算图的操作数据划分为多个子图。每个子图通过边链接到另一个子图,边表示来自一个子图的输出作为到另一个子图的输入的流。
73.分布式计算系统能够被配置成以多种方式划分计算图,包括基于每个硬件加速器的相对计算能力。例如,分布式计算系统能够对子图进行划分和指派,使得被指派相应子图的每个硬件加速器能够将该相应子图存储在内部存储器中,从而避免从可选地耦合到硬件加速器的外部存储器源进行读取或写入的需要。
74.取决于子图的数量和可用的硬件加速器的数量,分布式计算系统能够跨多组硬件加速器指派计算图,其中组中的每个硬件加速器被指派计算图的独特子图。
75.在分布式计算系统将计算图划分成多个子图并将每个子图指派给相应硬件加速器的实现方式中,分布式计算系统被配置成标识计算图的输入子图。在本说明书中,计算图的输入子图是包括节点的子图,该节点表示计算图的输入操作,即,将接收由计算设备根据执行预处理操作的结果而预处理的数据元素作为输入的操作。
76.在标识被指派计算图的输入子图的硬件加速器之后,分布式计算系统能够使用上面参考图1和图2a描述的技术将计算设备指派给所标识的硬件加速器。未被指派输入子图的硬件加速器不需要被指派计算设备,这是因为那些硬件加速器能够接收作为来自其它硬件加速器的输出的输入。
77.图2b示出了具有互连到硬件加速器210的附加计算设备200f的图2a中示出的计算设备200。包括计算设备200和硬件加速器210的分布式计算系统能够自动指派连接到将硬件加速器210和计算设备200互连的网络的新设备。例如,并且如图2b所示,计算设备200f被示出为向硬件加速器a 210a提供输入训练示例,由虚线表示。
78.通常,计算设备能够通过硬件加速器被更容易地添加到分布式计算系统,这是因为通常计算设备比更昂贵且专用的硬件加速器更容易访问。能够机会性地添加计算设备,这意味着专用于执行其它任务的计算设备能够在这些计算设备将空闲或以其它方式未实现最大计算吞吐量的时段期间变得可用于预处理。
79.发送用于在分布式计算系统上进行处理的处理流水线的用户更可能使一个或多个计算设备对用户可用且已知,因此能够向那些可用计算设备提供标识符以用于在生成用于硬件加速器消耗的训练示例中使用。输入处理流水线能够包括指定可用于预处理数据的计算设备的网络地址,并且分布式计算系统能够将硬件加速器自动指派给指定计算设备。
80.替代地或附加地,输入处理流水线能够指定预定指派。例如,用户能够向分布式计算系统发送更新的处理流水线,其中更新的元数据指定计算设备f 200f被指派给硬件加速器a 210a,如图2b所示。
81.类似地,如果需要,在一个或多个计算设备变得不可用于预处理的情况下,分布式计算系统能够自动处置计算设备到硬件加速器的重新指派。计算设备可能由于各种原因而变得不可用。例如,计算设备可能由于有意决定而变得不可用,该有意决定将计算设备的计
算资源转向执行另一处理流水线或与执行处理流水线不相关的一些操作集。计算设备也可能因为计算设备与网络断开连接或者以其他方式无法生成训练示例并将其传输到指派的硬件加速器而变得不可用。
82.无论导致计算设备不可用的情况如何,分布式计算系统都能够检测计算设备何时变得不可用,并作为响应自动重新调整计算设备到硬件加速器的指派。分布式计算系统能够被配置成根据各种不同的方法来执行这种重新指派,例如,这些方法能够整体上有利于硬件加速器的整体利用率,或者优先考虑被更好地优化以用于执行处理流水线的计算图中的操作的一些硬件加速器的利用率。
83.例如,与硬件加速器210和计算设备200相对应的分布式计算系统的调度引擎能够被配置成检测一个或多个计算设备的不可用性,并且作为响应,跨硬件加速器210重新指派计算设备。
84.图2c示出了互连到硬件加速器210并且具有不可用的计算设备的图2b中示出的计算设备200。在图2c中示出的示例中,计算设备a200a和计算设备d 200d不可用,由带叉箭头指示。分布式计算系统能够确定先前指派给硬件加速器b 210b的计算设备不可用,并且作为响应将计算设备f 200f从硬件加速器a 210a重新指派给硬件加速器b210b。
85.分布式计算系统能够基于硬件加速器210的相对整体利用率来决定将哪个计算设备200指派给硬件加速器b 210b。继续上面以图2a的描述开始的示例,如果硬件加速器a 210a具有比硬件加速器c 210c相对较小的计算能力,则分布式计算系统能够决定将计算设备,例如计算设备f 200f,从硬件加速器a 210a重新指派到硬件加速器b 210b,而不是从指派给硬件加速器c 210c的计算设备重新指派。
86.如上所述,分布式计算系统的计算设备执行无状态的预处理操作。因此,一个计算设备的不可用性或可用性通常不会影响另一个计算设备根据预处理操作来生成数据的能力。在用于由被配置成训练被表示为计算图的神经网络的硬件加速器执行的经预处理的训练示例的示例中,来自每个计算设备的每个训练示例能够根据输入数据集的随机采样的输入数据来生成。对于足够大的数据集,两个计算设备为相同指派的硬件加速器生成相同训练示例的概率小到可忽略不计。
87.尽管在本说明书中参考单个处理流水线(例如,图1的处理流水线105)对分布式计算系统进行了描述,但是分布式计算系统能够被配置成接收和指派多个不同处理流水线的相应预处理操作和相应计算图。
88.返回参考图1,在分布式计算系统100被配置成接收多个处理流水线的实现方式中,调度引擎145能够被配置成基于可用硬件加速器和计算设备来调度多个处理流水线。例如,调度引擎145能够基于各种不同的度量对不同处理流水线的指派进行优先级排序。调度引擎145能够从每个处理流水线的相应元数据获得度量,例如,用户的优先级或为输入数据集执行处理流水线的估计时间。
89.调度引擎145能够获得普遍适用于将每个处理流水线指派给硬件加速器135和计算设备140的附加度量。例如,“全局”度量能够包括用于维持用于操作硬件加速器和计算设备的特定水平的成本或能量输出的能量-成本上限,或用于在允许在特定计算设备和硬件加速器上执行另一个处理流水线之前在那些相同的计算设备和硬件加速器上执行处理流水线的所分配的最大值。
90.不管调度引擎145获得哪些度量,调度引擎145都能够被配置成根据接收的度量对不同的作业进行优先级排序,并且根据优先级排序来调度处理流水线。调度引擎145能够维持队列中的未决处理流水线,和/或通过做出用于执行处理流水线的请求的相应客户端设备通知用户该请求是未决的,直到计算资源变得可用。
91.处理流水线能够被配置成执行用于使用强化学习来完成机器学习任务的操作。例如,指派给计算设备的预处理操作能够预处理由被指派表示神经网络的操作数据的硬件加速器处理的观察输入,该神经网络被配置成接收观察输入作为输入,并生成定义要由在环境中观察到的代理执行的动作的数据作为输出,例如,可能动作的概率分布。能够根据目标函数来训练神经网络,该目标函数测量由代理响应于在环境中执行动作而收到的奖励。神经网络能够根据目标函数进行训练,以生成为代理得到最高奖励的动作。
92.然后,硬件加速器能够进一步被配置成向被指派处理流水线的预处理操作的计算设备提供输出动作。计算设备还能够进一步被配置成使代理在观察环境中执行输出动作,并生成新的观察数据。观测数据能够被预处理并传输到硬件加速器以完成循环。
93.分布式计算系统能够被配置成重复观察输入到动作到新的观察输入的循环,直到满足某个停止条件,例如,在预定迭代次数之后或直到由代理实现阈值奖励。
94.图3是用于训练神经网络的示例过程300的流程图。为方便起见,过程300将被描述为由位于一个或多个位置中并根据本说明书适当编程的一个或多个计算机的系统执行。例如,适当编程的分布式计算系统,图1的分布式计算系统100能够执行过程300。
95.分布式计算系统接收310执行处理流水线的请求,该处理流水线具有将原始输入转换成经预处理的输入的第一操作和对经预处理的输入进行操作的第二操作。如上面参考图1所描述的,分布式计算系统能够接收预处理操作和表示用于在硬件加速器上执行的操作的操作数据。作为请求的一部分,分布式计算系统能够接收表示要由被指派预处理操作的计算设备预处理的原始输入的输入数据。
96.接下来,响应于接收到请求,分布式计算系统执行以下操作:
97.分布式计算系统将处理流水线的第一操作指派320给多个计算设备中的两个或更多个计算设备。表示要由被指派操作数据的硬件加速器作为输入接收的预处理操作的第一操作被指派给被配置成执行第一操作并将经预处理的输入入队到队列或其它数据结构中的计算设备。
98.分布式计算系统将处理流水线的第二操作指派330给多个硬件加速器中的一个或多个硬件加速器。被指派第二操作的硬件加速器被配置成从被指派第一操作的计算设备的队列取出经预处理的输入。
99.分布式计算系统在两个或更多个计算设备和一个或多个硬件加速器上并行地执行340处理流水线。分布式计算系统能够在执行具有第一和第二操作的处理流水线的同时执行其它处理流水线。
100.本说明书中描述的主题以及动作和操作的实施例能够在数字电子电路中、在有形体现的计算机软件或固件中、在计算机硬件(包括在本说明书中公开的结构及其结构等效物)中、或它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例能够被实现为一个或多个计算机程序,例如,编码在计算机程序载体上的计算机程序指令的一个或多个模块,以用于由数据处理装置执行或控制数据处理装置的操作。载体可以是有形的非暂
时性计算机存储介质。替代地或附加地,载体可以是人工生成的传播信号,例如机器生成的电、光或电磁信号,其被生成以对信息进行编码以传输到合适的接收器装置以供数据处理装置执行。计算机存储介质能够是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合或者是以上项的一部分。计算机存储介质不是传播信号。
101.术语“数据处理装置”涵盖用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。数据处理装置能够包括专用逻辑电路,例如fpga(现场可编程门阵列)、asic(专用集成电路)或gpu(图形处理单元)。除了硬件之外,该装置还能够包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
102.也可以被称为或描述为程序、软件、软件应用、app、模块、软件模块、引擎、脚本或代码的计算机程序能够以任何形式的编程语言来编写,包括编译或解释语言,或声明性或过程性语言;并且它能够以任何形式部署,包括作为独立程序或作为模块、组件、引擎、子例程或适合于在计算环境中执行的其它单元,该环境可以包括在一个或多个位置中的通过数据通信网络互连的一个或多个计算机。
103.计算机程序可以但不必对应于文件系统中的文件。计算机程序能够被存储在包含其它程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本,在专用于所讨论的程序的单个文件中,或在多个协同文件中,例如,存储一个或多个模块、子程序或代码部分的文件。
104.本说明书中描述的过程和逻辑流程能够由一个或多个计算机执行,该一个或多个计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行操作。过程和逻辑流程也能够由专用逻辑电路(例如fpga、asic或gpu)执行,或者由专用逻辑电路和一个或多个编程计算机的组合来执行。
105.适合于执行计算机程序的计算机能够是基于通用或专用微处理器或两者,或任何其它类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器能够由专用逻辑电路补充或并入到专用逻辑电路中。
106.通常,计算机还将包括或可操作地耦合以从一个或多个大容量存储设备接收数据或将数据传输到一个或多个大容量存储设备。大容量存储设备能够是例如磁盘、磁光盘或光盘、或固态驱动器。然而,计算机不需要具有这样的设备。此外,计算机能够被嵌入到另一个设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或便携式存储设备,例如,通用串行总线(usb)闪存驱动器,仅举几例。
107.为了提供与用户的交互,本说明书中描述的主题的实施例能够在具有显示设备(例如,lcd(液晶显示器)监视器)和输入设备(例如键盘和指点设备,例如鼠标、轨迹球或触摸板)的计算机上实现或被配置成与计算机通信,其中显示设备用于向用户显示信息,并且用户能够通过输入设备向计算机提供输入。也能够使用其它类型的设备来提供与用户的交互;例如,提供给用户的反馈能够是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉
反馈;能够以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机能够通过向由用户使用的设备发送文档和从由用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收到的请求而将网页发送到用户设备上的网络浏览器,或通过与在用户设备(例如智能手机或电子平板电脑)上运行的app交互来与用户交互。此外,计算机能够通过将文本消息或其它形式的消息发送到个人设备(例如,正在运行消息收发应用的智能手机)并且反过来接收来自用户的响应消息来与用户交互。
108.本说明书结合系统、装置和计算机程序组件使用术语“配置成”。对于要被配置成执行特定操作或动作的一个或多个计算机的系统而言,意味着该系统已经在其上安装了软件、固件、硬件或它们的组合,这些软件、固件、硬件或它们的组合在操作中使系统执行这些操作或动作。对于要被配置成执行特定操作或动作的一个或多个计算机程序而言,意味着该一个或多个程序包括指令,这些指令在由数据处理装置执行时使该装置执行这些操作或动作。对于要被配置成执行特定操作或动作的专用逻辑电路而言,意味着该电路具有执行这些操作或动作的电子逻辑。
109.本说明书中描述的主题的实施例能够在计算系统中实现,该计算系统包括后端组件,例如作为数据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例如,具有图形用户界面、网络浏览器或app的客户端计算机,用户能够通过该客户端计算机与本说明书中描述的主题的实现方式进行交互,或者该计算系统包括这样的后端组件、中间件组件或前端组件的任何组合。系统的组件能够通过任何形式或介质的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网(lan)和广域网(wan),例如因特网。
110.计算系统能够包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络进行交互。客户端和服务器的关系通过在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器将数据(例如html页面)传输到用户设备,例如,以用于向与用作客户端的设备交互的用户显示数据和从该用户接收用户输入的目的。在用户设备处生成的数据,例如用户交互的结果,能够在服务器处从设备接收。
111.除了所附权利要求的实现方式和上述实现方式之外,以下编号的实现方式也是创新的:
112.实现方式1是一种计算机实现的方法,包括:接收执行处理流水线的请求,所述处理流水线包括(i)将原始输入转换成经预处理的输入的第一操作和(ii)对经预处理的输入进行操作的第二操作;以及响应于接收到所述请求:将所述第一操作指派给多个计算设备中的两个或更多个计算设备,其中,所述多个计算设备中的每个计算设备都被配置成执行指派的操作并维护从重复执行所述第一操作而生成的经预处理的输入的队列,将所述第二操作指派给多个硬件加速器中的一个或多个硬件加速器,其中,每个硬件加速器都通过网络与所述多个计算设备互连,并且被配置成(i)从被指派所述第一操作的所述两个或更多个计算设备的相应队列接收经预处理的输入和(ii)对接收到的经预处理的输入执行所述第二操作,以及在所述两个或更多个计算设备和所述一个或多个硬件加速器上并行地执行所述处理流水线。
113.实现方式2是实现方式1的方法,其中,所述第二操作包括在一个或多个神经网络计算期间执行的矩阵操作,并且其中,所述一个或多个硬件加速器分别包括一个或多个神
经网络加速器。
114.实现方式3是实现方式1至2中的任一项的方法,其中,每个计算设备包括基于冯诺依曼架构的至少一个中央处理单元(cpu)。
115.实现方式4是实现方式1至3中的任一项的方法,其中,计算设备以被选择的相应比率被指派给硬件加速器,以限制或防止所述一个或多个硬件加速器中的每个硬件加速器的饥饿。
116.实现方式5是实现方式4的方法,其中,每个比率取决于所述一个或多个硬件加速器的相应硬件加速器的处理速度和/或所述计算设备的处理速度。
117.实现方式6是实现方式1至5中的任一项的方法,其中,所述操作进一步包括:将被指派所述第一操作的所述计算设备中的一个或多个计算设备指派给所述一个或多个硬件加速器中的每个硬件加速器;并且其中,在所述两个或更多个计算设备和所述一个或多个硬件加速器上并行地执行所述处理流水线使所述一个或多个硬件加速器中的每个硬件加速器从指派给所述硬件加速器的相应计算设备接收经预处理的输入。
118.实现方式7是实现方式1至6中的任一项的方法,其中,所述多个硬件加速器是异构的,并且其中,指派被指派所述第一操作的所述两个或更多个计算设备包括:对于每个硬件加速器:确定所述硬件加速器的相应计算能力;以及基于所述硬件加速器的所述相应计算能力,将被指派所述第一操作的至少一个计算设备指派给所述硬件加速器。
119.实现方式8是实现方式1至7中的任一项的方法,其中,在所述两个或更多个计算设备和所述一个或多个硬件加速器上并行地执行所述处理流水线使每个硬件加速器从所述两个或更多个计算设备中的每个计算设备一致地接收预处理输入。
120.实现方式9是实现方式1至8中的任一项的方法,其中,所述多个计算设备是多个第一计算设备,其中,所述网络另外将多个第二计算设备互连到所述多个硬件加速器,并且其中,所述操作进一步包括:从所述多个第二计算设备中的第二计算设备接收所述第二计算设备能够用于将所述原始输入转换成所述预处理输入的指示;以及响应于所述指示,向所述第二计算设备指派所述第一操作。
121.实现方式10是实现方式1至9中的任一项的方法,其中,被指派所述第二操作的所述硬件加速器中的第一硬件加速器包括第一中央处理单元(cpu),并且其中,所述第一硬件加速器进一步被配置成:由主机cpu批量处理来自所述两个或更多个计算设备的所述相应队列的多个预处理输入,以及通过所述第一硬件加速器对该批预处理输入执行所述第二操作。
122.实现方式11是实现方式1至10中的任一项的方法,其中,被指派所述第二操作的所述硬件加速器的第一硬件加速器包括第一中央处理单元(cpu),其中,所述多个计算设备中的每个计算设备进一步被配置成使用压缩算法来压缩所述计算设备的相应队列中的每个预处理输入,并且其中,所述第一硬件加速器进一步被配置成由所述第一cpu使用解压缩算法对每个接收到的压缩的预处理输入进行解压缩。
123.实现方式12是实现方式1至11中的任一项的方法,其中,所述请求是第一请求,所述处理流水线是第一处理流水线,并且其中,所述操作进一步包括:接收执行包括第三操作和第二计算图的第二处理流水线的第二请求;以及响应于所述请求:将第三操作指派给多个计算设备中的未被指派所述第一操作的两个或更多个计算设备,所述第三操作将所述原
始输入转换成所述第二处理流水线的经预处理的输入,将第二计算图指派给未被指派所述第一计算图的一个或多个硬件加速器,以及在执行所述第一处理流水线的同时执行所述第二处理流水线。
124.实现方式13是实现方式1至12中的任一项的方法,其中,所述第一操作包括机器学习预处理操作,并且其中,所述经预处理的输入适于输入到机器学习模型中。
125.实现方式14是实现方式13的方法,其中,所述原始输入包括训练数据,并且其中,所述第一操作包括增广所述训练数据的数据增广操作。
126.实现方式15是实现方式1至14中的任一项的方法,其中,所述一个或多个硬件加速器分别包括一个或多个张量处理单元。
127.实现方式16是实现方式1至15中的任一项的方法,其中,所述一个或多个计算设备包括多个负载平衡的中央处理单元(cpu)。
128.实现方式17是实现方式1至16中的任一项的方法,其中,所述处理流水线是图像处理流水线,并且其中,所述原始输入包括图像像素数据。
129.实现方式18是实现方式1至17中的任一项的方法,其中,所述处理流水线是图像分类流水线。
130.实施例19是一种系统,包括一个或多个计算机和一个或多个存储指令的存储设备,所述指令当由所述一个或多个计算机执行时能够操作用于使所述一个或多个计算机执行实现方式1至18中的任一项的方法。
131.实现方式20是一种编码有计算机程序的计算机存储介质,所述程序包括指令,所述指令当由数据处理装置执行时能够操作用于使所述数据处理装置执行实现方式1至18中的任一项的方法。
132.虽然本说明书包含许多特定的实施细节,但这些不应被解释为对正在或可能要求保护的范围的限制,而是对可能特定于特定发明的特定实施例的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征也能够在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也能够在多个实施例中单独地或以任何合适的子组合来实现。此外,尽管特征可以在上面被描述为在某些组合中起作用并且甚至最初如此要求保护,但是在某些情况下能够从组合中删除来自要求保护的组合的一个或多个特征,并且权利要求可以涉及子组合或子组合的变体。
133.类似地,虽然操作在附图中被描绘并且在权利要求中以特定顺序记载,但这不应被理解为要求这样的操作以所示的特定顺序或按先后顺序执行,或者所有所示的操作都被执行,以实现期望的结果。在某些情况下,多任务和并行处理可以是有利的。此外,上述实施例中的各个系统模块和组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应该理解的是,所描述的程序组件和系统通常能够被一起集成在单个软件产品中或者打包成多个软件产品。
134.已经描述了本主题的特定实施例。其它实施例在所附权利要求的范围内。例如,权利要求中记载的动作能够以不同的顺序执行并且仍实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或先后顺序来实现期望的结果。在某些情况下,多任务和并行处理可以是有利的。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献