CN113767375A - 对ml加速器的机器学习模型更新 - Google Patents
对ml加速器的机器学习模型更新 Download PDFInfo
- Publication number
- CN113767375A CN113767375A CN202080031252.4A CN202080031252A CN113767375A CN 113767375 A CN113767375 A CN 113767375A CN 202080031252 A CN202080031252 A CN 202080031252A CN 113767375 A CN113767375 A CN 113767375A
- Authority
- CN
- China
- Prior art keywords
- domain
- model
- coherent
- peripheral
- logic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7885—Runtime interface, e.g. data exchange, runtime control
- G06F15/7889—Reconfigurable logic implemented as a co-processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7825—Globally asynchronous, locally synchronous, e.g. network on chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Signal Processing (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Mathematical Physics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
本文中的示例描述了具有混合式网关的外围I/O设备,该混合式网关允许设备具有I/O域和相干域。因此,外围I/O设备的相干域中的计算资源可以以与主机中的CPU到CPU通信类似的方式来与主机进行通信。外围I/O设备中的双域可以被用于机器学习(ML)应用。虽然I/O设备可以被用作ML加速器,但是这些加速器先前仅使用I/O域。在本文的实施例中,计算资源可以在I/O域和相干域之间被划分,其中ML引擎在I/O域中并且ML模型在相干域中。这样做的优点是ML模型可以使用主机中存储的参考ML模型而被相干地更新。
Description
技术领域
本公开的示例总体上涉及在支持I/O域和相干域的外围I/O设备中执行机器学习模型。
背景技术
在传统的I/O模型中,当使用外围I/O设备独有的自定义I/O设备驱动程序来执行加速器任务或功能时,主机计算系统与其外围I/O设备对接。具有多个I/O设备或甚至同一I/O设备的多个实例意味着主机与多个I/O设备驱动程序或同一I/O设备驱动程序的多个运行副本对接。这可能导致安全性和可靠性问题,因为I/O设备驱动程序通常由提供外围I/O设备的供应商开发,但是必须与主机计算系统中的所有软件和硬件集成。
同时,硬件缓存相干共享存储器多处理器范式在多处理器CPU上执行任务或功能时利用通用的、独立于指令集架构(ISA)的对接模型。通用的、独立于ISA的(例如,C代码)对接模型随着处理单元的数目和这些处理单元可用的共享存储器量而缩放。传统上,外围I/O设备无法从主机计算系统上执行的由CPU使用的相干范式中受益。
发明内容
描述了用于在外围设备中使用I/O域和相干域来执行机器学习模型的技术。一个示例是一种外围I/O设备,该外围I/O设备包括:被配置为将外围I/O设备通信耦合到主机的混合式网关;包括被分配给I/O域的机器学习(ML)引擎的I/O逻辑;以及包括被分配给相干域的ML模型的相干逻辑,其中ML模型与主机中的计算资源共享相干域。
在一些实施例中,混合式网关被配置为使用相干互连协议来将主机的相干域扩展到外围I/O设备中。
在一些实施例中,混合式网关包括更新代理,更新代理被配置为响应于与主机相关联的存储器中存储的参考ML模型的改变,使用缓存相干共享存储器多处理器范式来更新ML模型。
在一些实施例中,使用缓存相干共享存储器多处理器范式来更新ML模型导致在参考ML模型被更新时仅更新ML模型的一部分。
在一些实施例中,外围I/O设备包括与I/O逻辑和相干逻辑耦合的片上网络(NoC),其中NoC、可编程逻辑(PL)到PL消息、以及有线信令中的至少一项被配置为允许与ML模型中的层相关联的参数从相干逻辑被传递到I/O逻辑。
在一些实施例中,ML引擎被配置为使用ML模型中的参数来处理从主机接收的ML数据集。
在一些实施例中,外围I/O设备包括:PL阵列,其中PL阵列中的第一多个PL块是I/O逻辑的一部分并且被分配给I/O域,并且PL阵列中的第二多个PL块是相干逻辑的一部分并且被分配给相干域;以及多个存储器块,其中多个存储器块的第一子集是I/O逻辑的一部分并且被分配给I/O域,并且多个存储器块的第二子集是相干逻辑的一部分并且被分配给相干域。此外,多个存储器块的第一子集能够与第一多个PL块通信、但不直接与第二多个PL块通信,并且多个存储器块的第二子集能够与第二多个PL块通信、但不直接与第一多个PL块通信。
本文中描述的一个示例是一种包括主机和外围I/O设备的计算系统。主机包括存储参考ML模型的存储器、以及与存储器一起形成相干域的多个CPU。I/O设备包括I/O逻辑和相干逻辑,I/O逻辑包括被分配给I/O域的ML引擎,相干逻辑包括被分配给相干域以及主机中的存储器和多个CPU的ML模型。
在一些实施例中,其中外围I/O设备被配置为使用相干互连协议来将相干域扩展到外围I/O设备中。
在一些实施例中,外围I/O设备包括更新代理,更新代理被配置为响应于存储器中存储的参考ML模型的改变,使用缓存相干共享存储器多处理器范式来更新ML模型。
在一些实施例中,使用缓存相干共享存储器多处理器范式来更新ML模型导致在参考ML模型被更新时,仅更新ML模型的一部分。
在一些实施例中,主机包括存储器中存储的多个参考ML模型,并且外围I/O设备包括相干域中的与多个参考ML模型相对应的多个ML模型、以及被分配给I/O域的多个ML引擎,其中多个ML引擎被配置为彼此独立执行。
在一些实施例中,外围I/O设备包括:PL阵列,其中PL阵列中的第一多个PL块是I/O逻辑的一部分并且被分配给I/O域,并且PL阵列中的第二多个PL块是相干逻辑的一部分并且被分配给相干域;以及多个存储器块,其中多个存储器块的第一子集是I/O逻辑的一部分并且被分配给I/O域,并且多个存储器块的第二子集是相干逻辑的一部分并且被分配给相干域。此外,多个存储器块的第一子集能够与第一多个PL块通信、但不直接与第二多个PL块通信,并且多个存储器块的第二子集能够与第二多个PL块通信、但不直接与第一多个PL块通信。
本文中描述的一个示例是一种方法,该方法包括:更新与主机相关联的存储器中的参考ML模型的子部分;更新与耦合到主机的外围I/O设备相关联的相干逻辑中的缓存ML模型的子集,其中主机的存储器和外围I/O设备的相干逻辑在同一相干域中;从相干域中取回缓存ML模型的经更新的子集;以及使用ML引擎根据缓存ML模型的所取回的子集中的参数来处理ML数据集,其中ML引擎位于外围I/O设备中被分配给I/O域的I/O逻辑中。
在一些实施例中,从相干域取回缓存ML模型的经更新的子集使用NoC、PL到PL消息、以及有线信令中的至少一项而被执行,该至少一项将被分配给相干域的相干逻辑通信地耦合到被分配给I/O域的I/O逻辑。
附图说明
为了能够详细理解上述特征的方式,可以通过参考示例实现方式来进行更具体的描述,其在上文被简要概括,其中一些实现方式在附图中图示。然而,应当注意的是,附图仅图示了典型的示例实现方式并且因此不应被认为是对其范围的限制。
图1是根据一个示例的与具有I/O域和相干域的外围I/O设备耦合的主机的框图。
图2是根据一个示例的具有可编程逻辑、存储器和片上网络的外围I/O设备的框图,外围I/O设备被逻辑地划分为I/O域和相干域。
图3是根据一个示例的具有机器学习模型和机器学习引擎的外围I/O设备的框图。
图4是根据一个示例的用于在I/O设备的相干域中更新机器学习模型的流程图。
图5是根据一个示例的包含多个I/O设备的I/O扩展盒的框图。
图6是根据一个示例的用于更新在多个I/O设备中缓存的机器学习模型的流程图。
图7是根据一个示例的使用递归学习算法来更新机器学习模型的流程图。
图8图示了根据一个示例的可编程IC的现场可编程门阵列实现方式。
具体实施方式
下文将参考附图来描述各种特征。应当注意,附图可以按比例绘制也可以不按比例绘制,并且类似结构或功能的元素在整个附图中由相似的附图标记表示。应当注意,这些图只是为了便于对特征的描述。它们并不旨在作为说明书的详尽描述或作为对权利要求范围的限制。附加地,即使没有如此说明,或者如果没有如此明确描述,所示示例不需要具有所示的所有方面或优点。结合特定示例描述的方面或优点不一定限于该示例并且可以在任何其他示例中实践。
本文中的示例描述了具有混合式网关的外围I/O设备,混合式网关允许设备具有I/O域和相干域。即,I/O设备可以享受其中I/O设备驱动程序管理I/O设备中的一些计算资源的传统I/O模型的益处、以及将在I/O设备中的其他计算资源添加到由主机计算系统中的处理器(例如,中央处理单元(CPU))使用的相同相干域的益处。因此,外围I/O设备相干域中的计算资源可以以与主机中的CPU到CPU通信类似的方式来与主机进行通信。这意味着计算资源可以利用相干类性的功能,诸如直接通信、更有效的存储器使用、非统一存储器访问(NUMA)感知等。同时,I/O域中的计算资源可以受益于传统I/O设备模型的优势,传统I/O设备模型在主机和I/O设备之间进行大存储器传递(例如,直接存储器访问(DMA))时提供效率。
外围I/O设备中的双域可以被用于机器学习(ML)应用。虽然I/O设备可以被用作ML加速器,但这些加速器先前仅使用I/O域。在本文的实施例中,计算资源可以在I/O域和相干域之间被划分,其中ML引擎被分配给I/O域并且ML模型被存储在相干域中。这样做的优点是ML模型可以使用主机中存储的参考ML模型来相干地更新。即,若干类型的ML应用受益于能够快速(例如,实时或低延迟地)更新I/O设备中的一个或多个ML模型。将ML模型存储在相干域(而不是I/O域)中意味着缓存相干共享存储器多处理器范式可以被用于更新ML模型,这比依赖传统I/O域模型(例如,直接存储器访问(DMA))快得多。但是,ML引擎可以在外围I/O设备的I/O域中执行。这是有益的,因为ML引擎经常处理大量ML数据,大量ML数据在I/O设备和主机之间使用DMA而不是缓存相干范式来更有效地传递。
图1是根据一个示例的与具有I/O域和相干域的外围I/O设备135耦合的主机105的框图。图1中的计算系统100包括主机105,主机105使用PCIe连接130而被通信地耦合到外围I/O设备135。主机105可以表示单个计算机(例如,服务器)或者互连的多个物理计算系统。在任何情况下,主机105包括操作系统110、多个CPU 115和存储器120。OS 110可以是能够执行本文中描述的功能的任何OS。在一个实施例中,OS 110(或管理程序或内核)针对CPU 115和存储器120建立缓存相干共享存储器多处理器范式。在一个实施例中,CPU 115和存储器120被OS管理(或被内核/管理程序管理)来形成遵循缓存相干共享存储器多处理器范式的相干域。然而,如上所述,传统的I/O模型意味着外围I/O设备135(及其所有计算资源150)被排除在主机105中建立的相干域之外。相反,主机105依赖于其存储器120中存储的I/O设备驱动程序125,I/O设备驱动程序125管理I/O设备135中的计算资源150。即,外围I/O设备135由I/O设备驱动程序125控制,并且可以通过I/O设备驱动程序125被访问。
在本文的实施例中,共享存储器多处理器范式连同该范式的所有性能优势、软件灵活性和减少的开销可用于外围I/O设备135。此外,将I/O设备135中的计算资源添加到与CPU 115和存储器120相同的相干域允许通用的、独立于ISA的开发环境。如图1所示,外围I/O设备135中的一些计算资源150被分配给相干域160,相干域160与由主机105中的计算资源(例如,CPU 115和存储器120)所使用的相干域160相同。
在计算资源150C和150D被逻辑地分配给相干域160的同时,计算资源150A和150B被分配给I/O域145。因此,I/O设备135受益于将计算资源150分配给两个域145、160。I/O域145在主机105和I/O设备135之间进行大存储器传递时提供了效率,而相干域160提供了上述的性能优势、软件灵活性和减少的开销。通过将硬件计算资源150(例如,可编程逻辑、片上网络(NoC)、数据处理引擎和/或存储器)逻辑地划分为I/O域145和相干域160,I/O设备135可以从这两个类型的范式受益。
为了使得主机105能够发送和接收I/O数据流量和相干数据流量,外围I/O设备135包括混合式网关140,混合式网关140将在PCIe连接130上接收的数据分离为I/O数据流量和相干数据流量。I/O数据流量被转发到I/O域145中的计算资源150A和150B,而相干数据流量被转发到相干域160中的计算资源150C和150D。在一个实施例中,混合式网关140可以并行处理I/O和相干数据流量,使得I/O域145中的计算资源150可以与相干域160中的计算资源150并行执行。即,主机105可以将任务分配给I/O域145和相干域160两者中的、可以并行执行那些任务的计算资源150。
外围I/O设备135可以是许多不同类型的I/O设备,诸如可插拔卡(插入主机105中的扩展槽或单独的扩展盒)、片上系统(SoC)、图形处理单元(GPU)、现场可编程门阵列(FPGA)等。因此,虽然许多实施例讨论了包括可编程逻辑(例如,可编程逻辑阵列)的I/O设备135,但是这些实施例可以被应用于不具有可编程逻辑但仅包含硬化电路的I/O设备135(其可以是软件可编程的)。此外,虽然本文中的实施例讨论将计算资源150划分为两个域,但是在其他实施例中,混合式网关140可以被修改为支持附加域或I/O域和相干域145、160内的多个子域。
在一个实施例中,混合式网关140和主机105使用相干互连协议来将相干域160扩展到外围I/O设备135中。例如,混合式网关140可以使用用于加速器的缓存相干互连(CCIX),以用于在设备135内扩展相干域160。CCIX是高性能、芯片到芯片互连架构,其为异构系统架构提供缓存相干框架。CCIX为外围设备135带来内核管理的语义。在主机105上的CPU和在系统中的、可以被设置在任意数目的外围I/O设备上的各种其他加速器之间始终自动保持缓存相干性。
然而,除了CCIX之外,还可以使用其他相干互连协议,诸如快速通道互联(QPI)、Omni-Path、Infinity Fabric、NVLink或者OpenCAPI,以将主机105中的相干域扩展为包括外围I/O设备中的计算资源135。即,混合式网关可以被自定义为支持任何类型的相干互连协议,这有助于形成包括I/O设备135中的计算资源的相干域。
图2是根据一个示例的具有可编程逻辑(PL)阵列205、存储器块220和NoC 230的外围I/O设备135的框图,外围I/O设备135被逻辑地划分为I/O域145和相干域160。在该示例中,PL阵列205由多个PL块210形成。这些块可以被单独分配给I/O域145或相干域160。即,PL块210A和210B被分配给I/O域145,而PL块210C和210D被分配给相干域160。在一个实施例中,分配给I/O域的一组PL块210与分配给相干域的一组PL块210互斥,使得块之间没有重叠(例如,没有PL块210被分配给I/O域和相干域两者)。
在一个实施例中,将硬件资源分配给I/O域145或相干域160不影响(或指示)硬件资源在I/O设备135中的物理位置。例如,即使这些块在PL阵列205中彼此相邻,PL块210A和210C也可以被分配给不同域。因此,虽然在将I/O设备135中的硬件资源逻辑地分配给I/O域145和相干域160时可以考虑硬件资源的物理位置,但是这不是必要的。
I/O设备135还包括分配给I/O域145和相干域160的存储器控制器215。在一个实施例中,由于存储器控制器215和对应存储器块220之间的物理互连,将存储器控制器215之一分配给I/O域145或相干域160意味着与存储器控制器215连接的所有存储器块220也被分配给相同的域。例如,存储器控制器215可以被耦合到固定的一组存储器块220(其不被耦合到任何其他存储器控制器215)。因此,存储器块220可以被分配给与它们耦合的存储器控制器215相同的域。然而,在其他实施例中,可以将与相同存储器控制器215耦合的存储器块220分配给不同的域。
在一个实施例中,NoC包括接口元件,接口元件允许I/O设备135中的硬件元件(例如,可配置数据处理引擎、存储器块220、PL块210等)使用NoC 230来发送和接收数据。在一个实施例中,不是使用可编程逻辑来形成NoC 230,而是形成NoC的部分或全部组件被硬化。在任何情况下,NoC 230可以在I/O域145和相干域160之间被逻辑地划分。在一个实施例中,不是将NoC 230的不同部分分配给这两个域,而是NoC的参数被配置用于向与I/O域145和相干域160相对应的数据流量提供不同的服务级别。即,在NoC 230中流动的用于两个域的数据流量可以使用相同的硬件元件(例如,交换机和通信链路),但是被硬件元件不同地处理。例如,NoC 230可以为两个不同的域提供不同的服务质量(QoS)、延迟、带宽。此外,出于安全原因,NoC 230还可以将I/O域145的流量与相干域160的流量隔离。
在另一实施例中,NoC 230可以防止I/O域145中的计算资源与相干域160中的计算资源通信。然而,在一个实施例中,允许被分配给I/O域145的计算资源与被分配给相干域160的计算资源通信可能是有利的。先前,该通信将发生在主机105中的I/O设备驱动程序125和OS之间。相反,域间通信可以使用NoC 230(如果计算资源在设备135中相距很远)或者PL阵列205中的结构到结构(fabric-to-fabric)连接(如果分配给两个不同域的两个PL块210靠近在一起并且需要通信)而发生I/O设备135内。
图3是根据一个示例的具有ML模型345和ML引擎335的外围I/O设备135的框图。在图3中,主机105被耦合到存储ML数据和结果310以及参考ML模型315的主机附接存储器305。ML数据和结果310包括主机105发送到外围I/O设备135(例如,ML加速器)来进行处理的数据、以及主机105从I/O设备135接收回的结果。另一方面,参考ML模型315定义了ML算法的层和参数,外围I/O设备135使用该ML算法来处理ML数据。参考ML模型315还可以包括多个ML模型,这些ML模型各自定义了用于处理ML数据的多个ML算法的层和参数,使得主机接收跨ML算法的结果。本文中的实施例不限于特定的ML模型315并且可以包括二元分类、多类分类、回归、神经网络(例如,卷积神经网络(CNN)或递归神经网络(RNN))等。ML模型315可以定义层数、层如何互连、每层的权重等。此外,虽然主机附接存储器305被示出为与主机105分离,但是在其他实施例中,ML数据和结果310以及ML模型315被存储在主机105内的存储器中。
主机105可以更新参考ML模型315。例如,随着更多数据变得可用,主机105可以改变参考ML模型315的特定层中的一些权重、改变层的互连方式或者添加/删除ML模型315中的层。如下所述,参考ML模型315中的这些更新可以被镜像到外围I/O设备135中存储(或缓存)的ML模型345中。
混合式网关140允许主机105的相干域扩展为包括外围I/O设备135中的硬件元件。附加地,混合式网关140建立可以使用传统I/O模型的I/O域,其中被分配给该域的硬件资源由I/O设备驱动程序来管理。为此,混合式网关包括I/O和DMA引擎320和更新代理325,I/O和DMA引擎320在主机105和外围I/O设备135中的被分配给I/O域的硬件之间传递I/O域流量,更新代理325在主机105和外围I/O设备135中的被分配给相干域的硬件之间传递相干域流量。
在该示例中,混合式网关140(以及I/O和DMA引擎320以及更新代理325)被连接到NoC 230,这促进了网关140与I/O逻辑330和相干逻辑340之间的通信。I/O逻辑330表示外围I/O设备135中被分配给I/O域的硬件元件,而相干逻辑340表示被分配给相干域的硬件元件。在一个实施例中,I/O逻辑300和相干逻辑340包括图2所示的PL块210和存储器块220。即,PL块210和存储器块220的一部分形成了I/O逻辑330,而另一部分形成相干逻辑340。然而,在另一实施例中,I/O逻辑300和相干逻辑340可以不包括任何PL但包括硬化电路装置(其可以是软件可编程的)。例如,外围I/O设备135可以是不包括PL的ASIC或专用处理器。
如图所示,ML引擎335使用I/O逻辑330被执行,而ML模型345被存储在相干逻辑340中。因此,ML模型345与主机附接存储器305和主机105中的CPU(未示出)处于相同的相干域中。与此相比,ML引擎335不是相干域的一部分,并且因此,当存储器305中存储的数据被更新或以其他方式改变时,不会被相干地更新。
附加地,外围I/O设备135被耦合到存储ML模型345(其可以是相干逻辑340中存储的ML模型345的缓存版本)的附接存储器350。例如,外围I/O设备135可能不会将整个ML模型345存储在相干逻辑340中。相反,整个ML模型345可以被存储在附接存储器350中,而ML模型345当前由ML引擎335使用的某些部分被存储在相干逻辑340中。在任何情况下,存储ML模型345的附接存储器350中的存储器元件与相干逻辑340和主机105是相同的相干域的一部分。
与此相比,ML数据集355被存储在分配给I/O域的存储器元件中。例如,ML引擎335可以取回ML数据集355中存储的数据、根据ML模型345来处理数据、并且然后将经处理的数据存储回到附接存储器350中。因此,以这种方式,ML引擎335和ML数据集355被分配给I/O域中的硬件元件,而ML模型345被分配给相干域中的硬件元件。
虽然图3图示了一个ML引擎和一个ML模型,但是外围I/O设备135可以执行任意数目的ML引擎和ML模型。例如,除非图像同时包括对象A和对象B,否则第一ML模型在大多数情况下可能擅长识别捕获图像中的对象A。但是,第二ML模型在许多情况下无法识别对象A,但擅长区分对象A和对象B。因此,系统管理员可以指示ML引擎335执行两个不同的ML模型(例如,相干逻辑340中存储的两个ML模型)。此外,执行ML引擎335和ML模型345可能只需要外围I/O设备135中可用计算资源的一部分。在该情况下,管理员可以在设备135中使用其对应的ML模型来执行另一ML引擎。换言之,I/O逻辑330可以执行两个ML引擎,而相干逻辑340存储两个ML模型。这些ML引擎/模型对可以彼此独立执行。
此外,将计算资源分配给I/O域和相关域可以是动态的。例如,系统管理员可以确定在I/O域中没有足够的资源用于ML引擎335,并且将外围I/O设备135重新配置为使得先前分配给相关域的计算资源现在被分配给I/O域。例如,先前分配给相干逻辑340的PL和存储器块可以被重新分配给I/O逻辑330——例如,管理员可能想要执行两个ML引擎或者要求ML引擎335执行两个ML模型。I/O设备135可以使用新的分配来被重新配置,并且混合式网关140可以同时支持I/O域和相干域的操作。
图4是根据一个示例的用于更新I/O设备的相干域中的ML模型的方法400的流程图。在框405处,主机更新其存储器中的参考ML模型的一部分。例如,主机中的OS(或主机中的软件应用)可以执行训练算法来改变或调整参考模型。在一个实施例中,ML模型被用于评估图像来检测特定对象。当对象被ML引擎检测时,主机可以重新运行训练算法,这带来对ML模型的更新。即,因为检测图像中的对象可以改进训练数据,主机可以决定重新运行可以调整参考ML模型的训练算法(或训练算法的一部分)。例如,主机可以改变参考ML模型中与一个或多个层相对应的权重,或者改变层的互连方式。在另一示例中,主机可以在参考ML模型中添加或删除层。
在一个实施例中,主机仅更新参考ML模型的一部分。例如,当主机改变与一个或多个层相对应的权重时,参考ML模型中的其余层保持不变。因此,在重新运行训练算法之后,定义ML模型的大部分数据可以保持不变。例如,参考ML模型可以总共有20MB的数据,但更新可能仅影响该数据的10%。在传统的I/O设备范式下,对参考ML模型的更新,无论多小,都需要主机将整个ML模型(更新的数据和未更新的数据)传输到外围I/O设备。然而,通过将ML模型存储在外围I/O设备的相干域中,可以避免每次有更新时将整个参考ML模型传输到I/O设备。
在框410处,主机仅更新用于外围I/O设备的缓存ML模型的子集。更具体地,主机在框410处将参考ML模型中被更新的数据传输到外围设备。该传输发生在相干域内,并且因此可以表现得像在主机的CPU-存储器复合体内的存储器元件之间传输。这在ML或人工智能(AI)系统中特别有用,这些系统依赖于对ML加速器(例如,外围I/O设备)中的ML模型进行频繁(或低延迟)更新。
在另一示例中,当相同的ML模型分布在许多不同的外围I/O设备上时,将ML模型放置在I/O设备的相干域中可能是有益的。即,主机可以被附接到具有相同ML模型的多个外围I/O设备。因此,在外围I/O设备中的每个外围I/O设备处,相干域可以被用于仅更新参考ML模型中被改变的数据,而不是更新整个参考ML模型。
在框415处,ML引擎从相干域取回外围I/O设备中的ML模型的更新部分。例如,虽然NoC可能能够将I/O域流量和相干域流量分离,但是NoC可以在需要时促进分配给I/O域和相干域的硬件元件之间的通信。但是NoC只是可以促进相干域和I/O域之间通信的传输机制之一。其他示例包括直接PL到PL消息或有线信令,以及经由被写入两个域之间的共享存储器缓冲区的元数据进行通信。因此,外围I/O设备可以将数据从ML模型传输到ML引擎。这样做使得ML引擎能够根据ML模型来处理ML数据集。
在一个实施例中,ML引擎可以在任何特定时间期间仅取回ML模型的一部分。例如,ML引擎可以取回用于一个层的参数(例如,权重),并且将I/O逻辑配置为执行ML模型中的该层。一旦完成,ML引擎可以取回用于ML模型的下一层的参数,依此类推。
在框420处,外围I/O设备中的I/O逻辑根据ML模型中的参数,使用I/O域中的ML引擎来处理ML数据集。ML引擎可以使用I/O域技术(诸如,DMA)来从主机接收ML数据集。ML数据集可以被存储在外围I/O设备或附接存储器中。
在框425处,ML引擎将使用ML模型中的参数来处理ML数据集的结果返回到主机。例如,一旦完成,混合式网关中的DMA引擎可以发起DMA写入,以使用I/O设备驱动程序来将经处理的数据从外围I/O设备(或附接存储器)传输到主机。
图5是根据一个示例的包含多个I/O设备135的I/O扩展盒500的框图。在图5中,主机105与多个外围I/O设备135通信,多个外围I/O设备135可以是单独的ML加速器(例如,单独的加速器卡)。在一个实施例中,主机105可以向不同的外围I/O设备135分配不同的任务。例如,主机105可以向外围I/O设备135中的每个外围I/O设备135发送不同的ML数据集以进行处理。
在该实施例中,相同的ML模型525在所有外围I/O设备135上被执行。即,主机105中的参考ML模型315被提供给I/O设备135中的每个I/O设备135,使得这些设备135使用相同的ML模型525。作为示例,主机105可以从多个摄像头(例如,用于自动驾驶车辆的多个摄像头或城市区域中的多个摄像头)接收馈送。为了及时处理由摄像头生成的数据,主机105可以将数据分块并且将不同的馈送发送到不同的外围I/O设备135,使得这些设备135可以使用相同的ML模型525来并行地评估数据集。因此,在快速响应时间是重要的或被期望的ML或AI环境中,使用具有多个外围I/O设备135的I/O扩展盒500可以是优选的。
除了在外围I/O设备135中存储ML模型525之外,扩展盒500包括与I/O设备135分离的相干交换机505。尽管如此,相干交换机505也与主机105中的硬件资源和外围I/O设备135中的缓存520处于相同的相干域中。在一个实施例中,根据NUMA布置,相干交换机505中的缓存510是位于外围I/O设备135中的缓存520与存储参考ML模型315的存储器元件之间的另一缓存层。
虽然在参考ML模型315的一部分被更新时,主机105可以将参考ML模型315的N个副本(其中N是容器中外围I/O设备135的总数)传输到每个设备135,但是因为缓存520和510在相同的相干域中,所以仅参考ML模型315的更新部分被传输到缓存510和缓存520。因此,图5中的布置能够比其中ML模型525被存储在分配给外围I/O设备135的I/O域的硬件资源中的实施例更好地缩放。
图6是根据一个示例的用于更新多个I/O设备中缓存的机器学习模型的方法600的流程图。在一个实施例中,方法600被用于更新ML模型的多个副本,如图5中所示的示例,这些副本被存储在与主机耦合的多个外围I/O设备中。在框605处,主机更新主机存储器中存储的参考ML模型。参考ML模型可以被存储在本地存储器或附接存储器中。在任一情况下,参考ML模型均是由例如主机中的CPU共享的相干域的一部分。
在框610处,方法600根据推模型还是拉模型被用于更新ML模型而分支。如果使用拉模型,则方法600前进到框615,其中主机将交换机和外围I/O设备中的缓存ML模型的子集无效。即,在图5中,主机105使得交换机505中的缓存510中存储的ML模型515和外围I/O设备135中的缓存520中存储的ML模型525无效。因为ML模型525与主机105处于相同的相干域中,主机105不需要使得ML模型525的所有数据无效,而只需使响应于更新参考ML模型315而使得已经被改变的子集无效。
在框620处,外围I/O设备中的更新代理从主机存储器取回参考ML模型的更新部分。在一个实施例中,框620响应于ML引擎(或相干交换机或外围I/O设备中的任何其他软件或硬件参与者)尝试访问ML模型的无效子集而执行。即,如果ML引擎尝试从缓存中未被无效的ML模型中取回数据,则所请求的数据被提供给ML引擎。然而,如果ML引擎尝试从缓存的无效部分取回数据(也被称为缓存未命中),则这样做会触发框620。
在一个实施例中,在确定所请求的数据在外围I/O设备中的本地缓存(例如,缓存520)上已经被无效之后,更新代理首先尝试确定所请求的数据在相干交换机的缓存(例如,缓存510)中是否可用。然而,作为执行框615的一部分,主机使得相干交换机和外围I/O设备135中的缓存的相同子集无效。这样做使更新代理从主机中存储的参考ML模型中取回更新数据。
在拉模型中,在存在缓存未命中之后(例如,当ML引擎从ML模型请求无效的缓存条目时)。参考ML模型中的更新数据被取回。因此,外围I/O设备可以根据ML引擎(或设备中的任何其他参与者)何时请求ML模型的无效部分而在不同时间(例如,根据需要)执行框620。
相反,如果ML模型使用推模型被更新,则在框610处,方法600前进到框625,其中主机将更新部分推送到交换机和外围I/O设备中的缓存。在该模型中,主机控制外围I/O设备中的缓存ML模型何时被更新,而不是在存在缓存未命中时更新那些ML模型。主机可以并行或顺序地将更新数据推送到外围I/O设备。在任何情况下,主机都不必推送出参考ML模型中的所有数据,而只需推送出参考ML模型中被更新或改变的部分。
图7是根据一个示例的用于使用递归学习算法来更新机器学习模型的方法700的流程图。在一个实施例中,方法700可以被用于使用从执行外围I/O设备中的ML模型获得的信息来更新参考ML模型。在框705处,外围I/O设备(或主机)在执行ML模型时,标识由ML引擎生成的结果数据中的误报。例如,ML模型可以被设计为识别图像中的特定对象或人,但偶尔会提供误报(例如,标识对象或人,但对象或人实际上并不在图像中)。
在框710处,主机使用递归学习算法来更新主机中的参考ML模型。在一个实施例中,递归学习算法更新用于训练参考ML模型的训练数据。响应于误报,主机可以更新训练数据,并且然后使用经更新的训练数据来重新运行训练算法的至少一部分。因此,递归学习算法可以使用由ML引擎提供的结果数据来实时更新参考ML模型。
在框715处,主机使用相干域来更新所缓存的(多个)ML模型。例如,主机可以使用方法600的框615和620中描述的拉模型或框625中描述的推模型来更新外围I/O设备中的一个或多个ML模型。因此,通过标识由外围I/O设备中的一个或多个外围I/O设备(例如,ML加速器之一)生成的结果数据中的误报,主机可以更新参考ML模型。主机然后可以使用推模型或拉模型来更新与主机耦合的所有外围I/O设备上缓存的ML模型。
图8图示了I/O外围设备135的FPGA 800实现方式,并且更具体地使用图2中的PL阵列205,该实现方式包括大量不同的可编程瓦片,其包括收发器37、CLB 33、BRAM 34、输入/输出块(“IOB”)36、配置和时钟逻辑(“CONFIG/CLOCKS”)42、DSP块35、专用输入/输出块(“IO”)41(例如,配置端口和时钟端口)以及其他可编程逻辑39,诸如数字时钟管理器、模数转换器、系统监视逻辑等。FPGA还可以包括PCIe接口40、模数转换器(ADC)38等。
在一些FPGA中,每个可编程瓦片可以包括至少一个可编程互连元件(“INT”)43,如图8顶部包括的示例所示,可编程互连元件具有到同一瓦片内的可编程逻辑元件的输入和输出端子48的连接。每个可编程互连元件43还可以包括到(多个)相同瓦片或其他瓦片中的(多个)相邻可编程互连元件的互连部段49的连接。每个可编程互连元件43还可以包括到逻辑块(未示出)之间的通用路由资源的互连部段50的连接。通用路由资源可以包括逻辑块(未示出)和交换机块(未示出)之间的路由通道,逻辑块包括互连部段(例如,互连部段50)的轨道,交换机块用于连接互连部段。通用路由资源的互连部段(例如,互连部段50)可以跨越一个或多个逻辑块。可编程互连元件43连同通用路由资源一起实现用于所示出的FPGA的可编程互连结构(“可编程互连”)。
在一个示例实现方式中,CLB 33可以包括可配置逻辑元件(“CLE”)44以及单个可编程互连元件(“INT”)43,可配置逻辑元件(“CLE”)44可以被编程为实现用户逻辑。除了一个或多个可编程互连元件之外,BRAM 34还可以包括BRAM逻辑元件(“BRL”)45。通常,瓦片中包括的互连元件的数目取决于瓦片的高度。在所图示的示例中,BRAM瓦片具有与五个CLB相同的高度,但也可以使用其他数目(例如,四个)。除了适当数目的可编程互连元件之外,DSP块35还可以包括DSP逻辑元件(“DSPL”)46。除了可编程互连元件43的一个实例之外,IOB 36可以包括例如输入/输出逻辑元件(“IOL”)47的两个实例。本领域技术人员将清楚,例如与IO逻辑元件47连接的实际IO焊盘通常不限于输入/输出逻辑元件47的面积。
在所图示的示例中,靠近管芯中心的水平面积(如图8所示)被用于配置、时钟和其他控制逻辑。从该水平面积或列延伸的竖直列51被用于跨FPGA的宽度分布时钟和配置信号。
利用图8所示架构的一些FPGA包括附加逻辑块,附加逻辑块破坏了构成FPGA大部分的常规柱状结构。附加逻辑块可以是可编程块和/或专用逻辑。
注意,图8旨在仅图示一个示例性FPGA架构。例如,行中逻辑块的数目、行的相对宽度、行的数目和顺序、行中包括的逻辑块类型、逻辑块的相对尺寸、以及在图8顶部处包括的互连/逻辑实现方式仅是示例性的。例如,在实际的FPGA中,通常在CLB出现的任何位置都包括多于一个的相邻CLB行,以促进用户逻辑的有效实现,但相邻CLB行的数目随FPGA的整体尺寸而变化。
在上文中,参考了本公开中提出的实施例。然而,本公开的范围不限于具体描述的实施例。相反,所描述的特征和元素的任何组合,无论是否与不同的实施例相关,都被预期实现和实践预期的实施例。此外,尽管本文所公开的实施例可以实现优于其他可能的解决方案或现有技术的优点,但是特定的优点是否通过给定的实施例实现并不限制本公开的范围。因此,除非在权利要求中明确记载,否则前述方面、特征、实施例和优点仅是例示性的并且不被视为所附权利要求的元素或限制。
如本领域技术人员将理解的,本文所公开的实施例可以被体现为系统、方法或计算机程序产品。因此,各方面可以采取完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或结合软件和硬件方面的实施例(在本文中可以统称为“电路”、“模块”或“系统”)的形式。此外,各方面可以采用在一个或多个计算机可读介质中体现的计算机程序产品的形式,一个或多个计算机可读介质具有其上体现的计算机可读程序代码。
可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电子、磁、光、电磁、红外或半导体系统、装置或设备,或前述的任何合适的组合。计算机可读存储介质的更具体示例(非详尽列表)将包括以下内容:具有一个或多个导线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光学存储设备、磁存储设备或前述内容的任何适当组合。在本文件的上下文中,计算机可读存储介质是可以包含或存储由指令执行系统、装置或设备使用或与其结合使用的程序的任何有形介质。
计算机可读信号介质可以包括其中(例如,在基带中或作为载波的一部分)体现计算机可读程序代码的传播数据信号。这样的传播信号可以采用多种形式中的任一种,包括但不限于电磁、光或其任何合适的组合。计算机可读信号介质可以是不是计算机可读存储介质并且可以通信、传播或传输程序以供指令执行系统、装置或设备使用或与其结合使用的任何计算机可读介质。
计算机可读介质上体现的程序代码可以使用任何合适的介质来传输,包括但不限于无线、有线、光纤电缆、RF等或者前述的任何合适组合。
用于执行本公开的各方面的操作的计算机程序代码可以以一个或多个编程语言的任意组合来编写,包括面向对象的编程语言,诸如Java、Smalltalk、C++等和常规的过程编程语言,诸如“C”编程语言或类似的编程语言。程序代码可以完全在用户计算机上、部分在用户计算机上、作为独立软件包、部分在用户计算机上并且部分在远程计算机上、或者完全在远程计算机或服务器上执行。在后一场景下,远程计算机可以借助任何类型的网络而被连接到用户的计算机,网络包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,借助使用互联网服务提供商的互联网)。
以下参考根据本公开中呈现的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本公开的各方面。应当理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或产生机器的其他可编程数据处理设备的处理器,使得经由计算机或其他可编程数据处理设备的处理器执行的指令创建用于实现流程图和/或一个或多个框图框中指定的功能/动作的装置。
这些计算机程序指令也可以被存储在计算机可读介质中,计算机可读介质可以引导计算机、其他可编程数据处理设备或其他设备以特定方式运行,使得计算机可读介质中存储的指令产生制品,制品包括实现流程图和/或一个或多个框图框中指定的功能/动作的指令。
计算机程序指令也可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程设备或其他设备上执行一系列操作步骤来产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或一个或多个框图框中指定的功能/动作的过程。
图中的流程图和框图图示了根据本发明的各种示例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。就这一点而言,流程图或框图中的每个框可以表示模块、段或指令的一部分,指令包括用于实现(多个)指定逻辑功能的一个或多个可执行指令。在一些备选实现方式中,框中标注的功能可以不按照图中标注的顺序发生。例如,根据所涉及的功能,顺序示出的两个框实际上可以基本上同时执行,或者框有时可以以相反的顺序执行。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作的基于专用硬件的系统来实现或者执行专用硬件和计算机指令的组合。
虽然前述内容针对具体示例,但是在不脱离其基本范围的情况下可以设计其他和另外的示例,并且其范围由所附权利要求来确定。
Claims (15)
1.一种外围I/O设备,包括:
混合式网关,被配置为将所述外围I/O设备通信地耦合到主机;
I/O逻辑,包括被分配给I/O域的机器学习(ML)引擎;以及
相干逻辑,包括被分配给相干域的ML模型,其中所述ML模型与所述主机中的计算资源共享所述相干域。
2.根据权利要求1所述的外围I/O设备,其中所述混合式网关被配置为使用相干互连协议来将所述主机的所述相干域扩展到所述外围I/O设备中。
3.根据权利要求2所述的外围I/O设备,其中所述混合式网关包括:
更新代理,被配置为响应于与所述主机相关联的存储器中存储的参考ML模型的改变,使用缓存相干共享存储器多处理器范式来更新所述ML模型。
4.根据权利要求3所述的外围I/O设备,其中使用所述缓存相干共享存储器多处理器范式来更新所述ML模型导致在所述参考ML模型被更新时,仅更新所述ML模型的一部分。
5.根据权利要求1所述的外围I/O设备,还包括:
片上网络(NoC),与所述I/O逻辑和所述相干逻辑耦合,其中所述NoC、可编程逻辑(PL)到PL消息、以及有线信令中的至少一项被配置为允许与所述ML模型中的层相关联的参数从所述相干逻辑被传递到所述I/O逻辑。
6.根据权利要求5所述的外围I/O设备,其中所述ML引擎被配置为使用所述ML模型中的所述参数来处理从所述主机接收的ML数据集。
7.根据权利要求1所述的外围I/O设备,还包括:
PL阵列,其中所述PL阵列中的第一多个PL块是所述I/O逻辑的一部分并且被分配给所述I/O域,并且所述PL阵列中的第二多个PL块是所述相干逻辑的一部分并且被分配给所述相干域;以及
多个存储器块,其中所述多个存储器块的第一子集是所述I/O逻辑的一部分并且被分配给所述I/O域,并且所述多个存储器块的第二子集是所述相干逻辑的一部分并且被分配给所述相干域,其中所述多个存储器块的所述第一子集能够与所述第一多个PL块通信、但不直接与所述第二多个PL块通信,并且所述多个存储器块的所述第二子集能够与所述第二多个PL块通信、但不直接与所述第一多个PL块通信。
8.一种计算系统,包括:
主机,包括:
存储器,存储参考ML模型,以及
多个CPU,与所述存储器一起形成相干域;以及
外围I/O设备,包括:
I/O逻辑,包括被分配给I/O域的ML引擎,以及
相干逻辑,包括被分配给所述相干域以及所述主机中的所述存储器和所述多个CPU的ML模型。
9.根据权利要求8所述的计算系统,其中所述外围I/O设备被配置为使用相干互连协议来将所述相干域扩展到所述外围I/O设备中。
10.根据权利要求9所述的计算系统,其中所述外围I/O设备包括更新代理,所述更新代理被配置为响应于所述存储器中存储的所述参考ML模型的改变,使用缓存相干共享存储器多处理器范式来更新所述ML模型。
11.根据权利要求10所述的计算系统,其中使用所述缓存相干共享存储器多处理器范式来更新所述ML模型导致在所述参考ML模型被更新时,仅更新所述ML模型的一部分。
12.根据权利要求11所述的计算系统,其中所述主机包括所述存储器中存储的多个参考ML模型,并且其中所述外围I/O设备包括:
所述相干域中的、与所述多个参考ML模型相对应的多个ML模型,以及
被分配给所述I/O域的多个ML引擎,其中所述多个ML引擎被配置为彼此独立地执行。
13.根据权利要求8所述的计算系统,其中所述外围I/O设备包括:
PL阵列,其中所述PL阵列中的第一多个PL块是所述I/O逻辑的一部分并且被分配给所述I/O域,并且所述PL阵列中的第二多个PL块是所述相干逻辑的一部分并且被分配给所述相干域;以及
多个存储器块,其中所述多个存储器块的第一子集是所述I/O逻辑的一部分并且被分配给所述I/O域,并且所述多个存储器块的第二子集是所述相干逻辑的一部分并且被分配给所述相干域,其中所述多个存储器块的所述第一子集能够与所述第一多个PL块通信、但不直接与所述第二多个PL块通信,并且所述多个存储器块的所述第二子集能够与所述第二多个PL块通信、但不直接与所述第一多个PL块通信。
14.一种方法,包括:
更新与主机相关联的存储器中的参考ML模型的子部分;
更新与耦合到所述主机的外围I/O设备相关联的相干逻辑中的缓存ML模型的子集,其中所述主机的所述存储器和所述外围I/O设备的所述相干逻辑在同一相干域中;
从所述相干域中取回所述缓存ML模型的经更新的子集;以及
使用ML引擎根据所述缓存ML模型的所取回的子集中的参数来处理ML数据集,其中所述ML引擎在所述外围I/O设备中被分配给I/O域的I/O逻辑中执行。
15.根据权利要求14所述的方法,从所述相干域取回所述缓存ML模型的所述经更新的子集使用NoC、PL到PL消息、以及有线信令中的至少一项而被执行,所述至少一项将被分配给所述相干域的所述相干逻辑通信地耦合到被分配给所述I/O域的所述I/O逻辑。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/396,540 US10817462B1 (en) | 2019-04-26 | 2019-04-26 | Machine learning model updates to ML accelerators |
US16/396,540 | 2019-04-26 | ||
PCT/US2020/027668 WO2020219282A1 (en) | 2019-04-26 | 2020-04-10 | Machine learning model updates to ml accelerators |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113767375A true CN113767375A (zh) | 2021-12-07 |
Family
ID=70476541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080031252.4A Pending CN113767375A (zh) | 2019-04-26 | 2020-04-10 | 对ml加速器的机器学习模型更新 |
Country Status (6)
Country | Link |
---|---|
US (3) | US10817462B1 (zh) |
EP (1) | EP3928214A1 (zh) |
JP (1) | JP2022530873A (zh) |
KR (1) | KR20220002480A (zh) |
CN (1) | CN113767375A (zh) |
WO (1) | WO2020219282A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190004990A1 (en) | 2017-07-01 | 2019-01-03 | Stephen R. Van Doren | Techniques to support mulitple interconnect protocols for an interconnect |
US10817462B1 (en) * | 2019-04-26 | 2020-10-27 | Xilinx, Inc. | Machine learning model updates to ML accelerators |
US11709790B2 (en) * | 2021-02-24 | 2023-07-25 | Xilinx, Inc. | Spatial distribution in a 3D data processing unit |
US11829450B2 (en) * | 2021-03-26 | 2023-11-28 | Siemens Healthineers International Ag | Dual domain tracking of target structures |
US11947459B2 (en) | 2021-09-30 | 2024-04-02 | Xilinx, Inc. | Multipath memory with static or dynamic mapping to coherent or MMIO space |
US20230281122A1 (en) * | 2022-03-04 | 2023-09-07 | Western Digital Technologies, Inc. | Data Storage Device and Method for Host-Determined Proactive Block Clearance |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120179791A1 (en) * | 2011-01-07 | 2012-07-12 | Mark Cameron Little | Consistency domains for replication in distributed computing |
US20190004990A1 (en) * | 2017-07-01 | 2019-01-03 | Stephen R. Van Doren | Techniques to support mulitple interconnect protocols for an interconnect |
CN109426549A (zh) * | 2017-09-01 | 2019-03-05 | 英特尔公司 | 针对虚拟环境的加速器互连分配 |
CN109690501A (zh) * | 2016-09-19 | 2019-04-26 | 高通股份有限公司 | 混合输入/输出相关写入 |
CN110362504A (zh) * | 2018-04-09 | 2019-10-22 | 英特尔公司 | 对一致性链路和多级存储器的管理 |
Family Cites Families (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6347344B1 (en) * | 1998-10-14 | 2002-02-12 | Hitachi, Ltd. | Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor |
US6608813B1 (en) | 1998-11-04 | 2003-08-19 | Agere Systems Inc | Method and apparatus for achieving fault tolerance in packet switching systems with inverse multiplexing |
US6914907B1 (en) | 1999-08-05 | 2005-07-05 | Alcatel Canada Inc. | Method and apparatus for providing multi-cast transmissions using a distributed router |
US6647453B1 (en) * | 2000-08-31 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | System and method for providing forward progress and avoiding starvation and livelock in a multiprocessor computer system |
US7480770B2 (en) | 2006-06-14 | 2009-01-20 | Sun Microsystems, Inc. | Semi-blocking deterministic directory coherence |
US20090006668A1 (en) | 2007-06-28 | 2009-01-01 | Anil Vasudevan | Performing direct data transactions with a cache memory |
JP4734374B2 (ja) | 2008-06-04 | 2011-07-27 | アラクサラネットワークス株式会社 | ネットワーク中継装置、および、ネットワーク中継装置方法 |
US8473644B2 (en) * | 2009-03-04 | 2013-06-25 | Freescale Semiconductor, Inc. | Access management technique with operation translation capability |
US20100228943A1 (en) * | 2009-03-04 | 2010-09-09 | Freescale Semiconductor, Inc. | Access management technique for storage-efficient mapping between identifier domains |
US20110040911A1 (en) * | 2009-08-13 | 2011-02-17 | Anil Vasudevan | Dual interface coherent and non-coherent network interface controller architecture |
US8732496B2 (en) | 2011-03-24 | 2014-05-20 | Nvidia Corporation | Method and apparatus to support a self-refreshing display device coupled to a graphics controller |
JP5561620B2 (ja) | 2011-05-27 | 2014-07-30 | 日立金属株式会社 | ネットワークシステム及びネットワークシステムの運用方法 |
JP5776618B2 (ja) | 2012-04-16 | 2015-09-09 | 日立金属株式会社 | ネットワークスイッチ |
JP5935666B2 (ja) | 2012-11-22 | 2016-06-15 | 日立金属株式会社 | 通信システムおよびネットワーク中継装置 |
JP6188093B2 (ja) * | 2012-12-26 | 2017-08-30 | リアルテック シンガポール プライベート リミテッド | 通信トラフィック処理アーキテクチャおよび方法 |
US9336142B2 (en) | 2013-11-06 | 2016-05-10 | International Business Machines Corporation | Cache configured to log addresses of high-availability data via a non-blocking channel |
CN104734993B (zh) | 2013-12-24 | 2018-05-18 | 杭州华为数字技术有限公司 | 数据分流方法及分流器 |
DE112013007724B4 (de) | 2013-12-26 | 2024-01-11 | Intel Corporation | System, vorrichtung und verfahren zur gemeinsamen benutzung von speicher und i/o-diensten zwischen knoten |
JP6278800B2 (ja) | 2014-04-03 | 2018-02-14 | APRESIA Systems株式会社 | 中継システムおよびスイッチ装置 |
JP6189783B2 (ja) | 2014-04-08 | 2017-08-30 | APRESIA Systems株式会社 | 中継システムおよびスイッチ装置 |
JP2014160502A (ja) | 2014-04-28 | 2014-09-04 | Fujitsu Ltd | 情報処理装置およびメモリアクセス方法 |
KR102173089B1 (ko) | 2014-08-08 | 2020-11-04 | 삼성전자주식회사 | 인터페이스 회로 및 그것의 패킷 전송 방법 |
US10234930B2 (en) * | 2015-02-13 | 2019-03-19 | Intel Corporation | Performing power management in a multicore processor |
US9720714B2 (en) | 2015-08-26 | 2017-08-01 | International Business Machines Corporation | Accelerator functionality management in a coherent computing system |
US10229076B2 (en) | 2015-09-09 | 2019-03-12 | International Business Machines Corporation | Peripheral component interconnect express (PCIE) pseudo-virtual channels using vendor defined messages |
US20170286301A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga |
US10445659B2 (en) * | 2016-06-03 | 2019-10-15 | International Business Machines Corporation | Machine learning for determining confidence for reclamation of storage volumes |
US10104015B2 (en) * | 2016-11-10 | 2018-10-16 | Dell Products L.P. | Gateway/standalone fibre channel switch system |
US10587534B2 (en) | 2017-04-04 | 2020-03-10 | Gray Research LLC | Composing cores and FPGAS at massive scale with directional, two dimensional routers and interconnection networks |
US10373285B2 (en) * | 2017-04-09 | 2019-08-06 | Intel Corporation | Coarse grain coherency |
US11194753B2 (en) | 2017-09-01 | 2021-12-07 | Intel Corporation | Platform interface layer and protocol for accelerators |
US11263143B2 (en) | 2017-09-29 | 2022-03-01 | Intel Corporation | Coherent accelerator fabric controller |
US20190102295A1 (en) | 2017-09-29 | 2019-04-04 | Intel Corporation | Method and apparatus for adaptively selecting data transfer processes for single-producer-single-consumer and widely shared cache lines |
US10635590B2 (en) | 2017-09-29 | 2020-04-28 | Intel Corporation | Software-transparent hardware predictor for core-to-core data transfer optimization |
US11204867B2 (en) * | 2017-09-29 | 2021-12-21 | Intel Corporation | PCIe controller with extensions to provide coherent memory mapping between accelerator memory and host memory |
US11360794B2 (en) * | 2018-02-14 | 2022-06-14 | Google Llc | System for live migration of virtual machines with assigned peripheral devices |
US10528513B1 (en) | 2018-04-30 | 2020-01-07 | Xilinx, Inc. | Circuit for and method of providing a programmable connector of an integrated circuit device |
US10614000B2 (en) * | 2018-05-04 | 2020-04-07 | Intel Corporation | High bandwidth link layer for coherent messages |
US20190042455A1 (en) | 2018-05-04 | 2019-02-07 | Intel Corporation | Globally addressable memory for devices linked to hosts |
US10606785B2 (en) | 2018-05-04 | 2020-03-31 | Intel Corporation | Flex bus protocol negotiation and enabling sequence |
US20200301898A1 (en) * | 2018-06-25 | 2020-09-24 | BigStream Solutions, Inc. | Systems and methods for accelerating data operations by utilizing dataflow subgraph templates |
US11308005B2 (en) * | 2018-06-28 | 2022-04-19 | Intel Corporation | Cache coherent, high-throughput input/output controller |
US10409743B1 (en) | 2018-06-29 | 2019-09-10 | Xilinx, Inc. | Transparent port aggregation in multi-chip transport protocols |
US11477049B2 (en) | 2018-08-02 | 2022-10-18 | Xilinx, Inc. | Logical transport over a fixed PCIE physical transport network |
US10761985B2 (en) | 2018-08-02 | 2020-09-01 | Xilinx, Inc. | Hybrid precise and imprecise cache snoop filtering |
US10698824B1 (en) | 2018-09-25 | 2020-06-30 | Xilinx, Inc. | Scalable coherence management independent of transport protocol |
US11010314B2 (en) * | 2018-10-30 | 2021-05-18 | Marvell Asia Pte. Ltd. | Artificial intelligence-enabled management of storage media access |
US11102114B2 (en) * | 2018-12-28 | 2021-08-24 | Alibaba Group Holding Limited | Method, apparatus, and computer-readable storage medium for network optimization for accessing cloud service from on-premises network |
US11190460B2 (en) * | 2019-03-29 | 2021-11-30 | Intel Corporation | System-in-package network processors |
US10936903B2 (en) * | 2019-03-30 | 2021-03-02 | Intel Corporation | Technologies for labeling and validating human-machine interface high definition-map data |
US10698842B1 (en) * | 2019-04-10 | 2020-06-30 | Xilinx, Inc. | Domain assist processor-peer for coherent acceleration |
US10817462B1 (en) * | 2019-04-26 | 2020-10-27 | Xilinx, Inc. | Machine learning model updates to ML accelerators |
-
2019
- 2019-04-26 US US16/396,540 patent/US10817462B1/en active Active
-
2020
- 2020-04-10 CN CN202080031252.4A patent/CN113767375A/zh active Pending
- 2020-04-10 KR KR1020217038432A patent/KR20220002480A/ko active Search and Examination
- 2020-04-10 JP JP2021562796A patent/JP2022530873A/ja active Pending
- 2020-04-10 WO PCT/US2020/027668 patent/WO2020219282A1/en unknown
- 2020-04-10 EP EP20722931.1A patent/EP3928214A1/en active Pending
- 2020-10-26 US US17/080,642 patent/US11586578B1/en active Active
-
2023
- 2023-02-21 US US18/112,362 patent/US20230195684A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120179791A1 (en) * | 2011-01-07 | 2012-07-12 | Mark Cameron Little | Consistency domains for replication in distributed computing |
CN109690501A (zh) * | 2016-09-19 | 2019-04-26 | 高通股份有限公司 | 混合输入/输出相关写入 |
US20190004990A1 (en) * | 2017-07-01 | 2019-01-03 | Stephen R. Van Doren | Techniques to support mulitple interconnect protocols for an interconnect |
CN109426549A (zh) * | 2017-09-01 | 2019-03-05 | 英特尔公司 | 针对虚拟环境的加速器互连分配 |
CN110362504A (zh) * | 2018-04-09 | 2019-10-22 | 英特尔公司 | 对一致性链路和多级存储器的管理 |
Also Published As
Publication number | Publication date |
---|---|
KR20220002480A (ko) | 2022-01-06 |
US20230195684A1 (en) | 2023-06-22 |
EP3928214A1 (en) | 2021-12-29 |
WO2020219282A1 (en) | 2020-10-29 |
US20200341941A1 (en) | 2020-10-29 |
US11586578B1 (en) | 2023-02-21 |
JP2022530873A (ja) | 2022-07-04 |
US10817462B1 (en) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11586578B1 (en) | Machine learning model updates to ML accelerators | |
US10824565B2 (en) | Configuration based cache coherency protocol selection | |
US10698842B1 (en) | Domain assist processor-peer for coherent acceleration | |
CN110851378A (zh) | 双列直插式存储器模块(dimm)可编程加速卡 | |
EP3757802B1 (en) | Methods and apparatus for accelerating virtual machine migration | |
US11586369B2 (en) | Hybrid hardware-software coherent framework | |
CN109582223A (zh) | 一种内存数据迁移的方法及装置 | |
US11720496B2 (en) | Reconfigurable cache architecture and methods for cache coherency | |
US10817455B1 (en) | Peripheral I/O device with assignable I/O and coherent domains | |
EP4372563A1 (en) | Systems, methods, and apparatus for operating computational devices | |
US20230251989A1 (en) | Direct Access to External Storage from a Reconfigurable Processor | |
CN118051470A (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 |