CN114127741A - 用于人工智能建模的动态多层执行 - Google Patents
用于人工智能建模的动态多层执行 Download PDFInfo
- Publication number
- CN114127741A CN114127741A CN202080051365.0A CN202080051365A CN114127741A CN 114127741 A CN114127741 A CN 114127741A CN 202080051365 A CN202080051365 A CN 202080051365A CN 114127741 A CN114127741 A CN 114127741A
- Authority
- CN
- China
- Prior art keywords
- model
- micro
- target device
- parameter server
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本文中所描述的方法、***、装置和计算机程序产品支持大型AI模型在被通信地连接到参数服务器的存储器受限目标设备上的执行,该参数服务器存储AI模型的主副本。AI模型可以被分解成较小的部分(例如,层或子层),并且每个部分可以在目标设备上尽可能高效地执行。在AI模型的一部分的执行完成之后,可以在目标设备处下载并执行AI模型的另一部分。一次执行AI模型的一部分的该范例允许大型AI模型的动态执行。
Description
背景技术
人工智能对现代社会的很多方面已具有巨大影响。机器学习(采用数学算法来处理大型数据集的人工智能的子集)在商业应用中越来越受欢迎,并且越来越多地出现在消费者产品中。深度学习是机器学习的一个分支,其基于用于对数据中的高级抽象进行建模的算法。人工智能的很多应用都是由深度学习驱动的,诸如自然语言处理、语音识别和图像分析。
然而,存在阻碍深度学习被广泛采用的很多挑战。这些挑战包括管理大型数据集的复杂性以及训练深度学习网络所需要的大量时间和资源。例如,语音识别程序可能需要来自多种方言和人口统计数据的数据,其中可能包括单一语言的数太字节的数据。可以通过参数的数目表示深度神经网络(DNN)的复杂性,使得所存在的参数越多,DNN就越复杂。另外,优化超参数(在人工智能(AI)模型的学习过程开始之前定义的参数)可能极大地影响AI模型的性能。更进一步,需要大量的计算能力来处理用于训练这样的AI模型的大量数据。
在深度学习中,某些种类的AI模型可能需要具有高存储器容量的GPU(图形处理单元)的处理能力。为了提高吞吐量,多个GPU可以以数据并行方式运行,这通常需要同步分别存储在不同GPU中的数亿到数十亿个参数。该方法可能会受到GPU的存储器容量的限制,并且可能无法实现GPU的最大计算效率。
发明内容
本发明内容被提供来以简化形式介绍下面在具体实施方式中进一步描述的概念的选择。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
本文中描述了支持任意大型AI模型在被通信地连接到参数服务器的存储器受限目标设备上的执行的方法、***、装置和计算机程序产品。特别地,示例实施例提供了一种用于AI建模的动态执行的过程。
特别地,本文中描述了包括通信地连接到目标设备的参数服务器的方法、***、装置和计算机程序产品,该参数服务器包括:数据管理器,被配置为存储AI模型的主副本;批次管理器,被配置为确定适合目标设备的微批次大小;传输器,被配置为向目标设备传输AI模型的一部分;输出数据管理器,被配置为从目标设备接收输出数据,输出数据是通过在目标设备处在AI模型的传输部分的子部分上执行数据集的微批次集合而生成的;以及模型评估器,被配置为基于一个或多个度量来评估AI模型以确定是否需要对AI模型执行的任何变化。
下面参考附图详细地描述其他特征和优点、以及各种示例的结构和操作。注意,构思和技术不限于本文中所描述的特定示例。这样的示例在本文中仅出于说明性的目的而呈现。基于本文中所包含的教导,附加的示例对于相关领域技术人员而言将是显而易见的。
附图说明
并入本文中并形成说明书的一部分的附图示出了本申请的实施例,并且与描述一起进一步用于解释实施例的原理并使得相关领域的技术人员能够做出并使用实施例。
图1是根据示例实施例的支持任意大型AI模型在存储器受限目标设备上的执行的***的框图。
图2示出了根据示例实施例的提供在正向传递期间在存储器受限设备上运行AI模型的过程的流程图。
图3示出了根据示例实施例的提供在反向传递期间在存储器受限设备上运行AI模型的过程的流程图。
图4示出了根据示例实施例的表示通过机器学习模型的正向传递的表。
图5示出了根据示例实施例的表示通过机器学习模型的反向传递的表。
图6示出了根据示例实施例的提供参数服务器处的在存储器受限设备上运行AI模型的过程的流程图。
图7示出了根据示例实施例的提供参数服务器处的在正向传递期间生成激活的过程的流程图。
图8示出了根据示例实施例的提供参数服务器处的更新AI模型的过程的流程图。
图9示出了根据示例实施例的示出***中的多级并行的参数缩减的框图。
图10示出了根据示例实施例的多级并行的参数缩减的时序图。
图11示出了根据示例实施例的提供***中的并行的参数缩减的过程的流程图。
图12示出了根据示例实施例的提供AI模型的混合精度训练的过程的流程图。
图13示出了根据示例实施例的提供使用多个目标设备来训练AI模型的过程的流程图。
图14示出了根据示例实施例的提供AI建模的动态执行的过程的流程图。
图15示出了根据示例实施例的提供确定AI建模的动态执行的计算精度的过程的流程图。
图16示出了根据示例实施例的提供基于AI模型的准确度来确定是停止还是继续AI模型的执行的过程的流程图。
图17是可以在其中实现实施例的示例计算机***的框图。
通过下面在结合附图时阐述的具体实施方式,实施例的特征和优点将变得更显而易见,在附图中,类似的附图标记自始至终标识对应的元素。在附图中,类似的附图标记通常表示相同、功能相似和/或结构相似的元素。由对应的附图标记中最左边的(多个)数字指示元素第一次出现的附图。
具体实施方式
I.简介
以下具体实施方式公开了很多实施例。本专利申请的范围不限于所公开的实施例,还包括所公开的实施例的组合、以及对所公开的实施例的修改。
在说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例可能不一定包括特定的特征、结构或特性。此外,这样的短语不一定指代相同的实施例。此外,当结合实施例描述特征、结构或特性时,认为与其他实施例(无论是否明确描述)相结合来实现这样的特征、结构或特性在本领域技术人员的知识范围内。
在讨论中,除非另有说明,否则诸如“基本上”、“近似”和“大约”之类的修饰表示本公开的实施例的一个或多个特征的条件或关系特性的形容词被理解为表示条件或特性被定义为在针对其预期应用的实施例的操作可接受的容差内。
很多示例性实施例被如下地描述。注意,本文中所提供的任何节/小节标题无意为限制性的。贯穿本文档描述了实施例,并且任何类型的实施例可以被包括在任何节/小节下。此外,任何节/小节中所公开的实施例可以以任何方式与相同节/小节和/或不同节/小节中所描述的任何其他实施例组合。
II.示例实施例
本文中所描述的示例实施例是出于说明性目的而提供的,并且不是限制性的。本文中所描述的示例可以适用于任何类型的目标爬取***。通过本文中的教导,另外的结构和操作实施例(包括修改/改变)对于相关领域的技术人员而言将变得显而易见。
深度学习有很多应用,包括自然语言处理、语音识别、图像分析、机器翻译、照片中的对象分类和检测、自动手写生成、自动游戏、生成模型聊天机器人。深度学习模型因其模拟人脑的能力而在各种任务中被广泛应用。
在深度学习中,大型的AI模型(例如,针对自然语言处理或图像分析进行训练的)可能需要具有高存储器容量的多个GPU来执行其训练。为了提高速度,这些GPU可以具有高速接口,诸如高带宽存储器(HBM)接口。然而,即使使用高质量硬件,仍有办法改进大型AI模型的推理和训练过程。例如,有两种方法可以使AI模型的训练并行化以提高吞吐量:模型并行性和数据并行性。
模型并行性包括将学习模型划分成多个部分,并且将这些部分放置在不同计算节点上(例如,将层的前半部分放置在第一GPU上,并且将层的后半部分放置在第二GPU上,或者拆分中间的层并将它们分配给单独的GPU)。例如,具有24层的典型的大型AI模型可以通过以下方式在GPU上运行。正向传递在同一迷你批次上逐层执行,诸如通过开始在第1层上执行迷你批次,然后是第2层,以此类推,直到第24层。在每一层之后,该层的激活(本文中也被称为隐藏激活、隐藏状态或中间结果)可以被保存(例如,在片上或片外)以用于反向传递,这可以以类似的逐层方式(以相反顺序)在同一迷你批次上执行。例如,迷你批次可以在第24层上执行,然后是第23层,以此类推,直到第1层,之后,AI模型被更新。有时,作为计算成本与高效存储器使用之间的权衡,可以在反向传递中重新计算隐藏激活。在某些类型的AI模型(例如,自然语言处理)中,可能有很多参数,但是迷你批次大小可能很小(例如,几千字节)。在其他类型的模型(诸如,密集网络或计算机视觉模型)中,参数的数目可能相对较少,但是隐藏激活的数目可能很大。通常,这些类型的模型可能无法在没有全局存储器的设备上运行,诸如专用集成电路(ASIC)设备。因此,所使用的可用技术是模型并行性,其中模型跨多个设备被拆分。然而,模型并行性由于长时间的休眠存储器和计算时间而效率低下。
此外,GPU可以具有映射到其全局存储器的某些数据结构,该全局存储器是片外的并且与高速存储器接口(例如,HBM)连接。例如,输入和输出激活可以驻留在片上,有时梯度也是如此,而权重和隐藏激活的主副本可以存储在片外。这些数据结构存在若干驻留问题。权重可能在实际使用之前加载,从而占用宝贵的存储器。在完成正向传递之后,可能会生成隐藏激活,但是在反向传递之前可能不需要隐藏激活。此外,全局存储器数据经由加载和存储而移入和移出芯片,从而即使在通过高速缓存和寄存器进行有限时间缓冲的情况下也会导致存储器访问放大。因此,当在这样的GPU或GPU集群中运行大型AI模型(例如,使用模型并行或统一存储器寻址技术)时,AI模型大小取决于设备数目,并且通信开销的性能损失无法调节或隐藏。
数据并行性是输入数据跨计算设备被分割,并且每个设备保存学习模型的完整副本,被称为复型或工作器。每个复型计算其部分数据的梯度,并且该梯度被组合以更新模型参数。在异步分布式随机梯度下降(SGD)中,每个复型访问共享存储器空间,其中存储有全局参数。在其本地存储器中复制参数之后,复型可以计算相对于其当前权重的梯度和更新后的权重,然后将更新后的权重应用于共享存储器空间中的全局参数。该配置的优点是复型可以按照自己的节奏工作,而无需等待其他复型完成计算其梯度。然而,没有办法确保当一个复型计算关于一组参数的梯度时,另一个复型没有更新全局参数,导致全局参数利用陈旧梯度被更新。在同步分布式SGD中,每个GPU可能运行输入数据(或者,样本)的迷你批次,然后停止执行以通过交换梯度来同步所有模型参数,该梯度是通过AI模型反向传播损失而计算的调节。该方法受到GPU存储器容量的高度限制。在AI模型需要的存储器比单个GPU多的情况下,该GPU上的模型编译可能会因存储器不足错误而失败。数据并行性通常需要同步分别存储在不同GPU中的数亿到数十亿个参数。因此,该方法可能无法实现GPU的最大计算效率,因为它们需要在计算中长时间暂停以完成同步。
本文中所描述的实施例克服了这样的困难,以支持AI模型在具有大型片上存储器但没有全局存储器的设备上的运行。本文中所描述的实施例可以在诸如GPU、ASIC或FPGA(现场可编程门阵列)之类的存储器受限设备中以快速且高效的方式执行任何任意大小的AI模型。在示例实施例中,任何任意大小的AI模型都可以在没有全局存储器但可以比GPU更快地执行AI模型的ASIC上执行。因此,本文中所描述的实施例支持大型AI模型在存储器受限设备上的执行。
示例实施例可以在具有至少一个参数服务器和一个目标设备的***中实现。AI模型的主副本可以驻留在参数服务器中。AI模型可以被分解成较小部分或块(例如,个体层),并且每个部分或层可以在目标设备上尽可能高效地执行。在一层完成之后,执行下一层。为了提高平衡和效率,该技术在大量输入样本的同一层上迭代,直到(a)下一层被加载到目标设备上,从而完全隐藏其延迟,或者(b)在当前层完成之后加载下一层,以暴露其延迟,但是通过当前层的长计算周期最小化开销。为了使当前计算周期变长,可以将输入样本划分成微批次。一组微批次形成迷你批次,迷你批次是用于每次更新(用于训练)的若干样本或每个推理周期中提供(用于推理)的若干样本的术语。通过使用一组微批次和/或迷你批次的大小作为可以手动或自动(例如,使用AI框架的软件)调节的旋钮,通信开销可以被最小化或甚至减少到零。
如果AI模型可以用较大批次大小进行优化,诸如在自然语言处理模型、视觉模型、或者具有高权重/激活比的模型的情况下,则本文中所描述的实施例将允许这些模型以最高性能在一个或多个存储器受限设备上运行。因此,根据示例实施例,大型AI模型可以在其存储器小于高效运行大型AI模型所需要的存储器的目标设备上执行。换言之,AI模型可以以最小设备批次大小执行,此时可以实现速度的峰值效率(即,高效TFLOP)。例如,AI模型的性能仅取决于在目标设备上运行的库的计算吞吐量的效率,即TFLOP(teraFLOPS)。每秒浮点运算(FLOPS)是衡量计算机性能的度量,例如,用于衡量算法或计算机硬件每秒计算一万亿次浮点运算的能力。在其他示例实施例中,大型AI模型可以在其组合存储器(例如,全局存储器)可能小于高效运行大型AI模型所需要的存储器的多个目标设备上执行。
A.在存储器受限目标设备上执行大型人工智能模型
支持大型AI模型在存储器受限设备上的执行可以以多种方式实现。例如,图1是根据示例实施例的支持任意大型AI模型在存储器受限目标设备上的执行的***的框图。如图1中所示,***100包括参数服务器102和目标设备134a-134k。虽然图1中仅示出了一个参数服务器102,但是***100可以包括多个参数服务器。类似地,虽然图1中描绘了目标设备134a-134k,但是***100可以包括更少或更多数目的目标设备。基于关于如图1中所描绘的***100的以下讨论,其他的结构和操作实施例对于相关领域的技术人员而言将是显而易见的。
参数服务器102可以包括任何类型的计算设备(移动的或固定的)。参数服务器102可以为其他程序或设备提供功能性,诸如共享数据或资源或者执行计算。参数服务器102可以包括被配置为存储数据(例如,数据集、软件程序、AI模型)的存储器104以及被配置为执行编程功能的处理器132。参数服务器102可以包括商业现货组件和/或定制组件,并且可以是独立设备或另一计算设备的一部分。参数服务器102可以包括图1中未示出的其他组件,诸如***接口、通信接口、集成器件、多处理器和不同类型的存储器。在实施例中,参数服务器102可以被实现为CPU、FPGA或ASIC中的一种或多种。例如,作为CPU,参数服务器102可以包括计算设备内的电子电路***,该电子电路***通过基于指令执行操作(例如,数学、逻辑、控制或输入/输出)来执行计算机程序的指令。作为FPGA,参数服务器102可以包括被配置为执行复杂组合功能或其他操作的可编程逻辑块阵列。作为ASIC或片上***,参数服务器102可以包括被配置为基于计算机程序指令来执行操作的定制集成电路。
参数服务器102可以被配置为将AI模型106存储在存储器104中。AI模型106可以包括权重108,并且在AI模型106的执行期间,激活112和梯度110可以存储在存储器104中。参数服务器102还可以存储数据集114,数据集114可以是训练或测试数据集。参数服务器102还可以包括用于执行操作的计算机程序逻辑(例如,计算机程序代码或指令)。例如,参数服务器102可以包括AI模型管理器116,AI模型管理器116被配置为在AI模型106的推理或训练期间管理AI模型106。AI模型管理器116包括用于管理AI模型106的计算机程序逻辑,诸如数据管理器118、批次管理器120、传输器122和输出数据管理器124。输出数据管理器124被配置为接收并管理来自目标设备134a-134k的输出数据以及其他数据,以用于管理AI模型106。输出数据管理器124包括被配置为更新AI模型106的权重108的权重更新器126、被配置为管理精度(例如,混合精度训练、精度转换等)格式的精度格式化器128、以及被配置为评估AI模型106并相应地管理AI模型106的执行的模型评估器132。在示例实施例中,AI模型管理器116可以包括比图1中所示的更少或更多的组件。在其他实施例中,AI模型管理器116的组件的功能可能重叠。
参数服务器102可以服务于一个或多个目标设备134a-134k。参数服务器102可以经由合适的接口(诸如,***组件互连(PCI)或PCI express(PCIe))和/或网络(例如,用于云计算或边缘计算)被通信地连接到目标设备134a-134k。在示例实施例中,参数服务器102和一个或多个目标设备134a-134k可以驻留在同一芯片上或者可以驻留在不同芯片或不同设备上。在示例实施例中,参数服务器102和目标设备134a-134k可以包括用于彼此通信的软件。例如,参数服务器102可以包括专门设计用于通信的驱动程序软件,诸如发送命令(例如,发起对目标设备134a-134k的函数调用)和接收响应。
目标设备134a-134k可以各自包括图1中针对目标设备134a所示的特征的实例。目标设备134a包括数据接口136、处理器140和存储器142。目标设备134a-134k可以各自包括多个处理器和不同类型的接口和存储器,即使图1中针对目标设备134a描绘了单个数据接口。在示例实施例中,目标设备134a-134k具有相同硬件规格,诸如相同存储器大小。在其他示例实施例中,目标设备134a-134k可以具有不同硬件规格。目标设备134a-134k可以被专门设计为以加速方式执行计算密集型操作。例如,目标设备可以包括高计算密度、固定功能处理器(例如,处理器140)、以及其他的通用能力。目标设备134a-134k可以由参数服务器102管理以运行特定计算。例如,参数服务器102可以执行主程序,该主程序准备用于在目标设备134a-134k处处理的输入数据,在目标设备134a-134k处调用并行例程(例如,核),并且在例程终止之后接收结果。参数服务器102还可以利用高级计算语言、计算平台或框架,该高级计算语言、计算平台或框架包括加速算法和数据结构的综合库,以使其更容易加速目标设备134a-134k上的计算。在示例实施例中,目标设备134a-134k可以被实现为GPU(例如,专用或通用GPU)、ASIC、FPGA或边缘设备(例如,驻留在网络连接的末端或边缘处的独立设备或微控制器并且可能具有较小存储器占用)。在实施例中,目标设备134a-134k可以是存储器受限设备,尽管不一定在所有情况下都是这样。例如,目标设备134a-134k单独地或在一个或多个组中可能受到存储器限制,使得它们由于存储器不足而无法高效地运行大型AI模型。出于说明的目的,图1的目标设备134a的特征被如下地描述,作为目标设备134a-134k中的每个目标设备的代表。
数据接口136可以被配置用于将目标设备134a与参数服务器102以及包括其他目标设备的其他设备对接。例如,数据接口136可以包括PCI、PCIe和/或HBM。处理器140被配置为执行由参数服务器102请求的操作以及专门针对目标设备134a的操作。存储器142被配置为存储数据和计算机程序逻辑,例如,存储器142包括加速器144,加速器144被配置为执行功能和/或加速某些操作,例如,如参数服务器102所指示的。加速器144包括被配置为下载数据(例如,模型和/或其数据,诸如权重、激活和数据集)的数据下载器146、被配置为存储或以其他方式管理下载数据的数据管理器148、被配置为执行AI模型或其部分(即,在AI模型或其部分上执行数据集)的层执行器150、以及被配置为例如通过保存、发送或恢复输出数据来管理根据模型执行生成的输出数据(例如,梯度和激活)的输出管理器152。在示例实施例中,加速器144可以包括比图1中所示的更少或更多的组件。在其他实施例中,加速器144的组件的功能性可以重叠。
结合图2如下地描述参数服务器102和目标设备134a的另外的操作方面,图2示出了根据示例实施例的提供在正向传递期间在存储器受限设备上运行AI模型的过程的流程图200。尽管参考图1的***100进行描述,但是图2的过程不限于该***。基于图2的流程图200和图1的***100的以下讨论,其他的结构和操作实施例对于相关领域技术人员而言将。
流程图200开始于步骤202。在步骤202,将人工智能(AI)模型的一部分从参数服务器下载到目标设备的存储器中,该参数服务器存储AI模型的主副本。例如,图1的目标设备134a、具体地是数据下载器146可以被配置为将AI模型106的一部分从参数服务器102下载到目标设备134a的存储器142中。在示例实施例中,一个或多个目标设备134a-134k可以形成一个组,该组被配置为运行AI模型的实例。例如,一个组可以包括目标设备134a,而另一组可以包括目标设备134b-134k。AI模型所需要的存储器具有不变要求和可变要求两者。例如,权重或参数的大小对于特定精度类型(例如,32位)可能是不变的,并且可变要求可能取决于目标设备批次大小。在示例实施例中,目标设备134a(或者,一组目标设备134a-134k)可以被配置为运行大型AI模型,并且目标设备134a的存储器(或者,该组目标设备134a-134k的组合存储器或全局存储器)可能比高效运行AI模型所需要的存储器小。高效运行AI表示AI模型以最小设备批次大小运行,从而实现速度的峰值效率(即,有效TLOP)。换言之,AI模型不会从更大设备批次大小受益(没有更有效的TFLOP)。例如,目标设备134a可以具有大小小于特定最佳批次大小的AI模型的整体大小的存储器。目标设备的最佳批次大小是以可能的最高吞吐量(例如,处理数据集的速率)实现所期望的准确度(例如,85%)的批次大小。最佳组批次大小是全局批次大小(例如,一组目标设备的批次大小)除以被通信地连接到参数服务器102的目标设备组的数目。
AI模型106可以包括任何类型的机器学习模型,该机器学习模型可以在很多领域具有多种应用,诸如自然语言处理、自主车辆、图像处理、深度学习机器人、自动机器翻译、自动手写生成。AI模型106可以具有任何类型的深度学习架构,例如深度神经网络、循环神经网络和卷积神经网络。
简单的神经网络可以包括若干层,一层用于接收输入信号,另一层用于发送输出信号。一个或多个隐藏层或处理层可以位于输入层与输出层之间。在被构建为生成一个或多个推理的DNN中,可能有很多隐藏层由人工神经元组成。这样的神经元可以包括激活函数、恒定输入、其他输入和输出。该神经元可以通过对输入的加权版本执行激活函数以产生输出。激活函数的输入根据其相应权重被加权。例如,输入可以包括归一化数据。激活函数可以被配置为基于所有输入来接受单个数字(例如,加权输入的线性组合)并执行固定操作,诸如sigmoid、tanh或整流线性单元选项。恒定输入可以是恒定值。
单个神经元本身可能不会完成太多工作,并且有用AI模型通常包括协同工作的大量神经元的组合计算工作。例如,DNN可以包括按层组装且以级联方式连接的多个神经元。这些层可以包括输入层、输出层和在其间的一些隐藏层。每一层神经元的输出可以根据一定权重被加权,然后作为下一层中的神经元的输入。可以采用本领域已知的其他互连策略。输入层的神经元可以被配置为接受与用户数据相对应的归一化或以其他方式特征工程化或处理后的数据。输入层或隐藏层的每个神经元的输出可以根据其对应输出边的权重被加权,然后作为输入在下一层的每个神经元处应用。输出层的(多个)输出包括DNN或AI模型的输出。在推理上下文中,这样的输出可以是(多个)推理或(多个)预测。构建这样的DNN只是生成有用机器学习或AI模型的开始。由这样的AI模型生成的推理的准确度需要对合适激活函数的选择,然后,整个模型的每个权重被调节以提供准确输出。调节这样的权重的过程被称为“训练”。训练DNN或其他类型的网络需要具有已知特性的一组训练数据。例如,如果DNN旨在预测动物的输入图像是猫的概率,则训练数据将包括很多不同的猫的图像,并且通常不仅包括猫的图像,还包括其他类似的动物的图像。训练需要根据本领域已知的归一化和/或特征提取技术对与每个图像相对应的图像数据进行预处理以产生针对DNN的输入特征,然后,这些特征作为输入被提供给网络,例如,作为输入层的神经元的输入。
此后,一层的每个神经元执行其相应激活操作,激活操作的输出被加权并在正向传递中被前馈到下一层,直到由输出层生成DNN的(多个)输出。DNN的(多个)输出可以与输出的已知或预期值进行比较,并且差异可以在通过DNN的反向传递中反向反馈,以根据本领域已知的反向传播算法来调节其中所包含的权重。通过包括更新后的权重的AI模型,图像特征可以再次被输入到模型且新的输出被生成。训练包括在训练数据集之上迭代AI模型并且在每次迭代时更新权重。一旦AI模型达到足够的准确度,或者其输出已收敛且权重变化几乎没有影响,则称该AI模型已被训练。然后,已训练模型可以用于评估任意输入数据,该输入数据的性质事先未知,该输入数据的模型之前也没有考虑过(例如,动物的新图片),并且输出所期望的推理(例如,图像是猫的图像的概率)。
梯度下降是一种经常在训练AI模型中使用的算法。梯度下降涉及一个目标函数(例如,损失函数或成本函数)(其中可能有很多),并且目标是最小化该函数。目标函数用于监测AI模型的预测中的误差。因此,通过最小化该函数,可以找到最低误差值,从而提高AI模型的准确度。随机梯度下降(SGD)是梯度下降算法的一种变体,其计算误差并更新训练数据集中每个样本的模型。SGD更新频繁,并且学***衡。迷你批次SGD需要针对学习算法配置附加“迷你批次大小”超参数。错误信息可以在迷你批次的训练示例中累积。迷你批次大小可以被配置为正在其上执行AI模型的计算架构的一方面,例如,适合目标设备或加速器硬件的存储器要求的2的幂,如32、64、128、256等。批次大小可以作为对学习过程的调节,其中较小值给出以训练过程中的噪声为代价而快速收敛的学习过程,而较大值给出以误差梯度的准确估计来缓慢收敛的学习过程。
返回参考图2的步骤202,AI模型106的下载部分可以包括AI模型106的任何部分。AI模型106可以被分解成层或复合层或复合小数层(例如,细分成1.5x层)。AI模型在层处被整齐地分割,因此可以对这些模型进行整体划分。在一个示例实施例中,下载部分可以包括AI模型106的一个或多个层。然而,在另一示例实施例中,取决于AI模型和其他因素,小数划分是可能的。可能需要小数划分的一个原因是,这样的小数部分可能适合在目标设备内部,而整个层可能不适合。这将支持一种实现,其中可以运行任何数目的层而不会出现存储器不足问题,而不是在特定数目的层之后遇到存储器不足错误。在示例实施例中,下载到目标设备134a的AI模型106的部分可以包括AI模型106的任何部分直至整个AI模型106。目标设备134a可以以各种方式下载AI模型106的部分。例如,目标设备134a可以在执行AI模型106的当前部分的同时将AI模型106的下一部分下载到一个或多个存储器缓冲器中。该方法可以使用稍多的存储器和特殊库,但是可以产生更高性能的AI模型106。在另一示例中,目标设备134a可以执行当前子部分,同步,然后下载下一子部分。该方法可能会慢一点,但是不需要缓冲。流程图200继续步骤204。
在步骤204,将数据集的微批次集合存储在目标设备的存储器中。例如,如图1中所示,可以经由数据下载器146从参数服务器102下载数据集114的微批次集合。然后,数据管理器148可以将微批次集合存储在目标设备134a的存储器142、缓冲器、或者任何其他已知存储器结构中。数据集114可以是用户输入数据,例如用于训练的训练数据集、用于测试目的的测试数据集、或者用于推理的任意输入数据。微批次集合包括多个微批次,该多个微批次被配置为在目标设备134a处按顺序执行。微批次集合形成迷你批次,该迷你批次包括每次更新的用于AI模型106的训练的若干样本或者在每个推理周期中提供的用于推理的若干样本。微批次集合中的每个微批次可以具有可以自动或手动配置的微批次大小。在实施例中,微批次大小可以基于多个微批次的执行速率以及目标设备134a与参数服务器102之间的通信速率来选择。例如,可以基于其硬件规格针对目标设备134a初始选择微批次大小,然后可以根据需要在迭代过程中调节微批次大小以充分隐藏通信延迟。在实施例中,最佳微批次大小可以是所需要的存储器与可以隐藏的通信开销的百分比之间的折衷。由于隐藏了更多通信开销,因此计算可能需要更多存储器。因此,微批次大小可能足够大以充分利用目标设备中的层的执行,但是又足够小以适合该目标设备的存储器。
流程图200继续步骤206,步骤206在AI模型的下载部分的第一子部分上执行微批次集合以生成激活。例如,可以由层执行器150在目标设备134a处在由数据下载器146下载的AI模型106的部分的第一子部分上执行微批次集合。在其中AI模型106的下载部分包括一个或多个层的示例实施例中,可以一次一层地在AI模型106的一个或多个下载层上执行微批次集合以生成激活。激活可以是作为中间结果的值,例如,每个微批次执行的输出。激活可以是反向传递中所需要的用于确定应如何调节AI模型106的权重108的内部数据。在针对AI模型106的子部分(例如,层)执行每个微批次之后,可以将激活保存在目标设备134a上,发送到参数服务器102以节省存储器,或者丢弃以节省存储器,然后重新计算。例如,如果AI模型106具有12层且每个迷你批次具有8个微批次,则激活可以在正向传递期间存储96次,并且在反向传递期间恢复96次。如果在正向传递期间未保存所有激活,则可以在反向传递期间重新计算激活。在示例实施例中,当目标设备134a正在执行不同微批次时,可以发生微批次的激活的存储(无论是在目标设备134a处还是在参数102处)。在示例实施例中,激活的恢复或激活的重新计算可以在子部分的执行之前发生或者在子部分的执行期间根据需要发生,例如,下一微批次的激活的恢复/重新计算可以与当前微批次的执行并行发生。
流程图200以步骤208结束。在步骤208中,将AI模型的下载部分的第二子部分的权重从参数服务器下载到目标设备的存储器中。例如,如果AI模型的下载部分包括多个层,则可以经由数据下载器146将第二层的权重下载到目标设备134a的存储器142中。在示例实施例中,下载下一层的权重可以在当前层正在被执行时发生。例如,目标设备134a可以被配置为同时地,使用第二子部分的下载权重在第二子部分上执行数据集的微批次集合,并且将AI模型106的下载部分的第三子部分的权重从参数服务器102下载到目标设备134a的存储器142中。例如,层执行器150可以使用已经针对该层下载的权重在一层上执行微批次集合,同时数据下载器146下载AI模型的下一层的权重106。备选地,目标设备134a可以被配置为串行地,使用第二子部分的下载权重在第二子部分上执行微批次集合,并且将AI模型106的下载部分的第三子部分的权重从参数服务器102下载到目标设备134a的存储器142中。例如,层执行器150可以使用已经针对该层下载的权重在一层上执行微批次集合,并且在该层的执行之后,数据下载器146可以下载AI模型106的下一层的权重。
因此,AI模型106的执行如上所述地在目标设备134a处一次一个子部分地继续,而AI模型106的其他子部分也可以在其他目标设备处执行。例如,在正向传递中,一组微批次或迷你批次在第一层执行,然后是第二层,以此类推,直到最后一层。
一旦AI模型106的正向传递完成,就可以执行反向传递。例如,图3示出了根据示例实施例的提供在反向传递期间在存储器受限设备上运行AI模型的过程的流程图300。尽管参考图1的***100进行描述,但是图3的过程不限于该***。基于图3的流程图300和图1的***100的以下讨论,其他的结构和操作实施例对于相关领域技术人员而言将是显而易见的。
流程图300开始于步骤302,在AI模型的下载部分的第三子部分上执行微批次集合以生成梯度。例如,微批次集合可以由层执行器150在AI模型106的下载部分的第三子部分上执行以生成第三子部分的梯度。如果AI模型106具有24层,则可以在第24层上执行微批次集合以生成该层的梯度以开始反向传递。
流程图300继续步骤304。在步骤304中,下载AI模型的下载部分的第四子部分的权重和激活。例如,可以由数据下载器146将来自AI模型106的下载部分的第四子部分的权重和激活从参数服务器102下载到目标设备134a。例如,如果AI模型106具有24层,则可以将来自层23的权重和激活从参数服务器102下载到目标设备134a。
在步骤306中,同时地,使用所下载的权重和输出激活在第四子部分上执行微批次集合,从参数服务器下载AI模型的下载部分的第五子部分的权重和输出激活,并且向参数发送第三子部分的梯度。例如,以并行方式同时地或基本上同时地,可以由层执行器150使用该子部分的下载权重和输出激活来在第四子部分上执行微批次集合,由数据下载器146从参数服务器102下载AI模型106的下载部分的第五子部分的权重和输出激活,以及由输出管理器152向参数服务器102发送AI模型106的第三子部分的梯度。在其中模型106具有24层的示例实施例中,目标设备134a可以被配置为并行或同时地执行多个步骤。在该实施例中,目标设备134a可以被配置为同时地,使用层23的所下载的权重和输出激活来执行层23,从参数102下载层22的权重和输出激活,以及向参数服务器102发送为层24而生成的梯度110。
目标设备134a被配置为继续流程图300的以上步骤,以便以相反顺序(即,第24层、第23层……和第1层)针对反向传递一次一个子部分(例如,层)地在AI模型106上以微批次完成执行整个数据集114。
如图2和图3中所描述的正向和反向传递可以如图4和图5中所描绘的那样可视化。例如,图4示出了根据示例实施例的表示通过具有24层的机器学习模型的正向传递的表400。表400针对目标设备,该目标设备可以被实现为图1的目标设备134a。表400具有三行,行410示出了微批次集合依次在AI模型的层中的每个层上的执行,其中的10个在此形成迷你批次。行412示出了目标设备的一组动作(例如,从参数服务器接收权重),并且行414示出了目标设备可以采取的另一组动作(例如,向参数服务器发送激活)。目标设备处的数据交换可以经由接口完成,诸如图4中所示的PCI。虽然AI模型具有24层,但表400中仅详细示出了第1层、第2层和第24层,因为AI模型在每一层上的执行是类似的。例如,表400的列402描绘了一组10个微批次在层1上的执行,10个微批次形成迷你批次。在该执行期间,目标设备接收第2层(要执行的下一层)的权重。由于每个微批次在第1层上执行,因此可以在存储器和/或其他资源允许的情况下保存该微批次的激活(例如,在目标设备或参数服务器处)。然后,如表400的列406中所示,在第2层上执行相同的一组10个微批次,同时接收第3层的权重并保存每个微批次的激活。该过程对AI模型的所有层继续进行,直到最后一层,即,层24,最后一层可以被称为“解码层”(DL)或“嵌入层”或“输出层”。当在最后一层(第24层)上执行微批次集合时,其权重和激活在目标设备处被确定并被发送到参数服务器,如表400的列408中所示。
图5示出了根据示例实施例的表示通过具有24层的机器学习模型的反向传递的表500。表500针对目标设备,该目标设备可以被实现为图1的目标设备134a。表500具有四行,行510示出了微批次集合依次在AI模型的层中的每个层上的执行,其中的16个在此形成迷你批次。行512示出了目标设备的一组动作(例如,从参数服务器加载权重和激活),行514示出了另一组动作(例如,向参数服务器发送梯度),行516示出了目标设备可以采取的另一组动作(例如,参数缩减)。目标设备处的数据交换可以经由接口完成,诸如图5所示的PCI。虽然AI模型具有24层,但是表500中仅详细示出了第24层、第23层、第22层和第1层,因为AI模型在每一层上的执行是类似的。例如,表500的列502描绘了一组16个微批次在层24上的执行,16个微批次形成迷你批次。在该执行期间,目标设备加载第23层(要在反向传递中执行的下一层)的权重和激活。然后,在列504中,使用所加载的权重和激活在第23层上执行该组16个微批次。并行或同时(或者,基本上同时)地,目标设备被配置为加载第22层(要执行的下一层)的权重和激活;向参数服务器发送最近执行的第24层的梯度;以及缩减AI模型的参数。在列506中,使用该层的所加载的权重和激活在第22层上执行相同的该组16个微批次。在第22层的执行期间,加载第21层的权重和激活,向参数服务器发送第23层的梯度,以及在目标设备处缩减参数。在列508中,为第1层执行相同的该组16个微批次。与该执行同时地,向参数服务器发送第2层的梯度,并且在目标设备处缩减参数。
通过在同一层之上运行很多微批次,有足够的时间来隐藏或覆盖准备下一层的延迟。因此,目标设备的总存储器复杂度可以是两层加一层的隐藏激活和一层的输出激活。
在上面例如结合图2-图5的描述中,目标设备用作在存储器受限设备上执行大型AI模型的支持组件。在下面结合图6-8的描述中,参数服务器可以用作在存储器受限设备上执行大型AI模型的支持组件。例如,图6示出了根据示例实施例的提供参数服务器处的用于在存储器受限设备上运行AI模型的过程的流程图600。尽管参考图1的***100进行描述,但是图6的过程不限于该***。基于图6的流程图600和图1的***100的以下讨论,其他的结构和操作实施例对于相关领域技术人员而言将是显而易见的。
流程图600开始于步骤602。在步骤602中,将人工智能模型的主副本存储在参数服务器处,参数服务器被通信地连接到目标设备。例如,如图1中所示,AI模型106的主副本可以由数据管理器118存储在参数服务器102的存储器104中。参数服务器102可以通过合适的方式(诸如,PCI和PCIe接口或其他网络接口)与目标设备134a-134k通信。在示例实施例中,参数服务器102存储AI模型106的完整副本,而目标设备134a-134k可以存储AI模型106的一部分而不是AI模型106的整个副本。
在步骤604中,确定适合于目标设备的微批次大小。例如,如图1中所示,目标设备134a可以是存储器受限设备,该存储器受限设备的存储器大小小于存储在参数服务器102处的用于特定最佳批次大小的AI模型106的整体。批次管理器120被配置为例如通过考虑目标设备134a的存储器大小和/或其他硬件规范来确定适合目标设备134a的微批次大小。在一个实施例中,批次管理器120配置微批次大小以进行负载平衡,使得执行时间与通信时间的比率被最大化。例如,微批次大小可以取决于目标设备(C)的计算时间、要传输的子部分(S)的大小、以及目标设备和参数服务器***的通信带宽(B)。在该示例中,微批次大小可以被确定为Minimum_numMicroBatches=S/B/C。这个等式可以是静态的,但是在某些情况下(例如,神经架构搜索),微批次大小可以被动态确定。从而,在可以操纵执行时间和通信时间的比率时,使得参数服务器有更多时间来执行复杂的数据并行性或后台任务。在示例实施例中,微批次大小可以在训练或推理过程中的某些时间或边界点动态地配置。例如,微批次大小可以在迭代结束时动态配置,但是对于正向传递和反向传递中的迷你批次迭代必须恒定。
返回图6,流程图600在步骤606结束。在步骤606中,向目标设备传输AI模型的一部分。例如,传输器122可以从参数服务器102向目标设备134a传输AI模型106的一部分。AI模型106可以以任何数目的方式划分为不同部分。例如,该部分可以是AI模型106的层、层的组合或小数层的组合。可以基于目标设备134a上可用的存储器来确定部分大小,使得该部分具有目标设备134a的最佳大小。例如,AI模型管理器116可以在确定要发送到目标设备134a的部分的大小时考虑目标设备134a的硬件规格。传输器122可以在目标设备134a正在执行另一部分的同时向目标设备134a传输AI模型106的一部分,从而要求目标设备134a缓冲该部分。备选地,传输器122可以在目标设备134a完成当前部分之后向目标设备134a传输AI模型106的一部分以避免需要缓冲该部分。在该备选示例中,目标设备134a可以在接收该部分之前在当前部分的执行之后执行同步。
参数服务器102或具体地AI模型管理器116可以执行另外的步骤以提高存储器受限设备上AI模型的分布式训练和推理的吞吐量。例如,图7示出了根据示例实施例的提供参数服务器处的用于在正向传递期间生成激活的过程的流程图700。尽管参考图1的***100进行描述,但是图7的过程不限于该***。基于图7的流程图700和图1的***100的以下讨论,其他的结构和操作实施例对于相关领域技术人员而言将是显而易见的。
图7开始于步骤702,其中在每个微批次被执行之后从目标设备接收激活。例如,在每个目标设备执行微批次之后,输出数据管理器124可以从目标设备134a-134k接收激活。例如,激活可以包括隐藏激活、或执行微批次的中间结果、或者在目标设备134a处执行微批次的输出。在示例实施例中,在每个微批次之后从目标设备134a接收激活。在该实施例中,在每个微批次之后保存和/或存储激活可以提供执行AI模型106的最佳效率。因此,当目标设备134a正在执行包括多个微批次的迷你批次时,多个微批次中的每个微批次的激活可以在多个微批次中的每个微批次执行之后保存。在另一示例实施例中,激活保存在目标设备134a处。在又一示例实施例中,并非所有激活都保存在正向传递中,仅保存在反向传递中重新计算激活所需要的数据。这样的数据可以包括特定子部分的AI模型的输入状态,例如,因为输入状态可能比输出状态需要更少存储器空间。因此,目标设备134a的存储器空间可以通过在正向传递期间不保存所有激活来节省。
流程图700以步骤704结束,其中基于所接收的激活针对AI模型的下载部分的子部分生成输出激活。例如,权重更新器126可以基于从目标设备134a-134k接收的激活针对AI模型106的下载部分的子部分生成输出激活。在示例实施例中,所生成的输出激活可以作为激活112保存在参数服务器102的存储器104中。在其中子部分包括层的示例中,该层的输出激活可以由权重更新器126根据隐藏激活来生成,该隐藏激活是在目标设备134a-134k处执行每个微批次之后接收的。
参数服务器102可以执行附加步骤以提高存储器受限设备上AI模型的分布式训练和推理的吞吐量。例如,图8示出了根据示例实施例的提供参数服务器处的用于更新AI模型的过程的流程图800。尽管参考图1的***100进行描述,但是图8的过程不限于该***。基于图8的流程图800和图1的***100的以下讨论,其他的结构和操作实施例对于相关领域技术人员而言将是显而易见的。
流程图800开始于步骤802,其中从目标设备接收梯度。例如,图1的输出数据管理器124可以从目标设备134a-134k接收梯度。梯度是通过AI模型反向传播预测误差而计算的调节。因此,梯度是表示模型权重所在位置与权重应所在位置之间的差异的值。梯度可以放置在数据结构中,诸如矩阵。在示例实施例中,梯度可以在每个微批次的执行之后接收,并且输出数据管理器124和/或权重更新器126被配置为累积接收梯度,直到已执行特定数目的微批次,然后使用所接收的梯度来执行另外的计算和/或更新AI模型106。在另一示例实施例中,可以在目标设备134a-134k处针对每个微批次累积梯度,然后在每个微批次完成之后向参数服务器102发送梯度。
在步骤804中,基于所接收的梯度来更新AI模型的权重。例如,图1的权重更新器126可以使用从目标设备134a-134k接收的梯度来更新AI模型106的权重108。在利用处理后的梯度来更新AI模型106之前,可以进一步处理(例如,求平均)接收梯度。在示例实施例中,输出数据管理器124在每个微批次之后接收梯度并在权重更新器126通过更新权重108更新AI模型106之前累积迷你批次上的梯度。在另一实施例中,输出数据管理器124在每个微批次之后接收梯度并此时权重更新器126更新AI模型106。例如,对于图像分析模型,可以将迷你批次的大小设置为512个图像,因此,在512个图像的执行之后,迷你批次的梯度可以被提供给参数服务器以更新模型。然而,如果目标设备各自只能容纳16个图像的微批次,则在目标设备处执行每个微批次之后梯度可以累积,并且只有在32个微批次之后才会将梯度应用于模型。因此,微批次方法在数学上等同于迷你批次方法。也就是说,在一个迷你批次中执行512个图像,然后将该迷你批次的梯度应用于模型在数学上与在微批次中执行16个图像相同,以累积每个微批次的梯度,直到在32个微批次或一个迷你批次中执行了512个图像,然后将所累积的梯度应用于模型。
B.人工智能模型的分布式训练中的数据并行性
当在大规模环境中训练分布式深度学习模型时,深度学习中的一个挑战是目标设备之间的通信。例如,在所有目标设备上交换梯度的延迟(例如,在没有参数服务器的实现中)是一个耗时的过程。通常,在同步数据并行分布式深度学习中,主要计算步骤包括在GPU上使用迷你批次计算梯度,通过GPU间通信计算梯度的均值,然后更新模型。为了计算梯度的均值,可以使用通信操作(例如,AllReduce)将所有GPU中的目标数组缩减为单个数组,并且将单个数组返回给所有GPU。即使在其中使用参数服务器的方案中,也可能需要GPU以高速缓存AI模型的所有层。
在示例实施例中,一次在AI模型的一个子部分上以微批次方式执行数据集提供了一些优势,特别是对于以数据并行方式分布式训练这种AI模型。例如,该技术使得一个或多个参数服务器能够在缩减目标设备中发生的参数的同时缩减(例如,优化、平均和更新)AI模型的所有参数。因此,参数缩减可以同时发生在不同级(例如,目标设备级和参数服务器级)。该技术的好处是大规模数据并行性中的零或接近零的通信开销。
例如,图9示出了根据示例实施例的***900中多级并行的参数缩减的示图。***900包括参数服务器902和目标设备906a-906n,该***可以被实现为具有参数服务器102和目标设备134a-134k的***100。如图9中所示,虽然目标设备906a-906n正在目标设备级908执行AI模型的特定子部分(例如,当前层)的参数缩减,但是参数服务器902也可以针对AI模型的另一子部分(例如,前一层)在参数服务器级904执行AI模型的其参数缩减。因此,参数服务器902可以负责缩减参数,例如对梯度求平均和/或以其他方式对其进行优化,然后与目标设备处的计算并行地在目标设备外部执行AI模型的后续权重更新,从而加快整体计算。可以向***900添加更多参数服务器,并且这种多级并行的参数缩减技术随着参数服务器的添加而很好地扩展以减少甚至在商品联网速度下的通信开销。例如,参数服务器可以与执行目标设备级的参数缩减的目标设备并行地执行参数服务器级的参数缩减。
图10示出了根据示例实施例的***中的多级并行的参数缩减的时序图1000。例如,图1000描绘了在***(诸如,图9所示的***900)中执行的AI模型的多级并行的参数缩减。图1000示出了具有不同时间段1014、10416和1018的时间轴1004。在每个时间段期间,可以并行执行与在目标设备(例如,图9的目标设备906a-906n)和参数服务器(例如,图9的参数服务器902)处执行的AI模型的训练相关的任务1002以提高计算速度。
例如,在第一时间段1014期间,目标设备可以执行任务1008,任务1008是当前层N的计算,同时,还执行任务1010,任务1010是前一层N+1的目标设备之间的全缩减操作。向参数服务器发送前一层N+1的全缩减操作的结果1024。此外,在第一时间段1014期间,参数服务器执行任务1006和任务1012,任务1006是下一层N-1的准备,任务1012是再前一层N+2的参数缩减。下一层N-1的准备包括向目标设备发送必要的数据1020(例如,AI模型的权重和激活)。
在第二时间段1016期间,目标设备可以基于所接收的数据1020来执行任务1008,任务1008是层N-1的计算,同时还执行任务1010,任务1010是层N的目标设备之间的全缩减操作。向参数服务器发送层N的全缩减操作的结果1026。此外,在第二时间段1014期间,参数服务器执行任务1006和任务1012,任务1006是层N-2的准备,任务1012是层N+1的参数缩减。层N-2的准备包括向目标设备发送必要的数据1022。
在第二时间段1016期间,目标设备可以基于所接收的数据1020来执行任务1008,任务1008是层N-1的计算,同时还执行任务1010,任务1010是层N的目标设备之间的全缩减操作。向参数服务器发送层N的全缩减操作的结果1026。此外,在第二时间段1016期间,参数服务器执行任务1006和任务1012,任务1006是层N-2的准备,任务1012是层N+1的参数缩减。层N-2的准备包括向目标设备发送必要的数据1022。
在参数服务器和目标设备处以类似方式针对每个时间段继续多级缩减过程,直到AI模型的训练完成。例如,在第三时间段1018期间,目标设备可以基于所接收的数据1022来执行任务1008,任务1008是层N-2的计算,同时还执行任务1010,任务1010是层N-1的目标设备之间的全缩减操作。此外,在第三时间段1018期间,参数服务器执行任务1006和任务1012,任务1006是层N-3的准备,任务1012是层N的参数缩减。
可以以各种方式实现多级并行的参数缩减过程。例如,图11-图13示出了该过程用于AI模型的分布式训练。更具体地,图11示出了根据示例实施例的提供***中的并行的参数缩减的过程的流程图1100。例如,并行的参数缩减可以由图9所示的***900的参数服务器902和目标设备906a-906n和/或图1所示的***100的参数服务器102和目标设备134a-134k执行。
流程图1100开始于步骤1102,其中存储AI模型的主副本。例如,如图1中所示,在AI模型106例如使用数据集114被训练时,可以由数据管理器118将AI模型106的主副本连同其相关联的权重108、激活112和梯度110一起存储在参数服务器102处。
在步骤1104中,向目标设备传输AI模型的一部分。例如,如图1中所示,传输器122将AI模型106的一部分从参数服务器102传输给目标设备134a,目标设备134a可以是存储器受限设备。因此,在示例实施例中,目标设备134a可能没有足够的存储器能够来高效地执行AI模型106。在另一示例实施例中,目标设备134a可能具有足够大的存储器来存储整个AI模型106,但是根据执行需要仅下载和存储AI模型106的一部分而不是存储AI模型106的整个实例可能更高效。
在步骤1106中,确定适合于目标设备的微批次大小。如上面参考图2和图6所描述的,基于目标设备134a与参数服务器102之间的通信速率在AI模型106的训练期间的离散点处,可以由批次管理器120自动或手动配置微批次大小。在一个实施例中,批次管理器116最初可以基于目标设备134a的硬件规格来选择微批次大小,然后迭代地将其调节为最佳微批次大小,例如,基于目标设备134a的计算时间、要传输的AI模型106的子部分的大小、和/或***100的通信带宽。
流程图1100以步骤1108结束。在步骤1108中,同时地,在目标设备处在AI模型的传输部分的第一子部分上执行训练数据集的微批次集合以生成梯度,针对AI模型的传输部分的第二子部分执行参数缩减,并且向目标设备发送AI模型的传输部分的第三子部分的权重。例如,当目标设备134a在AI模型106的第一子部分(例如,当前层)上执行数据集114的微批次集合时,权重更新器126可以针对AI模型106的第二子部分(例如,再前一层)执行参数缩减,并且同时(或者,基本上同时)地,传输器112可以向目标设备134a发送AI模型106的第三子部分(例如,下一层)的权重。例如,参数服务器102可以根据图10中所示的图1000来执行这些任务。
在示例实施例中,权重更新器126被配置为利用从目标设备134a接收的梯度来执行参数缩减,该梯度由目标设备134a在目标设备134a处在AI模型106的第二子部分(例如,前前一层)上执行数据集114的微批次集合来生成。权重更新器126还被配置为通过本领域已知的任何方式生成接收梯度的平均值。例如,权重更新器126可以通过使用AI框架中所提供的操作和库来生成接收梯度的平均值。权重更新器126还可以对接收梯度执行其他操作和/或以其他方式对其进行优化。权重更新器126还被配置为通过更新权重108来利用接收梯度的平均值更新AI模型106。
在示例实施例中,目标设备134a-134k被配置为以类似于参数服务器102的方式针对由目标设备134a-134k生成的梯度执行参数缩减。例如,输出管理器154可以生成由目标设备134a生成的梯度的平均值。输出管理器154还可以对梯度执行其他操作和/或以其他方式对其进行优化。
除了执行流程图1100中描绘的上述过程以外,参数服务器102可以执行附加过程。AI模型的训练需要计算和存储器资源,并且对于更大AI模型,需要更多计算和存储器资源。深度学习***可以使用单精度(即,32位)格式(这是一种常见的浮点格式)、双精度(即,64位)格式、或半精度(即,16位)格式用于计算工作量,例如,诸如权重、激活和梯度等数据的存储和更新。混合精度方法在一个计算工作负载中组合不同数值格式的使用。通过使用混合精度训练,可以降低存储器带宽要求,因为可以使用更少的位来存储相同数目的值。处理器上的计算时间也可以得到改善,该处理器可以为降低精度的数学提供更高吞吐量。此外,某些设备和AI框架可以包括对混合精度方法的自动支持。例如,图12示出了根据示例实施例的提供AI模型的混合精度训练的过程的流程图1200。基于图12的流程图1200和图1的***100的以下讨论,其他的结构和操作实施例对于相关领域技术人员而言将是显而易见的。
流程图1200开始于步骤1202,其中在向目标设备发送权重之前,将AI模型的传输部分的第四子部分的权重转换为第一精度格式。例如,如图1中所示,在传输器122将转换后的权重发送给目标设备134a之前,精度格式化器128可以将AI模型106的权重108转换为第一精度(例如,半精度)格式。例如,使用较低精度的格式,计算时间可以更少。在示例实施例中,可以根据需要使用任何精度格式来优化AI模型106的性能。
在步骤1204中,将从目标设备接收的梯度转换为第二精度格式。例如,如图1中所示,精度格式化器128被配置为将从目标设备134a接收的梯度转换为第二精度(例如,单精度)格式。在示例实施例中,梯度到第二精度格式的转换可以在对接收梯度的某些操作(例如,求和、求平均等)之前或之后执行。在其他实施例中,接收梯度可以在作为梯度110存储在存储器104中之前简单地转换为第二精度格式。
在步骤1206中,使用转换后的梯度来更新权重。例如,如图1中所示,AI模型106的权重108可以由权重更新器126利用转换后的梯度进行更新。
在实施例中,可以用比所示步骤更少或更多的步骤或不同的步骤执行流程图1200。例如,可以以不同精度利用不同混合精度方法。例如,对于AI模型106的子部分(例如,层)的训练迭代,权重108可以转换为半精度格式以用于正向传递,并且所生成的激活也可以保持在半精度格式。在反向传递中,权重108可以与所生成的梯度一起保持在半精度格式。一旦计算了平均梯度,就可以在更新AI模型106的权重108之前将平均梯度转换为单精度格式。出于多种原因,可以利用***100实现很多其他操作实施例。例如,权重更新(例如,权重梯度乘以学习率)可能变得太小而无法以半精度表示以维持模型准确度。单精度或双精度格式可能会导致用于训练模型的计算时间和/或资源更多。
参数服务器102可以执行另外的过程以管理目标设备134a-134k。例如,图13示出了根据示例实施例的提供使用多个目标设备训练AI模型的过程的流程图1300。基于图13的流程图1300和图1的***100的以下讨论,其他的结构和操作实施例对于相关领域技术人员而言将是显而易见的。
流程图1300开始于步骤1302,其中向另一目标设备传输AI模型的另一部分。例如,传输器122可以向另一目标设备(诸如,图9中所示的目标设备906n)传输AI模型106的另一部分。在示例实施例中,可以使用多个目标设备来加速AI模型的训练时间。***900可以包括任何数目的目标设备,从一个到多个,每个目标设备经由一个或多个合适接口(例如,PCI或PCIe)被通信地连接到参数服务器902。
在步骤1304中,从另一目标设备接收梯度以针对AI模型的另一部分执行参数缩减。继续步骤1302的示例,目标设备906n可以发送梯度以供参数服务器902处的输出数据管理器124接收以用于目标设备906n在其上接收和执行的AI模型106的部分。
C.人工智能建模的动态多层执行
上面的执行范式(即,一次在AI模型的一个子部分上以微批次执行数据集)的另一显著优势是,它只需要静态定义子部分或其一部分(例如,层或子层),而不是如常规所要求的整个模型计算图。因此,可以基于任何数目的因素来动态修改AI模型内的层数,例如,基于性能、备选数据集或其他统计观察。
基于神经架构搜索(NAS)及其概率对应物的新型模型正在出现,并且动态执行的无摩擦方法提供了改进的建模技术,目前开发该技术非常具有挑战性。NAS是一种基于一组定义的构建块来搜索最佳神经网络架构的技术或算法,该构建块可以用于要构建的神经网络。这些构建块可以被采样并被拼凑在一起以构建类似于本领域中其他已知网络的网络,但是可以包括构建块的不同组合和配置。可以训练并测试NAS构建的网络,并且基于测试结果,可以调节构建块。可以通过诸如添加层、移除层或以其他方式改变层等操作来改进NAS构建的网络。
因此,允许基于任何数目的因素来动态修改AI模型内的层数的技术在NAS和其他应用领域中是非常有益的。例如,图14示出了根据示例实施例的提供用于AI建模的动态执行的过程的流程图1400。尽管参考图1的***100进行描述,但是图14的方法不限于该***。基于关于图1的***100的以下讨论,其他的结构和操作实施例对于相关领域技术人员将是显而易见的。流程图1400可以包括上面已经参考例如图1、图2和图6所描述的步骤,因此为简洁起见,下面不再对其进行详细地描述。
流程图1400开始于步骤1402,其中在参数服务器中存储AI模型的主副本。例如,如图1中所示,数据管理器被配置为将AI模型106的主副本存储在参数服务器102的存储器104中。
在步骤1404中,确定适合于目标设备的微批次大小。例如,批次管理器120可以被配置为确定适合于目标设备134a的微批次大小。在示例实施例中,目标设备134a可以是存储器受限设备,使得目标设备134a的存储器可能不足以高效地执行AI模型106。在备选实施例中,目标设备134a可能能够整体容纳AI模型106。然而,在该实施例中,在给定时间仅下载和存储AI模型106的一部分而不是AI模型106的整个实例可能更高效或更可取。
在步骤1406中,向目标设备传输AI模型的一部分。例如,传输器122可以被配置为向目标设备120b传输AI模型106的一部分。
在步骤1408中,可以接收来自目标设备的输出数据,输出数据是通过在目标设备处在AI模型的传输部分的子部分上执行数据集的微批次集合来生成的。例如,输出数据管理器124可以被配置为从图1的目标设备134a接收输出。输出数据可以通过在目标设备134a处在AI模型106的传输部分(例如,层或子层)的子部分(例如,层或子层)上执行数据集(例如,数据集114)的微批次集合来生成。输出数据可以是例如分别在正向传递和反向传递上生成的用于推理或用于AI模型106的训练的激活和梯度。在示例实施例中,目标设备134a可以发送信号而不是输出数据,该信号指示微批次集合已在目标设备134a处执行。参数服务器102然后可以被配置为基于该信号而不是基于输出数据来进行动作(例如,执行后续步骤)。
流程图1400以步骤1410结束。在步骤1410中,基于一个或多个度量来评估AI模型以确定是否需要对AI模型的执行的任何改变。例如,模型评估器130可以被配置为基于一个或多个度量来评估AI模型106以确定是否需要对AI模型106的执行的任何改变,例如,动态地增加或减少要执行的层的数目。
一个或多个度量可以基于任何数目的因素,诸如当前性能、备选数据集或其他统计观察。在示例实施例中,一个或多个度量包括AI模型106的传输部分的子部分(例如,层或子层)的梯度和权重的精度统计。例如,图15示出了根据示例实施例的提供确定用于AI建模的动态执行的计算精度的过程的流程图。尽管参考图1的***100进行描述,但是图15的方法不限于该***。基于关于图1的***100的以下讨论,其他的结构和操作实施例对于相关领域技术人员而言将是清楚明白。
流程图1500包括步骤1502。在步骤1502中,确定要应用于执行下一微批次集合的计算精度。例如,精度格式化器128可以被配置为确定要应用于执行下一微批次集合的计算精度。计算精度可以是梯度和权重的定点表示(例如,16位、32位、64位)。例如,为了提高能量效率或数据的位存储或任何其他原因,精度格式化器128可以被配置为确定合适精度以应用于下一微批次集合在目标设备134a处的执行。在示例实施例中,精度格式化器128可以被配置为检测消失梯度并相应地调节计算精度,而不需要实现任何特定方法。
在另一实施例中,一个或多个度量包括AI模型的准确度测量。例如,图16示出了提供基于AI模型的准确度来确定是停止还是继续AI模型的执行的过程的流程图1600。尽管参考图1的***100进行描述,但是图16的方法不限于该***。基于关于图1的***100的以下讨论,其他的结构和操作实施例对于相关领域技术人员而言将是显而易见的。
流程图1600包括步骤1602。在步骤1602中,当AI模型的准确度超过预定阈值时停止AI模型的执行,或者当AI模型的准确度不超过预定阈值时继续AI模型的执行。例如,图1的模型存取器130被配置为基于AI模型的准确度来确定是停止还是继续执行AI模型。即,模型存取器130可以在AI模型的准确度超过预定阈值时停止AI模型的执行,或者可以在AI模型的准确度未超过预定阈值时继续AI模型的执行。例如,AI模型106的准确度测量可以是分类准确度,该分类准确度是正确预测的数目与输入样本总数的比率。在示例实施例中,当AI模型106的准确度测量超过预定阈值时,可以暂停AI模型106的执行,该预定阈值可以是任何预定义值,诸如95%。根据该示例实施例,当AI模型106的准确度测量没有超过95%的预定阈值时,例如,当准确度为80%时,可以继续AI模型106的执行。在示例实施例中,例如,可以针对一些层数或直到AI模型106的下一次评估动态地确定AI模型106的继续执行。在示例实施例中,AI模型106可以一次由一个子部分(例如,层或子层)执行,并且AI模型106可以在每个子部分被执行之后进行评估。
其他度量可以用于评估AI模型106,例如,对数损失、从混淆矩阵中导出的度量、曲线下面积、Fl得分、平均绝对误差、均方误差。当使用其他度量时,可以确定每个度量的适当阈值并将其应用于AI模型106的评估。诸如正在使用的新数据集等其他因素可以导致AI模型106被评估和/或其执行改变。
在流程图200、300、600-800和1100-1600的前述讨论中,应理解的是,有时,这些步骤可以不同的顺序或甚至与其他步骤同时执行。相关领域技术人员将很清楚其他操作实施例。还引导注意,***100和900的操作的前述一般描述仅用于说明,并且***100和900的实施例可以包括不同硬件和/或软件,并且可以以与上述不同的方式操作。
III.示例计算机***实现
参数服务器102、目标设备134a-134k、参数服务器904和目标设备906a-906n以及流程图200、300、600-800和/或1100-1600中的每一个可以以硬件或者与软件和/或固件组合的硬件实现。例如,参数服务器102、目标设备134a-134k、参数服务器904和目标设备906a-906n以及流程图200、300、600-800和/或1100-1600可以被实现为计算机程序代码/指令,该计算机程序代码/指令被配置为在一个或多个处理器中执行并存储在计算机可读存储介质中。备选地,参数服务器102、目标设备134a-134k、参数服务器904和目标设备906a-906n以及流程图200、300、600-800和/或1100-1600可以被实现为硬件逻辑/电路***。
例如,在一个实施例中,参数服务器102、目标设备134a-134k、参数服务器904和目标设备906a-906n以及流程图200、300、600-800和/或1100-1600中的一个或多个可以以任何组合在SoC中一起实现。SoC可以包括集成电路芯片,该集成电路芯片包括以下一项或多项:处理器(例如,中央处理单元(CPU)、微控制器、微处理器、数字信号处理器(DSP)等)、存储器、一个或多个通信接口、和/或其他电路,并且可以可选地执行所接收的程序代码和/或包括嵌入式固件以执行功能。
图17描绘了可以在其中实现实施例的计算设备1700的示例性实现。例如,参数服务器102、目标设备134a-134k、参数服务器904和目标设备906a-906n可以各自在类似于固定或移动计算机实施例中的计算设备1700的一个或多个计算设备中实现,包括计算设备1700的一个或多个特征和/或备选特征。本文中所提供的计算设备1700的描述是出于说明性的目的而提供的,而不旨在进行限制。实施例可以在其他类型的计算机***中实现,如相关领域的技术人员已知的。
如图17中所示,计算设备1700包括一个或多个处理器(被称为处理器电路1702)、***存储器1704、以及将包括***存储器1704在内的各种***组件耦接到处理器电路1702的总线1706。处理器电路1702是作为中央处理单元(CPU)、微控制器、微处理器和/或其他物理硬件处理器电路在一个或多个物理硬件电路设备元件和/或集成电路设备(半导体材料芯片或管芯)中实现的电气和/或光学电路。处理器电路1702可以执行存储在计算机可读介质中的程序代码,诸如操作***1730、应用程序1732、其他程序1734等的程序代码。总线1706表示若干类型的总线结构中的一种或多种,包括存储器总线或存储器控制器、***总线、加速图形端口、以及使用各种总线架构中的任一总线架构的处理器或本地总线。***存储器1704包括只读存储器(ROM)1708和随机存取存储器(RAM)1710。基本输入/输出***1712(BIOS)存储在ROM 1708中。
计算设备1700还具有以下驱动器中的一个或多个驱动器:用于从硬盘读取和向其写入的硬盘驱动器1714、用于从可移动磁盘1718读取或向其写入的磁盘驱动器1716、以及用于从诸如CD ROM、DVD ROM或其他光学介质等可移动光盘1722读取或向其写入的光盘驱动器1720。硬盘驱动器1714、磁盘驱动器1716和光盘驱动器1720分别通过硬盘驱动器接口1724、磁盘驱动器接口1726和光盘驱动器接口1728连接到总线1706。驱动器及其相关联的计算机可读介质为计算机提供计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。尽管描述了硬盘、可移动磁盘和可移动光盘,但是可以使用其他类型的基于硬件的计算机可读存储介质来存储数据,诸如闪存卡、数字视频磁盘、RAM、ROM和其他硬件存储介质。
多个程序模块可以存储在硬盘、磁盘、光盘、ROM或RAM上。这些程序包括操作***1730、一个或多个应用程序1732、其他程序1734和程序数据1736。应用程序1732或其他程序1734可以包括例如用于实现参数服务器102、目标设备134a-134k、参数服务器904和目标设备906a-906n、以及流程图200、300、600-800和/或1100-1600(包括流程图200、300、600和/或1100-1600的任何合适的步骤)、和/或本文中所描述的其他实施例的计算机程序逻辑(例如,计算机程序代码或指令)。
用户可以通过诸如键盘1738和定点设备1740等输入设备将命令和信息输入到计算设备1700中。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏手柄、卫星天线、扫描仪、触摸屏和/或触摸板、接收语音输入的语音识别***、接收手势输入的手势识别***等。这些和其他输入设备通常通过串行端口接口1742连接到处理器电路1702,串行端口接口1742耦接到总线1706,但也可以通过其他接口连接,诸如并行端口、游戏端口或通用串行总线(USB)。
显示屏1744还经由接口(诸如,视频适配器1746)连接到总线1706。显示屏1744可以在计算设备1700外部,或者并入计算设备1700中。显示屏1744可以显示信息、以及用于接收用户命令和/或其他信息(例如,通过触摸、手指手势、虚拟键盘等)的用户界面。除了显示屏1744之外,计算设备1700可以包括其他***输出设备(未示出),诸如扬声器和打印机。
计算设备1700通过适配器或网络接口1750、调制解调器1752或用于在网络上建立通信的其他装置连接到网络1748(例如,互联网)。调制解调器1752(可以是内部的或外部的)可以经由串行端口接口1742连接到总线1706,如图17中所示,或者可以使用另一种接口类型(包括并行接口)连接到总线1706。
如本文中使用的,术语“计算机程序介质”、“计算机可读介质”和“计算机可读存储介质”用于指代物理硬件介质,诸如与硬盘驱动器1714相关联的硬盘、可移动磁盘1718、可移动光盘1722、其他物理硬件介质,诸如RAM、ROM、闪存卡、数字视频磁盘、zip磁盘、MEM、基于纳米技术的存储设备、以及其他类型的物理/有形硬件存储介质。这种计算机可读存储介质与通信介质(不包括通信介质)不同且不重叠。通信介质在诸如载波的调制数据信号中包含计算机可读指令、数据结构、程序模块或其他数据。术语“调制数据信号”是指一种信号,其特性中的一个或多个特性以对信号中的信息进行编码的方式被设置或改变。作为示例而非限制,通信介质包括诸如声学、RF、红外线和其他无线介质等无线介质、以及有线介质。实施例还涉及与涉及计算机可读存储介质的实施例分开且不重叠的这种通信介质。
如上所述,计算机程序和模块(包括应用程序1732和其他程序1734)可以存储在硬盘、磁盘、光盘、ROM、RAM或其他硬件存储介质上。这种计算机程序也可以经由网络接口1750、串行端口接口1742或任何其他接口类型来接收。这样的计算机程序在由应用执行或加载时使得计算设备1700能够实现本文中所描述的实施例的特征。因此,这样的计算机程序代表计算设备1700的控制器。
实施例还涉及包括存储在任何计算机可读介质上的计算机代码或指令的计算机程序产品。这样的计算机程序产品包括硬盘驱动器、光盘驱动器、存储设备包、便携式存储棒、存储卡和其他类型的物理存储硬件。
IV.附加示例实施例
本文中描述了一种***。在一个实施例中,***包括:参数服务器,通信地连接到目标设备,该参数服务器包括:数据管理器,被配置为存储人工智能(AI)模型的主副本;批次管理器,被配置为确定适合于目标设备的微批次大小;传输器,被配置为向目标设备传输AI模型的一部分;输出数据管理器,被配置为从目标设备接收输出数据,该输出数据是通过在目标设备处在AI模型的传输部分的子部分上执行数据集的微批次集合而生成的;以及模型评估器,被配置为基于一个或多个度量来评估AI模型以确定是否需要对AI模型执行的任何变化。
在前述***的实施例中,微批次集合的执行用于推理或用于训练AI模型。
在前述***的另一实施例中,微批次集合包括多个微批次,该多个微批次被配置为按顺序执行,微批次集合形成迷你批次,该迷你批次包括每次更新的用于训练的若干样本或者每个推理周期中提供的用于推理的若干样本。
在前述***的又一实施例中,一个或多个度量包括AI模型的传输部分的子部分的梯度和权重的精度统计。
在前述***的另一实施例中,参数服务器还包括精度格式化器,精度格式化器被配置为确定要应用于执行下一微批次集合的计算精度。
在前述***的附加实施例中,一个或多个度量包括AI模型的准确度测量。
在前述***的另一实施例中,参数服务器还包括模型评估器,该模型评估器被配置为:当AI模型的准确度测量超过预定阈值时,停止AI模型的执行;或者当AI模型的准确度测量未超过预定阈值时,继续AI模型的执行。
本文中描述了一种在参数服务器中实现的方法。该方法包括:将人工智能(AI)模型的主副本存储在参数服务器中;确定适合于目标设备的微批次大小;向目标设备传输AI模型的一部分;从目标设备接收输出数据,该输出数据是通过在目标设备处在AI模型的传输部分的子部分上执行数据集的微批次集合而生成的;以及基于一个或多个度量来评估AI模型以确定是否需要对AI模型执行的任何变化。
在前述方法的一个实施例中,微批次集合包括多个微批次,该多个微批次被配置为按顺序,微批次集合迷你批次,该迷你批次形成包括每次更新的用于训练的若干样本或者每个推理周期中提供的用于推理的若干样本。
在前述方法的另一实施例中,一个或多个度量包括AI模型的传输部分的子部分的梯度和权重的精度统计。
前述方法的一个实施例还包括确定要应用于执行下一微批次集合的计算精度。
在前述方法的另一实施例中,一个或多个度量包括AI模型的准确度测量。
在前述方法的另一实施例中,微批次大小是基于微批次集合在目标设备处的执行速率以及目标设备与参数服务器之间的通信速率而可配置的。
前述方法的另一实施例还包括:当AI模型的准确度测量超过预定阈值时,停止AI模型的执行;或者当AI模型的准确度测量未超过预定阈值时,继续AI模型的执行。
本文中还描述了一种计算机程序产品。该计算机程序产品包括其上记录有计算机程序逻辑的计算机可读存储设备,计算机程序逻辑在由基于处理器的计算机***执行时使基于处理器的***执行一种方法,该方法包括:将人工智能(AI)模型的主副本存储在参数服务器中;确定适合于目标设备的微批次大小;从参数服务器向目标设备传输AI模型的一部分;从目标设备接收输出数据,输出数据是通过在目标设备处在AI模型的传输部分的子部分上执行数据集的微批次集合而生成的;以及基于度量来评估AI模型以确定是否继续执行AI模型。
在前述计算机程序产品的实施例中,执行微批次集合用于推理或用于训练AI模型。
在前述计算机程序产品的一个实施例中,微批次集合包括多个微批次,该多个微批次被配置为按顺序执行,微批次集合形成迷你批次,该迷你批次包括每次更新的用于训练的若干样本或者每个推理周期中提供的用于推理的若干样本。
在前述计算机程序产品的附加实施例中,一个或多个度量包括AI模型的传输部分的子部分的梯度和权重的精度统计。
在前述计算机程序产品的另一实施例中,该方法还包括确定要应用于执行下一微批次集合的计算精度。
在前述计算机程序产品的附加实施例中,一个或多个度量包括AI模型的准确度测量;该方法还包括:当AI模型的准确度测量超过预定阈值时,停止AI模型的执行;或者当AI模型的准确度测量未超过预定阈值时,继续AI模型的执行。
V.结论
虽然上面已描述了所公开的主题的各种实施例,但是应理解的是,它们仅作为示例而不是限制被呈现。相关领域的技术人员将理解,在不脱离如所附权利要求中所限定的实施例的精神和范围的情况下,可以在形式和细节上进行各种改变。因此,所公开的主题的广度和范围不应受上述示例性实施例中的任一示例性实施例中的限制,而应仅根据所附权利要求及其等效物来限定。
Claims (15)
1.一种***,包括:
参数服务器,通信地连接到目标设备,所述参数服务器包括:
数据管理器,被配置为存储人工智能(AI)模型的主副本;
批次管理器,被配置为确定适合于所述目标设备的微批次大小;
传输器,被配置为向所述目标设备传输所述AI模型的一部分;
输出数据管理器,被配置为从所述目标设备接收输出数据,所述输出数据是通过在所述目标设备处在所述AI模型的所传输的所述部分的子部分上执行数据集的微批次集合而被生成的;以及
模型评估器,被配置为基于一个或多个度量来评估所述AI
模型以确定是否需要对所述AI模型执行的任何变化。
2.根据权利要求1所述的***,其中执行所述微批次集合用于推理或用于训练所述AI模型。
3.根据权利要求1所述的***,其中所述微批次集合包括多个微批次,所述多个微批次被配置为按顺序执行,所述微批次集合形成迷你批次,所述迷你批次包括每次更新的用于训练的若干样本或者每个推理周期中提供的用于推理的若干样本。
4.根据权利要求1所述的***,其中所述一个或多个度量包括针对所述AI模型的所传输的所述部分的所述子部分的梯度和权重的精度统计。
5.根据权利要求4所述的***,其中所述参数服务器还包括精度格式化器,所述精度格式化器被配置为确定要应用于执行下一微批次集合的计算精度。
6.根据权利要求1所述的***,其中所述一个或多个度量包括所述AI模型的准确度测量。
7.根据权利要求6所述的***,其中所述参数服务器还包括模型评估器,所述模型评估器被配置为:
当所述AI模型的所述准确度度量超过预定阈值时,停止所述AI模型的执行;或者
当所述AI模型的所述准确度度量未超过所述预定阈值时,继续所述AI模型的执行。
8.一种在参数服务器中实现的方法,包括:
将人工智能(AI)模型的主副本存储在参数服务器中;
确定适合于目标设备的微批次大小;
向所述目标设备传输所述AI模型的一部分;
从所述目标设备接收输出数据,所述输出数据是通过在所述目标设备处在所述AI模型的所传输的所述部分的子部分上执行数据集的微批次集合而被生成的;以及
基于一个或多个度量来评估所述AI模型以确定是否需要对所述AI模型执行的任何变化。
9.根据权利要求8所述的方法,其中执行微批次集合用于推理或用于训练所述AI模型。
10.根据权利要求8所述的方法,其中所述微批次集合包括多个微批次,所述多个微批次被配置为按顺序执行,所述微批次集合形成迷你批次,所述迷你批次包括每次更新的用于训练的若干样本或者每个推理周期中提供的用于推理的若干样本。
11.根据权利要求8所述的方法,其中所述一个或多个度量包括所述AI模型的所传输的所述部分的所述子部分的梯度和权重的精度统计。
12.根据权利要求11所述的方法,还包括:
确定要应用于执行下一微批次集合的计算精度。
13.根据权利要求12所述的方法,其中所述一个或多个度量包括所述AI模型的准确度测量。
14.根据权利要求13所述的方法,还包括:
当所述AI模型的所述准确度度量超过预定阈值时,停止所述AI模型的执行;或者
当所述AI模型的所述准确度度量未超过所述预定阈值时,继续所述AI模型的执行。
15.一种包括其上记录有计算机程序逻辑的计算机可读介质的计算机程序产品,包括:
计算机程序逻辑装置,用于使得处理器能够执行权利要求8至14中的任一项。
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962874462P | 2019-07-15 | 2019-07-15 | |
US62/874,462 | 2019-07-15 | ||
US201962888902P | 2019-08-19 | 2019-08-19 | |
US62/888,902 | 2019-08-19 | ||
US16/577,779 | 2019-09-20 | ||
US16/577,779 US11520592B2 (en) | 2019-07-15 | 2019-09-20 | Executing large artificial intelligence models on memory-constrained devices |
US16/588,779 | 2019-09-30 | ||
US16/588,779 US11354579B2 (en) | 2019-07-15 | 2019-09-30 | Dynamic multi-layer execution for artificial intelligence modeling |
PCT/US2020/036757 WO2021011119A1 (en) | 2019-07-15 | 2020-06-09 | Dynamic multi-layer execution for artificial intelligence modeling |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114127741A true CN114127741A (zh) | 2022-03-01 |
Family
ID=71899920
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080051365.0A Pending CN114127741A (zh) | 2019-07-15 | 2020-06-09 | 用于人工智能建模的动态多层执行 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11354579B2 (zh) |
EP (1) | EP3999959A1 (zh) |
CN (1) | CN114127741A (zh) |
WO (1) | WO2021011119A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117519996A (zh) * | 2024-01-08 | 2024-02-06 | 长春吉大正元信息技术股份有限公司 | 一种数据处理方法、装置、设备以及存储介质 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11354579B2 (en) | 2019-07-15 | 2022-06-07 | Microsoft Technology Licensing, Llc | Dynamic multi-layer execution for artificial intelligence modeling |
US11436019B2 (en) * | 2019-07-15 | 2022-09-06 | Microsoft Technology Licensing, Llc | Data parallelism in distributed training of artificial intelligence models |
US11520592B2 (en) * | 2019-07-15 | 2022-12-06 | Microsoft Technology Licensing, Llc | Executing large artificial intelligence models on memory-constrained devices |
US20210103820A1 (en) * | 2019-10-03 | 2021-04-08 | Vathys, Inc. | Pipelined backpropagation with minibatch emulation |
EP4081867A1 (en) * | 2019-12-23 | 2022-11-02 | HRL Laboratories, LLC | An automated system for generating approximate safety conditions for monitoring and verification |
US11409564B2 (en) * | 2020-07-31 | 2022-08-09 | International Business Machines Corporation | Resource allocation for tuning hyperparameters of large-scale deep learning workloads |
CN116627433B (zh) * | 2023-07-18 | 2024-01-09 | 鹏城实验室 | Ai处理器实时的参数预测方法、***、设备及介质 |
Family Cites Families (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090077561A1 (en) * | 2007-07-05 | 2009-03-19 | International Business Machines Corporation | Pipeline Processing Method and Apparatus in a Multi-processor Environment |
US8516037B2 (en) * | 2008-06-16 | 2013-08-20 | International Business Machines Corporation | Methods for dynamic partitioning of applications in client-server environments |
US9239740B2 (en) * | 2009-06-16 | 2016-01-19 | Microsoft Technology Licensing, Llc | Program partitioning across client and cloud |
US8780114B1 (en) * | 2009-08-31 | 2014-07-15 | The Mathworks, Inc. | Interactive memory map |
US10091215B1 (en) * | 2014-09-09 | 2018-10-02 | Amazon Technologies, Inc. | Client isolation in a distributed queue |
US10832120B2 (en) | 2015-12-11 | 2020-11-10 | Baidu Usa Llc | Systems and methods for a multi-core optimized recurrent neural network |
US10044798B2 (en) * | 2016-02-05 | 2018-08-07 | International Business Machines Corporation | Context-aware task offloading among multiple devices |
US11062214B2 (en) * | 2016-03-07 | 2021-07-13 | Crowe Llp | Computerized system and method of open account processing |
WO2018034682A1 (en) * | 2016-08-13 | 2018-02-22 | Intel Corporation | Apparatuses, methods, and systems for neural networks |
US11321321B2 (en) * | 2016-09-26 | 2022-05-03 | Splunk Inc. | Record expansion and reduction based on a processing task in a data intake and query system |
US11593377B2 (en) * | 2016-09-26 | 2023-02-28 | Splunk Inc. | Assigning processing tasks in a data intake and query system |
US10795884B2 (en) * | 2016-09-26 | 2020-10-06 | Splunk Inc. | Dynamic resource allocation for common storage query |
US10726009B2 (en) * | 2016-09-26 | 2020-07-28 | Splunk Inc. | Query processing using query-resource usage and node utilization data |
US11580107B2 (en) * | 2016-09-26 | 2023-02-14 | Splunk Inc. | Bucket data distribution for exporting data to worker nodes |
US11586627B2 (en) * | 2016-09-26 | 2023-02-21 | Splunk Inc. | Partitioning and reducing records at ingest of a worker node |
US10545732B1 (en) * | 2016-12-06 | 2020-01-28 | Model N Inc. | Model configuration using partial model data |
US10019668B1 (en) * | 2017-05-19 | 2018-07-10 | Google Llc | Scheduling neural network processing |
US11921672B2 (en) * | 2017-07-31 | 2024-03-05 | Splunk Inc. | Query execution at a remote heterogeneous data store of a data fabric service |
US20200050607A1 (en) * | 2017-07-31 | 2020-02-13 | Splunk Inc. | Reassigning processing tasks to an external storage system |
US11989194B2 (en) * | 2017-07-31 | 2024-05-21 | Splunk Inc. | Addressing memory limits for partition tracking among worker nodes |
US20200050612A1 (en) * | 2017-07-31 | 2020-02-13 | Splunk Inc. | Supporting additional query languages through distributed execution of query engines |
US10698900B2 (en) * | 2017-09-25 | 2020-06-30 | Splunk Inc. | Generating a distributed execution model with untrusted commands |
US10698897B2 (en) * | 2017-09-25 | 2020-06-30 | Splunk Inc. | Executing a distributed execution model with untrusted commands |
EP3502975A1 (en) * | 2017-12-20 | 2019-06-26 | Fujitsu Limited | Methods and apparatus for model parallelism in artificial neural networks |
US10628295B2 (en) | 2017-12-26 | 2020-04-21 | Samsung Electronics Co., Ltd. | Computing mechanisms using lookup tables stored on memory |
US11270201B2 (en) | 2017-12-29 | 2022-03-08 | Intel Corporation | Communication optimizations for distributed machine learning |
US11281673B2 (en) * | 2018-02-08 | 2022-03-22 | Parallel Wireless, Inc. | Data pipeline for scalable analytics and management |
US20190377984A1 (en) * | 2018-06-06 | 2019-12-12 | DataRobot, Inc. | Detecting suitability of machine learning models for datasets |
US11574233B2 (en) * | 2018-08-30 | 2023-02-07 | International Business Machines Corporation | Suggestion and completion of deep learning models from a catalog |
US11816575B2 (en) * | 2018-09-07 | 2023-11-14 | International Business Machines Corporation | Verifiable deep learning training service |
EP3627399A1 (en) * | 2018-09-19 | 2020-03-25 | Tata Consultancy Services Limited | Systems and methods for real time configurable recommendation using user data |
US11429853B2 (en) | 2018-11-13 | 2022-08-30 | Gyrfalcon Technology Inc. | Systems and methods for determining an artificial intelligence model in a communication system |
US20200151558A1 (en) | 2018-11-13 | 2020-05-14 | Gyrfalcon Technology Inc. | Systems and methods for updating an artificial intelligence model by a subset of parameters in a communication system |
US11584020B2 (en) * | 2018-12-04 | 2023-02-21 | Cloudminds Robotics Co., Ltd. | Human augmented cloud-based robotics intelligence framework and associated methods |
US20200226458A1 (en) | 2019-01-10 | 2020-07-16 | Mipsology SAS | Optimizing artificial neural network computations based on automatic determination of a batch size |
US11507829B2 (en) | 2019-01-17 | 2022-11-22 | Gyrfalcon Technology Inc. | Greedy approach for obtaining an artificial intelligence model in a parallel configuration |
US20200302276A1 (en) | 2019-03-20 | 2020-09-24 | Gyrfalcon Technology Inc. | Artificial intelligence semiconductor chip having weights of variable compression ratio |
US11354573B2 (en) * | 2019-03-25 | 2022-06-07 | International Business Machines Corporation | Dynamically resizing minibatch in neural network execution |
US11520971B2 (en) | 2019-03-30 | 2022-12-06 | The Regents Of The University Of California | System and method for artificial intelligence story generation allowing content introduction |
US10999212B2 (en) | 2019-05-28 | 2021-05-04 | Accenture Global Solutions Limited | Machine-learning-based aggregation of activation prescriptions for scalable computing resource scheduling |
US11520592B2 (en) | 2019-07-15 | 2022-12-06 | Microsoft Technology Licensing, Llc | Executing large artificial intelligence models on memory-constrained devices |
US11354579B2 (en) | 2019-07-15 | 2022-06-07 | Microsoft Technology Licensing, Llc | Dynamic multi-layer execution for artificial intelligence modeling |
US11436019B2 (en) | 2019-07-15 | 2022-09-06 | Microsoft Technology Licensing, Llc | Data parallelism in distributed training of artificial intelligence models |
US11631014B2 (en) * | 2019-08-02 | 2023-04-18 | Capital One Services, Llc | Computer-based systems configured for detecting, classifying, and visualizing events in large-scale, multivariate and multidimensional datasets and methods of use thereof |
US11232356B2 (en) * | 2019-08-09 | 2022-01-25 | Google Llc | Training giant neural networks using pipeline parallelism |
US10878567B1 (en) | 2019-09-18 | 2020-12-29 | Triage Technologies Inc. | System to collect and identify skin conditions from images and expert knowledge |
US11409838B2 (en) | 2019-10-29 | 2022-08-09 | Meta Platforms, Inc. | High throughput matrix processor with support for concurrently processing multiple matrices |
KR20220010927A (ko) | 2020-07-20 | 2022-01-27 | 삼성전기주식회사 | 엣지 인공지능 모듈 및 이의 가중치 업그레이드 방법 |
-
2019
- 2019-09-30 US US16/588,779 patent/US11354579B2/en active Active
-
2020
- 2020-06-09 CN CN202080051365.0A patent/CN114127741A/zh active Pending
- 2020-06-09 WO PCT/US2020/036757 patent/WO2021011119A1/en unknown
- 2020-06-09 EP EP20750500.9A patent/EP3999959A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117519996A (zh) * | 2024-01-08 | 2024-02-06 | 长春吉大正元信息技术股份有限公司 | 一种数据处理方法、装置、设备以及存储介质 |
CN117519996B (zh) * | 2024-01-08 | 2024-03-15 | 长春吉大正元信息技术股份有限公司 | 一种数据处理方法、装置、设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US11354579B2 (en) | 2022-06-07 |
US20210019634A1 (en) | 2021-01-21 |
EP3999959A1 (en) | 2022-05-25 |
WO2021011119A1 (en) | 2021-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11436019B2 (en) | Data parallelism in distributed training of artificial intelligence models | |
US11354579B2 (en) | Dynamic multi-layer execution for artificial intelligence modeling | |
US11520592B2 (en) | Executing large artificial intelligence models on memory-constrained devices | |
US11645493B2 (en) | Flow for quantized neural networks | |
US11429895B2 (en) | Predicting machine learning or deep learning model training time | |
US20190340499A1 (en) | Quantization for dnn accelerators | |
CN110992935B (zh) | 用于训练神经网络的计算*** | |
US11948352B2 (en) | Speculative training using partial gradients update | |
US11295236B2 (en) | Machine learning in heterogeneous processing systems | |
CN117355843A (zh) | 生成和全局调谐应用特定的机器学习加速器 | |
US20230244921A1 (en) | Reduced power consumption analog or hybrid mac neural network | |
US11475292B2 (en) | Information processing apparatus and information processing method | |
US11704562B1 (en) | Architecture for virtual instructions | |
WO2022105348A1 (zh) | 神经网络的训练方法和装置 | |
US11900239B2 (en) | Systems and methods for accelerating sparse neural network execution | |
US11899518B2 (en) | Analog MAC aware DNN improvement | |
JP2023024960A (ja) | 効率的なニューラルネットワーク実行のためのメモリ使用の最適化 | |
KR20220091365A (ko) | Baum-Welch 가속기 | |
CN116997910A (zh) | 张量控制器架构 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |