CN112292668A - 基于附接的加速器的推理服务 - Google Patents

基于附接的加速器的推理服务 Download PDF

Info

Publication number
CN112292668A
CN112292668A CN201980041959.0A CN201980041959A CN112292668A CN 112292668 A CN112292668 A CN 112292668A CN 201980041959 A CN201980041959 A CN 201980041959A CN 112292668 A CN112292668 A CN 112292668A
Authority
CN
China
Prior art keywords
accelerator
application
instance
network
machine learning
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
Application number
CN201980041959.0A
Other languages
English (en)
Other versions
CN112292668B (zh
Inventor
S·森古普塔
P·C·S·佩鲁马拉
D·R·迪瓦卡鲁尼
N·布沙拉
L·P·狄拉克
B·萨哈
M·J·伍德
A·奥加提
S·西瓦苏布拉马尼亚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US16/020,788 external-priority patent/US11494621B2/en
Priority claimed from US16/020,776 external-priority patent/US11599821B2/en
Priority claimed from US16/020,810 external-priority patent/US11422863B2/en
Priority claimed from US16/020,819 external-priority patent/US11960935B2/en
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of CN112292668A publication Critical patent/CN112292668A/zh
Application granted granted Critical
Publication of CN112292668B publication Critical patent/CN112292668B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models

Abstract

本文详细描述的实现方式包括一种计算机实现方法的描述。在实现方式中,所述方法至少包括:接收应用实例配置,所述应用实例的应用在机器学习模型的执行期间利用附接加速器的一部分,并且所述应用实例配置包括:要使用的中央处理单元(CPU)能力的指示;要使用的所述机器学习模型的算术精度;要使用的所述加速器能力的指示;所述应用的存储位置;以及要使用的随机存取存储器的量的指示。

Description

基于附接的加速器的推理服务
背景技术
随着深度学习在各种应用中变得越来越普遍,客户发现在生产环境中运行它具有挑战性且昂贵。如今,客户使用GPU来提高运行干扰工作负载的性能和效率,但发现如果不过度供应容量(这可能是浪费且昂贵的)就很难做到这一点。运行深度学习推理(inference)的成本占整个应用基础设施的很大一部分,而大规模运行这些工作负载的任何效率低下可能会导致成本过高。
附图说明
将参考附图描述根据本公开的各种实施方案,在附图中:
图1示出了利用弹性推理服务的系统的实施方案。
图2示出了弹性推理服务的实施方案。
图3示出了允许包括数据平面方面和控制平面方面的弹性推理的系统的实施方案。
图4示出了作为泳道图的设备供应的方法的示例。
图5示出了加速器设备供应的实施方案。
图6示出了加速器设备预附接的实施方案。
图7示出了作为泳道图的设备附接的方法的示例。
图8示出了加速器设备附接的实施方案。
图9示出了作为泳道图的设备取消附接/回收的方法的示例。
图10示出了使用加速器来进行弹性推理的方法的游泳图的实施方案,包括应用实例与加速器设备之间的交互。
图11示出了由web服务提供商在实现弹性推理服务时执行的方法的实施方案。
图12示出了由web服务提供商在实现弹性推理服务时执行的方法的实施方案。
图13示出了由web服务提供商在实现弹性推理服务时执行的方法的实施方案。
图14示出了使用基于加速器的推理服务的系统的实施方案。
图15示出了根据一些实施方案的示例性提供商网络环境。
图16示出了根据一些实施方案的使用IP隧道技术在网络底层上实现覆盖网络的示例性数据中心。
图17示出了根据一些实施方案的将提供商网络上的虚拟网络提供给至少一些客户的示例性提供商网络。
图18是示出了可以在一些实施方案中使用的示例性计算机系统的框图。
图19出了根据各种实施方案可利用的示例性计算装置的一组通用部件的逻辑布置。
图20示出了用于实现根据各种实施方案的各方面的环境的示例。
具体实施方式
描述了用于弹性机器学习服务的方法、装置、系统和非暂时性计算机可读存储介质的各种实施方案。特别地,加速器的插槽可附接到推理应用(包括推理调用的应用)并用作较大应用的流水线的一部分。
弹性机器学习/推理(El)服务为在计算实例上运行的应用提供了成本高效的硬件加速。附接和用途是弹性的,因为加速器可添加或移除并且具有多种选择的精度和/或速度。这样,开发人员可在更多地方合并硬件加速,而无需使用完整加速器(诸如整个图形处理单元(GPU))。另外,El服务通过独立于硬件的接口来掩盖基础硬件,从而允许服务提供商取决于成本和能力在其下部署异构硬件,并且调整以适应快速移动的深度学习/人工智能硬件格局。另外,通过El接口(加速器插槽的附接和/或允许加速器插槽与应用之间的通信的命令),可在多个推理应用(诸如客户实例)上虚拟化单个加速器芯片。
由于不同机器学习工作负载在核心机器学习(ML)功能之外具有不同量的预处理和后处理要求,并且针对每种工作负载所需的CPU、DRAM和硬件加速资源的量不相同。由所描述的El服务提供的机器学习计算效率和加速所需的硬件资源的解耦允许开发人员在计算实例中独立地设置中央处理单元(CPU)和存储器(诸如动态随机存取存储器(DRAM))的大小。
图1示出了利用弹性推理服务的系统的实施方案。在图示中,弹性推理服务105是由web服务提供商101提供的服务。web服务提供商101提供多租户计算和/或存储能力。
在一些实施方案中,web服务提供商101的前端103是管道,web服务提供商101的用户(诸如客户)通过所述管道与web服务提供商101的基础服务进行交互。例如,用户装置121通过前端103与弹性推理服务105进行交互。该交互可包括弹性推理服务105的配置以及从弹性推理服务105接收结果。可通过使用应用编程接口(API)调用和/或命令行接口来进行交互。在一些实施方案中,直接耦接到弹性推理服务105。在一些实施方案中利用了对DescribeElasticInferenceAccelerators、Runlnstances、Startlnstances等的API调用。
弹性推理服务105管理运行一组特定软件部件以传递加速器的加速器设备池。弹性推理105用于执行包括要在加速器上执行的代码(诸如模型)的至少某个部分的应用。这些加速器设备驻留在服务拥有的虚拟网络中。在内部,加速器映射到加速器插槽,所述加速器插槽包括来自加速器设备的计算资源的一部分。加速器设备可托管包括多个加速器插槽的加速器。托管在加速器设备上的加速器插槽的数量取决于加速器的配置和加速器设备的配置。
用户可根据用户提供的配置启动应用实例并请求附接加速器(示例在此进行了详细描述)。弹性推理服务105的控制平面处理供应至少一个加速器插槽并将一个或多个插槽附接到用户的应用实例的请求。配置可指示要使用的一个或多个加速器插槽的详细信息,或者弹性推理服务105可这样做。在附接后,可从用户的虚拟网络或经由更直接的连接(诸如PCIe连接)访问一个或多个加速器插槽。
如上所述,弹性推理服务105支持用于机器学习任务(诸如推理)的多租户加速。存储装置113A和/或113B用于存储一个或多个应用,其包括要在弹性推理服务105上执行的一个或多个模型。应用可由弹性推理服务105托管为容器或作为虚拟机的一部分运行。
一个或多个数据源109A和109B提供要由弹性推理服务105运行的加速器处理的得分数据。
在一些实施方案中,弹性推理服务105位于用户装置(诸如用户装置121)上并且不是web服务提供商101产品的一部分,然而为了简洁起见,下面的大多数讨论使用web服务提供商作为示例。
编号的圆圈示出了示例性流程。在圆圈1,用户装置121将弹性推理服务105的配置传送到web服务提供商101。特别地,用户装置121将弹性推理服务105配置为托管来自存储装置113A的应用,所述应用包括要在由弹性推理服务105控制的加速器上运行的模型。
在圆圈2,将此配置提供给弹性推理服务105,所述服务在圆圈3连接到存储装置113A以访问和加载模型并确定模型是否可在弹性推理服务105的加速器上运行。在一些实施方案中,弹性推理服务105还确定加速器应如何运行模型。
在圆圈4A或4B,数据源109A或109B将得分数据提供给前端103。在圆圈5将该得分数据转发到弹性推理服务105以进行处理并将结果提供回前端103。也可将结果存储在存储装置113A或113B中。最后,将结果提供给用户装置121(如果请求)。
图2示出了弹性推理服务105的实施方案。该弹性推理服务105可是web服务提供商产品的一部分,或可作为用户装置上的引擎(然而如上所述为简洁起见,在整个应用中将使用“服务”)。特别地,所示出的内容可被认为是弹性推理服务105的数据平面。如图所示,数据平面包括客户端部件(应用实例211的一部分)和服务器部件(加速器设备221)。客户端部件作为安装在应用实例211上的客户端库实现方式传递。客户端库将推理调用从应用实例211转发到远程附接的加速器设备221。在一些实施方案中,加速器设备221从应用实例211接收张量并返回张量。
应用实例211是一种虚拟计算环境,所述虚拟计算环境使用CPU212、存储器、存储装置和联网能力的特定配置,所述特定配置用于执行应用213。在一些实施方案中,配置被称为实例类型。应用实例(包括操作系统)的模板称为机器图像。应用213可在以下被称为“推理应用”以突出显示应用213的一部分进行对至少一个加速器插槽的推理调用。然而,应用213通常包括其他代码,并且推理调用通常是应用流水线的一方面。
由用户指定的实例类型确定要用于web服务提供商101内的实例的主机计算机的硬件。每种实例类型提供不同的计算、存储器和存储装置能力并且基于这些能力分组为实例系列。
类似地,加速器设备221(另一个计算实例)使用CPU 224、存储器、存储装置和联网能力的特定配置,所述特定配置用于执行应用213的机器学习模型。加速器设备221另外可访问一个或多个加速器222。每个加速器222包括一个或多个加速器插槽223。特别地,在加速器插槽223上对加速器设备221的计算资源进行分区、分配、资源管控和隔离以在多租户环境中实现一致、持续的性能。在CPU 224上执行的代码编排机载加速器,运行推理引擎运行时,并卸载通向加速器222的计算。可引起竞争的加速器设备221的资源包括CPU 224、存储器、加速器、加速器存储器、通信信道281(诸如像PCIe的直接连接或联网连接)、磁盘以及主机到互连(诸如PCIe)带宽。加速器插槽223处理应用实例211的调用。
资源管控和隔离可使用设备管理部件241通过加速器插槽223上的资源的静态分区来减小/减轻加速器插槽223上的请求的干扰。静态分区通常用于有关加速器设备221的以下资源类型:CPU核心和存储器、加速器计算和存储器、以及网络带宽(至少是入口)。然而,在一些实施方案中,利用动态分区,使得未附接插槽223不具有资源(诸如分配的存储器)。
在一些实施方案中,可使用控制组(cgroup)来隔离和管控CPU224资源和磁盘,可使用多过程服务功能来隔离和管控加速器资源,并且可使用一个或多个网络调度程序来隔离和管控(诸如节流)网络带宽。例如,在一些实施方案中,使用Cgroup中的cpuset机制在过程之间对CPU核心进行分区。在管理器/维护/健康检查/日志记录过程中共享核心的小集合(其是针对每个加速器的或对于实例都是公用的)。核心的其余部分在加速器插槽上分区。
对于加速器资源222,加速器插槽223的分区取决于所使用的基础加速器的类型。例如,在一些实施方案中,使用了内核到加速器插槽上的空间多路复用。对于给定加速器插槽223,内核使用可用硬件部分。一种方式是使所述部分与加速器插槽223的Tera运算/秒(TOPS)容量成比例。对于基于心动阵列的加速器,时间多路复用用于对单个张量处理块进行插槽,并支持先占长时间运行内核。
远程附接的加速器插槽223作为弹性推理加速器呈现给用户,弹性推理加速器是在实例启动时附接到客户应用实例211以向实例提供推理加速器能力的短暂装置。用户可将一个或多个弹性推理加速器与应用实例相关联。
对于通信信道281的带宽使用,由于大张量可作为推理调用(例如,视觉模型)的输入被发送,因此入口带宽是一个问题。n个入口分支中的每一者应使用实例带宽的约1/n(即使所有n个分支网络接口都不处于活动状态时)。可使用加速器设备221上的网络调度程序(未显示)。应用实例211和加速器221之间的通信发生在多个网络连接上,其中每个连接由应用实例211启动。
用于推理的El的计算能力可通过不同的方式放大和缩小。首先,客户实例和El附接可是自动缩放单位,因为El附接是启动实例模板的一部分。其次,客户可将不同精度和TOPS的多个El接口附接到给定实例并在它们之间分配推理调用。
对于许多网络,可使用8位整数(INT8)计算来执行推理,而不会对准确度产生重大影响。在现实世界中,输入数据通常以低精度(或低动态范围)生成,因此以较低精度进行计算不会影响结果的准确度。使用低精度计算允许推理减少存储器使用量,以更高吞吐量传输数据,部署更大模型,并经由宽向量指令增加OPS吞吐量。然而,训练通常使用更高精度算术(例如,FP32)来生成使用高精度权重的模型。因此,我们需要处理经训练模型(例如,FP32)和用于推理的硬件的能力/操作模式(例如,INT8)之间的在精度上的该差距。
在一些实施方案中,硬件的精度能力向用户公开,并且用户将以相应的精度来提供模型。在其他实施方案中,执行从较高精度经训练模型(FP32)到较低精度推理模型的转换。为了使用输入的张量/激活/权重的预先计算的最小/最大边界以有效方式进行量化,可使用来自用户的针对该模型的校准数据集。
弹性推理服务提供FP32和FP16的至少两个算术精度。在两种情况下,在一些实施方案中,以FP32格式提供训练模型。对于FP32模型以FP16模式运行推理涉及简单的类型转换(而不是量化)。
图3示出了允许包括数据平面方面和控制平面方面的弹性推理的系统的实施方案。在一些实施方案中,该系统的各方面是弹性推理服务的一部分。如上所述,远程附接的加速器223表示为附接到用户的计算实例的弹性推理加速器(EIA)(或简称为加速器)。用户的计算实例被标记为应用实例(AI)211,并且在服务侧上托管EIA的计算实例被标记为加速器设备(AA)221。每个EIA被映射到加速器插槽(AS),其是加速器的一部分并且由AA 221管理。
AA 221可托管多个EIA 223并支持多租户(使得它允许来自属于不同用户的不同应用实例211的附接)。每个加速器插槽在任何给定时间只能附接到一个应用实例。
数据平面301使得用户能够使用一个或多个远程附接的EIA来运行深度学习推理应用;监测在应用实例211上运行的推理应用的健康和性能度量;监测在加速器设备221上运行的服务部件的健康和性能度量;确保安装在应用实例211上的软件部件与安装在加速器设备221上的软件部件是最新的;向用户通知所附接的EIA的健康、连接性和性能;和/或确保EIA传递承诺的性能(例如,就TOPS和存储器的使用而言)。
数据平面301包括至少一个应用实例211和至少一个加速器设备221。每个应用实例211包括在应用实例211上运行的应用实例管理器(AIM)317,其负责出售EIA与应用实例211的连接,检查与EIA的连接性,确保安装在应用实例211上的软件部件与安装在EIA上的软件部件是最新的,并且将应用实例211特定的健康信息推送到EIA。
AIM 317在开机时间启动并在崩溃或意外关闭时重新启动。当控制平面351附接加速器223时,它将有关如何与加速器223接触的信息注入到应用实例211的实例元数据服务(IMDS)371中(此交互的详细信息在本说明书的其他部分中有详细介绍)。在一些实施方案中,AIM 317使用IMDS 371来检查加速器是否被附接。如果没有加速器被附接到AI 211,则IMDS 371保持空闲状态,从而等待新加速器的附接。如果加速器被附接,则在一些实施方案中,AIM 317尝试连接到加速器插槽管理器(ASM)329。在一些实施方案中,通信通过由ASM329服务并且由AIM 317发起的端点发生。如果连接失败或如果稍后断开连接,则在几次重试后,IMDS 371将问题报告给最终用户。在一些实施方案中,IMDS 371是http服务器,客户可使用所述http服务器(例如,通过从其实例内卷曲已知端点)来内观有关其实例的某些数据(例如,实例id、附接的网络接口等)。
如果建立了连接,则AIM 317与ASM 329进行交互以清点要安装的软件。在此握手规程结束时,预期AS上的部件将运行最新的软件版本或与AI 211上的部件兼容的版本。在一些实施方案中,此时加载最新的软件版本,使得所述软件与要运行的模型兼容。在一些实施方案中,如果机器实例被锁定并且AI 211中的部件与加速器中的部件不兼容,则连接被断开并被报告。
应用213本身使用客户端库315来调用加速器223的推理引擎325。在一些实施方案中,客户端库315将gRPC用于对推理引擎325的远程规程调用。
在一些实施方案中,客户端库315实现API。该API可包括以下命令中的一个或多个:
-EIA.initLibrary(eialD)-初始化应用的EIA上下文,所述上下文将用于调用附接到客户应用实例的EIA。如果将多个EIA附接到客户的应用实例,则可传递任选自变量“eialD”。如果eialD无效或未附接EIA,则引发异常。
-eia.loadModel(name,model-config.xml,runtimeParameters)-通过“model-config.xml”中给定的配置加载模型。可使用“model-config.xml”传递与模型相关的框架、版本、位置和其他详细信息。可使用“modelParameters”来提供运行时参数,诸如最大批次大小。
-model.predict(inputTensor)-对加载到EIA上的“模型”的同步推理API调用。它返回输出张量。
-model.predictBatch(inputTensorArray)-对加载到EIA上的“模型”的同步推理批API调用。
-model.predictAsync(iTensor)-对加载到EIA上的“模型”的异步推理API调用。它返回人们可用来检索结果的未来。
-outputFuture.getResults()-返回/阻止以检索先前发出的推理调用的结果。
-model.predictBatchAsync(iTensorArray)-对加载到EIA中的“模型”的异步推理批API调用。它返回人们可用来检索结果的未来。
-oFuture.getResults()-返回/阻止以检索先前发出的推理调用的结果。
-eia.listModels()-列出加载到EIA“eia”上的模型。
-eia.unloadModel(name)-卸载先前加载的模型“name”。如果模型不存在,则会引发异常。
-eia.createTensor(shape,dtype)-在EIA上下文中用指定的形状和类型创建/分配张量。
-eia.copyTensor(source,target)—将张量从“source”复制到“target”。
-deleteTensor(inputTensor)-删除/取消分配先前在EIA上下文中创建的张量。
在一些实施方案中,命令行实用程序319可用于访问连接性信息和/或生成用于推理的命令等。
AA 221包括几个部件,包括一个或多个加速器插槽223、磁盘333和设备管理部件241。AA 221部件负责引导,供应隔离的加速器插槽,监测来自控制平面351的事件(诸如对加速器插槽的附接/回收),将插槽和设备状态(诸如健康和网络连接)更新到控制平面351,上传度量/日志。
控制平面351包括多个服务部件,其执行与应用实例211的启动和终止的整合以及对装置查询和管理的支持。这样,用户可经由控制平面Q51启动应用实例211,从而请求将一个或多个加速器插槽223作为弹性加速器附接到应用实例211,并终止具有附接到其的弹性推理加速器的应用实例211。
在一些实施方案中,当支持相关联的弹性推理加速器的加速器设备GQ21变得受损或需要维护时,针对应用实例211的维护通知通过控制平面351路由到用户。此外,在一些实施方案中,控制平面351将加速器设备221和应用实例211的度量提供给用户。
如上所述,加速器插槽223的部件在每个加速器插槽上运行。加速器插槽中的所有部件在资源方面都是隔离的,诸如CPU、RAM、GPU计算、GPU存储器、磁盘和网络。加速器插槽部件为该加速器插槽223的附接客户实例服务。
加速器插槽管理器(ASM)329负责在应用实例211上安装软件部件。ASM 329侦听来自应用实例211的握手、软件同步和健康检查。AIM 317通过应用实例211中存在的软件清单连接到ASM 329。
ASM 329还负责从AIM 317接收定期健康检查。ASM 329基于从AIM 317接收到健康检查消息来报告应用实例211的连接性。它由ASM 329写入磁盘并由AAM通过存储装置361读取并报告到控制平面。AIM 317跟踪连接性信息。客户可使用由客户端库315提供的实用程序或命令行实用程序319在应用实例211上检索到这一点。
推理引擎(IE)325处理模型加载和推理执行。如图所示,此引擎325是每个加速器插槽223的单独过程。IE 325经由前端接收器库从客户实例上的客户端库315接收请求。IE325包含使推理工作所需的运行时。
模型验证器(MV)327检查用户提供的模型文件语法的正确性和有效性。在一些实施方案中,这是作为与推理引擎223分开的CPU过程完成的,使得不存在与安全性有关的加速器运行时泄漏。在一些实施方案中,MV 327将所提供的模型转换成不同的格式(诸如将MXNET序列化为JSON)。在一些实施方案中,当应用213(包括库315)尚未做出选择时,MV 327选择要使用的推理引擎325。
在一些实施方案中,应用度量收集器331是用于发送、收集和聚集应用的度量的一组工具。在一些实施方案中,应用度量收集器331是StatsD。收集的度量被存储到可由设备管理部件241访问的本地磁盘333。
设备管理部件241包括加速器设备管理器(AAM)343、存储上传器345、以及度量和日志收集器347。AAM 343经由监测存储装置361的存储对象来引导加速器设备221并供应加速器插槽221,一旦不再需要加速器插槽,则取消供应/取消附接加速器插槽,并回收加速器插槽以供将来使用。它还监测加速器插槽223的健康和占用,并准备要由存储上传器345上传到存储装置361的对象。应注意,加速器的监测和报告可由另一个部件进行隔离和处理。
度量和日志收集器347从加速器插槽223和加速器设备223收集度量和日志,并适当地按摩数据以供控制平面351消耗。
存储上传器345上传健康和占用报告(由AAM 343准备)以及度量和日志。
使用客户端库315的推理应用通过与AIM 317通信来获取加速器设备221的连接信息。
AIM 317将心跳推送到ASM 329以通知AIM 317的活动度。该信息由ASM 329使用以将所附接的应用实例211的健康报告回控制平面351。
所示出的系统最小化在应用实例211上运行的使用加速器的应用213以及在加速器插槽223上运行的推理引擎325之间的部件的数量以最小化等待时间和故障率。此外,推理服务的控制平面351与数据平面301解耦(如图所示)以使得控制平面351的中断不会影响它们正在使用的应用实例211或加速器插槽223。
El接口(EIA的接口)可在实例启动期间附接到应用实例或动态地与实时实例附接/脱离。可使用客户端库315或经由模型框架(诸如TensorFlow和MXNet框架)来直接访问El接口。在典型的用例中,应用实例211运行较大的机器学习流水线,其中使用El接口API将仅发送加速器设备221边界调用并且其余部分在本地执行。数据输入的预处理和推理输出的后处理也在应用实例211上完成。用于通过加速器启动实例的API命令示例如下:
$aws ec2 run-instances-region us-east-l--eia-specification type=fp16.eia.medium-instance-type t2.medium-image-id ami-e3bb7399
通过指定算术精度(诸如FP32、FP16、INT8等)和计算能力(TOPS)来设置El接口的大小。El接口API允许加载模型、对其进行推理调用(诸如张量输入/张量输出)以及卸载模型。可在任何给定时间经由El接口加载多个模型。模型包括(i)用于推理的整个计算图的描述,以及(ii)从训练中获得的权重。用于加载的API命令的示例如下:
$eia load-model-model-location“s3 location”-role“eiaRole”--model_name“my_model_l”-max_batch_size 16
模型以许多不同的格式出现并且本文描述的服务的实施方案支持多种格式。在一些实施方案中,支持从TensorFlow和MXNet框架导出的模型格式以及模型交换格式(如ONNX)。处理特定格式的方式可能有所不同。通常,经由一个或多个文件和/或对象将模型加载到应用实例和加速器中。例如,可将模型加载到存储装置(诸如存储装置361)中,并且然后使其可由应用实例和加速器使用。这些文件和/或对象将模型指定为加权计算图,诸如以TensorFlow、Apache MXNet或ONNX的格式。模型定义将使用以相应框架或互换格式定义的内置运算符/层。模型格式版本在模型文件中指定并且是用于导出文件的相应框架的版本号(例如,TensorFlow 1.5、MXNet 1.0、ONNX 1.0)。在一些实施方案中,加速器运行时(诸如模型验证器327)将使用该信息来确定使用哪个推理引擎325来服务模型。
在El接口初始化期间,提供经训练的模型(计算图)作为输入并进行概要分析,并且然后应用213在应用实例211上经由客户端库315进行推理调用。有很多方法来实现这种方法。
在一些实施方案中,使用提前(AOT)编译。例如,在El接口上的模型加载期间,将经训练的模型编译成目标(硬件)代码。这涉及两个子步骤。首先,前端编译器将经训练的模型文件格式转换为中间表示形式,同时并入有与目标无关的优化和分析。其次,后端编译器通过目标相关的优化和分析将中间表示形式转换为机器代码。这种“AOT”编译允许进行整个程序分析。目标硬件是加速器设备221上的CPU和加速器装置的组合,其中编译是在加速器设备221上完成的。输出并入有针对目标体系结构特定的推理的优化执行计划。编译阶段可能需要附加的输入,如最大批大小。此外,如果需要,还可将该表示形式序列化到存储装置,使得针对用于同一模型和加速器设备221硬件的推理的将来实例化,可避免编译阶段。加速器设备221上的运行时将这一点实例化为存储器中的“推理运行时对象”并使用它在El接口上执行将来的推理调用。AOT编译方法移除(大部分)机器学习(ML)引擎依赖性,因此运行时具有低存储器占用空间和较低CPU开销。在许多情况下,它还可能导致更高的推理性能。
在一些实施方案中,利用了加速器设备221上的ML引擎。ML引擎将模型作为输入并在推理期间执行它。因为ML引擎遍历模型图并调用运算符级别的API,所以这在加速器设备221上将具有较高的存储器占用空间和CPU开销。
在一些实施方案中,利用了应用实例211上的ML引擎。对于一些基于GPU的加速,CPU在其自身与GPU之间分配计算量并且调用接口以卸载到GPU的计算。这允许ML引擎在客户实例上运行并以计算基元的粒度通过网络进行对加速器设备221的调用。通过聚集远程调用并将它们批量发送到加速器设备221,也可以减小此方法的等待时间。客户端库315将用于在框架下将模型加载在加速器设备221上并随后对其进行推理调用。
在一些实施方案中,公告的TOPS可归因于加速硬件的计算能力,而不是归因于将运行应用实例211的其CPU。大多数计算密集型运算符已在加速器上执行(例如,MXNet具有GPU实现),但在控制流中,运算符可能无法以序列化模型格式表示并且将在CPU上运行。加速器设备221上的每个加速器插槽还获得了应用实例211的CPU份额并且所述份额与供应的TOPS成比例。
在一些实施方案中,针对相应框架/版本的正确性和一致性对模型的语法进行验证,使得客户无法使用此形式作为输入来利用推理引擎223中的漏洞。模型验证器针对每种框架/格式验证模型语法。此验证作为与推理引擎223分开的过程来完成以使得不存在与安全性有关的GPU运行时泄漏。
图4示出了作为泳道图的设备供应的方法的示例。该图示集中于控制平面351和数据平面部件(诸如加速器设备管理器343和加速器插槽223)之间的动作和通信。如上所述,设备包括控制器(诸如CPU)和耦接到所述控制器的多个加速器(诸如GPU、ASIC和FPGA)。加速器设备管理器343负责供应和隔离作为加速器一部分的加速器插槽223,将应用实例与加速器插槽附接/脱离,清理并回收加速器以供将来附接,收集并报告加速器的健康和连接性,和/或处置加速器软件的版本升级。存储装置361用于对象存储。
在圆圈1,控制平面351将供应数据发送到加速器设备管理器343。此供应数据包括加速器设备的标识符、要使用的加速器的一个或多个标识符、加速器类型的一个或多个标识符、元数据存储装置的标识符或位置、一个或多个日志(诸如健康日志和转储)存储装置的标识符或位置以及加密密钥(或其位置)中的一个或多个。所选择的加速器设备与用户的供应请求的大小和精度匹配。
在圆圈2,加速器设备管理器343执行每个加速器插槽223的启动/配置以使用。在一些实施方案中,这包括启动用于机器学习模型的容器或虚拟机。在一些实施方案中,使用裸金属。
在圆圈3,加速器设备管理器343使用日志信息来写入所标识的日志存储装置361。例如,到健康度量文件的连接性信息(空配置)此时可写入。健康度量的示例包括但不限于:设备的身份、实例的身份、设备类型的标识、健康状况的指示(诸如正常、受损、停止等)和日志时间。应注意,此时关于加速器插槽的连接性信息通常为空,因为刚进行了供应。
另外,可写入度量信息。示例性度量包括但不限于:度量的数据,诸如名称、单位、值、统计值(最大值、最小值、样本计数、参考周期的值总和)和时间戳;以及度量维度,诸如实例标识符、加速器插槽的标识符、加速器插槽的类型的标识符、实例的软件配置的标识符;以及应用实例标识符等。
将该信息存储在存储装置361中允许控制平面351利用该信息。每个加速器插槽223生成健康和连接性信息,并在圆圈4将其提供给加速器设备管理器343,后者继而在圆圈5更新存储装置361。在一些实施方案中,每分钟产生健康和连接性信息,然而,在其他实施方案中,该信息按需、以不同的速率等生成。
在某个点,在圆圈4,控制平面351将至少轮询健康(诸如对健康文件进行轮询)。在圆圈5,存储装置361以健康信息做出响应,并且控制平面351基于该健康信息评估供应是否成功。供应可能会失败。例如,可能会发生引导问题(诸如无法供应插槽),或者可能会发生存储问题,诸如无法写入或写入健康、度量、日志或转储信息。例如,在一些实施方案中,如果从未生成加速器插槽的健康信息,则控制平面351重新供应整个设备。在一些实施方案中,当数据平面未能将健康信息放入存储装置361中时,控制平面351等待,直到健康信息到达(并且如果健康信息没有到达则在某点超时)并且发生设备的重新供应。应注意,如果在存储装置361中缺少任何数据,则控制平面351可请求(通过加速器设备管理器343)信息的重新发送。
图5示出了加速器设备供应的实施方案。如图所示,加速器设备221包括多个加速器插槽(AS 1 325、AS 2、…、AS n)。用户供应数据由AAM 343接收,然后所述AAM根据需要设置每个加速器插槽。在此示例中,仅设置了AS 1 223。然而,AAM 343确实跟踪其他加速器插槽的使用。例如,AS 2可被附接到不同的应用实例,并且AAM 343将知道这一点并相应地管控加速器设备221的资源的使用。
图6示出了加速器设备预附接的实施方案。如图所示,加速器设备221包括多个加速器插槽(AS 1 223、AS 2、…、AS n)。每个加速器插槽(例如,通过本地磁盘或直接地)与AAM 343传送健康、度量和日志信息。AAM 343每加速器插槽以JavaScript对象表示法(JSON)格式将健康和度量信息传送到控制平面可访问的存储位置(诸如存储装置361)。每个加速器插槽的日志和转储信息也可用于控制平面可访问的存储位置。在一些实施方案中,信息被周期性地发送出去。周期性可由用户定义或由web服务提供商定义。在其他实施方案中,信息随着其改变而被发送出去。例如,随着健康信息的改变(加速器插槽变得不健康)。
图7示出了作为泳道图的设备附接的方法的示例。该图示集中于控制平面351和数据平面部件(加速器设备管理器343和加速器插槽223)之间的动作和通信。
在圆圈1,控制平面351经由存储装置361将连接性信息发送到加速器设备管理器343。此连接性数据包括以下中的一者或多者:附接元数据、健康/连接性数据和度量数据。在一些实施方案中,这些中的一个或多个被存储为单独文件(诸如附接元数据文件、健康/连接性文件等)。
附接元数据可包括但不限于:附接信息诸如客户账户标识符、附接标识符、附接类型(加速器插槽223的类型)、应用实例标识符、域标识符、网络接口的VLAN标识符、网络接口的MAC和网络接口的IP地址。
健康/连接性数据可包括但不限于:健康数据,诸如设备的身份、实例的身份、设备类型的标识、和健康状况的指示(诸如正常、受损、停止等)和日志时间;以及连接性数据,诸如连接性状态(连接/断开)、附接标识符、附接类型(加速器插槽223的类型)、应用实例标识符、域标识符和时间戳。
度量数据可包括但不限于:度量的数据,诸如名称、单位、值、统计值(最大值、最小值、样本计数、参考周期的值总和)和时间戳;以及度量维度,诸如实例标识符、加速器插槽的标识符、加速器插槽的类型的标识符、实例的软件配置的标识符;应用实例标识符等。
在圆圈2,加速器设备管理器343从存储装置361请求连接性数据信息。在圆圈3,提供连接性数据信息(如果有)。然后,设备应用管理器343使用该信息来附接一个或多个加速器插槽QA08(例如,如附接元数据中详述),并且在圆圈4,一个或多个加速器插槽223将连接性信息提供回设备应用管理器343。
在圆圈5,加速器设备管理器343将日志信息写入所识别的日志存储装置361。例如,将连接性信息写入健康度量信息。上面详细介绍了健康度量的示例,然而,在这一点上,它们不应为空。另外,可写入非健康度量信息。示例性非健康度量可包括但不限于:度量的数据,诸如名称、单位、值、统计值(最大值、最小值、样本计数、参考周期的值总和)和时间戳;以及度量维度,诸如实例标识符、加速器插槽的标识符、加速器插槽的类型的标识符、实例的软件配置的标识符;应用实例标识符等。
在某个点,在圆圈6,控制平面351将至少轮询健康信息。在圆圈7,存储装置361以健康信息做出响应,并且在圆圈8,控制平面351基于该健康信息评估附接是否成功。
应注意,附接可能会失败。例如,可能会发生存储问题,诸如无法写入或读取附接元数据信息,或者无法写入或读取健康、度量、日志或转储信息。例如,在一些实施方案中,如果控制平面351无法发送附接元数据,则数据平面将继续像其先前那样起作用。然而,控制平面351将需要找出发生什么问题。在一些实施方案中,当数据平面无法读取附接信息时,附接元数据所引用的加速器插槽223将不知道它被附接,并且控制平面351会认为附接受损直到不再有任何连接为止(加速器插槽223在健康数据中提供)。在一些实施方案中,如果数据平面无法发送健康信息,或者控制平面351无法读取健康信息,则控制平面351会认为附接受损直到不再有任何连接为止(加速器插槽223在健康数据中提供)。
图8示出了加速器设备附接的实施方案。特别地,附接了一个加速器插槽。如图所示,加速器设备221包括多个加速器插槽(AS 1 223、AS 2、…、AS n)。JSON元数据文件被提供给AAM 343,从而指示用户帐户已附接到要使用加速器设备的应用实例。AAM 343更新健康、度量以及日志和转储信息,并使其可用于控制平面可访问的存储装置。这样,控制平面将知道已附接插槽。
图9示出了作为泳道图的设备取消附接/回收的方法的示例。该图示集中于控制平面351和数据平面部件(加速器设备管理器343和加速器插槽223)之间的动作和通信。在某个点,将不需要加速器插槽223。控制平面351将向该加速器插槽223通知这一点。首先,在圆圈1,控制平面将目标加速器插槽标记为需要进行清洁。
在圆圈2,控制平面351更新存储装置361的元数据信息以清空所有连接性信息并放入清洁令牌,所述清洁令牌将由加速器插槽223使用以确认清洁过程已完成。例如,附接信息将仅具有清洁令牌。
在圆圈3,加速器设备管理器343从存储装置361请求连接性数据中的一个或多个。在圆圈4提供连接性数据(如果有)。然后,设备应用管理器343使用该信息来取消附接一个或多个加速器插槽223(例如,如附接元数据中详述),并且在圆圈4,一个或多个加速器插槽223将连接性信息提供回设备应用管理器343。
在圆圈5,设备应用管理器343通知加速器插槽223进行清理/回收。加速器插槽223释放应用正在使用的资源(诸如存储器中的地址、缓存等),并在圆圈6,通知设备应用管理器343完成清理/回收。
在圆圈6,加速器设备管理器343将更新后的健康信息写入存储装置361,其中除了空连接的正常健康信息外还包括清洁令牌。
在某个点,在圆圈8,控制平面351将至少轮询健康信息。在圆圈9,存储装置361以健康信息做出响应,并且在圆圈10,控制平面351基于该健康信息评估取消附接是否成功。应注意,取消附接可能会失败。例如,可能发生存储问题,诸如无法写入或读取更新附接元数据信息,或者无法通过控制平面351读取清洁令牌。例如,在一些实施方案中,如果控制平面351无法发送更新附接元数据,则数据平面将继续像其先前那样起作用,但是由于客户实例被停止,控制平面351将认为附接受损。然而,控制平面351将需要找出发生什么问题。在一些实施方案中,当数据平面无法读取更新的元数据信息时,附接元数据所引用的加速器插槽223将不知道它将被取消附接,并且控制平面351将认为附接将处于清洁状态。不会对加速器插槽223进行新的放置直到提升清洁状态。
图10示出了使用加速器来进行弹性推理的方法的游泳图的实施方案,包括应用实例与加速器设备之间的交互。
如图所示,AIM 317读取IMDS以获取有关如何与加速器222接触的信息。在一些实施方案中,IMDS信息包括关于如何接触特定加速器插槽223的信息。
AIM 317和加速器插槽223的ASM 329执行握手操作以确定兼容性。如果可兼容,则应用实例211的推理应用213从AIM 317获取加速器的地址。这样,推理应用213现在知道在哪里处理要处理的得分数据。
应用实例将使用的加速器插槽的ASM 329在加速器设备的本地磁盘333中或使用通信信道281更新其连接性和健康信息。AAM 343读取该信息并将其放入控制平面可访问的存储装置361。这样,应用实例和加速器插槽已经学习了如何相互连接,并且加速器设备已使该信息可用于控制平面351。控制平面如何与该数据进行交互在其他地方进行了详细说明。
推理应用213也将它想要使用的一个或多个模型加载到加速器插槽。在一些实施方案中,该负载到达推理引擎325,该推理引擎然后调用模型验证器327以验证任何一个或多个上传的模型。该验证的成功或失败将被提供给推理引擎。在其他实施方案中,来自推理引擎212的负载到达模型验证器327,所述模型验证器验证模型,选择要利用的推理引擎325,并将经验证的模型提供给所选择的推理引擎325。向推理应用213提供成功模型加载的指示。
随着推理应用213接收到的得分数据被引导到推理引擎325并且一个或多个结果被传递回去。
当不再使用该模型时,经由从推理应用213到加速器插槽的命令将其卸载。特别地,不再供应推理引擎325来处理来自推理应用213的请求。
应注意,如在别处讨论的,加速器插槽(特别是ASM 329)通过连接性信息来更新本地磁盘333,AAM 343将该连接性信息提供给存储装置361以供消耗,或通过通信信道281发送该连接性信息。当控制平面351确定没有经由存储装置361的连接性(诸如在模型的卸载或故障之后)时,其使插槽受损。
另外,由于连接问题、部件故障、部件不兼容等,使用一个或多个加速器插槽时可能会发生故障。检测故障、识别根本原因以及通知用户采取必要和纠正的动作是弹性推理服务105在一些实施方案中提供的功能。如上所述,加速器插槽发出有关连接健康和插槽健康的度量,其然后由AAM 343上传到存储装置361以供控制平面351消耗。连接健康可能处于这些状态中的一者:已连接和未连接。已连接指示应用实例211能够经由“应用级别ping”到达加速器插槽223,并且应用实例211的部件与加速器插槽223上的部件兼容。未连接可意味着应用实例211无法到达ASM 329或部件不兼容。
加速器健康识别加速器是否健康。加速器的健康可能处于该多种状态中的一者,包括但不限于:健康或不健康。加速器插槽223的健康度取决于多种因素,包括推理引擎325是否能够响应于推理请求。ASM 329通过对推理引擎325进行ping操作来完成此检查。
ASM 329将每个加速器的这些状态发送到本地磁盘333,其然后由AAM 343读取并将状态转发到控制平面351。控制平面351将这些状态合并为一个状态,所述状态将附接的状态反映为:正常、受损和未知并且可供用户使用。
图11示出了由web服务提供商在实现弹性推理服务时执行的方法的实施方案。在1101处,web服务提供商的前端接收将由弹性推理服务使用的应用实例配置信息。例如,前端103接收配置信息并将其至少提供给弹性推理服务105。配置信息可包括但不限于以下中的一者或多者:机器图像的指示、应用实例的实例类型的指示、应用实例要利用的虚拟网络信息、用于推理的加速器类型的指示、以及要使用的一个或多个存储位置的指示(诸如应用的位置、将要定位推理结果的位置、健康和连接性信息的位置、自动缩放用法等)。
在一些实施方案中,弹性推理服务105对应用实例和/或加速器设备进行自动缩放(与手动缩放相反)。自动缩放尝试通过启动应用的新实例和/或一个或多个加速器插槽在装置上以最少的实例平均分配实例。当重新平衡时(诸如在加速器插槽变得不健康之后),自动缩放将在终止旧实例之前启动新实例,使得重新平衡不会损害应用的性能或可用性。通常,配置信息包括是否应由弹性推理服务105应用自动缩放的指示。
在1103处根据接收到的配置,将应用实例与至少一个加速器插槽一起进行供应。图4和相关联的文本描述了供应加速器插槽的示例。
在一些实施方案中,弹性推理服务包括位置选择功能,所述功能对web服务提供商中的资源执行位置优化。使用位置选择功能,可针对实现加速器插槽的物理加速器选择加速器位置中的特定加速器位置。加速器插槽位置可(至少部分地)基于一个或多个放置标准来选择。使用位置选择功能,可针对实现虚拟计算实例(诸如在同一物理机器上)的物理计算实例选择加速器插槽位置中的特定位置。还可(至少部分地)基于一个或多个放置标准来选择应用实例位置。
用于选择加速器插槽位置的放置标准可与用于选择应用实例位置的放置标准是相同标准或不同标准。在一个实施方案中,可针对特定的虚拟计算实例及其附接的虚拟GPU来优化应用实例位置和GPU位置。在一个实施方案中,由提供商网络的客户端提供或批准用于优化特定虚拟应用实例和/或加速器插槽的放置的放置标准。在一个实施方案中,可由提供商网络的管理员提供或批准用于优化特定应用实例和/或加速器插槽的放置的放置标准。在一个实施方案中,可使用默认配置来确定用于优化特定应用实例和/或加速器插槽的放置的放置标准。
一个或多个放置标准可包括针对以下内容的度量的优化(例如,改进)或与其相关联:性能(例如,以使性能最大化)、资源使用(例如,以使资源使用最小化)、成本(例如,以使成本最小化或使资源成本符合客户端指定的预算)、能量使用(例如,以使能量使用最小化或优先排序“绿色”能量)、网络位置(例如,以使两个或更多个资源之间的网络接近性最小化)和/或任何其他合适的度量。用作放置标准的性能度量和成本度量通常可能与物理计算实例使用物理加速器相关联。性能度量可包括网络相关度量,诸如在提供商网络内和/或提供商网络与客户端装置之间测量的等待时间和带宽。性能度量可包括与处理器使用、GPU使用、存储器使用、存储装置使用等相关的任何其他度量。作为示例,为了最小化网络等待时间和/或带宽,可在与物理加速器相同的机架内选择物理计算实例的应用实例位置,使得基础物理计算实例与物理加速器之间的网络通信可不延伸超出机架中的机架顶交换机。如果同一机架内的位置不可用,则可选择物理加速器附近(例如,同一数据中心内)的实例位置以优化放置标准。作为另一个示例,可选择最靠近客户端装置的数据中心中的加速器位置以最小化物理加速器和客户端装置之间的等待时间,其中数据中心与客户端装置的接近度是基于预期或历史的等待时间和/或地理接近度来测量的。
如本文所用,供应通常包括为客户端保留基础物理计算实例的资源(例如,计算资源和存储器资源)(例如,从可用物理计算实例和其他资源的池中),安装或启动所需的软件(例如,操作系统),以及使虚拟计算实例可由客户端用来执行客户端指定的任务。可从具有各种能力的多种实例类型中选择虚拟计算实例。
针对网络位置的放置优化可尝试(至少部分地)基于网络内的接近度来对多个资源(例如,一个或多个物理计算实例和一个或多个物理加速器)进行分组。网络位置可指资源所属的网络中的一个或多个位置、连接、关联或区域。资源本身可是节点或特定的网络位置(例如,网络地址)并且因此可是网络位置。可基于资源连接到的网络路由器、交换机或其他网络装置或基础设施(例如,网络主干)来确定网络位置。在一些实施方案中,可根据逻辑相关联的网络装置或资源在逻辑上确定网络位置。资源可属于多个网络位置,诸如被连接到特定的网络路由器,所述路由器继而可链接到其他网络路由器或联网装置。可(至少部分地)基于网络位置来选择应用实例位置和/或加速器位置。
在1105处,将客户端库加载到供应的应用实例上。在一些实施方案中,还加载/安装了实例管理器。这些部件的功能已在其他地方进行了详细介绍。
在1107处,将加速器插槽附接到应用实例。图QD示出了加速器插槽附接的实施方案。
在1109处接收将模型加载在加速器插槽中的请求。例如,ASM329接收该请求。通常,加载模型的此请求包括模型的位置。应注意,此请求可能来自用户,或者可能来自供应的应用实例。
在1111处,验证要加载的模型,确定要使用的推理引擎,并且加载模型。模型验证和推理引擎选择的示例已在前面详细介绍。
在1113处,在执行应用期间使用加载的模型来执行推断,并且在1115处,按应用实例的应用的指示返回结果。应注意,管理加速器设备,包括在上述过程中管控的资源。
图12示出了由web服务提供商在实现弹性推理服务时执行的方法的实施方案。特别地,方法的实施方案描述了对推理请求的处置。
在1200处,配置多个加速器插槽以供应用实例使用。配置包括供应、附接、选择、模型加载等,例如诸如在图11的其他地方详细描述的。应注意,加速器插槽中的每个都是可单独寻址的,并且应用可调用不同的加速器插槽来执行不同的动作。
在1201处,应用实例接收推理请求。例如,前端103接收得分数据并将该数据提供给应用实例211。
在1203处,将推理请求数据(得分数据)转发到附接到应用实例的多个加速器的耦接推理引擎。例如,调用客户端库315以将该数据从应用213转发到多个推理引擎325。
在1205处,应用从多个加速器插槽中的一者接收初始响应。该响应被认为是要使用的结果。当接收到后续响应时,在1207处理它们。在一些实施方案中,处理包括抛出后续响应中的一个或多个。在一些实施方案中,后续响应被合并。在1209处,应用使用初始响应。
在一些实施方案中,跟踪响应的定时。例如,当接收到响应中的每个时,计算响应花费了多长时间。定时的跟踪允许应用(或应用用户)确定是否应取消附接加速器插槽并附接不同的加速器插槽。在1211处,确定一个或多个响应的定时是否大于阈值,并且向用户中的一个或多个警告到不同加速器插槽的潜在迁移和/或实际迁移。这样,当加速器设备221或耦接加速器设备221和应用实例211的一个或多个网络经历减速时,应用和/或用户能够进行调整。应注意,管理加速器设备,包括在上述过程中管控的资源。
取消附接和新附接是迁移的一种形式。这样,存在针对应用实例将一个或多个加速器插槽替换为一个或多个加速器插槽,将应用实例的处理从第一组一个或多个加速器插槽迁移到第二组一个或多个加速器插槽,以及使用第二组一个或多个加速器插槽来执行应用实例的应用。在一些实施方案中,相对于第一组一个或多个加速器插槽,新的一个或多个加速器插槽提供不同级别的处理。在一些实施方案中,将第一组一个或多个加速器插槽替换为第二组一个或多个加速器插槽包括致使第二组一个或多个加速器插槽代替第一组一个或多个加速器插槽来进行操作
图13示出了由web服务提供商在实现弹性推理服务时执行的方法的实施方案。特别地,方法的实施方案描述了对加速器插槽的供应的处置。
在1301处,接收针对模型供应和附接加速器插槽的请求。请求可包括要使用的数据类型、模型本身(或其位置)、定时要求、成本要求等中的一者或多者。
在1303处确定满足请求要求的可用加速器插槽。例如,评估模型的数据类型,并且将无法处理这些类型的加速器插槽视为不满足要求。在一些实施方案中,该确定包括执行模型以确定哪些加速器插槽将起作用并满足要求。在其他实施方案中,将模型与已经由弹性推理服务运行的其他模型进行比较,并且类似模型的先前执行通知确定。另外,加速器插槽的位置可以优化,如在其他地方详细描述的。
在1305处,供应已确定为满足请求要求的至少一个或多个加速器插槽。在1307处,将供应的一个或多个加速器插槽附接到应用实例。供应和附接已在前面进行了详细描述。
在1309处,将传入的推理请求数据(得分数据)转发到附接到应用实例的至少一个或多个加速器插槽的一个或多个耦接推理引擎。例如,调用客户端库315以将该数据从应用213转发到多个推理引擎325。
在1311处,跟踪一个或多个响应。例如,当接收到响应中的每个时,计算响应花费了多长时间和/或由一个或多个加速器插槽抛出的任何错误。
在一些实施方案中,在1313处对满足模型和应用的要求的加速器插槽进行评估。例如,响应是否及时,结果是否正确,加速器插槽是否健康等?
在一些实施方案中,在1315处,如果附接的加速器插槽中的一个或多个不再满足要求,则在1315处将它们取消附接。
在一些实施方案中,如果一个或多个插槽不满足请求要求,则确定满足所述要求的可用加速器插槽的另一确定。这允许缩放。应注意,取消附接可能并不总是发生,并且在一些实施方案中,更多的插槽被分配以缩放。
应注意,管理加速器设备,包括在上述过程中管控的资源。
图14示出了使用基于加速器的推理服务的系统的实施方案。此图突出显示了此类系统的联网方面。基于加速器的推理服务虚拟网络1401包括一个或多个加速器设备1421。详细地,每个加速器设备具有一个或多个加速器插槽1423,所述一个或多个加速器插槽耦接到基于加速器的推理服务通信信道(诸如网络)1401的“中继”通信信道1403。中继通信信道1403知道加速器设备1421的每个加速器插槽1423的位置标识符。
如图所示,用户具有不同的虚拟网络(用户A的虚拟网络1411和用户B的虚拟网络1431)。在每个虚拟网络内的是至少一个网络接口(诸如通信信道1415和通信信道1435)和至少一个应用实例(诸如应用实例1413和应用实例1433)。应用实例通过其在用户的虚拟网络中的网络接口与加速器插槽进行通信。
在一些实施方案中,网络命名空间用于隔离同一物理加速器设备上的加速器插槽之间的网络接口,使得每个加速器插槽的网络接口驻留在其自己的命名空间中。将加速器插槽的网络接口移动到其自己的命名空间使不同的虚拟网络具有重叠的IP地址。
图15示出了根据一些实施方案的示例性提供商网络(或“服务提供商系统”)环境。提供商网络1500可经由一个或多个虚拟化服务1510向客户提供资源虚拟化,所述虚拟化服务允许客户购买、租借或以其他方式获得在一个或多个数据中心中的一个或多个提供商网络内的装置上实现的虚拟化资源的实例1512,包括但不限于计算和存储资源。本地互联网协议(IP)地址1516可与资源实例1512相关联;本地IP地址是提供商网络1500上的资源实例1512的内部网络地址。在一些实施方案中,提供商网络1500还可提供客户可从提供商1500获得的公共IP地址1514和/或公共IP地址范围(例如,互联网协议版本4(IPv4)或互联网协议版本6(IPv6)地址)。
常规上,提供商网络1500经由虚拟化服务1510可允许服务提供商的客户(例如,操作包括一个或多个客户装置1552的一个或多个客户端网络1550A-1550C的客户)将指派或分配给客户的至少一些公共IP地址1514与指派给客户的特定资源实例1512动态地关联。提供商网络1500还可允许客户将先前映射到分配给客户的一个虚拟化计算资源实例1512的公共IP地址1514重新映射到也分配给客户的另一虚拟化计算资源实例1512。使用由服务提供商提供的虚拟化计算资源实例1512和公共IP地址1514,服务提供商的客户(诸如一个或多个客户网络1550A-1550C的运营商)可例如实现客户特定的应用并在诸如互联网的中间网络1540上呈现客户应用。中间网络1540上的其他网络实体1520然后可生成到由一个或多个客户网络1550A-1550C发布的目的地公共IP地址1514的流量;流量被路由到服务提供商数据中心,并且在数据中心处经由网络底层路由到当前映射到目的地公共IP地址1514的虚拟化计算资源实例1512的本地IP地址1516。类似地,来自虚拟化计算资源实例1512的响应流量可经由网络底层路由回到中间网络1540上到达源实体1520。
如本文所用,本地IP地址是指例如提供商网络中的资源实例的内部或“专用”网络地址。本地IP地址可在互联网工程任务组(IETF)请求评注(RFC)1918保留的地址块内和/或具有由IETF RFC 4193指定的地址格式,并且可在提供商网络内可变。来自提供商网络外部的网络流量不会直接路由到本地IP地址;相反,流量使用映射到资源实例的本地IP地址的公共IP地址。提供商网络可包括提供网络地址转换(NAT)或类似功能以执行从公共IP地址到本地IP地址且反之亦然的映射的联网装置或设备。
公共IP地址是由服务提供商或客户指派给资源实例的互联网可变网络地址。路由到公共IP地址的流量会转换,例如经由1:1NAT,并转发到资源实例的相应本地IP地址。
一些公共IP地址可由提供商网络基础设施指派给特定资源实例;这些公共IP地址可被称为标准的公共IP地址,或简称为标准IP地址。在一些实施方案中,标准IP地址到资源实例的本地IP地址的映射是所有资源实例类型的默认启动配置。
至少一些公共IP地址可被分配给提供商网络1500的客户或由其获得;然后,客户可将其分配的公共IP地址指派给分配给客户的特定资源实例。这些公共IP地址可被称为客户公共IP地址,或简称为客户IP地址。代替在标准IP地址的情况下由提供商网络1500指派给资源实例,客户IP地址可由客户(例如,经由由服务提供商提供的API)指派给资源实例。与标准IP地址不同,客户IP地址被分配给客户帐户,并且可根据需要或期望由相应客户重新映射到其他资源实例。客户IP地址与客户的帐户(而不是特定资源实例)相关联,并且客户控制该IP地址,直到客户选择释放它为止。与常规静态IP地址不同,客户IP地址允许客户通过将客户的公共IP地址重新映射到与客户的帐户相关联的任何资源实例来掩盖资源实例或可用性区域故障。例如,客户IP地址使客户能够通过将客户IP地址重新映射到替换资源实例来解决客户的资源实例或软件的问题。
图16示出了根据一些实施方案的使用IP隧道技术在网络底层上实现覆盖网络的示例性数据中心。提供商数据中心1600可包括网络底层,所述网络底层包括诸如路由器、交换机、网络地址转换器(NAT)等联网节点1612,所述联网节点可被实现为软件、硬件或它们的组合。一些实施方案可采用互联网协议(IP)隧道技术来提供覆盖网络,经由所述覆盖网络,可使用隧道将封装的分组传递通过网络底层1610。IP隧道技术可提供用于在网络(例如,图16的数据中心1600中的本地网络)上创建覆盖网络的映射和封装系统,并且可针对覆盖层(公共IP地址)和网络底层1610层(本地IP地址)提供独立的命名空间。可对照映射目录(例如,由映射服务1630提供)来检查覆盖层中的分组,以确定它们的隧道底层目标(本地IP地址)应该是什么。IP隧道技术提供了虚拟网络拓扑(覆盖网络);呈现给客户的接口(例如,服务API)附接到覆盖网络,使得当客户提供客户希望向其发送分组的IP地址时,所述IP地址通过与知道IP覆盖地址所在地的映射服务(例如,映射服务1630)通信来在虚拟空间中运行。
在一些实施方案中,IP隧道技术可将IP覆盖地址(公共IP地址)映射到底层IP地址(本地IP地址),将分组封装在两个命名空间之间的隧道中,并且经由隧道将分组传递到正确的端点,在所述端点处从分组剥离封装。在图16中,示出了从主机1620A上的虚拟机(VM)1624A(即VM 1624A1-VM 1624A4,经由VMM 1622A)到中间网络1650上的装置的示例性覆盖网络隧道1634A以及主机1620A上的VM 1624A(即VM 1624A1-VM 1624A4,经由VMM 1622A)与主机1620B上的VM 1624B(即VM 1624B1-VM 1624B4,经由VMM 1622B)之间的示例性覆盖网络隧道1634B。在一些实施方案中,可在发送之前将分组封装成覆盖网络分组格式,并且可在接收之后将覆盖网络分组剥离。在其他实施方案中,可在发送之前将覆盖网络地址(公共IP地址)嵌入到分组的底层地址(本地IP地址)中,并且在接收后从分组地址剥离,而不是将分组封装在覆盖网络分组中。作为示例,可使用32位IPv4(互联网协议版本4)地址作为公共IP地址来实现覆盖网络,并且可嵌入IPv4地址作为底层网络上用作本地IP地址的128位IPv6(互联网协议版本6)地址的一部分。
参见图16,其中可实现实施方案的至少一些网络可包括硬件虚拟化技术,所述硬件虚拟化技术使得多个操作系统能够在主机计算机(例如,图16的主机1620A和1620B)上同时运行,即作为主机1620上的虚拟机(VM)1624。例如,VM 1624可在主机1620上被租借或租赁给网络提供商的客户的插槽中执行。主机1620上的管理程序或虚拟机监测器(VMM)1622为主机上的VM 1624呈现虚拟平台,并监测VM 1624的执行。每个VM 1624可设置有一个或多个本地IP地址;主机1620上的VMM 1622可知晓主机上VM 1624的本地IP地址。映射服务1630可知晓(例如,经由存储的映射信息1632)服务于本地网络上的IP地址的路由器或其他装置的网络IP前缀和IP地址。这包括服务于多个VM 1624的VMM 1622的IP地址。映射服务1630可集中在例如服务器系统上,或者替代地可分布在网络上的两个或更多个服务器系统或其他装置之间。网络可例如使用映射服务技术和IP隧道技术来例如在数据中心1600网络内的不同主机1620上的VM1624之间路由数据分组;应注意,内部网关协议(IGP)可用于在这种本地网络内交换路由信息。
另外,诸如提供商数据中心1600网络的网络(有时被称为自主系统(AS))可使用映射服务技术、IP隧道技术和路由服务技术来将分组从VM 1624路由到互联网目的地,以及从互联网源路由到VM 1624。应注意,外部网关协议(EGP)或边界网关协议(BGP)通常用于互联网上源与目的地之间的互联网路由。图16示出了根据一些实施方案的示例性提供商数据中心1600,所述提供商数据中心实现了提供资源虚拟化技术并且经由连接到互联网转接提供商的一个或多个边缘路由器1614提供全面互联网访问的网络。提供商数据中心1600可例如向客户提供经由硬件虚拟化服务实现虚拟计算系统(VM 1624)的能力以及经由存储虚拟化服务在存储资源1618A-1618N上实现虚拟化数据存储区1616的能力。
数据中心1600网络可实现IP隧道技术、映射服务技术和路由服务技术,以路由往返于虚拟化资源的流量,例如将分组从数据中心1600中的主机1620上的VM 1624路由到互联网目的地,以及从互联网源路由到VM 1624。互联网源和目的地可例如包括:连接到中间网络1640的计算系统1670;以及连接到本地网络1650的计算系统1652,所述本地网络连接到中间网络1640(例如,经由将网络1650连接到互联网转接提供商的一个或多个边缘路由器1614)。提供商数据中心1600网络还可在数据中心1600中的资源之间路由分组,例如从数据中心1600中的主机1620上的VM 1624路由到数据中心1600中的同一主机或其他主机1620上的其他VM 1624。
提供数据中心1600的服务提供商还可提供一个或多个额外数据中心1660,所述额外数据中心包括类似于数据中心1600的硬件虚拟化技术,并且还可连接到中间网络1640。分组可从数据中心1600转发到其他数据中心1660,例如从数据中心1600中的主机1620上的VM 1624转发到另一类似数据中心1660中的另一主机上的另一VM,且反之亦然。
虽然上面描述了使多个操作系统能够在主机计算机上作为主机上的虚拟机(VM)同时运行的硬件虚拟化技术,其中VM可在主机上被租借或租赁给网络提供商的客户的插槽上实例化,但是硬件虚拟化技术还可用于以类似方式向网络提供商的客户提供其他计算资源(例如存储资源1618A-1618N)作为虚拟化资源。
图17示出了根据一些实施方案的将提供商网络上的虚拟网络提供给至少一些客户的示例性提供商网络。例如,提供商网络1700上的客户的虚拟网络1760使客户能够将其在客户网络1750上的现有基础设施(例如,一个或多个客户装置1752)连接到一组逻辑上隔离的资源实例(例如,VM 1724A和1724B和存储装置1718A和1718B),并扩展管理能力(诸如安全服务、防火墙和入侵检测系统)以包括其资源实例。
客户的虚拟网络1760可经由专用通信信道1742连接到客户网络1750。专用通信信道1742可以是例如根据中间网络1740上的网络隧道技术或某种其他技术实现的隧道。中间网络可以是例如共享网络或诸如互联网的公共网络。替代地,可通过虚拟网络1760与客户网络1750之间的直接专用连接来实现专用通信信道1742。
公共网络可广义地定义为提供对多个实体的开放访问和互连的网络。互联网或万维网(WWW)是公共网络的一个示例。与通常不限制访问的公共网络相反,共享网络可广义地定义为访问被限制为两个或更多个实体的网络。共享网络可包括例如一个或多个局域网(LAN)和/或数据中心网络,或者互连以形成广域网(WAN)的两个或更多个LAN或数据中心网络。共享网络的示例可包括但不限于公司网络和其他企业网络。共享网络可在从覆盖局域的网络到全球网络的范围内的任何位置。应注意,共享网络可与公共网络共享至少某个网络基础设施,并且共享网络可耦接到一个或多个其他网络,所述其他网络可包括公共网络,并且在一个或多个其他网络与共享网络之间具有受控访问。与诸如互联网的公共网络相比,共享网络也可被视为专用网络。在一些实施方案中,共享网络或公共网络可用作提供商网络与客户网络之间的中间网络。
为在提供商网络1700上为客户建立虚拟网络1760,可将一个或多个资源实例(例如,VM 1724A和1724B以及存储装置1718A和1718B)分配给虚拟网络1760。应注意,其他资源实例(例如,存储装置1718C和VM 1724C)可在提供商网络1700上保持可用以供其他客户使用。一系列公共IP地址也可分配给虚拟网络1760。另外,可将提供商网络1700的一个或多个联网节点(例如,路由器、交换机等)分配给虚拟网络1760。可在虚拟网络1760处的专用网关1762与客户网络1750处的网关1756之间建立专用通信信道1742。
在一些实施方案中,除专用网关1762之外或代替专用网关,虚拟网络1760可包括公共网关1764,所述公共网关使得虚拟网络1760内的资源能够(代替经由专用通信信道1742或除此之外)经由中间网络1740与实体(例如,网络实体1744)直接通信且反之亦然。
虚拟网络1760可但不一定细分成两个或更多个子网络或子网1770。例如,在既包括专用网关1762又包括公共网关1764的实现方式中,虚拟网络1760可细分成子网1770A和子网1770B,所述子网1770A包括可通过专用网关1762访问的资源(在该示例中为VM1724A和存储装置1718A),所述子网1770B包括可通过公共网关1764访问的资源(在此示例中为VM1724B和存储装置1718B)。
客户可将特定客户公共IP地址指派给虚拟网络1760中的特定资源实例。然后,中间网络1740上的网络实体1744可将流量发送到客户所发布的公共IP地址;流量由提供商网络1700路由到相关联的资源实例。提供商网络1700将来自资源实例的返回流量通过中间网络1740路由回到网络实体1744。应注意,资源实例与网络实体1744之间的路由通信可能需要网络地址转换以在资源实例的公共IP地址和本地IP地址之间转换。
如图17所示,一些实施方案可允许客户将客户的虚拟网络1760中的公共IP地址重新映射到客户的外部网络1750上的装置。当接收到分组时(例如,从网络实体1744接收),网络1700可确定分组所指示的目的地IP地址已经被重新映射到外部网络1750上的端点,并且经由专用通信信道1742或经由中间网络1740处理分组到相应端点的路由。响应流量可通过提供商网络1700从端点路由到网络实体1744,或者替代地可由客户网络1750直接路由到网络实体1744。从网络实体1744的角度来看,似乎网络实体1744正在与提供商网络1700上的客户的公共IP地址进行通信。然而,网络实体1744实际上已经与客户网络1750上的端点进行了通信。
虽然图17示出了在中间网络1740上并且在提供商网络1700外部的网络实体1744,但网络实体可以是提供商网络1700上的实体。例如,由提供商网络1700提供的资源实例中的一个可以是将流量发送到由客户发布的公共IP地址的网络实体。
在一些实施方案中,实现本文描述的技术的一部分或全部的系统可包括通用计算机系统,所述通用计算机系统包括或被配置为访问一个或多个计算机可访问介质,诸如图18所示的计算机系统1800。在示出的实施方案中,计算机系统1800包括经由输入/输出(I/O)接口1830耦接到系统存储器1820的一个或多个处理器1810。计算机系统1800还包括耦接到I/O接口1830的网络接口1840。虽然图18将计算机系统1800示出为单个计算装置,但在各种实施方案中,计算机系统1800可包括一个计算装置或被配置为作为单个计算机系统1800一起工作的任何数量的计算装置。
在各种实施方案中,计算机系统1800可以是包括一个处理器1810的单处理器系统,或包括几个处理器1810(例如,两个、四个、八个或另一合适数量)的多处理器系统。处理器1810可以是能够执行指令的任何合适的处理器。例如,在各种实施方案中,处理器1810可以是实现多种指令集架构(ISA)中的任何一种(诸如,x86、ARM、PowerPC、SPARC、或MIPS ISA或任何其他合适的ISA)的通用或嵌入式处理器。在多处理器系统中,处理器1810中的每一个通常可以(但不一定)实现相同的ISA。
系统存储器1820可存储可由一个或多个处理器1810访问的指令和数据。在各种实施方案中,可使用任何合适的存储器技术(诸如,随机存取存储器(RAM)、静态RAM(SRAM)、同步动态RAM(SDRAM)、非易失性/快闪型存储器或任何其他类型的存储器)来实现系统存储器1820。在示出的实施方案中,实现一个或多个期望功能的程序指令和数据(诸如上述的那些方法、技术和数据)被示出为作为代码1825和数据1826存储在系统存储器1820内。
在一个实施方案中,I/O接口1830可被配置为协调装置中的处理器1810、系统存储器1820与任何外围装置(包括网络接口1840或其他外围接口)之间的I/O流量。在一些实施方案中,I/O接口1830可执行任何必要的协议、时序或其他数据变换,以将来自一个部件(例如,系统存储器1820)的数据信号转换成适合于由另一部件(例如,处理器1810)使用的格式。在一些实施方案中,例如,I/O接口1830可包括对通过各种类型的外围总线(诸如,外围部件互连(PCI)总线标准或通用串行总线(USB)标准的变体)附接的装置的支持。在一些实施方案中,例如,I/O接口1830的功能可分成两个或更多个单独的部件,诸如北桥和南桥。而且,在一些实施方案中,I/O接口1830(诸如与系统存储器1820的接口)的功能性中的一些或全部可直接并入到处理器1810中。
例如,网络接口1840可被配置为允许在计算机系统1800与附接到一个或多个网络1850的其他装置1860(诸如,其他计算机系统或如图1中示出的装置)之间交换数据。在各种实施方案中,例如,网络接口1840可支持经由任何适当的有线或无线通用数据网络(诸如,以太网网络类型)进行的通信。另外,网络接口1840可支持经由电信/电话网络(诸如模拟语音网络或数字光纤通信网络)、经由存储区域网(SAN)(诸如光纤信道SAN)或经由I/O任何其他合适类型的网络和/或协议进行的通信。
在一些实施方案中,计算机系统1800包括一个或多个卸载卡1870(包括一个或多个处理器1875,并且可能包括一个或多个网络接口1840),所述一个或多个卸载卡使用I/O接口1830(例如,实现快速外围部件互连(PCI-E)标准的一个版本的总线或诸如快速路径互连(QPI)或超路径互连(UPI)的另一互连件)来连接。例如,在一些实施方案中,计算机系统1800可充当托管计算实例的主机电子装置(例如,作为硬件虚拟化服务的一部分进行操作),并且一个或多个卸载卡1870执行可管理在主机电子装置上执行的计算实例的虚拟化管理器。作为示例,在一些实施方案中,一个或多个卸载卡1870可执行计算实例管理操作,诸如暂停和/或取消暂停计算实例、启动和/或终止计算实例、执行存储器转移/复制操作等。在一些实施方案中,这些管理操作可由一个或多个卸载卡1870与由计算机系统1800的其他处理器1810A-1810N执行的管理程序(例如,根据管理程序的请求)协作来执行。然而,在一些实施方案中,由一个或多个卸载卡1870实现的虚拟化管理器可容纳来自其他实体(例如,来自计算实例本身)的请求,并且可不与任何单独的管理程序协作(或可不服务于任何单独的管理程序)。
在一些实施方案中,系统存储器1820可以是被配置为存储如上文所描述的程序指令和数据的计算机可访问介质的一个实施方案。然而,在其他实施方案中,程序指令和/或数据可在不同类型的计算机可访问介质上接收、发送或存储。一般来说,计算机可访问介质可包括非暂时性存储介质或存储器介质,诸如磁性介质或光学介质,例如经由I/O接口1830耦接到计算机系统1800的磁盘或DVD/CD。非暂时性计算机可访问存储介质还可包括任何易失性或非易失性介质,诸如RAM(例如,SDRAM、双倍数据速率(DDR)SDRAM、SRAM等)、只读存储器(ROM)等,它们可作为系统存储器1820或另一种类型的存储器包括在计算机系统1800的一些实施方案中。此外,计算机可访问介质可包括经由通信介质(诸如网络和/或无线链路,诸如可经由网络接口1840实现)传达的传输介质或信号,诸如电信号、电磁信号或数字信号。
图19示出了示例性计算装置1900(诸如,web服务提供商等)的通用部件集合的逻辑布置。一般来讲,计算装置1900也可称为电子装置。可使用在一个或多个电子装置(例如,客户端端站和/或服务器端站)上存储和执行的代码和数据来实现附图中示出和本文描述的技术。此类电子装置使用计算机可读介质存储和传达(在内部和/或通过网络与其他电子装置)代码和数据,所述计算机可读介质诸如非暂时性计算机可读存储介质(例如,磁盘、光盘、随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器装置、相变存储器)和暂时性计算机可读通信介质(例如,电、光、声或其他形式的传播信号,诸如载波、红外信号、数字信号)。另外,此类电子装置包括硬件,诸如:一个或多个处理器1902的集合(例如,其中处理器是微处理器、控制器、微控制器、中央处理单元、数字信号处理器、专用集成电路、现场可编程门阵列、其他电子电路、前述中的一个或多个的组合),所述一个或多个处理器的集合耦接到一个或多个其他部件,例如一个或多个非暂时性机器可读存储介质(例如,存储器1904),以存储代码(例如,指令1914)和/或数据;以及一个或多个有线或无线网络接口1908的集合,所述一个或多个有线或无线网络接口的集合允许电子装置通常跨一个或多个网络(例如,局域网(LAN)、互联网)向其他计算装置传输数据并从其他计算装置接收数据。所述处理器的集合和其他部件的耦接通常通过电子装置内的一个或多个互连件(例如,总线和可能的桥接器)进行。因此,给定电子装置的非暂时性机器可读存储介质(例如,存储器1904)通常存储用于在该电子装置的一个或多个处理器1902的集合上执行的代码(例如,指令1914)。各种实施方案的一个或多个部分可使用软件、固件和/或硬件的不同组合来实现。
计算装置1900可包括某种类型的显示元件1906,诸如触摸屏或液晶显示器(LCD),但诸如便携式媒体播放器的许多装置可经由其他装置(诸如通过音频扬声器)来传达信息,并且诸如服务器端站的其他类型的装置可根本不具有显示元件1906。如所讨论的,一些实施方案中使用的一些计算装置包括能够接收来自用户的输入的至少一个输入和/或输出部件1912。该输入部件可包括例如按钮、触摸板、触摸屏、轮、操纵杆、键盘、鼠标、小键盘或任何其他这种装置或元件,借此用户能够向所述装置输入命令。然而,在一些实施方案中,这种装置可通过视觉和/或音频命令的组合进行控制并利用传声器、相机、传感器等,使得用户能够控制装置而不必与装置进行物理接触。
如所讨论的,根据所描述的实施方案,可在各种环境中实现不同的方法。例如,图20示出了用于实现根据各种实施方案的各方面的环境2000的示例。例如,在一些实施方案中,请求是由web服务器(例如,web服务器2006)接收的超文本传送协议(HTTP)请求,并且用户可经由电子装置经由通过web服务器2006和应用服务器2008提供的web门户与提供商网络交互。如将了解的,尽管出于解释的目的使用了基于web的环境,但是可视情况使用不同环境来实现各种实施方案。系统包括电子客户端装置2002(还可被称为客户端装置),并且可以是可操作来在适当网络2004上发送和接收请求、消息或信息并且将信息传达回装置2002的用户的任何适当装置。此类客户端装置的示例包括个人计算机(PC)、手机、手持式消息传递装置、笔记本计算机、机顶盒、个人数据助理、电子书阅读器、可穿戴电子装置(例如,眼镜、腕带、监测器)等。一个或多个网络2004可包括任何适当的网络,包括内联网、互联网、蜂窝网、局域网或任何其他这种网络或它们的组合。这种系统所使用的部件可至少部分地取决于所选择的网络和/或环境的类型。用于经由这种网络进行通信的协议和部件是熟知的,因而本文将不再详细讨论。网络上的通信可经由有线或无线连接以及它们的组合来实现。在该示例中,网络2004包括互联网,因为环境包括用于接收请求并且响应于所述请求而提供内容的web服务器2006,但对于其他网络来说可使用服务于类似目的的替代装置,如本领域普通技术人员将明白的。
说明性环境包括至少一个应用服务器2008和数据存储区2010。应理解,可能存在可链接起来或以其他方式来配置的几个应用服务器、层或其他元件、过程或部件,它们能够交互以执行诸如从适当数据存储区获得数据的任务。如本文所用,术语“数据存储区”是指能够存储、访问和检索数据的任何装置或装置组合,所述装置或装置组合可包括在任何标准、分布式或集群式环境中的数据服务器、数据库、数据存储装置和数据存储介质的任何组合和任何数量。应用服务器2008可包括任何适当硬件和软件用于视需要与数据存储区2010集成以执行客户端装置2002的一个或多个应用的各方面,并且用于处置应用的大部分数据访问和业务逻辑。应用服务器2008与数据存储区2010协作提供存取控制服务,并且能够生成将要传送给客户端装置2002的诸如文本、图形、音频、视频等内容,在该示例中,所述内容可以超文本标记语言(HTML)、可扩展标记语言(XML)、JavaScript对象表示法(JSON)或另一种适当的非结构化或结构化语言的形式由web服务器向用户提供。所有请求和响应的处置以及客户端装置2002与应用服务器2008之间的内容传递可由web服务器2006来处置。应当理解,web服务器2006和应用服务器2008不是必要的,而仅是示例性部件,因为本文所讨论的结构化代码可在如本文其他地方所讨论的任何适当装置或主机上执行。
数据存储区2010可包括几个单独的数据表、数据库或其他数据存储机制和介质,以用于存储与特定方面相关的数据。例如,示出的数据存储区包括用于存储生产数据2012和用户信息2016的机制,其能够被用来为生产侧提供内容。数据存储区2010还被示出为包括用于存储日志或会话数据2014的机制。应理解,可能存在可需要存储在数据存储区中的许多其他方面,诸如页面图像信息和访问权信息,所述方面可视情况存储在上文列出的机制中的任一个中或存储在数据存储区2010中的额外机制中。数据存储区2010可通过与其相关联的逻辑来操作,以从应用服务器2008接收指令,并且响应于所述指令而获取、更新或以其他方式处理数据。在一个示例中,用户可针对某种类型的项目提交搜索请求。在这种情况下,数据存储区2010可访问用户信息2016以验证用户的身份,并且可访问生产数据2012以获得关于该类型的项目的信息。然后,可将信息在用户能够经由用户装置2002上的浏览器来查看的网页上(诸如)以结果列表的形式返回给用户。可在浏览器的专用页面或窗口中查看有关感兴趣的特定项目的信息。
web服务器2006、应用服务器2008和/或数据存储区2010可由一个或多个电子装置2020实现,所述一个或多个电子装置也可称为电子服务器装置或服务器端站,并且可位于或可不位于不同的地理位置。所述一个或多个电子装置2020中的每一个可包括提供用于该装置的一般管理和操作的可执行程序指令的操作系统,并且通常将包括存储指令的计算机可读介质,所述指令当由装置的处理器执行时,允许所述装置执行其预期的功能。用于装置的操作系统和一般功能的合适实现方式是已知的或可购得的,并且本领域的普通技术人员特别是根据本文的公开内容可容易地实现这些实现方式。
在一个实施方案中,环境是分布式计算环境,其利用经由通信链路、使用一个或多个计算机网络或直接连接来互连的若干计算机系统和部件。然而,本领域普通技术人员应理解,这种系统可在具有比图20所示的部件更少或更多数量的部件的系统中同样良好地操作。因此,图20中的环境2000的描绘本质上应视为说明性的,并且不限制本公开的范围。
本文所讨论或提出的各种实施方案可在多种多样的操作环境中实现,在一些情况下,所述操作环境可包括能够被用来操作若干应用中的任一个的一个或多个用户计算机、计算装置或处理装置。用户或客户端装置可包括:若干通用个人计算机中的任一个,诸如运行标准操作系统的台式计算机或笔记本计算机;以及运行移动软件并且能够支持若干联网协议和消息传递协议的蜂窝装置、无线装置和手持式装置。这种系统还可包括若干工作站,所述工作站运行多种可购得的操作系统和用于诸如开发和数据库管理等目的的其他已知应用中的任一个。这些装置还可包括其他电子装置,诸如虚拟终端、瘦客户端、游戏系统和/或能够经由网络通信的其他装置。
大多数实施方案利用本领域技术人员将熟悉的至少一个网络来支持使用多种可购得的协议中的任一个进行通信,所述协议诸如传输控制协议/互联网协议(TCP/IP)、文件传送协议(FTP)、通用即插即用(UPnP)、网络文件系统(NFS)、公共互联网文件系统(CIFS)、可扩展消息传递和现场协议(XMPP)、AppleTalk等。所述一个或多个网络可包括例如局域网(LAN)、广域网(WAN)、虚拟专用网(VPN)、互联网、内联网、外联网、公用电话交换网(PSTN)、红外网络、无线网络以及它们的任何组合。
在利用web服务器的实施方案中,web服务器能够运行多种服务器或中间层应用中的任一个,包括HTTP服务器、文件传送协议(FTP)服务器、公共网关接口(CGI)服务器、数据服务器、Java服务器、业务应用服务器等。所述一个或多个服务器还能够响应来自用户装置的请求而执行程序或脚本,诸如通过执行可实现为以任何编程语言(诸如
Figure BDA0002850638720000431
C、C#或C++)或任何脚本语言(诸如Perl、Python、PHP或TCL)以及它们的组合编写的一个或多个脚本或程序的一个或多个Web应用。所述一个或多个服务器还可包括数据库服务器,包括但不限于可从Oracle(R)、Microsoft(R)、Sybase(R)、IBM(R)等购得的数据库服务器。数据库服务器可为关系型或非关系型(例如,“NoSQL”)、分布式或非分布式等。
环境可包括如上文所讨论的多种数据存储区以及其他存储器和存储介质。这些可驻留在多种位置,诸如驻留在计算机中的一个或多个计算机本地(和/或驻留在一个或多个计算机中)的存储介质上,或驻留在跨网络位于计算机中的任一个或全部计算机远程的存储介质上。在实施方案的特定集合中,信息可驻留在本领域技术人员熟悉的存储区域网(SAN)中。类似地,用于执行属于计算机、服务器或其他网络装置的功能的任何必要的文件可视情况本地和/或远程存储。在系统包括计算机化装置的情况下,每个这种装置可包括可经由总线电耦合的硬件元件,所述元件包括例如至少一个中央处理单元(CPU)、至少一个输入装置(例如,鼠标、键盘、控制器、触摸屏或小键盘)和/或至少一个输出装置(例如,显示装置、打印机或扬声器)。这种系统还可包括一个或多个存储装置,诸如硬盘驱动器、光学存储装置和固态存储装置(诸如,随机存取存储器(RAM)或只读存储器(ROM))以及可移动媒体装置、存储器卡、闪存卡等。
此类装置还可包括如上所述的计算机可读存储介质读取器、通信装置(例如,调制解调器、网卡(无线或有线)、红外通信装置等)和工作存储器。计算机可读存储介质读取器可与计算机可读存储介质连接或被配置为接收计算机可读存储介质,所述计算机可读存储介质表示远程、本地、固定和/或可移动存储装置以及用于暂时和/或更持久地含有、存储、传输和检索计算机可读信息的存储介质。系统和各种装置通常还将包括位于至少一个工作存储器装置内的若干软件应用、模块、服务或其他元件,包括操作系统和应用程序,诸如客户端应用或web浏览器。应了解,替代实施方案可具有与上述实施方案不同的众多变化形式。例如,也可使用定制硬件,和/或特定元件可在硬件、软件(包括便携式软件,诸如小应用)或两者中实现。此外,可采用与诸如网络输入/输出装置的其他计算装置的连接。
用于包含代码或代码各部分的存储介质和计算机可读介质可包括本领域已知或已使用的任何适当介质,包括存储介质和通信介质,诸如但不限于以用于存储和/或传输信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质,包括RAM、ROM、电可擦可编程只读存储器(EEPROM)、快闪存储器或其他存储器技术、光盘只读存储器(CD-ROM)、数字通用光盘(DVD)或其他光学存储装置、磁盒、磁带、磁盘存储装置或其他磁性存储装置、或可用于存储期望的信息且可由系统装置访问的任何其他介质。基于本文所提供的公开内容和教示,本技术领域普通技术人员将了解实现各种实施方案的其他方式和/或方法。
在前面的描述中,描述了各种实施方案。出于解释的目的,阐述了具体的配置和细节,以便提供对实施方案的透彻理解。然而,对本领域的技术人员将明显的是,在没有具体细节的情况下也可实践各实施方案。此外,为了不使所描述的实施方案变得模糊,可省略或简化熟知的特征。
本文使用带括号的文本和带有虚线边界(例如,大破折号、小破折号、点破折号和点)的框来说明向一些实施方案添加额外特征的任选操作。然而,这种表示法不应视为意味着,这些是仅有的选项或任选操作,和/或在某些实施方案中,带有实线边界的框不是任选的。
在各种实施方案中,具有后缀字母的附图标记可用于指示可存在所引用实体的一个或多个实例,并且当存在多个实例时,每个实例不必同一,而是可替代地共享一些一般特征或按惯例行事。此外,除非有相反的明确说明,否则所使用的特定后缀并不意味着暗示存在特定量的实体。因此,在各种实施方案中,使用相同或不同后缀字母的两个实体可具有或可不具有相同数量的实例。
对“一个实施方案”、“实施方案”、“示例性实施方案”等的提及指示所描述的实施方案可包括特定特征、结构或特性,但是每个实施方案可能不一定包括该特定特征、结构或特性。此外,此类短语不一定是指同一实施方案。此外,当结合实施方案来描述特定特征、结构或特性时,应认为,无论是否明确描述,结合其他实施方案来实现此类特征、结构或特性也在本领域技术人员的知识范围内。
此外,在上述各种实施方案中,除非另外特别指出,否则诸如短语“A、B或C中的至少一个”的分离性语言应被理解为意指A、B或C或它们的任何组合(例如,A、B和/或C)。因此,这样的分离性语言不旨在且不应理解为暗示给定实施方案要求A中的至少一个、B中的至少一个以及C中的至少一个每一个都存在。
可根据以下条款描述所公开的技术的至少一些实施方案:
条款1.一种计算机实现的方法,其包括:在多租户web服务提供商中,接收应用实例配置,所述应用实例的应用用于在机器学习模型的执行期间利用附接的图形处理单元(GPU)的一部分,并且所述应用实例配置包括:要使用的中央处理单元(CPU)能力的指示;要使用的所述机器学习模型的算术精度;要使用的所述GPU能力的指示;所述应用的存储位置;以及要使用的随机存取存储器的量的指示;供应所述应用实例和附接到所述应用实例的所述GPU的所述部分,其中所述应用实例在第一实例位置使用物理计算实例来实现,其中所述GPU的所述部分在第二位置使用物理GPU来实现,并且其中所述物理GPU可通过网络由所述物理计算实例访问;将所述GPU的所述部分附接到所述应用实例;将所述机器学习模型加载到所述GPU的所述附接部分上;以及使用所述附接GPU上的所述GPU的所述部分、使用所述应用的所加载的机器学习模型来执行推理。
条款2.根据条款1所述的方法,其中所述应用实例和所述附接GPU的所述部分在不同的虚拟网络内。
条款3.根据条款1-2中任一项所述的方法,其中所述机器学习模型包括用于推理的计算图的描述和从训练中获得的权重。
条款4.根据条款1-2中任一项所述的方法,其中所述机器学习模型是呈TensorFlow、MXNet或ONNX格式。
条款5.一种计算机实现的方法,其包括:在多租户web服务提供商中,接收应用实例配置,所述应用实例的应用用于在机器学习模型的执行期间利用附接加速器的一部分,并且所述应用实例配置包括:要使用的中央处理单元(CPU)能力的指示;要使用的所述机器学习模型的算术精度;要使用的所述加速器能力的指示;所述应用的存储位置;以及要使用的随机存取存储器的量的指示;供应所述应用实例和附接到所述应用实例的所述加速器的所述部分,其中所述应用实例在第一实例位置使用物理计算实例来实现,其中所述加速器的所述部分在第二位置使用物理加速器来实现,并且其中所述物理加速器可通过网络由所述物理计算实例访问;将所述加速器的所述部分附接到所述应用实例;将所述机器学习模型加载到所述加速器的所附接部分上;以及使用在所述附接加速器上的所述加速器的所述部分、使用所述应用的所加载的机器学习模型来执行推理。
条款6.根据条款5所述的方法,其中所述机器学习模型包括用于推理的计算图的描述和从训练中获得的权重。
条款7.根据条款5-6中任一项所述的方法,其中所述机器学习模型是呈TensorFlow、MXNet或ONNX格式。
条款8.根据条款5-7中任一项所述的方法,其中所述应用实例和所述附接加速器的所述部分在不同的虚拟网络内。
条款9.根据条款5-8中任一项所述的方法,其中所述加速器是加速器设备的多个加速器中的一个。
条款10.根据条款9所述的方法,其中所述加速器设备包括具有不同能力的加速器。
条款11.根据条款10所述的方法,其中所述加速器设备的中央处理单元与所述多个加速器的能力成比例地被共享。
条款12.根据条款5-11中任一项所述的方法,其还包括:取消附接附接加速器的所述部分;以及将所述机器学习模型迁移到所述附接加速器的不同部分。
条款13.根据条款5-11中任一项所述的方法,其还包括:取消附接附接加速器的所述部分;以及将所述机器学习模型迁移到不同加速器的一部分。
条款14.根据条款11所述的方法,其还包括:在使用所述附接加速器上的所述加速器的所述部分、使用所述应用的所述加载的机器学习模型来执行推理之前,基于所述加载的机器学习模型确定要使用的推理引擎。
条款15.根据条款14所述的方法,其中所述推理引擎与所述机器学习模型格式的版本号兼容。
条款16.一种系统,其包括:用于存储应用的存储装置,所述应用包括机器学习模型;以及由第二一个或多个电子装置实现的弹性推理服务,所述弹性推理服务包括应用实例和加速器设备,所述弹性推理服务用于:接收所述应用实例的配置,所述应用实例的所述应用用于在所述机器学习模型的执行期间利用所述加速器设备的附接加速器的一部分,并且所述应用实例配置包括:要使用的中央处理单元(CPU)能力的指示;要使用的所述机器学习模型的算术精度;要使用的所述加速器能力的指示;所述应用的存储位置;以及要使用的随机存取存储器的量的指示;供应所述应用实例和附接到所述应用实例的所述加速器的所述部分,其中所述应用实例在第一实例位置使用物理计算实例来实现,其中所述加速器的所述部分在第二位置使用物理加速器来实现,并且其中所述物理加速器可通过网络由所述物理计算实例访问;将所述加速器的所述部分附接到所述应用实例;将所述机器学习模型加载到所述加速器的所述附接部分上;以及使用所述附接加速器上的所述加速器的所述部分、使用所述应用的所述加载的机器学习模型来执行推理。
条款17.根据条款16所述的系统,其中所述弹性推理服务用于取消附接附接加速器的所述部分并且用于将所述机器学习模型迁移到所述附接加速器的不同部分。
条款18.根据条款16-17中任一项所述的系统,其中所述弹性推理服务用于取消附接附接加速器的所述部分并且用于将所述机器学习模型迁移到不同加速器。
条款19.根据条款16-18中任一项所述的系统,其中所述机器学习模型包括用于推理的计算图的描述和从训练中获得的权重。
条款20.根据条款16-18中任一项所述的系统,其中所述机器学习模型是呈TensorFlow、MXNet或ONNX格式。
条款21.一种计算机实现的方法,其包括:根据应用实例配置将加速器设备的第一组一个或多个图形处理单元(GPU)插槽附接到多租户提供商网络的应用实例,所述应用实例配置用于定义要由所述应用实例的应用使用的每个GPU插槽能力,其中所述多租户提供商网络包括被配置为实现多个虚拟计算实例的多个计算装置,并且其中所述第一组一个或多个GPU插槽使用可通过网络由所述应用实例访问的物理GPU资源来实现;将所述机器学习模型加载到所述第一组一个或多个GPU插槽上;以及在使用所述附接的加速器设备上的所述第一组一个或多个GPU插槽、使用所述应用的所述加载的机器学习模型来执行推理时,使用所述加速器设备的加速器设备管理器来管理所述加速器设备的资源。
条款22.根据条款21所述的方法,其中所述加速器设备包括至少一个GPU和至少一种其他类型的加速器。
条款23.根据条款21-22中任一项所述的方法,其还包括:在将所述加速器设备的一组一个或多个GPU插槽附接到应用实例时,更新由所述GPU插槽使用的至少一个软件版本以与所述机器学习模型兼容。
条款24.根据条款21-23中任一项所述的方法,其还包括:针对所述应用实例将所述第一组一个或多个GPU插槽替换为第二组一个或多个GPU插槽;将所述应用实例的处理从所述第一组一个或多个GPU插槽迁移到所述第二组一个或多个GPU插槽;以及使用所述第二组一个或多个GPU插槽来执行应用。
条款25.一种计算机实现的方法,其包括:根据应用实例配置将加速器设备的第一组一个或多个加速器插槽附接到多租户提供商网络的应用实例,所述应用实例配置用于定义要由所述应用实例的应用使用的每个加速器插槽能力,其中所述多租户提供商网络包括被配置为实现多个虚拟计算实例的多个计算装置,并且其中所述第一组一个或多个加速器插槽使用可由所述应用实例访问的物理加速器资源来实现;将所述机器学习模型加载到所述第一组一个或多个加速器插槽上;以及在使用所述附接的加速器设备上的所述第一组一个或多个加速器插槽、使用所述应用的所述加载的机器学习模型来执行推理时,使用所述加速器设备的加速器设备管理器来管理所述加速器设备的资源。
条款26.根据条款25所述的方法,其中管理所述加速器设备的资源包括管理中央处理单元、存储器和入口网络带宽。
条款27.根据条款25-26中任一项所述的方法,其中管理所述加速器设备的资源包括在空间上多路复用一个或多个加速器插槽。
条款28.根据条款25-26中任一项所述的方法,其中管理所述加速器设备的资源包括在时间上将张量处理块多路复用到单个加速器插槽中。
条款29.根据条款25-28中任一项所述的方法,其还包括:更新所述加速器插槽所使用的至少一个软件版本。
条款30.根据条款25-29中任一项所述的方法,其还包括:针对所述应用实例将所述第一组一个或多个加速器插槽替换为第二组一个或多个加速器插槽;将所述应用实例的处理从所述第一组一个或多个加速器插槽迁移到所述第二组一个或多个加速器插槽;以及使用所述第二组一个或多个加速器插槽来执行所述应用。
条款31.根据条款30所述的方法,其中由于要求的变化,针对所述应用实例将所述第一组一个或多个加速器插槽替换为所述第二组一个或多个加速器插槽。
条款32.根据条款31所述的方法,其中所述要求的变化是由所述应用实例的用户指定的。
条款33.根据条款30所述的方法,其中由于性能的降级,针对所述应用实例将所述第一组一个或多个加速器插槽替换为所述第二组一个或多个加速器插槽。
条款34.根据条款30所述的方法,其中相对于所述第一组一个或多个加速器插槽,所述第二组一个或多个加速器插槽提供不同级别的处理。
条款35.根据条款30所述的方法,其中将所述第一组一个或多个加速器插槽替换为所述第二组一个或多个加速器插槽包括:致使所述第二组一个或多个加速器插槽代替所述第一组一个或多个加速器插槽来进行操作。
条款36.根据条款25-35中任一项所述的方法,其中所述加速器设备包括具有不同能力的加速器。
条款37.一种系统,其包括:用于存储应用的存储装置,所述应用包括机器学习模型;以及由第二一个或多个电子装置实现的弹性推理服务,所述弹性推理服务包括应用实例和加速器设备,所述弹性推理服务用于:根据应用实例配置将加速器设备的第一组一个或多个加速器插槽附接到多租户提供商网络的应用实例,所述应用实例配置用于定义要由所述应用实例的应用使用的每个加速器插槽能力,其中所述多租户提供商网络包括被配置为实现多个虚拟计算实例的多个计算装置,并且其中所述第一组一个或多个加速器插槽使用可由所述应用实例访问的物理加速器资源来实现;将所述机器学习模型加载到所述第一组一个或多个加速器插槽上;以及在使用所述附接的加速器设备上的所述第一组一个或多个加速器插槽、使用所述应用的所述加载的机器学习模型来执行推理时,使用所述加速器设备的加速器设备管理器来管理所述加速器设备的资源。
条款38.根据条款37所述的系统,其中管理所述加速器设备的资源包括管理中央处理单元、存储器和入口网络带宽。
条款39.根据条款37-38中任一项所述的系统,其中所述弹性推理服务进一步用于:针对所述应用实例将所述第一组一个或多个加速器插槽替换为第二组一个或多个加速器插槽;将所述应用实例的处理从所述第一组一个或多个加速器插槽迁移到所述第二组一个或多个加速器插槽;并且使用所述第二组一个或多个加速器插槽来执行所述应用。
条款40.根据条款39所述的系统,其中由于性能的降级,针对所述应用实例将所述第一组一个或多个加速器插槽替换为所述第二组一个或多个加速器插槽。
条款41.一种计算机实现的方法,其包括:在多租户web服务提供商中,接收应用实例配置,所述应用实例的应用在机器学习模型的执行期间利用附接的图形处理单元(GPU)的一部分,并且所述应用实例配置包括:在确定要供应的所述GPU的所述部分时要使用的所述机器学习模型的算术精度;供应所述应用实例和附接到所述应用实例的所述GPU的所述部分,其中所述应用实例在第一实例位置使用物理计算实例来实现,其中所述GPU的所述部分在第二位置使用物理GPU来实现,并且其中所述物理GPU可通过网络由所述物理计算实例访问;将所述机器学习模型加载到所述GPU的所述部分上;以及使用所述附接GPU上的所述GPU的所述部分、使用所述应用的所述加载的机器学习模型来执行推理。
条款42.根据条款41所述的方法,其还包括:在供应所述加速器的所述部分之前,评估所述机器学习模型以确定所述机器学习模型的所述算术精度。
条款43.根据条款41-42中任一项所述的方法,其还包括:通过将所述机器学习模型转换为具有独立于GPU的优化的中间表示并且通过独立于GPU的优化从所述中间表示转换为机器代码来对所述机器学习模型进行概要分析。
条款44.根据条款41-43中任一项所述的方法,其还包括:至少部分地基于一个或多个放置标准选择用于物理加速器的GPU位置或应用实例位置,其中所述多租户web服务提供商包括物理计算实例的多个实例位置以及物理加速器的多个GPU位置。
条款45.一种计算机实现的方法,其包括:在多租户web服务提供商中,接收应用实例配置,所述应用实例的应用在机器学习模型的执行期间利用附接加速器的一部分,并且所述应用实例配置包括:在确定要供应的所述加速器的所述部分时要使用的所述机器学习模型的算术精度;供应所述应用实例和附接到所述应用实例的所述加速器的所述部分,其中所述应用实例在第一位置使用物理计算实例来实现,其中所述加速器的所述部分在第二位置使用物理加速器来实现,并且其中所述物理加速器可由所述物理计算实例访问;将所述机器学习模型加载到所述加速器的所述部分上;以及使用所述附接加速器上的所述加速器的所述部分、使用所述应用的所述加载的机器学习模型来执行推理。
条款46.根据条款45所述的方法,其中所述机器学习模型包括用于推理的计算图的描述和从训练中获得的权重。
条款47.根据条款45-46中任一项所述的方法,其还包括:在供应所述加速器的所述部分之前,评估所述机器学习模型以确定所述机器学习模型的所述算术精度。
条款48.根据条款45-47中任一项所述的方法,其还包括:通过将所述机器学习模型转换为具有独立于加速器的优化的中间表示并且通过独立于加速器的优化从所述中间表示转换为机器代码来对所述机器学习模型进行概要分析。
条款49.根据条款45-48中任一项所述的方法,其还包括:在所述应用中,将对所述加速器的所述部分的调用汇总,并作为批量发送所聚集调用。
条款50.根据条款45-49中任一项所述的方法,其还包括:在附接所述加速器之前,基于所述加速器的计算能力选择所述加速器。
条款51.根据条款45-50中任一项所述的方法,其还包括:至少部分地基于一个或多个放置标准选择用于物理加速器的加速器位置或应用实例位置,其中所述多租户web服务提供商包括物理计算实例的多个实例位置以及物理加速器的多个加速器位置。
条款52.根据条款51所述的方法,其中所述一个或多个放置标准包括对一个或多个度量的改进。
条款53.根据条款51所述的方法,其中所述一个或多个放置标准至少部分基于与所述物理计算实例对所述物理加速器的使用相关联的性能度量。
条款54.根据条款51所述的方法,其中所述一个或多个放置标准至少部分基于与所述物理计算实例对所述物理加速器的使用相关联的能量度量。
条款55.根据条款51-54中任一项所述的方法,其中所述加速器位置或所述应用实例位置至少部分地基于网络位置来选择。
条款56.根据条款51-54中任一项所述的方法,其中所述加速器位置至少部分地基于所述物理加速器与客户端装置之间的网络等待时间来选择。
条款57.一种系统,其包括:用于存储应用的存储装置,所述应用包括机器学习模型;以及由第二一个或多个电子装置实现的弹性推理服务,所述弹性推理服务包括应用实例和加速器设备,所述弹性推理服务用于:在多租户web服务提供商中,接收应用实例配置,所述应用实例的应用在机器学习模型的执行期间利用附接加速器的一部分,并且所述应用实例配置包括:在确定要供应的所述加速器的所述部分时要使用的所述机器学习模型的算术精度;供应所述应用实例和附接到所述应用实例的所述加速器的所述部分,其中所述应用实例在第一位置使用物理计算实例来实现,其中所述加速器的所述部分在第二位置使用物理加速器来实现,并且其中所述物理加速器可由所述物理计算实例访问;将所述机器学习模型加载到所述加速器的所述部分上;并且使用所述附接加速器上的所述加速器的所述部分、使用所述应用的所述加载的机器学习模型来执行推理。
条款58.根据条款57所述的系统,其中所述弹性推理服务将通过将所述机器学习模型转换为具有独立于加速器的优化的中间表示并且通过独立于加速器的优化从所述中间表示转换为机器代码来对所述机器学习模型进行概要分析。
条款59.根据条款57-58中任一项所述的系统,其中所述弹性推理服务将至少部分地基于一个或多个放置标准选择用于物理加速器的加速器位置或应用实例位置,其中所述多租户web服务提供商包括物理计算实例的多个实例位置以及物理加速器的多个加速器位置。
条款60.根据条款57-58中任一项所述的系统,其中所述弹性推理服务将至少部分地基于网络位置来选择所述加速器位置或所述应用实例位置。
条款61.一种计算机实现的方法,其包括:在多租户web服务提供商中,接收应用实例配置,所述应用实例的应用在机器学习模型的执行期间利用至少一个附接的图形处理单元(GPU)的多个部分;供应所述应用实例和附接到所述应用实例的所述至少一个GPU的所述部分;将所述机器学习模型加载到所述至少一个GPU的所述部分上;在所述应用中接收得分数据;以及利用所述附接的至少一个GPU的所述部分中的每一个来并行地对所述得分数据进行推理,并且仅使用来自所述GPU的所述部分的一个响应。
条款62.根据条款61所述的方法,其中要使用的所述一个响应是时间上的第一响应。
条款63.根据条款61-62中任一项所述的方法,其还包括:跟踪来自所述附接的至少一个GPU的所述部分的每个响应的定时;以及基于所跟踪的定时来改变至少一个GPU的多个部分的供应。
条款64.一种计算机实现的方法,其包括:供应应用实例和附接到所述应用实例的至少一个加速器的部分以执行所述应用实例的应用的机器学习模型;将所述机器学习模型加载到所述至少一个加速器的所述部分上;在所述应用中接收得分数据;以及利用所述附接的至少一个加速器的所述部分中的每一个来并行地对所述得分数据进行推理,并且仅使用来自所述加速器的所述部分的一个响应。
条款65.根据条款64所述的方法,其中所述机器学习模型包括用于推理的计算图的描述和从训练中获得的权重。
条款66.根据条款64-65中任一项所述的方法,其中要使用的所述一个响应是时间上的第一响应。
条款67.根据条款64-66中任一项所述的方法,其还包括:跟踪来自所述附接的至少一个加速器的所述部分的每个响应的定时;以及基于所跟踪的定时来改变至少一个加速器的多个部分的供应。
条款68.根据条款64-67中任一项所述的方法,其中基于所跟踪的定时来改变至少一个加速器的多个部分的供应至少部分地通过启动至少一个不同的加速器插槽并终止性能不佳的加速器插槽来执行。
条款69.根据条款64-68中任一项所述的方法,其还包括:接收应用实例配置,所述应用实例配置用于指示基于所跟踪的定时来改变至少一个加速器的多个部分的供应的使用。
条款70.根据条款64-69中任一项所述的方法,其还包括:在附接所述加速器之前,基于所述加速器的计算能力选择所述加速器。
条款71.根据条款64-70中任一项所述的方法,其还包括:至少部分地基于一个或多个放置标准选择用于物理加速器的加速器位置或应用实例位置,其中所述多租户web服务提供商包括物理计算实例的多个实例位置以及物理加速器的多个加速器位置。
条款72.根据条款71所述的方法,其中所述一个或多个放置标准至少部分基于与所述物理计算实例对所述物理加速器的使用相关联的性能度量。
条款73.根据条款71所述的方法,其中所述加速器位置或所述应用实例位置至少部分地基于网络位置来选择。
条款74.根据条款71所述的方法,其中所述加速器位置至少部分地基于所述物理加速器与客户端装置之间的网络等待时间来选择。
条款75.一种系统,其包括:用于存储应用的存储装置,所述应用包括机器学习模型;以及由第二一个或多个电子装置实现的弹性推理服务,所述弹性推理服务包括应用实例和加速器设备,所述弹性推理服务用于:供应应用实例和附接到所述应用实例的至少一个加速器的部分以执行所述应用实例的应用的机器学习模型;将所述机器学习模型加载到所述至少一个加速器的所述部分上;在所述应用中接收得分数据;以及利用所述附接的至少一个加速器的所述部分中的每一个来并行地对所述得分数据进行推理,并且仅使用来自所述加速器的所述部分的一个响应。
条款76.根据条款75所述的系统,其中要使用的所述一个响应是时间上的第一响应。
条款77.根据条款75-76中任一项所述的系统,其中所述弹性推理服务进一步用于:跟踪来自所述附接的至少一个加速器的所述部分的每个响应的定时;并且基于所跟踪的定时来改变至少一个加速器的多个部分的供应。
条款78.根据条款75-77中任一项所述的系统,其中基于所跟踪的定时来改变至少一个加速器的多个部分的供应至少部分地通过启动至少一个不同的加速器插槽并终止性能不佳的加速器插槽来执行。
条款79.根据条款75-78中任一项所述的系统,其中所述弹性推理服务进一步用于:接收应用实例配置,所述应用实例配置用于指示基于所跟踪的定时来改变至少一个加速器的多个部分的供应的使用。
条款80.根据条款75-79中任一项所述的系统,其中所述弹性推理服务进一步用于:在附接所述加速器之前,基于所述加速器的计算能力选择所述加速器。
因此,说明书和附图被认为是说明性的而不是限制性的含义。然而,将明显的是:在不脱离如在权利要求中阐述的本公开的更宽泛精神和范围的情况下,可对其做出各种修改和改变。

Claims (15)

1.一种计算机实现的方法,其包括:
在多租户web服务提供商中接收应用实例配置,所述应用实例的应用用于在机器学习模型的执行期间利用附接的加速器的一部分,并且所述应用实例配置包括:
要使用的中央处理单元(CPU)能力的指示,
要使用的所述机器学习模型的算术精度,
要使用的所述加速器能力的指示,
所述应用的存储位置,以及
要使用的随机存取存储器的量的指示;
供应所述应用实例和附接到所述应用实例的所述加速器的所述部分,其中所述应用实例在第一实例位置使用物理计算实例来实现,其中所述加速器的所述部分在第二位置使用物理加速器来实现,并且其中所述物理加速器能通过网络由所述物理计算实例访问;
将所述加速器的所述部分附接到所述应用实例;
将所述机器学习模型加载到所述加速器的所附接部分;以及
使用所述附接加速器上的所述加速器的所述部分、使用所述应用的所加载的机器学习模型来执行推理。
2.根据权利要求1所述的方法,其中所述机器学习模型包括用于推理的计算图的描述和从训练中获得的权重。
3.根据权利要求1-2中任一项所述的方法,其中所述机器学习模型是呈TensorFlow、MXNet或ONNX格式。
4.根据权利要求1-3中任一项所述的方法,其中所述应用实例和所述附接加速器的所述部分在不同的虚拟网络内。
5.根据权利要求1-4中任一项所述的方法,其中所述加速器是加速器设备的多个加速器中的一个。
6.根据权利要求5所述的方法,其中所述加速器设备包括具有不同能力的加速器。
7.根据权利要求6所述的方法,其中所述加速器设备的中央处理单元与所述多个加速器的能力成比例地被共享。
8.根据权利要求1-7中任一项所述的方法,其还包括:
取消附接附接加速器的所述部分;以及
将所述机器学习模型迁移到所述附接加速器的不同部分。
9.根据权利要求1-7中任一项所述的方法,其还包括:
取消附接附接加速器的所述部分;以及
将所述机器学习模型迁移到不同加速器的部分。
10.根据权利要求1-9中任一项所述的方法,其还包括:
在使用所述附接加速器上的所述加速器的所述部分、使用所述应用的所述加载的机器学习模型来执行推理之前,基于所述加载的机器学习模型确定要使用的推理引擎。
11.根据权利要求10所述的方法,其中所述推理引擎与所述机器学习模型格式的版本号兼容。
12.一种系统,其包括:
用于存储应用的存储装置,所述应用包括机器学习模型;以及
由第二一个或多个电子装置实现的弹性推理服务,所述弹性推理服务包括应用实例和加速器设备,所述弹性推理服务用于:
接收所述应用实例的配置,所述应用实例的所述应用用于在所述机器学习模型的执行期间利用所述加速器设备的附接加速器的一部分,并且所述应用实例配置包括:
要使用的中央处理单元(CPU)能力的指示,
要使用的所述机器学习模型的算术精度,
要使用的所述加速器能力的指示,
所述应用的存储位置,以及
要使用的随机存取存储器的量的指示;
供应所述应用实例和附接到所述应用实例的所述加速器的所述部分,其中所述应用实例在第一实例位置使用物理计算实例来实现,其中所述加速器的所述部分在第二位置使用物理加速器来实现,并且其中所述物理加速器能通过网络由所述物理计算实例访问;
将所述加速器的所述部分附接到所述应用实例;
将所述机器学习模型加载到所述加速器的所附接部分上;以及
使用所述附接加速器上的所述加速器的所述部分、使用所述应用的所加载的机器学习模型来执行推理。
13.根据权利要求12所述的系统,其中所述弹性推理服务用于取消附接附接加速器的所述部分并且用于将所述机器学习模型迁移到所述附接加速器的不同部分。
14.根据权利要求12-13中任一项所述的系统,其中所述弹性推理服务用于取消附接附接加速器的所述部分并且用于将所述机器学习模型迁移到不同加速器。
15.根据权利要求12-14中任一项所述的系统,其中所述机器学习模型包括用于推理的计算图的描述和从训练中获得的权重。
CN201980041959.0A 2018-06-27 2019-06-24 基于附接的加速器的推理服务 Active CN112292668B (zh)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US16/020,788 US11494621B2 (en) 2018-06-27 2018-06-27 Attached accelerator selection and placement
US16/020,776 US11599821B2 (en) 2018-06-27 2018-06-27 Attached accelerator based inference service
US16/020,788 2018-06-27
US16/020,776 2018-06-27
US16/020,819 2018-06-27
US16/020,810 US11422863B2 (en) 2018-06-27 2018-06-27 Attached accelerator scaling
US16/020,819 US11960935B2 (en) 2018-06-27 2018-06-27 Fault-tolerant accelerator based inference service
US16/020,810 2018-06-27
PCT/US2019/038670 WO2020005806A1 (en) 2018-06-27 2019-06-24 Attached accelerator based inference service

Publications (2)

Publication Number Publication Date
CN112292668A true CN112292668A (zh) 2021-01-29
CN112292668B CN112292668B (zh) 2024-04-26

Family

ID=67211933

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980041959.0A Active CN112292668B (zh) 2018-06-27 2019-06-24 基于附接的加速器的推理服务

Country Status (6)

Country Link
EP (1) EP3814899B1 (zh)
JP (1) JP7180907B2 (zh)
KR (1) KR102544059B1 (zh)
CN (1) CN112292668B (zh)
AU (1) AU2019295631B2 (zh)
WO (1) WO2020005806A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102411681B1 (ko) 2021-12-24 2022-06-22 주식회사 모빌린트 시간 결정적인 태스크의 가속을 지원하기 위한 동종 다중 코어 가속기의 sw 프레임워크 구조를 이용하는 하드웨어 가속기 제어 방법 및 장치
US11782683B1 (en) 2022-03-24 2023-10-10 International Business Machines Corporation Variable replacement by an artificial intelligence accelerator
WO2023209797A1 (ja) * 2022-04-26 2023-11-02 三菱電機株式会社 情報処理装置、推論システム、及び制御方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150379424A1 (en) * 2014-06-30 2015-12-31 Amazon Technologies, Inc. Machine learning service
CN105678379A (zh) * 2016-01-12 2016-06-15 腾讯科技(深圳)有限公司 一种cnn的处理方法和装置
CN107077385A (zh) * 2014-09-10 2017-08-18 亚马逊技术公司 计算实例启动时间
CN107633298A (zh) * 2017-03-10 2018-01-26 南京大学 一种基于模型压缩的递归神经网络加速器的硬件架构
US20180052709A1 (en) * 2016-08-19 2018-02-22 International Business Machines Corporation Dynamic usage balance of central processing units and accelerators

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2286347A4 (en) * 2008-06-04 2012-03-07 Nec Lab America Inc SYSTEM AND METHOD FOR PARALLELIZING AND ACCELERATING A LEARNING MACHINE TRAINING AND CLASSIFICATION THEREOF BY MEANS OF A MASSIVELY PARALLEL ACCELERATOR
US20140282584A1 (en) 2013-03-14 2014-09-18 Silicon Graphics International Corp. Allocating Accelerators to Threads in a High Performance Computing System
US11145271B2 (en) * 2015-08-10 2021-10-12 Amazon Technologies, Inc. Virtualizing graphics processing in a provider network
US10069681B2 (en) * 2015-12-31 2018-09-04 Amazon Technologies, Inc. FPGA-enabled compute instances
US10896064B2 (en) 2017-03-27 2021-01-19 International Business Machines Corporation Coordinated, topology-aware CPU-GPU-memory scheduling for containerized workloads

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150379424A1 (en) * 2014-06-30 2015-12-31 Amazon Technologies, Inc. Machine learning service
CN107077385A (zh) * 2014-09-10 2017-08-18 亚马逊技术公司 计算实例启动时间
CN105678379A (zh) * 2016-01-12 2016-06-15 腾讯科技(深圳)有限公司 一种cnn的处理方法和装置
US20180052709A1 (en) * 2016-08-19 2018-02-22 International Business Machines Corporation Dynamic usage balance of central processing units and accelerators
CN107633298A (zh) * 2017-03-10 2018-01-26 南京大学 一种基于模型压缩的递归神经网络加速器的硬件架构

Also Published As

Publication number Publication date
AU2019295631A1 (en) 2021-01-21
KR20210013723A (ko) 2021-02-05
EP3814899A1 (en) 2021-05-05
JP7180907B2 (ja) 2022-11-30
WO2020005806A1 (en) 2020-01-02
JP2021528740A (ja) 2021-10-21
CN112292668B (zh) 2024-04-26
EP3814899B1 (en) 2022-11-23
KR102544059B1 (ko) 2023-06-16
AU2019295631B2 (en) 2022-03-24

Similar Documents

Publication Publication Date Title
US11599821B2 (en) Attached accelerator based inference service
US11870702B1 (en) Dynamic resource allocation of cloud instances and enterprise application migration to cloud architecture
US11301762B1 (en) High perforamance machine learning inference framework for edge devices
US11385892B1 (en) Optimal software architecture recommendations by an application modernization service
US11422863B2 (en) Attached accelerator scaling
US20180241824A1 (en) Software-defined networking proxy gateway
CN112292668B (zh) 基于附接的加速器的推理服务
US11467828B1 (en) Ontology-based software modernization assessment engines
US10956242B1 (en) Automating the migration of web service implementations to a service provider system
US11425054B1 (en) User-configured multi-location service deployment and scaling
US11436524B2 (en) Hosting machine learning models
US11574243B1 (en) Heterogeneous compute instance auto-scaling with reinforcement learning
US11960935B2 (en) Fault-tolerant accelerator based inference service
US10949252B1 (en) Benchmarking machine learning models via performance feedback
EP3740869B1 (en) Automated distribution of models for execution on a non-edge device and an edge device
EP3857407B1 (en) Hosting machine learning models
US11765244B1 (en) Latency-based service discovery and routing for multi-location service-oriented applications
US10853129B1 (en) Accelerator based inference service
US11494621B2 (en) Attached accelerator selection and placement
US11467835B1 (en) Framework integration for instance-attachable accelerator
US11562288B2 (en) Pre-warming scheme to load machine learning models
US11853753B1 (en) Detection, presentation, and resolution of bottlenecks in monolith decomposition
US11423283B1 (en) Model adaptation
US10917314B1 (en) Distributed health management using peer leases

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