CN112236784B - 修改机器学习模型以改善局部性 - Google Patents
修改机器学习模型以改善局部性 Download PDFInfo
- Publication number
- CN112236784B CN112236784B CN201980036543.XA CN201980036543A CN112236784B CN 112236784 B CN112236784 B CN 112236784B CN 201980036543 A CN201980036543 A CN 201980036543A CN 112236784 B CN112236784 B CN 112236784B
- Authority
- CN
- China
- Prior art keywords
- machine learning
- memory
- data
- learning model
- operations
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/20—Ensemble learning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/022—Knowledge engineering; Knowledge acquisition
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/092—Reinforcement learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Neurology (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Manipulator (AREA)
Abstract
描述了用于更新机器学习模型以改善局部性的方法、系统和装置。在一个方面,一种方法包括接收机器学习模型的数据。该数据表示机器学习模型的操作以及操作之间的数据依赖性。接收指定用于将在其上部署机器学习模型的机器学习处理器的存储器层次结构的特点的数据。存储器层次结构包括处于多个存储器级别的多个存储器,用于存储在使用机器学习模型执行机器学习计算时由机器学习处理器使用的机器学习数据。通过修改机器学习模型的操作和控制依赖性以考虑到存储器层次结构的特点,来生成更新后的机器学习模型。使用更新后的机器学习模型来执行机器学习计算。
Description
技术领域
本说明书一般而言涉及基于存储器的特点来修改机器学习模型以改善局部性(locality)。
背景技术
神经网络是机器学习模型,其采用模型的一层或多层来为接收到的输入生成输出,例如分类。一些神经网络除了外层之外还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中下一层(即,网络的下一个隐藏层或输出层)的输入。网络的每一层根据相应的参数集的当前值从接收到的输入生成输出。
神经网络可以被表示为具有节点和边的图。节点可以表示可以具有零个或多个输入和零个或多个输出的操作。边可以表示操作之间的数据和/或控制依赖性。机器学习处理器可以使用不同的数据(通常一次一批输入样本)重复执行该图。对于每个操作,机器学习处理器都可以从存储器中获得输入数据,并将输出数据存储在存储器中。
发明内容
本说明书描述了与改善机器学习模型的局部性以及使用改善的模型来执行机器学习计算相关的技术。
一般而言,可以以包括接收机器学习模型的数据的方法来实施本说明书中描述的主题的一个创新方面。数据可以表示机器学习模型的操作以及操作之间的数据依赖性。接收指定用于将在其上部署机器学习模型的机器学习处理器的存储器层次结构的特点的数据。存储器层次结构可以包括处于多个存储器级别的多个存储器,用于存储在使用机器学习模型执行机器学习计算时由机器学习处理器使用的机器学习数据。特点可以包括每个存储器的数据存储容量和每个存储器的存储器带宽。存储器中的至少一个可以具有与至少一个其它存储器不同的存储器带宽。可以基于机器学习模型的数据和存储器层次结构的特点来生成更新后的机器学习模型。可以通过修改机器学习模型的操作和控制依赖性以考虑到(account for)存储器层次结构的特点,来生成更新后的机器学习模型。可以使用更新后的机器学习模型来执行机器学习计算。
这些和其它实施方式可以各自可选地包括以下特征中的一个或多个。在一些方面,机器学习模型的数据可以包括表示机器学习模型的操作、操作之间的控制依赖性以及操作之间的数据依赖性的图。
在一些方面,生成更新后的机器学习模型可以包括:针对操作的至少一部分,基于操作的输出何时将被用作对另一个操作的输入来选择存储器之一以存储所述输出。
在一些方面,生成更新后的机器学习模型可以包括基于第一操作的输出数据何时将被用作第二操作的输入来确定第一操作的输出数据将被存储在多个存储器中的第一存储器中。第一存储器可以具有比多个存储器中的第二存储器更低的存储器带宽。响应于该确定,更新后的机器学习模型可以包括第一控制数据和第二控制数据,第一控制数据使机器学习处理器在第一操作生成输出数据之后将第一操作的输出数据存储在第一存储器中,第二控制数据使机器学习处理器在输出数据被用作对第二操作的输入之前将输出数据从第一存储器转移(transfer)到第二存储器。
在一些方面,第二控制数据使机器学习处理器响应于正在执行第三操作而将输出数据从第一存储器转移到第二存储器。第三操作可以不同于第一操作和第二操作。基于第一操作的输出数据何时将被用作第二操作的输入来确定第一操作的输出数据将被存储在多个存储器中的第一存储器中可以包括基于以下各项中的至少一项来确定第一操作的输出数据将被存储在第一存储器中:(i)将在第一操作和第二操作之间执行的操作数,或者(ii)第一操作将被执行的时间和第二操作将被执行的时间之间的估计的持续时间。
在一些方面,生成更新后的机器学习模型可以包括确定机器学习模型的特定操作序列的输入数据要求比多个存储器中的特定存储器更多的数据存储容量。作为响应,更新后的机器学习模型可以包括多个操作序列,该多个操作序列包括与特定操作序列相同的操作序列;使机器学习处理器将输入数据拆分为数据的多个部分的第一控制数据;使机器学习处理器将数据的每个部分指派给多个操作序列中的相应操作序列的第二控制数据;以及使机器学习处理器连续地执行多个操作序列的第三控制数据。
本说明书中描述的主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。可以基于将在其上实现模型的机器学习处理器的存储器层次结构的特点来修改机器学习模型,以改善数据访问的局部性(例如,数据放置和/或数据移动的局部性),从而得到改善的存储器带宽(例如,更快的数据访问)和存储器的利用率。存储器带宽和存储器利用率的这种改善使机器学习处理器能够比使用原始机器学习模型更快且更有效地执行机器学习计算。
机器学习模型的操作、数据依赖性和/或控制依赖性可以被更新,使得将比其它数据更早被使用的来自操作的输出数据可以比其它数据存储在更快的存储器(例如,更高带宽的存储器)中。还可以更新操作以及数据和控制依赖性,使得在其它数据被访问以用作另一个操作的输入之前将该其它数据预取到更快的存储器。例如,通过不浪费更快的存储器空间来存储代替正在重用的数据的未正在使用的数据,这改善了数据被访问的速度并改善了更快的存储器的使用率。
通过基于指定存储器层次结构的特点的数据来更新机器学习模型,机器学习模型的局部性可以适应于各种存储器层次结构,从而可以针对各种机器学习处理器或执行框架来改善机器学习模型的执行。将频繁使用的数据(例如,权重)存储在片上或其它快速存取存储器中使得能够更快地加载这样的数据以用于机器学习计算。
这方面和其它方面的其它实施方式包括对应的系统、方法和在计算机存储设备上编码的、被配置为执行方法的动作的计算机程序。可以借助于安装在系统上的软件、固件、硬件或它们的组合来如此配置一个或多个计算机的系统,使得这些软件、固件、硬件或它们的组合在操作时使系统执行动作。一个或多个计算机程序可以借助于具有指令来如此配置,使得这些指令在由数据处理装置执行时使装置执行动作。
本说明书中描述的主题的一个或多个实施方式的细节在附图和以下描述中阐述。根据本描述、附图和权利要求书,本主题的其它潜在特征、方面和优点将变得显而易见。
附图说明
图1是示例环境的框图,在该示例环境中,机器学习系统改善了机器学习模型的局部性并使用改善的机器学习模型来执行机器学习计算。
图2是用于机器学习处理器的示例执行框架的框图。
图3是用于机器学习处理器的另一个示例执行框架的框图。
图4是用于机器学习处理器的另一个示例执行框架的框图。
图5是用于机器学习处理器的另一个示例执行框架的框图。
图6是用于机器学习处理器的另一个示例执行框架的框图。
图7是图示机器学习模型的输入图和具有改善的局部性的更新后的图的图示。
图8是图示机器学习模型的另一个输入图和具有改善的局部性的另一个更新后的图的图示。
图9是图示用于生成具有改善的局部性的更新后的机器学习模型并使用更新后的机器学习模型来执行机器学习计算的示例过程的流程图。
在各个附图中,相似的附图标记和名称指示相似的元件。
具体实施方式
一般而言,本说明书中描述的主题涉及生成更新后的机器学习模型,以考虑到用于将在其上部署机器学习模型的机器学习处理器的存储器层次结构的特点。可以通过基于存储器层次结构的特点修改机器学习模型的操作、数据依赖性和/或控制依赖性来更新机器学习模型,以改善机器学习模型的数据访问的局部性。例如,可以对机器学习模型进行修改,以改善数据放置的局部性(例如,将常用数据存储在更快的存储器中)和/或数据移动的局部性(例如,将在一段时间内不会使用的数据存储在更慢的存储器中,并且在使用数据之前将数据预取到更快的存储器)。
机器学习模型(诸如神经网络)可以是高度计算密集的,具有诸如矩阵乘法和卷积之类的关键内核运算。此外,神经网络正在发展得更深并更复杂。为了满足这种不断增长的需求,正在引入具有密集计算单元(例如,处理器核心)的新加速器(例如,机器学习处理器)。低存储器带宽可能例如通过使空闲的计算单元等待来自存储器的数据而限制计算单元的性能。本文描述的用于改善神经网络执行中的局部性的硬件-软件技术可以提高存储器访问速度,从而提高计算单元执行机器学习计算的速度。
图1是示例环境100的框图,在该示例环境100中,机器学习系统120改善机器学习模型的局部性并使用机器学习模型执行机器学习计算。机器学习系统120包括一个或多个前端服务器130,其从用户设备110接收机器学习模型112(例如,神经网络或其它适当的机器学习模型)的数据并向用户设备110提供机器学习输出114(例如,由机器学习模型输出的数据)。前端服务器130可以通过网络150(诸如局域网(LAN)、广域网(WAN)、互联网、移动网络或其组合)与用户设备110通信。
机器学习模型112的数据可以包括表示机器学习模型的操作以及这些操作之间的数据依赖性的数据。例如,机器学习模型的数据可以包括图,该图包括表示操作的节点和表示操作之间的控制依赖性(和/或数据依赖性)的边。表示数据依赖性的边指示操作依赖于来自另一个操作的数据(例如,操作将使用来自另一个操作的输出数据执行机器学习计算)。表示控制依赖性的边指示操作依赖于另一个操作的执行(例如,直到执行了另一个操作才执行该操作)。这些操作可以是通过机器学习模型执行向前传递(例如,通过机器学习模型计算推断)所需的那些操作。这些操作可以包括例如由神经网络的层执行的矩阵乘法操作和/或卷积操作。作为另一个示例,这些操作可以是执行训练过程的迭代以训练机器学习模型所需的那些操作。这些操作可以包括通过机器学习模型执行向前传递所需的操作,以及通过机器学习模型执行向后传递所需的操作,即,确定相对于机器学习模型的权重或参数的梯度所需的反向传播操作。
机器学习系统120可以改善机器学习模型的局部性、训练模型,并执行模型以确定机器学习输出(例如,以对输入数据进行分类)。机器学习系统120包括机器学习模型改善模块131(为简洁起见也称为改善模块131),其接收机器学习模型112的数据并生成具有改善的局部性(例如,改善的数据重用、数据放置的局部性和/或数据移动的局部性)的更新后的机器学习模型132)。改善模块131可以基于用于将在其上部署机器学习模型的机器学习处理器的存储器层次结构的特点来更新机器学习模型。即,模型改善模块131生成更新后的机器学习模型132,该更新后的机器学习模型132对于将在其上执行更新后的机器学习模型132的机器学习处理器的存储器层次结构具有改善的局部性。改善模块131可以使用本文描述的技术来更新神经网络以及可以表示为操作和操作之间的依赖性的集合的其它适当的机器学习模型。
例如,机器学习系统120包括N个机器学习处理器140-1至140-N。每个机器学习处理器140可以具有存储机器学习处理器140的机器学习数据的存储器的相关联的存储器层次结构。每个存储器层次结构可以包括处于多个存储器级别的多个存储器。存储器可以被配置为存储在使用机器学习模型执行机器学习计算时由机器学习处理器140使用的机器学习数据。例如,机器学习数据可以包括对操作的输入(例如,输入张量)、来自操作的输出(例如,输出张量)、操作所使用的权重和/或在使用机器学习模型执行机器学习计算时由机器学习处理器140使用的其它适当数据。
存储器层次结构的每一级别可以包括具有共同(或相似)特点的一个或多个存储器。存储器的特点可以包括存储器的数据存储容量和存储器的存储器带宽。存储器带宽是处理器可以从存储器中读取数据或将数据存储到存储器中的速率。存储器带宽可以字节/秒(或每单位时间度量的其它适当数据大小)为单位来表达。每个存储器的特点可以包括处理器(例如,处理器核心)与存储器之间的存储器通道的特点,诸如直接或间接、共享或专用、速度等。
对于每个级别,存储器的特点可以不同。例如,一个级别的存储器可以比其它级别更快(例如,更高的存储器带宽)。但是,其它级别可以比具有最快存储器的一个级别具有更多的数据存储容量。
指定用于每个机器学习处理器140的存储器层次结构的特点的数据被存储在存储器层次结构数据存储单元135中。存储器层次结构的特点可以包括存储器层次结构中的每个存储器的特点。当生成具有改善的局部性的更新后的机器学习模型时,改善模块131可以获得存储器层次结构数据136,该存储器层次结构数据136指定用于将在其上部署机器学习模型的机器学习处理器140的存储器层次结构的特点。例如,如果要由机器学习处理器140-1执行机器学习模型,那么改善模块131可以从存储器层次结构数据存储单元135获得用于机器学习处理器140-1的存储器层次结构的特点。
然后,改善模块131可以基于输入机器学习模型112和由存储器层次结构数据136指定的存储器层次结构的特点来生成更新后的机器学习模型132。更新后的机器学习模型132可以具有与输入机器学习模型112相同的功能(或相似的功能)。即,更新后的机器学习模型132以相同或相似(例如,在阈值公差内)的准确性和/或质量执行与输入机器学习模型相同的任务。例如,更新后的机器学习模型132可以生成与输入机器学习模型112相同类型的输出,并且如果为两个模型都提供了相同的输入数据,那么输出与输入机器学习模型112将输出的数据相同(或在阈值公差内的相似)的数据。但是,与输入机器学习模型112相比,更新后的机器学习模型132可以具有不同的操作次序、操作之间的不同数据依赖性和/或操作之间的不同控制依赖性。
可以从机器学习模型中确定执行机器学习模型所需的信息。例如,如上所述,表示机器学习模型的图可以包括表示操作的节点和表示操作之间的数据和/或控制依赖性的边。根据图,改善模块131可以确定对于每个操作将需要什么数据以及何时将执行该操作。使用这个信息、每个操作的每个输出和每个输入的数据的大小(例如,基于对操作的输入张量的大小)以及存储器层次结构的特点,改善模块131可以确定何时何地存储每个操作的输入和输出数据。
例如,考虑包括L1存储器和主存储器的存储器层次结构,其中L1存储器比主存储器快,但是L1存储器具有20兆字节(MB)的数据存储容量,而主存储器具有10千兆字节(GB)的数据存储容量。如果操作A和操作B都同时或接近同时输出20MB的数据,但是由操作A输出的数据将立即用作另一个操作的输入,而由操作B输出的数据在执行其它几个操作之后才会被使用,那么由操作A输出的数据可以存储在L1存储器中,而由操作B输出的数据可以存储在主存储器中。然后,在用作其它操作的输入之前,可以将由操作B输出的数据从主存储器预取到L1存储器。在这个示例中,更新后的机器学习模型可以包括新的操作(或注释、其它指令或代码),该新的操作使得在完成另一个操作(例如,操作C)时预取由操作B输出的数据。因此,更新后的机器学习模型可以包括操作C和在执行操作C之后触发预取操作的预取操作之间的控制依赖性。
改善模块131可以生成每个更新后的机器学习模型132,使得在任何给定时间都不会过度利用存储器层次结构的各种存储器的数据容量。例如,改善模块131可以基于输入机器学习模型112的数据(例如,表示该模型的图)确定何时每个操作将需要输入数据(及其数据大小)并且在存储器之间(例如,使用控制和数据依赖性、新操作、操作的次序和/或注释)调度数据,使得每个存储器满负荷(at capacity)或未满负荷(below capacity)。如果在任何给定时间更快的存储器将超负荷(over capacity),那么改善模块131可以在那时调度一些数据以存储在更慢的存储器中。
改善模块131可以通过修改模型的操作、修改模型的控制依赖性和/或修改模型的数据依赖性来为输入机器学习模型112生成更新后的机器学习模型132,以改善存储器层次结构的局部性。修改操作可以包括添加调度数据在存储器中的存储的操作。例如,改善模块131可以确定由操作输出的数据在生成输出数据之后的至少阈值数量的中间操作或至少阈值时间量内将不被使用。作为响应,改善模块131可以在更新后的机器学习模型132中包括第一操作和第二操作,第一操作使输出数据被转移到更慢的存储器,而第二操作使数据在该数据被另一个操作用作输入之前被转移回更快的存储器。改善模块131还可以在更新后的机器学习模型132中包括控制依赖性,该控制依赖性使得机器学习处理器140在执行特定操作之后执行第二操作。改善模块131可以基于特定操作和将使用数据的操作之间的操作数以及将数据从更慢的存储器转移到更快的存储器所需的估计时间量来选择引起数据的这种预取的特定操作,使得在操作需要数据之前完成数据转移。
除了何时其它操作将需要输出数据之外,改善模块131还可以基于存储容量和其它操作所需的数据存储量来确定将输出数据存储在更慢的存储器中。例如,如果更快的存储器具有用于所有这些数据的足够的数据容量,那么改善模块131可以将输出数据保持在更快的存储器中。因此,可以基于当时的总体数据存储需求来作出关于在哪里存储用于特定操作的数据的决定。
修改操作还可以包括添加将张量拆分成多个子张量的操作,并且包括一个或多个操作的多次迭代。例如,如果将输入到操作(或操作序列)的张量的大小太大以至于无法容纳在更快的存储器中,那么改善模块131可以添加将张量拆分为多个子张量的操作,每个子张量可以容纳在更快的存储器中。改善模块131还可以在拆分操作之后包括一个或多个操作的多次迭代,每个子张量一次迭代。改善模块131还可以包括控制依赖性,该控制依赖性将控制从每次迭代的最后一个操作转移到下一次迭代的第一个操作,直到最后一次迭代。改善模块131还可以包括连接(concat)操作,该连接操作将由每次迭代输出的子张量合并为输出张量,该输出张量表示对原始输入张量的一个或多个原始操作的输出。使用操作序列的多次迭代进行这种拆分和合并的示例在图8中示出并在下面进行描述。
在一些实施方式中,改善模块131通过添加注释、指令和/或使机器学习模型将由操作输出的数据存储在适当的存储器中的其它控制数据来生成更新后的机器学习模型132。例如,对于从一个操作(例如,操作A)到另一个操作(例如,操作B)的每条边,更新后的机器学习模型132可以包括注释,该注释指定哪个存储器存储将由操作B使用的操作A的输出。注释也可以被用于将数据从更慢的存储器预取到更快的存储器。例如,可以在特定操作处包括注释,以触发用于另一个操作的数据的预取。
每个注释可以与操作或边相关联(例如,指派给该操作或边)。机器学习处理器140可以被配置为在执行操作或基于边转移控制或数据时读取用于每个操作或边的注释。然后,机器学习处理器140可以基于注释执行适当的操作(例如,将数据存储在适当的存储器中、开始转移数据、将控制转移到另一个操作等)。
改善模块131可以使用规则集、一个或多个机器学习模型、机器学习模型的(一个或多个)模拟和/或其它适当的技术基于输入机器学习模型112来生成更新后的机器学习模型132。规则集可以包括指定改善模块131如何基于输入机器学习模型112中的数据重用模式来修改该模型112的规则。例如,规则可以指定:如果更快的存储器的容量不能容纳两个操作的输出,那么改善模块131将修改输入机器学习模型112,以将首先要被另一个操作使用的数据存储在更快的存储器中并将稍后要被使用的数据存储在更慢的存储器中。规则还可以指定改善模块131将包括控制数据(例如,操作或注释),该控制数据使得稍后使用的数据在适当的时间被预取,使得在该数据被另一个操作用作输入之前该数据被存储在更快的存储器中。
规则集还可以指定用于存储在更快的存储器中的数据之间的优先级。例如,比其它数据将更早使用的数据可以比更晚使用的数据具有更高的优先级。类似地,将在核心之中被共享的数据可以比其它数据对于在核心之间共享的存储器具有更高的优先级。
改善模块131还可以使用用于在其上将执行模型的机器学习处理器140的存储器层次结构来模拟机器学习模型的执行,以确定更快的存储器的容量何时将被超过和/或输出数据被一个操作输出然后被另一个操作使用的时间之间的时间量或操作数。改善模块131可以使用这个数据来确定何时将数据存储在更慢的存储器中、哪些数据应当存储在更慢的存储器中(例如,将更晚而不是更早使用的数据)和/或何时预取数据。然后,改善模块131可以使用这个数据(例如,与规则集结合)来修改输入机器学习模型112以生成更新后的机器学习模型132。
改善模块131可以使用存储器管理技术(例如,软件或图形变换管理的技术)来确定在哪些存储器中要存储哪些数据,并更新机器学习模型以相应地调度机器学习数据的存储。例如,改善模块131可以使用页面替换技术(诸如Belady的算法)来确定在任何时间点哪些数据应当存储在更快的存储器中,以及哪些数据应当从更快的存储器移至更慢的存储器以便为其它数据腾出空间。使用这种技术和表示模型的数据重用模式的机器学习模型的数据(例如,机器学习模型的图),改善模块131可以确定在模型执行期间的任何时间点哪些数据应当存储在哪个存储器中。例如,在Belady的算法中,可以将最长时间量内不会使用的数据从更快的存储器移至更慢的存储器,以便将被更早使用的其它数据可以存储在更快的存储器中。由于改善模块131可以确定接下来何时将使用由每个操作输出的数据,因此改善模块131可以使用存储器管理技术来确定将由每个操作输出的数据存储在何处并更新机器学习模型,以便由机器学习模型输出的数据被存储在适当的存储器中。
在典型的硬件管理的高速缓存中无法使用Belady的算法。但是,由于对于神经网络和可以用图表示的其它机器学习模型,未来的数据访问模式已知,因此可以使用Belady的算法来选择将哪些数据移出更快的存储器。
改善模块131还可以基于输入机器学习模型112和存储器层次结构的特点来训练机器学习模型以生成更新后的机器学习模型132。例如,改善模块131可以使用强化学习技术来学习使机器学习模型更快的方式。在特定示例中,改善模块131可以使用机器学习模型来运行输入机器学习模型112并测量输入机器学习模型112的性能。然后,机器学习模型可以将图变换应用于输入机器学习模型112的图,以生成更新后的机器学习模型。然后,机器学习模型可以测量更新模型的性能,并识别具有最佳性能的更新模型。
改善模块131还可以在更新后的机器学习模型132或由机器学习处理器140用于执行机器学习模型132的其它代码中包括使机器学习处理器140将被频繁使用(例如,由至少阈值数量的操作使用)的数据保持在更快的存储器(例如,片上存储器)中的数据。例如,改善模块131可以在更新后的机器学习模型132中包括使机器学习处理器140将机器学习计算中使用的权重保持在片上存储器中的数据。这使得能够将此类数据更快地加载到计算单元(例如,核心)。
如果同一芯片上的多个核心将使用相同的数据,那么改善模块131可以在更新后的机器学习模型(或其它代码)中包括使机器学习处理器140将该数据保持在片上存储器中的数据。这使得每个核心都能够更快地加载此类数据。这也允许机器学习模型跨芯片内的多个核心进行分区。例如,核心可以通过片上存储器彼此通信。
存储器层次结构中的每个存储器可以作为可寻址的命名空间或命名的存储器设备而暴露于软件(例如,用于执行机器学习模型的软件)。为了向机器学习处理器140指示哪个存储器存储由操作输出的数据,更新后的机器学习模型132可以为操作中的至少一些指定适当的命名空间或存储器设备。软件可以使用这个数据将数据存储在适当的存储器中。
图2-6图示了一些示例执行框架,这些示例执行框架包括用于存储器的示例存储器层次结构,其可以由机器学习处理器使用机器学习模型来执行机器学习计算。如上所述,可以基于指定将用于存储在使用机器学习模型执行机器学习计算时由机器学习处理器使用的机器学习数据的存储器层次结构的特点的数据来更新机器学习模型(例如,以改善数据放置和/或移动的局部性)。图2-6中示出的存储器层次结构是示例,并且本文中描述的用于修改机器学习模型的技术可以应用于其它存储器层次结构。
可以在示例执行框架中使用的示例机器学习处理器包括中央处理单元(CPU)、图形处理单元(GPU)和/或张量处理单元(TPU)。例如,执行框架可以包括一个或多个NVIDIAKEPLER K40 GPU加速器、一个或多个NVIDIAPASCAL P100 GPU和/或一个或多个NIVDIAVOLTAV100 Tensor Core(张量核心)GPU,和/或能够执行机器学习计算的其它适当的处理器。机器学习处理器可以是具有快速片上存储器的TPU,该快速片上存储器是暴露于软件(例如,执行机器学习模型的软件)的可寻址的命名空间。
图2是用于机器学习处理器201的示例执行框架200的框图。执行框架200包括示例存储器层次结构230,该示例存储器层次结构230包括两个级别的存储器:L1存储器203和主存储器204。L1存储器203是集成在机器学习处理器的芯片(例如,集成电路)上的片上存储器(on-chip memory),该芯片具有机器学习处理器201的处理器核心202。核心202是芯片的单独处理器,其被配置为使用一个或多个机器学习模型来执行机器学习计算。一些芯片包括多个核心,如下所述。
主存储器204可以是不集成在具有核心202和L1存储器203的芯片上的片外存储器(off-chip memory)。因此,主存储器204可以比L1存储器203更大(例如,具有更大的存储容量)。由于L1存储器203在芯片上,因此L1存储器203可以具有比主存储器204高得多的带宽。但是,由于L1存储器203的有限大小,一些机器学习数据可能需要存储在主存储器204中,直到该数据将被核心202使用。在一些实施方式中,L1存储器203是静态随机存取存储器(SRAM),而主存储器204是动态随机存取存储器(DRAM)。
在这个示例中,核心202可以分别通过存储器通道211和212直接访问主存储器204和L1存储器203两者。核心202还可以使用存储器通道212和213通过L1存储器203间接访问主存储器204。例如,可以通过将数据从主存储器204移动到L1存储器203以供核心202访问来实现这种间接访问。可以在后台执行在存储器之间移动数据,例如使用直接存储器访问(DMA)。在其它示例中,可以排除存储器通道211,从而要求核心202仅间接访问主存储器。
图3是用于机器学习处理器301的另一个示例执行框架300的框图。在这个示例中,执行框架300包括存储器层次结构330,该存储器层次结构330包括三个级别的存储器:L1存储器303、L2存储器304和主存储器305。L1存储器303和L2存储器304可以是集成在具有核心302的芯片上的片上存储器。在另一个示例中,L1存储器303可以在芯片上,而L2存储器304在芯片外但是与芯片紧密集成(例如,3D堆叠或其它适当的快速芯片互连技术)。主存储器305是片外存储器,其不集成在具有核心302的芯片上,但是也可以与芯片紧密集成。
L1存储器303可以具有存储器303-305中的最高带宽,但是具有存储器303-305中的最小存储容量的量。L2存储器304可以具有低于L1存储器303的带宽但是高于主存储器305的带宽的带宽。主存储器305可以具有三个存储器303-305中的最高存储容量的量。在一些实施方式中,L1存储器303和L2存储器304是SRAM,而主存储器305是DRAM。在另一个示例中,L1存储器303是SRAM,而L2存储器304和主存储器305是DRAM。
在这个示例中,不能容纳在L1存储器303或L2存储器304中的大数据可以存储在主存储器305中。此外,可以将一段时间(例如,至少阈值时间量或阈值操作数)不会使用的数据存储在主存储器305中,并在被使用之前预取到L1存储器303或L2存储器304。如上所述,可以在后台,例如使用DMA,执行在存储器303-305之间移动数据。
核心302可以分别通过存储器通道311、312和313直接访问主存储器305、L2存储器304和L1存储器303。核心302还可以使用存储器通道312和315通过L2存储器304间接访问主存储器305,或者使用存储器通道313、314和315通过L1和L2存储器间接访问主存储器305。如上所述,间接访问可以涉及在存储器之间移动数据。类似地,核心302可以使用存储器通道313和314通过L1存储器303间接访问L2存储器304。绕过L1存储器303和L2存储器304的存储器通道311可能是有用的,使得较小的更频繁访问的数据不被覆写并且保持可用于从主存储器305快速访问。
在其它示例中,存储器层次结构330可以包括L1存储器303和主存储器305之间的直接存储器通道,从而允许核心302经由L1存储器303访问主存储器305,但不经过L2存储器304。在另一个示例中,L1存储器303和L2存储器304可以共享去往/来自主存储器305的存储器通道。
图2和3的机器学习处理器201和301可以包括多个核心,每个核心具有相同的(或不同的)存储器层次结构。例如,机器学习处理器201可以具有两个核心,每个核心具有其自己的L1存储器并可以访问共享的主存储器。在另一个示例中,机器学习处理器301可以包括共享相同的L1、L2和主存储器的三个核心。
图4是用于机器学习处理器401的另一个示例执行框架400的框图。示例机器学习处理器401包括两个核心402和412。在这个示例中,执行框架400包括存储器层次结构430,该存储器层次结构430对于每个核心402和412包括分开的存储器层次结构,该分开的存储器层次结构包括专用的L1存储器、专用的L2存储器和专用的主存储器。例如,核心402可以通过存储器通道421直接访问其L1存储器404。核心402还可以通过L1存储器404和存储器通道422间接访问其L2存储器406,并且进一步通过存储器通道423访问其主存储器408。存储器层次结构430还可以包括核心402与L2存储器406之间和/或核心402与主存储器408之间的直接存储器通道。
L1存储器404可以具有存储器404、406和408中的最高带宽,但是具有存储器404、406和408中的最小存储容量的量。L2存储器406可以具有低于L1存储器404的带宽但是高于主存储器408的带宽的带宽。主存储器408可以具有三个存储器404、406和408中的最高存储容量的量。例如,L1存储器404可以是片上存储器,L2存储器406可以是片上存储器或在芯片外但与芯片紧密集成,而主存储器408可以是片外存储器。
类似地,核心412可以通过存储器通道424直接访问其L1存储器414。核心412还可以通过L1存储器414和存储器通道425间接访问其L2存储器416,并且进一步通过存储器通道426访问其共享的主存储器418。存储器层次结构430还可以包括核心412与L2存储器416之间和/或核心412与主存储器418之间的直接存储器通道。
L1存储器414可以具有存储器414、416和418中的最高带宽,但是具有存储器414、416和418中的最小存储容量的量。L2存储器416可以具有低于L1存储器414的带宽但是高于主存储器418的带宽的带宽。主存储器418可以具有三个存储器414、416和418中的最高存储容量的量。例如,L1存储器414可以是片上存储器,L2存储器416可以是片上存储器或在芯片外但与芯片紧密集成,而主存储器418可以是片外存储器。
在一些实施方式中,L1存储器404和414以及L2存储器406和416是SRAM,而主存储器408和418是DRAM。在另一个示例中,L1存储器404和414是SRAM,而L2存储器406和416以及主存储器408和418是DRAM。
虽然示例机器学习处理器401包括具有分开的存储器层次结构的两个核心402和412,但是机器学习处理器401可以包括其它适当数量的核心(例如,四个、八个等),每个核心具有其自己的存储器层次结构。存储器中的一些可以在核心之间共享。例如,不是具有专用的L2存储器和主存储器,而是可以如图5中所示共享这些存储器。
图5是用于机器学习处理器501的另一个示例执行框架500的框图。示例机器学习处理器501包括两个核心502和512。在这个示例中,执行框架500包括存储器层次结构530,该存储器层次结构530对于每个核心502和512包括分开的存储器层次结构,该分开的存储器层次结构包括专用的L1存储器以及共享的L2和主存储器。例如,核心502可以通过存储器通道521直接访问其L1存储器504。核心502还可以通过L1存储器504和存储器通道522间接访问共享的L2存储器516,并且进一步通过共享的存储器通道523访问共享的主存储器520。存储器层次结构530还可以包括核心502与L2存储器516之间和/或核心502与主存储器520之间的直接存储器通道。
类似地,核心512可以通过存储器通道524直接访问其L1存储器514。核心512还可以通过L1存储器514和存储器通道526间接访问共享的L2存储器516,并且进一步通过共享的存储器通道523访问共享的主存储器520。存储器层次结构530还可以包括核心512与L2存储器516之间和/或核心512与主存储器520之间的直接存储器通道。
L1存储器504和514可以具有比L2存储器516和主存储器520更高的带宽。但是,L1存储器504和514可以各自具有比L2存储器516和主存储器520更小的存储容量。L2存储器516可以具有低于L1存储器504和514的带宽但是高于主存储器520的带宽的带宽。主存储器520可以具有存储器504、514、516和520中的最高存储容量的量。例如,L1存储器504和514可以是片上存储器,L2存储器516可以是片上存储器或在片外但与芯片紧密集成,而主存储器520可以是片外存储器。
在一些实施方式中,L1存储器504和514以及L2存储器516是SRAM,而主存储器520是DRAM。在另一个示例中,L1存储器504和514是SRAM,而L2存储器516和主存储器520是DRAM。
在这个示例中,L2存储器516和主存储器520由核心502和512共享。核心502和512两者都使用的机器学习数据可以存储在L2存储器516和/或主存储器520中。例如,核心502和512两者都使用的权重或偏差值可以存储在L2存储器516和/或主存储器520中。核心502和512还可以通过将数据存储在L2存储器516和/或主存储器520中来彼此共享其它机器学习数据(例如,操作的输出)。
虽然示例机器学习处理器501包括具有分开和共享的存储器的两个核心502和512,但是机器学习处理器501可以包括其它适当数量的核心(例如,四个、八个等),每个核心具有其自己的存储器层次结构。例如,机器学习处理器可以包括四个核心,每个核心具有其自己的L1存储器,但共享公共的L2和主存储器。
图6是用于机器学习处理器601的另一个示例执行框架600的框图。示例机器学习处理器601包括四个核心602-605,它们共享包括L1存储器610和主存储器620的公共存储器层次结构630。虽然未示出,但是四个核心602-605也可以共享L2存储器和/或其它存储器。
在这个示例中,每个核心602-605具有用于访问L1存储器610的单独的存储器通道621-624。核心602-605共享到主存储器620的存储器通道625。在其它示例中,每个核心602-605可以具有到主存储器620的专用存储器通道和/或到L1存储器610的共享通道。
L1存储器610可以具有比主存储器620更高的带宽,但是比主存储器620更小的存储容量。例如,L1存储器610可以是片上存储器,而主存储器620可以是片外存储器。在一些实施方式中,L1存储器610是SRAM,而主存储器620是DRAM。
图7是图示机器学习模型的输入图710和相对于输入图710具有改善的局部性的更新后的图720的图示700。输入图710是更大的图的一部分,其包括操作(由节点表示)以及控制和数据依赖性(由节点之间的边表示)。输入图710包括操作C-I,操作之间的边(箭头)表示操作之间的控制和/或数据依赖性。例如,操作C使用输入数据A和输入数据B。输入数据A和/或输入数据B可以是输入到机器学习模型的机器学习数据,或者是由图7中未示出的另一个操作输出的机器学习数据。在这个示例中,操作C可以在执行机器学习计算时使用输入数据A和输入数据B。
输入图710包括输入数据A和操作C之间的边711以及输入数据B和操作C之间的边712。这些边711和712表示操作C的数据依赖性。即,操作C依赖于输入数据A和输入数据B。类似地,操作D、E和I依赖于首先执行的操作C,如分别由边713、714和715表示的。在这个示例中,操作D、E和I使用由操作C输出的数据来执行机器学习计算。因此,边713表示操作C与操作D之间的控制和数据依赖性。类似地,边714和715分别表示操作C与E之间以及C与I之间的控制和数据依赖性。
当机器学习处理器执行由图710表示的机器学习模型时,边使机器学习处理器基于边的方向按次序从操作过渡到操作。例如,边711使机器学习处理器在输入数据A变得可用之后执行操作C。但是,边712要求直到输入数据B也可用才执行操作C。这表示这些边的数据依赖性。类似地,边713使机器学习处理器在执行操作C之后执行操作D。边715和716使机器学习处理器在操作C和操作H都已经执行之后执行操作I。
更新后的图720相对于输入图710被更新。改善模块(例如,图1的改善模块131)可以基于用于将在其上部署机器学习模型的机器学习处理器的存储器层次结构的特点来生成更新后的图720。在这个示例中,存储器层次结构包括L1存储器722和L2存储器724。L1存储器可以比L2存储器更快,但具有比L2存储器小的数据存储容量。
改善模块可以基于输入图710确定由操作输出的机器学习数据的重用模式,并基于重用模式和存储器层次结构的特点来修改输入图710以生成更新后的图720。例如,改善模块可以针对由每个操作输出的输出数据的每个集合确定在再次使用该数据之前将执行的操作数(和/或估计的将经过的时间)。改善模块可以基于何时将执行每个操作、将使用数据之前的操作数(和/或时间)以及存储器的存储容量来确定将数据存储在哪个存储器中以及何时将数据预取到更快的存储器。
更新后的图720包括不同的控制和数据依赖性以及指定哪个存储器存储操作的输出的数据。例如,更新后的图720指示输入数据A和B被存储在L2存储器724中。更新后的图包括边731和732,这些边使机器学习处理器将输入数据A和B预取到L1存储器722,以输入到操作C。
更新后的图720还指定来自操作C的输出数据被用作操作D和E的输入,这与输入图710匹配。更新后的图720包括新的边733,其使机器学习处理器还将来自操作C的输出数据存储在L2存储器724中(作为数据C'),因为直到操作I才将再次使用该输出数据。
更新后的图720包括操作F和输出数据C”(其可以与输出数据C'相同)之间的另一条新的边。边734表示使机器学习处理器将输出数据C”从L2存储器724预取到L1存储器722的控制依赖性。例如,可以将来自操作C的输出数据预取到L1存储器722,以供操作I使用。可以在执行操作I之前预取输出数据,以减少在已经执行操作H之后将数据从L2存储器724转移到操作I原本会发生的时延。代替地,更新后的图720包括边734,其表示操作F与预取输出数据C”之间的控制依赖性。在这个示例中,在执行操作F之后,存储在L2存储器724中的输出数据C”被预取到L1存储器722。当机器学习处理器正在执行操作G和H时,可以在后台转移数据(例如,使用DMA)。
改善模块可以基于将需要转移的数据量(例如,基于用于转移的估计时间量)以及机器学习处理器执行操作I之前的操作所需的估计时间量来确定何时(例如,将哪个操作用作触发器)来发起预取。以这种方式,改善模块可以确保在执行操作I之前转移数据,但不会不必要地使用可以用于存储其它数据(例如,操作F和G之间的数据)的更快的L1存储器722。
在一些实施方式中,例如,除了表示数据和/或控制依赖性的边之外,更新后的图720还可以包括向机器学习处理器指示哪个存储器存储数据以及何时转移数据的注释,而不是机器学习模型的操作本身。注释可以包括在更新后的图720中或作为由机器学习处理器执行的其它代码的一部分。
图8是图示机器学习模型的另一个输入图810和具有改善的局部性的另一个更新后的图820的图示800。在这个示例中,输入图810包括使用张量X执行机器学习计算的操作序列1A-6A。操作序列1A-6A可以是更大的图的一部分。例如,操作序列1A-6A可以是第一操作序列,并且张量X可以是机器学习模型的输入张量。在另一个示例中,操作序列1A-6A可以在其它操作之后执行,并且张量X可以是中间张量(例如,由于先前的操作而与输入张量不同)或部分张量(例如,输入张量的一部分)。
在这个示例中,张量X可能太大以至于无法存储在用于将在其上执行机器学习模型的机器学习处理器的存储器层次结构的最快存储器(例如,L1存储器)中。改善模块可以在更新后的图820中包括批量拆分操作821,该批量拆分操作821将张量X拆分为多个子张量。改善模块还可以在更新后的图中包括操作序列1A-5A的多次迭代。可以在子张量之一上执行操作序列1A-5A的每次迭代。
例如,考虑张量X具有是L1存储器的数据大小的五倍的数据大小。改善模块可以在更新后的图820中包括批量拆分操作,该批量拆分操作将张量拆分为五个子张量,每个子张量可以容纳在L1存储器中。此外,改善模块可以在更新后的图820中包括操作序列1A-5A的五次迭代,每个子张量一次。以这种方式,可以将每个操作的输出存储在L1存储器中以进行下一个操作,直到对子张量执行了操作序列1A-5A中的每个操作为止。
与使用输入图810对完整的张量X执行操作1A-5A的情况相比,通过将数据保持在L1存储器中,可以更快地执行由每个操作1A-5A执行的机器学习计算。例如,在输入图中,将必须从更慢的存储器中检索每个操作的输入数据中的至少一些,从而使机器学习处理器必须在每个操作都等待数据。
当确定要从张量X生成多少个子张量以及操作序列的多少次迭代要包括在更新后的图820中时,改善模块还可以考虑由操作序列中的每个操作输出的数据的大小。例如,如果即使输入到操作1A的子张量将容纳在L1存储器中,但操作中的一个的输出将超过L1存储器的容量,那么改善模块可以将张量X拆分为更多个子张量,使得由每个操作输出的数据都可以容纳在L1存储器中。
改善模块还可以生成控制依赖性823并将其在操作5A的最后一次迭代之前的操作5A的每次迭代之后包括在更新后的图820中。控制依赖性823使机器学习处理器将控制过渡到操作序列1A-5A的下一次迭代,从而以操作1A的下一次迭代开始。以这种方式,可以对张量X的每个子张量执行操作序列1A-5A。
改善模块还可以生成连接操作824并将其包括在更新后的图820中,该连接操作824可以将操作序列1A-5A的每次迭代的输出数据连接成输出张量。连接操作824可以合并由5A针对批量拆分操作821生成的每个子张量输出的数据(例如,张量)。然后可以将输出张量作为输入提供给操作6A。
图9是图示用于生成具有改善的局部性的更新后的图并使用更新后的图执行机器学习计算的示例过程900的流程图。过程900可以由图1的机器学习系统120执行。
接收机器学习模型的数据(910)。数据可以表示机器学习模型的操作以及操作之间的数据依赖性。例如,数据可以包括图,该图包括用于每个操作的节点和操作之间的边。每条边可以表示由该边连接的两个操作之间的数据依赖性。例如,从第一操作到第二操作的边可以指示在第二操作之前执行第一操作,并且第二操作使用由第一操作输出的数据。
接收指定用于机器学习处理器的存储器层次结构的特点的数据(920)。机器学习处理器可以是将在其上部署机器学习模型的处理器。存储器层次结构可以包括多个级别的存储器,用于存储在使用机器学习模型执行机器学习计算时由机器学习处理器使用的机器学习数据。
存储器的每个级别可以具有彼此不同的特点。如上所述,每个存储器级别的特点可以包括存储器的数据存储容量和存储器的存储器带宽。每个存储器的特点可以包括处理器(例如,处理器核心)与存储器之间的存储器通道的特点,诸如直接或间接、共享或专用、速度等。
基于机器学习模型的图和存储器层次结构的特点,生成更新后的机器学习模型(930)。例如,如上所述,改善模块可以使用规则集、一个或多个机器学习模型和/或输入机器学习模型的模拟来生成具有改善的局部性的更新后的机器学习模型。
如上所述,生成更新后的机器学习模型可以包括:针对操作的至少一部分,基于操作的输出何时将被用作对另一个操作的输入来选择存储器层次结构中的存储器之一以存储所述输出。例如,如果更快的存储器无法存储操作的输出以及将在该操作被执行与该操作的输出被另一个操作使用的时间之间执行的其它操作的输出,那么该操作的输出可以存储在更慢的存储器中并且稍后预取到更快的存储器。
生成更新后的机器学习模型可以包括:基于操作的输出数据何时将被第二操作用作输入,确定第一操作的输出数据将被存储在存储器层次结构的多个存储器中的第一存储器(例如,更慢的存储器)中。作为响应,改善模块可以在更新后的机器学习模型中包括第一控制数据(例如,操作、注释等),该第一控制数据使机器学习处理器在由第一操作生成输出数据之后将第一操作的输出数据存储在第一存储器中。改善模块还可以在更新后的机器学习模型中包括第二控制数据,该第二控制数据使机器学习处理器在输出数据被用作对第二操作的输入之前将输出数据从第一存储器转移(例如,预取)到第二存储器(例如,更快的存储器)。
第二控制数据可以使机器学习处理器响应于正在执行第三操作而将输出数据从第一存储器转移到第二存储器。例如,第二控制数据可以包括第三操作与引起输出数据的转移的操作之间的控制依赖性。
改善模块可以基于将在第一操作和将使用输出数据来执行机器学习计算的第二操作之间执行的操作数来确定多个存储器中的哪个存储器存储第一操作的输出数据。例如,如果操作数超过阈值操作数,那么输出数据可以存储在更慢的存储器中。如果操作数未超过阈值,那么可以将输出数据存储在更快的存储器中。
改善模块可以基于第一操作将被执行的时间与第二操作将被执行的时间之间的估计的持续时间来确定多个存储器中的哪个存储器存储第一操作的输出数据。例如,如果持续时间超过阈值持续时间,那么输出数据可以存储在更慢的存储器中。如果持续时间不超过阈值,那么输出数据可以存储在更快的存储器中。
生成更新后的机器学习模型可以包括确定用于机器学习模型的特定操作序列的输入数据(例如,张量)要求比多个存储器中的特定存储器(例如,最快的存储器)更多的数据存储容量。作为响应,改善模块可以在更新后的机器学习模型中包括多个操作序列,其包括与特定操作序列相同的操作序列。改善模块还可以在更新后的机器学习模型中包括第一控制数据、第二控制数据和第三控制数据,第一控制数据使机器学习处理器将输入数据拆分为数据的多个部分(例如,拆分为子张量),第二控制数据使机器学习处理器将数据的每个部分指派给多个操作序列中的相应操作序列,并且第三控制数据(例如,控制依赖性)使机器学习处理器连续地执行多个操作序列。在图8中图示并在上面描述了将输入数据拆分为多个部分并在更新后的机器学习模型中包括多个操作序列的示例。
使用更新后的机器学习模型来执行机器学习计算(940)。例如,可以在机器学习处理器上部署更新后的机器学习模型。机器学习处理器可以使用训练数据来训练更新后的机器学习模型。例如,机器学习处理器可以训练机器学习模型以对输入数据进行分类。然后,机器学习处理器可以使用经训练的机器学习模型来执行机器学习计算,例如以对其它输入数据进行分类。
如上所述,机器学习模型的操作可以包括通过机器学习模型执行向前传递(例如,通过机器学习模型计算推断)所需的那些操作。这些操作可以包括例如由神经网络的层执行的矩阵乘法操作和/或卷积操作。操作还可以包括执行训练过程的迭代以训练机器学习模型所需的那些操作。这些操作可以包括通过机器学习模型执行向前传递所需的操作,以及通过机器学习模型执行向后传递所需的操作,即,确定相对于机器学习模型的权重或参数的梯度所需的反向传播操作。
本说明书中描述的主题和功能操作的实施例可以在数字电子电路中、在有形实施的计算机软件或固件中、在计算机硬件(包括本说明书中公开的结构及其结构等同物)中实现,或者以它们中一个或多个的组合来实现。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即,在有形的非暂态程序载体上编码的计算机程序指令的一个或多个模块,以由数据处理装置执行或控制数据处理装置的操作。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,此信号被生成以对信息进行编码以用于传输到合适的接收器装置以供数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备或它们中一个或多个的组合。
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以被实现为专用逻辑电路,例如FPGA(现场可编程门阵列)、ASIC(专用集成电路)或GPGPU(通用图形处理单元)。
例如,适于执行计算机程序的计算机可以基于通用或专用微处理器或两者,或者任何其它种类的中央处理单元。一般而言,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或运行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。一般而言,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘),或者被可操作地耦合到一个或多个大容量存储设备以从其接收数据或向其传送数据或两者兼有。但是,计算机不需要具有这样的设备。而且,计算机可以嵌入到另一个设备中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪存驱动器),仅举几个示例。
适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,例如包括:半导体存储器设备,例如,EPROM、EEPROM和闪存设备;磁盘,例如,内部硬盘或可移动磁盘;磁光盘;和CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或结合在专用逻辑电路中。
虽然本说明书包含许多具体的实施方式细节,但这些不应当被解释为对任何发明的范围或所要求保护的范围的限制,而是对特定发明的特定实施例的特定特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独地实现或以任何合适的子组合来实现。而且,尽管上述特征可以被描述为以某些组合起作用,甚至最初这样被要求保护,但是在一些情况下,可以从所要求保护的组合中删除该组合中的一个或多个特征,并且所要求保护的组合可以指向子组合或子组合的变体。
类似地,虽然在附图中以特定次序描绘了操作,但这不应当被理解为要求以所示的特定次序或以顺序的次序执行这些操作,或者要求执行所有所示的操作,以获得期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。而且,上述实施例中各种系统模块和组件的分离不应当被理解为在所有实施例中都需要这种分离,并且应当理解的是,所描述的程序组件和系统一般可以一起集成在单个软件产品中或者封装成多个软件产品。
已经描述了本主题的特定实施例。其它实施例在以下权利要求的范围内。例如,权利要求中记载的动作可以以不同的次序执行,并且仍然获得期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定次序或顺序的次序来获得期望的结果。在某些实施方式中,多任务处理和并行处理可能是有利的。
Claims (20)
1.一种由数据处理装置执行的用于更新机器学习模型的方法,该方法包括:
接收机器学习模型的数据,该数据表示机器学习模型的操作以及操作之间的数据依赖性;
接收指定用于将在其上部署机器学习模型的机器学习处理器的存储器层次结构的特点的数据,该存储器层次结构包括处于多个存储器级别的多个存储器,用于存储在使用机器学习模型执行机器学习计算时由机器学习处理器使用的机器学习数据,特点包括每个存储器的数据存储容量和每个存储器的存储器带宽,其中,存储器中的至少一个具有与至少一个其它存储器不同的存储器带宽;
基于机器学习模型的数据和存储器层次结构的特点,通过修改机器学习模型的操作和控制依赖性以考虑到存储器层次结构的特点,并且对于机器学习模型的一个或多个操作中的每一个,基于包括每个存储器的数据存储容量和存储器带宽的存储器层次结构的特点,修改操作的输出存储在机器学习处理器的多个存储器的哪个存储器中,来生成更新后的机器学习模型;以及
使用更新后的机器学习模型来执行机器学习计算。
2.如权利要求1所述的方法,其中,机器学习模型的数据包括表示机器学习模型的操作、操作之间的控制依赖性以及操作之间的数据依赖性的图。
3.如权利要求1所述的方法,其中,生成更新后的机器学习模型包括:针对操作的至少一部分,基于操作的输出何时将被用作对另一个操作的输入来选择存储器之一以存储所述输出。
4.如权利要求1所述的方法,其中,生成更新后的机器学习模型包括:
基于第一操作的输出数据何时将被用作第二操作的输入来确定第一操作的输出数据将被存储在所述多个存储器中的第一存储器中,第一存储器具有比所述多个存储器中的第二存储器更低的存储器带宽,并且,作为响应:
在更新后的机器学习模型中包括:
第一控制数据,其使机器学习处理器在第一操作生成输出数据之后将第一操作的输出数据存储在第一存储器中;以及
第二控制数据,其使机器学习处理器在将该输出数据用作对第二操作的输入之前将该输出数据从第一存储器转移到第二存储器。
5.如权利要求4所述的方法,其中,第二控制数据使机器学习处理器响应于正在执行第三操作而将输出数据从第一存储器转移到第二存储器,第三操作不同于第一操作和第二操作。
6.如权利要求4所述的方法,其中,基于第一操作的输出数据何时将被用作第二操作的输入来确定第一操作的输出数据将被存储在所述多个存储器中的第一存储器中包括:
基于以下各项中的至少一项来确定第一操作的输出数据将被存储在第一存储器中:(i)将在第一操作和第二操作之间执行的操作数,或者(ii)第一操作将被执行的时间和第二操作将被执行的时间之间的估计的持续时间。
7.如权利要求1所述的方法,其中,生成更新后的机器学习模型包括:
确定机器学习模型的特定操作序列的输入数据要求比所述多个存储器中的特定存储器更多的数据存储容量,并且,作为响应:
在更新后的机器学习模型中包括:
多个操作序列,其包括与所述特定操作序列相同的操作序列;
第一控制数据,其使机器学习处理器将输入数据拆分为数据的多个部分;
第二控制数据,其使机器学习处理器将数据的每个部分指派给所述多个操作序列中的相应操作序列;以及
第三控制数据,其使机器学习处理器连续地执行所述多个操作序列。
8.如权利要求1所述的方法,其中,生成更新后的机器学习模型包括使用第二机器学习模型基于机器学习模型和存储器层次结构的特点来生成更新后的机器学习模型。
9.一种用于更新机器学习模型的系统,包括:
数据处理装置;以及
存储器存储装置,与数据处理装置进行数据通信,该存储器存储装置存储指令,所述指令可由数据处理装置执行并且在如此执行时使数据处理装置执行操作,所述操作包括:
接收机器学习模型的数据,该数据表示机器学习模型的操作以及操作之间的数据依赖性;
接收指定用于将在其上部署机器学习模型的机器学习处理器的存储器层次结构的特点的数据,该存储器层次结构包括处于多个存储器级别的多个存储器,用于存储在使用机器学习模型执行机器学习计算时由机器学习处理器使用的机器学习数据,特点包括每个存储器的数据存储容量和每个存储器的存储器带宽,其中,存储器中的至少一个具有与至少一个其它存储器不同的存储器带宽;
基于机器学习模型的数据和存储器层次结构的特点,通过修改机器学习模型的操作和控制依赖性以考虑到存储器层次结构的特点,并且对于机器学习模型的一个或多个操作中的每一个,基于包括每个存储器的数据存储容量和存储器带宽的存储器层次结构的特点,修改操作的输出存储在机器学习处理器的多个存储器的哪个存储器中,来生成更新后的机器学习模型;以及
使用更新后的机器学习模型来执行机器学习计算。
10.如权利要求9所述的系统,其中,机器学习模型的数据包括表示机器学习模型的操作、操作之间的控制依赖性以及操作之间的数据依赖性的图。
11.如权利要求9所述的系统,其中,生成更新后的机器学习模型包括:针对操作的至少一部分,基于操作的输出何时将被用作对另一个操作的输入来选择存储器之一以存储所述输出。
12.如权利要求9所述的系统,其中,生成更新后的机器学习模型包括:
基于第一操作的输出数据何时将被用作第二操作的输入来确定第一操作的输出数据将被存储在所述多个存储器中的第一存储器中,第一存储器具有比所述多个存储器中的第二存储器更低的存储器带宽,并且,作为响应:
在更新后的机器学习模型中包括:
第一控制数据,其使机器学习处理器在第一操作生成输出数据之后将第一操作的输出数据存储在第一存储器中;以及
第二控制数据,其使机器学习处理器在将该输出数据用作对第二操作的输入之前将该输出数据从第一存储器转移到第二存储器。
13.如权利要求12所述的系统,其中,第二控制数据使机器学习处理器响应于正在执行第三操作而将输出数据从第一存储器转移到第二存储器,第三操作不同于第一操作和第二操作。
14.如权利要求12所述的系统,其中,基于第一操作的输出数据何时将被用作第二操作的输入来确定第一操作的输出数据将被存储在所述多个存储器中的第一存储器中包括:
基于以下各项中的至少一项来确定第一操作的输出数据将被存储在第一存储器中:(i)将在第一操作和第二操作之间执行的操作数,或者(ii)第一操作将被执行的时间和第二操作将被执行的时间之间的估计的持续时间。
15.如权利要求9所述的系统,其中,生成更新后的机器学习模型包括:
确定机器学习模型的特定操作序列的输入数据要求比所述多个存储器中的特定存储器更多的数据存储容量,并且,作为响应:
在更新后的机器学习模型中包括:
多个操作序列,其包括与所述特定操作序列相同的操作序列;
第一控制数据,其使机器学习处理器将输入数据拆分为数据的多个部分;
第二控制数据,其使机器学习处理器将数据的每个部分指派给所述多个操作序列中的相应操作序列;以及
第三控制数据,其使机器学习处理器连续地执行所述多个操作序列。
16.如权利要求9所述的系统,其中,生成更新后的机器学习模型包括使用第二机器学习模型基于机器学习模型和存储器层次结构的特点来生成更新后的机器学习模型。
17.一种非暂态计算机存储介质,编码有计算机程序,该程序包括指令,所述指令在由一个或多个数据处理装置执行时使数据处理装置执行操作,所述操作包括:
接收机器学习模型的数据,该数据表示机器学习模型的操作以及操作之间的数据依赖性;
接收指定用于将在其上部署机器学习模型的机器学习处理器的存储器层次结构的特点的数据,该存储器层次结构包括处于多个存储器级别的多个存储器,用于存储在使用机器学习模型执行机器学习计算时由机器学习处理器使用的机器学习数据,特点包括每个存储器的数据存储容量和每个存储器的存储器带宽,其中,存储器中的至少一个具有与至少一个其它存储器不同的存储器带宽;
基于机器学习模型的数据和存储器层次结构的特点,通过修改机器学习模型的操作和控制依赖性以考虑到存储器层次结构的特点,并且对于机器学习模型的一个或多个操作中的每一个,基于包括每个存储器的数据存储容量和存储器带宽的存储器层次结构的特点,修改操作的输出存储在机器学习处理器的多个存储器的哪个存储器中,来生成更新后的机器学习模型;以及
使用更新后的机器学习模型来执行机器学习计算。
18.如权利要求17所述的非暂态计算机存储介质,其中,机器学习模型的数据包括表示机器学习模型的操作、操作之间的控制依赖性以及操作之间的数据依赖性的图。
19.如权利要求17所述的非暂态计算机存储介质,其中,生成更新后的机器学习模型包括:针对操作的至少一部分,基于操作的输出何时将被用作对另一个操作的输入来选择存储器之一以存储所述输出。
20.如权利要求17所述的非暂态计算机存储介质,其中,生成更新后的机器学习模型包括:
基于第一操作的输出数据何时将被用作第二操作的输入来确定第一操作的输出数据将被存储在所述多个存储器中的第一存储器中,第一存储器具有比所述多个存储器中的第二存储器更低的存储器带宽,并且,作为响应:
在更新后的机器学习模型中包括:
第一控制数据,其使机器学习处理器在第一操作生成输出数据之后将第一操作的输出数据存储在第一存储器中;以及
第二控制数据,其使机器学习处理器在将该输出数据用作对第二操作的输入之前将该输出数据从第一存储器转移到第二存储器。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202410911423.2A CN118839741A (zh) | 2018-10-10 | 2019-07-29 | 修改机器学习模型以改善局部性 |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/156,573 US11263529B2 (en) | 2018-10-10 | 2018-10-10 | Modifying machine learning models to improve locality |
| US16/156,573 | 2018-10-10 | ||
| PCT/US2019/043861 WO2020076392A1 (en) | 2018-10-10 | 2019-07-29 | Modifying machine learning models to improve locality |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202410911423.2A Division CN118839741A (zh) | 2018-10-10 | 2019-07-29 | 修改机器学习模型以改善局部性 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN112236784A CN112236784A (zh) | 2021-01-15 |
| CN112236784B true CN112236784B (zh) | 2024-08-20 |
Family
ID=67551741
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202410911423.2A Pending CN118839741A (zh) | 2018-10-10 | 2019-07-29 | 修改机器学习模型以改善局部性 |
| CN201980036543.XA Active CN112236784B (zh) | 2018-10-10 | 2019-07-29 | 修改机器学习模型以改善局部性 |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202410911423.2A Pending CN118839741A (zh) | 2018-10-10 | 2019-07-29 | 修改机器学习模型以改善局部性 |
Country Status (10)
| Country | Link |
|---|---|
| US (2) | US11263529B2 (zh) |
| EP (2) | EP3864582B1 (zh) |
| JP (2) | JP7078758B2 (zh) |
| KR (2) | KR102572757B1 (zh) |
| CN (2) | CN118839741A (zh) |
| BR (1) | BR112020024353B1 (zh) |
| CA (1) | CA3101214C (zh) |
| SG (1) | SG11202011588QA (zh) |
| TW (2) | TWI757153B (zh) |
| WO (1) | WO2020076392A1 (zh) |
Families Citing this family (29)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10409614B2 (en) | 2017-04-24 | 2019-09-10 | Intel Corporation | Instructions having support for floating point and integer data types in the same register |
| US10474458B2 (en) | 2017-04-28 | 2019-11-12 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
| US11610117B2 (en) | 2018-12-27 | 2023-03-21 | Tesla, Inc. | System and method for adapting a neural network model on a hardware platform |
| KR102865734B1 (ko) * | 2019-01-02 | 2025-09-26 | 삼성전자주식회사 | 뉴럴 네트워크 최적화 장치 및 뉴럴 네트워크 최적화 방법 |
| US11687795B2 (en) * | 2019-02-19 | 2023-06-27 | International Business Machines Corporation | Machine learning engineering through hybrid knowledge representation |
| WO2020190796A1 (en) | 2019-03-15 | 2020-09-24 | Intel Corporation | Systems and methods for cache optimization |
| CN112905241B (zh) | 2019-03-15 | 2024-03-29 | 英特尔公司 | 用于矩阵加速器架构的稀疏优化 |
| CN113424148A (zh) * | 2019-03-15 | 2021-09-21 | 英特尔公司 | 用于检测跨分片访问、提供多分片推理缩放和提供最佳页迁移的多分片存储器管理 |
| US20230036072A1 (en) * | 2019-06-24 | 2023-02-02 | Zeyu GAO | AI-Based Method and System for Testing Chatbots |
| US11610134B2 (en) * | 2019-07-08 | 2023-03-21 | Vianai Systems, Inc. | Techniques for defining and executing program code specifying neural network architectures |
| US11816568B2 (en) * | 2019-09-13 | 2023-11-14 | Latent AI, Inc. | Optimizing execution of a neural network based on operational performance parameters |
| CN110689121A (zh) * | 2019-09-24 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 一种用多核处理器实现神经网络模型拆分方法及相关产品 |
| US11663746B2 (en) | 2019-11-15 | 2023-05-30 | Intel Corporation | Systolic arithmetic on sparse data |
| US11861761B2 (en) | 2019-11-15 | 2024-01-02 | Intel Corporation | Graphics processing unit processing and caching improvements |
| CN114930789A (zh) * | 2020-01-14 | 2022-08-19 | Oppo广东移动通信有限公司 | 人工智能操作处理方法、装置、系统、终端及网络设备 |
| EP4128070A1 (en) * | 2020-03-31 | 2023-02-08 | Abb Schweiz Ag | Method of hierarchical machine learning for an industrial plant machine learning system |
| JP7648352B2 (ja) * | 2020-08-26 | 2025-03-18 | 株式会社Preferred Networks | データ処理方法、データ処理装置、データ処理システムおよびデータ処理プログラム |
| CN116324742B (zh) * | 2020-09-15 | 2025-04-01 | 高通股份有限公司 | 针对ai推断的权重布局变换辅助式嵌套循环优化 |
| US11907539B2 (en) * | 2020-11-20 | 2024-02-20 | Samsung Electronics Co., Ltd. | System and method for stream based data placement on hybrid SSD |
| US11556757B1 (en) * | 2020-12-10 | 2023-01-17 | Neuralmagic Ltd. | System and method of executing deep tensor columns in neural networks |
| US20220188631A1 (en) * | 2020-12-16 | 2022-06-16 | Xmos Inc. | Artificial neural network implementation |
| US20220230064A1 (en) * | 2021-01-20 | 2022-07-21 | Mediatek Singapore Pte. Ltd. | Calibration of analog circuits for neural network computing |
| US20240144030A1 (en) * | 2021-06-09 | 2024-05-02 | Intel Corporation | Methods and apparatus to modify pre-trained models to apply neural architecture search |
| US11960982B1 (en) | 2021-10-21 | 2024-04-16 | Neuralmagic, Inc. | System and method of determining and executing deep tensor columns in neural networks |
| US20230205539A1 (en) * | 2021-12-29 | 2023-06-29 | Advanced Micro Devices, Inc. | Iommu collocated resource manager |
| CN116830101A (zh) * | 2022-01-28 | 2023-09-29 | 辉达公司 | 基于处理资源的张量修改 |
| US12423137B1 (en) * | 2022-12-15 | 2025-09-23 | Amazon Technologies, Inc. | Compiler managed tensor parallel execution |
| US12417047B2 (en) | 2023-01-10 | 2025-09-16 | Google Llc | Heterogeneous ML accelerator cluster with flexible system resource balance |
| US12361262B1 (en) * | 2024-10-22 | 2025-07-15 | Etched.Ai Inc. | Tensor operations in AI models |
Family Cites Families (14)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5664191A (en) | 1994-06-30 | 1997-09-02 | Microsoft Corporation | Method and system for improving the locality of memory references during execution of a computer program |
| US6456803B2 (en) * | 2000-02-04 | 2002-09-24 | Canon Kabushiki Kaisha | Image forming apparatus capable of detecting both of regularly reflected light and irregularly reflected light |
| US7826396B2 (en) | 2005-03-07 | 2010-11-02 | Miller John L | System and method for implementing PNRP locality |
| US20060212654A1 (en) | 2005-03-18 | 2006-09-21 | Vinod Balakrishnan | Method and apparatus for intelligent instruction caching using application characteristics |
| US8965819B2 (en) | 2010-08-16 | 2015-02-24 | Oracle International Corporation | System and method for effective caching using neural networks |
| US10489703B2 (en) | 2015-05-20 | 2019-11-26 | Nec Corporation | Memory efficiency for convolutional neural networks operating on graphics processing units |
| EP3353718B1 (en) * | 2015-10-28 | 2023-07-19 | Google LLC | Modifying computational graphs |
| US10699186B2 (en) | 2015-12-02 | 2020-06-30 | Google Llc | Determining orders of execution of a neural network |
| CN108475213B (zh) | 2016-03-24 | 2021-11-30 | 富士胶片商业创新有限公司 | 图像处理装置、图像处理方法和图像处理程序 |
| CN108279890B (zh) | 2017-01-06 | 2021-12-24 | 阿里巴巴集团控股有限公司 | 组件发布方法、组件构建方法及图形化机器学习算法平台 |
| US10956500B2 (en) | 2017-01-19 | 2021-03-23 | Google Llc | Dynamic-length stateful tensor array |
| EP3376441B1 (en) | 2017-03-15 | 2021-07-14 | Siemens Aktiengesellschaft | A method for execution of a machine learning model on memory restricted industrial device |
| US10019668B1 (en) | 2017-05-19 | 2018-07-10 | Google Llc | Scheduling neural network processing |
| US12099912B2 (en) * | 2018-06-22 | 2024-09-24 | Samsung Electronics Co., Ltd. | Neural processor |
-
2018
- 2018-10-10 US US16/156,573 patent/US11263529B2/en active Active
-
2019
- 2019-07-29 JP JP2020566754A patent/JP7078758B2/ja active Active
- 2019-07-29 SG SG11202011588QA patent/SG11202011588QA/en unknown
- 2019-07-29 BR BR112020024353-1A patent/BR112020024353B1/pt active IP Right Grant
- 2019-07-29 EP EP19752352.5A patent/EP3864582B1/en active Active
- 2019-07-29 CA CA3101214A patent/CA3101214C/en active Active
- 2019-07-29 KR KR1020227038854A patent/KR102572757B1/ko active Active
- 2019-07-29 CN CN202410911423.2A patent/CN118839741A/zh active Pending
- 2019-07-29 KR KR1020207034304A patent/KR102465896B1/ko active Active
- 2019-07-29 CN CN201980036543.XA patent/CN112236784B/zh active Active
- 2019-07-29 WO PCT/US2019/043861 patent/WO2020076392A1/en not_active Ceased
- 2019-07-29 EP EP25153844.3A patent/EP4521258A3/en active Pending
- 2019-08-08 TW TW110113999A patent/TWI757153B/zh active
- 2019-08-08 TW TW108128203A patent/TWI728421B/zh active
-
2022
- 2022-02-15 US US17/672,163 patent/US11915139B2/en active Active
- 2022-05-19 JP JP2022082336A patent/JP7430744B2/ja active Active
Non-Patent Citations (1)
| Title |
|---|
| Scalpel: Customizing DNN Pruning to the Underlying Hardware Parallelism;Jiecao Yu等;《2017 Association for Computing Machinery》;20171231;548-560 * |
Also Published As
| Publication number | Publication date |
|---|---|
| BR112020024353B1 (pt) | 2023-11-07 |
| SG11202011588QA (en) | 2020-12-30 |
| CN118839741A (zh) | 2024-10-25 |
| KR102465896B1 (ko) | 2022-11-09 |
| BR112020024353A2 (pt) | 2021-02-23 |
| US20220172060A1 (en) | 2022-06-02 |
| CA3101214C (en) | 2023-09-26 |
| US20200117999A1 (en) | 2020-04-16 |
| EP4521258A2 (en) | 2025-03-12 |
| TWI757153B (zh) | 2022-03-01 |
| TW202134957A (zh) | 2021-09-16 |
| EP4521258A3 (en) | 2025-05-07 |
| JP7430744B2 (ja) | 2024-02-13 |
| KR20210002676A (ko) | 2021-01-08 |
| US11263529B2 (en) | 2022-03-01 |
| JP2022130363A (ja) | 2022-09-06 |
| JP2021532437A (ja) | 2021-11-25 |
| TW202014939A (zh) | 2020-04-16 |
| US11915139B2 (en) | 2024-02-27 |
| EP3864582A1 (en) | 2021-08-18 |
| CA3101214A1 (en) | 2020-04-16 |
| TWI728421B (zh) | 2021-05-21 |
| EP3864582B1 (en) | 2025-02-19 |
| WO2020076392A1 (en) | 2020-04-16 |
| KR20220153689A (ko) | 2022-11-18 |
| KR102572757B1 (ko) | 2023-08-29 |
| JP7078758B2 (ja) | 2022-05-31 |
| CN112236784A (zh) | 2021-01-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN112236784B (zh) | 修改机器学习模型以改善局部性 | |
| US11907830B2 (en) | Neural network architecture using control logic determining convolution operation sequence | |
| KR102175044B1 (ko) | 인공 신경망 역방향 트레이닝 실행용 장치와 방법 | |
| KR101959376B1 (ko) | 멀티 코어 최적화된 순환 신경망을 위한 시스템 및 방법 | |
| KR102810851B1 (ko) | 공유 스크래치패드 메모리를 사용한 벡터 축소들 | |
| CN113496248A (zh) | 训练计算机实施的模型的方法和设备 | |
| CN119046015B (zh) | 神经网络模型训练处理的电子设备、方法和介质 | |
| CN119225918A (zh) | 一种算子处理方法及相关装置 | |
| HK40044948A (zh) | 修改机器学习模型以改善局部性 | |
| WO2022208173A2 (en) | Vectorizing a loop | |
| CN116341608A (zh) | 用于减少神经网络计算的运行时预测器 | |
| HK40044948B (zh) | 修改机器学习模型以改善局部性 | |
| BR122023016606B1 (pt) | Método para melhorar a localidade de modelos de aprendizagem de máquina, sistema de cálculos de aprendizagem de máquina e meio de armazenamento de computador não transitório | |
| CN120723427A (zh) | 一种内存管理方法及装置 | |
| US20210117800A1 (en) | Multiple locally stored artificial neural network computations |
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 | ||
| REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40044948 Country of ref document: HK |
|
| GR01 | Patent grant | ||
| GR01 | Patent grant |