CN116070557A - 使用强化学习的数据路径电路设计 - Google Patents
使用强化学习的数据路径电路设计 Download PDFInfo
- Publication number
- CN116070557A CN116070557A CN202210443734.1A CN202210443734A CN116070557A CN 116070557 A CN116070557 A CN 116070557A CN 202210443734 A CN202210443734 A CN 202210443734A CN 116070557 A CN116070557 A CN 116070557A
- Authority
- CN
- China
- Prior art keywords
- design state
- data path
- machine learning
- parameter value
- learning model
- 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
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/27—Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/394—Routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/337—Design optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
-
- 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/044—Recurrent networks, e.g. Hopfield 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/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- 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/0495—Quantised networks; Sparse networks; Compressed 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/08—Learning methods
- G06N3/092—Reinforcement learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/10—Processors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Geometry (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
描述了用于设计数据路径电路(例如具有强化学习的并行前缀电路)的装置、***和技术。一种方法可以包括接收数据路径电路的第一设计状态,将数据路径电路的第一设计状态输入到机器学习模型中,以及使用机器学习模型执行强化学习以输出数据路径电路的最终设计状态,其中与传统设计的数据路径电路相比,数据路径电路的最终设计状态具有减少的面积、功耗和/或延迟。
Description
技术领域
至少一个实施例涉及使用机器学习来执行和促进电路设计。例如,根据本文描述的各种新技术,至少一个实施例涉及利用强化学习进行数据路径电路设计的技术。
背景技术
许多类型的电路可以包括数据路径或数据路径电路——例如,可以执行数据处理操作的算术逻辑单元或乘法器。例如,数据路径电路可以包括在数据路径上处理或合成数据的并行前缀电路(例如,灰度到二进制转换器、加法器、减量器、增量器、优先级编码器等)。前缀计算是一种非常有用且基本的操作,可用于各种应用,例如图像处理、密码学、处理器分配、生物序列比较、二进制加法、硅编译器的设计、作业调度、循环并行化、多项式评估和排序。
数据路径电路的设计旨在减少延迟(例如,数据路径电路在给定输入的情况下输出值所花费的时间量)和面积(例如,数据路径电路占用的空间量),同时避免增加电路的功耗。随着数据路径电路的延迟减少,数据路径电路的面积和功耗会受到影响——例如,随着数据路径电路的延迟减少,数据路径电路的面积会增加。因此,数据路径电路的设计旨在优化数据路径电路的延迟、面积和功耗。
前缀电路的优化具有挑战性,因为它们的大设计空间随着输入长度呈指数增长并且难以列举。因此,穷举搜索方法不会超出小的输入长度。已经提出了几种常规前缀电路结构,它们权衡了逻辑电平、最大扇出和布线轨道。另一组算法优化前缀电路尺寸和电平属性。然而,由于电容负载和拥塞等物理设计的复杂性,前缀电路级别和最大扇出属性并未映射到电路面积、功率和延迟。用于数据路径电路设计的传统方法不能完全优化数据路径电路的延迟、面积和功耗。
附图说明
将参照附图描述根据本公开的各种实施例,其中:
图1是根据至少一些实施例的示例***架构;
图2示出了根据至少一些实施例的用于强化学习的示例***架构;
图3示出了根据至少一些实施例的示例前缀图修改;
图4示出了根据至少一些实施例的并行前缀图的示例网格表示;
图5示出了根据至少一些实施例的示例数据路径电路设计计算;
图6示出了根据至少一些实施例的数据路径电路设计的示例约束;
图7示出了根据至少一些实施例的用于具有强化学习的数据路径电路设计的示例方法的示意图;
图8示出了根据至少一些实施例的示例***架构;
图9A和9B示出了根据至少一些实施例的用于具有强化学习的数据路径电路设计的示例方法的流程图;
图10A示出了根据至少一些实施例的推理和/或训练逻辑;
图10B示出了根据至少一些实施例的推理和/或训练逻辑;
图11示出了根据至少一些实施例的示例数据中心***;
图12示出了根据至少一些实施例的计算机***;
图13示出了根据至少一些实施例的计算机***;
图14示出了根据至少一些实施例的图形处理器的至少部分;
图15示出了根据至少一些实施例的图形处理器的至少部分;
图16示出了根据至少一些实施例的高级计算管线的示例数据流程图;
图17示出了根据至少一些实施例的用于在高级计算管线中训练、调整、实例化和部署机器学习模型的示例***的***图;
图18A和18B示出了根据至少一些实施例的用于训练机器学习模型的过程的数据流程图,以及用于增强具有预训练的注释模型的注释工具的客户端-服务器架构。
具体实施方式
诸如加法器、优先级编码器、增量器、减量器和灰度到二进制代码转换器的若干基本数字设计构建块可以被简化为前缀和计算并被实现为诸如前缀电路(例如,并行前缀电路)的数据路径电路。数据路径电路的优化,例如用于面积、延迟和功率的前缀电路,在数字硬件设计中可能很重要。本文描述的实施例提供了一种使用强化学习设计针对面积、功率和/或延迟进行优化的数据路径电路(例如,并行前缀电路)***和方法。
一些存储器***存储或传送数据——例如,用于主机***。存储器***可以包括将数据从存储器***的一个组件传送到存储器***的另一组件的数据路径。在一些实施例中,存储器***可以在数据路径电路处处理或合成数据。例如,存储器***可以包括前缀电路——例如,加法器、减量器、增量器、灰度到二进制转换器、优先级编码器等——以处理和合成数据。例如,可以利用加法器来计算存储器***的进程的地址或表索引。在一个示例中,前缀电路可以在并行配置中使用以减少执行前缀计算的时间——例如,作为并行前缀电路。
每个数据路径电路可以具有相关的面积(例如,存储器***中的数据路径电路的大小)、功耗(例如,数据路径电路在操作时消耗的电量)和延迟(例如,从给定数量的输入生成输出的时间量)。为了提高电路的性能(例如,对于存储器***),可以设计数据路径电路以减少面积、功耗和/或延迟。然而,在一些示例中,降低数据路径电路的一个特性会影响数据路径电路的另一个特性——例如,降低数据路径电路的延迟会导致数据路径电路的面积更大或消耗更多功率。因此,在实施例中,数据路径电路可以被设计为平衡减少的面积、功耗和/或延迟之间的折衷——例如,针对相应延迟或功耗的最小面积量进行设计或优化。
在一些示例中,用于设计数据路径电路的传统方法在设计优化的数据路径电路方面是无效的。例如,一些传统方法提出了优化逻辑电平、最大扇出和布线轨道的前缀电路结构。但是,由于前缀结构的物理设计复杂性(例如,由于电容负载或拥塞),优化逻辑电平、扇出和布线轨道可能无法优化面积、延迟和/或功率。一些用于数据路径电路设计的传统方法可以包括利用电路设计的启发式规则,这些规则要么尝试预测电路设计的物理度量,要么对电路设计执行随机修改。使用这种启发式方法生成的电路设计可能会使用不准确的分析模型进行评估。这些分析模型和启发式规则在生成最佳电路时可能无效,因为它们依赖于手工制作的启发式或受到分析评估指标的限制。例如,使用分析评估指标设计的前缀电路在进行物理合成时会降低质量(例如,看到延迟、面积或功耗的增加)——例如,当分析模型通过仿真并转换为预测物理模型时。由于物理合成比分析评估更密集,因此常规方法通常不能用于物理合成。因此,用于数据路径电路的传统电路设计技术没有被优化并且降低了使用这些数据路径电路的***(例如,存储器***)的性能。
本公开的方面通过使用具有机器学习模型的强化学习来设计数据路径电路(例如,并行前缀电路)来解决上述和其他缺陷。例如,第一处理设备(例如,执行代理)可以为机器学习模型提供数据路径电路的初始设计。机器学习模型可以修改设计以生成数据路径电路的第二设计。在一些示例中,修改设计可以包括修改与数据路径电路相关联的前缀图——例如,修改表示数据路径电路的前缀图的节点,其中每个节点表示数据路径电路的一个或更多个组件。例如,机器学习模型可以通过添加或移除节点来修改由初始设计表示的前缀图,以生成表示第二设计的第二前缀图。在修改之后,第一处理设备或第二处理设备可以处理第一设计和第二设计以确定与相应设计相关联的一个或更多个度量。例如,第一或第二处理设备可以确定与机器学习模型生成的初始设计和第二设计相关联的面积、功率和/或延迟。在一些实施例中,第二机器学习模型用于预测与初始和第二电路设计相关的面积、功率和/或延迟。在一些实施例中,电路合成工具用于预测初始和第二电路设计的面积、功率和/或延迟。
基于从初始设计到第二设计的转变,第一或第二处理设备可以生成指示面积、延迟和/或功率的净变化的奖励(例如,参数)。奖励可用于更新机器学习模型的训练——例如,机器学习模型可以根据收到的奖励进行强化学习。例如,机器学习模型可以接收奖励,确定先前的变化导致数据路径电路的面积、延迟和/或功率减少,并更新机器学习模型的一个或更多个节点的权重。更新的机器学习模型然后可以修改数据路径电路的第二设计以生成第三数据路径电路。可以重复该过程,并且可以继续使用机器学习模型对数据路径电路设计进行强化学习,直到确定没有进一步的改进正在输出(例如,没有对设计进行额外的修改以减少数据路径电路的延迟、面积和/或功率)或数据路径电路的延迟、面积和/或功率满足数据路径电路的目标延迟、面积和/或功率——例如,直到数据路径电路设计针对相应的延迟、面积和/或功率约束进行了优化。
实施例避免使用在常规电路设计技术中应用的手工制作的启发式(例如,诸如用于修剪的启发式)。在实施例中,可以训练机器学习模型以通过强化学习技术执行数据路径电路的电路设计,如本文所述。也就是说,机器学习模型学习以优化数据路径电路的当前设计的方式修改数据路径电路——例如,修改数据路径电路以减少数据路径电路的面积、功耗和/或延迟。例如,机器学习模型可以基于接收指示一个或更多个改进或减少的电路设计优化度量值的奖励和确定数据路径电路设计的先前修改是否导致改进或减少的电路设计优化度量值来训练,然后基于奖励调整机器学习模型的节点。在一些示例中,可以使用模型(基于/免费)、基于价值/策略或开/关策略强化学习技术来训练机器学习模型。在其他实施例中,机器学习模型可以利用深度神经网络(例如,卷积神经网络、变换器、图神经网络等)和/或决策树。通过利用强化学习,与其他解决方案相比,可以更彻底地优化数据路径电路的设计——例如,与使用传统方法设计的数据路径电路相比,可以减少数据路径电路的延迟、面积和/或功率使用传统方法。与数据路径电路的电路设计的现有方法相比,实施例产生了对于给定延迟具有较小面积和功率并且对于给定面积和功率具有较低延迟的电路设计。因此,***(诸如存储器***)的整体性能可以随着使用本公开的实施例而增加,因为与传统设计的数据路径电路相比,设计的数据路径电路可以消耗更少的功率、具有更少的延迟和/或消耗更少的面积。
图1示出了根据至少一个实施例的计算机***100。在至少一个实施例中,计算机***100可以是具有互连的设备和组件、SOC或其某种组合的***。在至少一个实施例中,计算机***100由处理器102形成,处理器102可以包括执行单元以执行指令。在至少一个实施例中,计算机***100可以包括但不限于诸如处理器102之类的组件,以采用包括逻辑的执行单元来执行用于处理数据的算法。在至少一个实施例中,计算机***100可以包括处理器,例如处理器系列、XeonTM,XScaleTM和/或StrongARMTM、可从加利福尼亚州圣克拉拉的英特尔公司获得的CoreTM或NervanaTM微处理器,尽管也可以使用其他***(包括具有其他微处理器、工程工作站、机顶盒等的PC)。
在至少一个实施例中,计算机***800可以用在其他设备中,例如手持设备和嵌入式应用程序。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(″PDA″)和手持PC。在至少一个实施例中,嵌入式应用程序可以包括微控制器、数字信号处理器(DSP)、SoC、网络计算机(″NetPC″)、机顶盒、网络集线器、广域网(″WAN″)交换机、或可以执行一个或更多个指令的任何其他***。在一个实施例中,计算机***100可以用在诸如图形处理单元(GPU)、网络适配器、中央处理单元的设备中以及诸如交换机(例如,高速直接GPU到GPU互连,诸如NVIDIA GH100NVLINK或NVIDIA Quantum 264端口InfiniBand NDR交换机)的网络设备中。
在至少一个实施例中,计算机***100可以包括但不限于处理器102,处理器102可以包括但不限于一个或更多个执行单元107,该执行单元107可以被配置为执行计算统一设备架构(″CUDA″)(是由加利福尼亚州圣克拉的NVIDIA公司开发的)程序。在至少一个实施例中,CUDA程序是用CUDA编程语言编写的软件应用程序的至少一部分。在至少一个实施例中,计算机***100是单处理器桌面或服务器***。在至少一个实施例中,计算机***100可以是多处理器***。在至少一个实施例中,处理器102可以包括但不限于CISC微处理器、RISC微处理器、VLIW微处理器、实现指令集组合的处理器或任何其他处理器设备,例如数字信号处理器。在至少一个实施例中,处理器102可以耦合到处理器总线110,处理器总线110可以在处理器102和计算机***100中的其他组件之间传输数据信号。
在至少一个实施例中,处理器102可以包括但不限于一级(″L1″)内部高速缓存存储器(″高速缓存″)104。在至少一个实施例中,处理器102可以具有单个内部高速缓存或多级内部缓存。在至少一个实施例中,高速缓存存储器可以驻留在处理器102的外部。在至少一个实施例中,处理器102还可以包括内部和外部高速缓存的组合。在至少一个实施例中,寄存器文件106可以将不同类型的数据存储在各种寄存器中,包括但不限于整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。
在至少一个实施例中,处理器102可以包括数据路径电路108。在一些示例中,数据路径电路108可以是并行前缀电路的示例。例如,数据路径电路108可以是加法器、增量器、减量器、优先级编码器和/或灰度到2进制转换器,可能包括连接的逻辑。在一些示例中,数据路径电路108也可以位于计算机***100的其他组件中。在一些实施例中,数据路径电路108可以消耗功率、占用相应的区域并具有相应的延迟。在一些实施例中,数据路径电路108延迟可以与计算机***108的组件的时钟频率成反比——例如,数据路径电路108的延迟可以用于设置计算机***108的组件的时钟频率。在一些实施例中,数据路径电路108的设计可以通过使用机器学习模型的强化学习来执行,该机器学习模型随着时间的推移被训练以减少或优化数据路径电路108的面积、功耗和/或延迟。例如,在数据路径电路108的设计期间,机器学习模型可以修改数据路径电路108的设计并且确定该修改是否导致给定数据路径电路108的面积、功率或延迟的减少。计算机***100可以受益于使用强化学习设计的优化数据路径电路。即,机器学习模型可以基于对数据路径电路的设计的最终修改是否导致数据路径电路108的面积、延迟和/或功率的减少来更新。经过多次迭代,机器学习模型可以被训练以选择导致数据路径电路的面积、功耗和/或延迟的最佳减少的修改。在一些实施例中,可以使用机器学习模型直到数据路径电路108的面积、功耗和/或延迟满足目标度量——例如,数据路径电路108的面积、功耗和/或延迟满足目标面积、功耗和/或延迟。通过利用强化学习来设计数据路径电路108,可以优化数据路径电路108的设计并且可以提高计算机***100的性能。
在至少一个实施例中,包括但不限于用于执行整数和浮点运算的逻辑的执行单元107也驻留在处理器102中。处理器102还可以包括微代码(″ucode″)只读存储器(″ROM″)存储某些宏指令的微代码。在至少一个实施例中,执行单元102可以包括用于处理封装指令集109的逻辑。在至少一个实施例中,通过将封装指令集109包括在通用处理器102的指令集中,以及相关联的电路以执行指令,可以使用通用处理器102中的封装数据来执行许多多媒体应用程序使用的操作。在至少一个实施例中,可以通过使用处理器的数据总线的全宽来更有效地加速和执行许多多媒体应用程序用于执行封装数据上的操作,这可以消除跨处理器的数据总线传输更小的数据单元以一次执行一个或更多个操作一个数据元素的需要。
在至少一个实施例中,执行单元也可以用在微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中。在至少一个实施例中,计算机***100可以包括但不限于存储器120。在至少一个实施例中,存储器120可以实现为DRAM设备、SRAM设备、闪存设备或其他存储设备。存储器120可以存储一个或更多个指令119和/或由可以由处理器102执行的数据信号表示的数据121。
在至少一个实施例中,***逻辑芯片可以耦合到处理器总线110和存储器120。在至少一个实施例中,***逻辑芯片可以包括但不限于存储器控制器集线器(″MCH″)116,并且处理器102可以通过处理器总线110与MCH 116通信。在至少一个实施例中,MCH 116可以向存储器120提供高带宽存储器路径118,用于指令和数据存储以及图形命令、数据和纹理的存储。在至少一个实施例中,MCH 116可以在处理器102、存储器120和计算机***100中的其他组件之间引导数据信号,并在处理器总线110、存储器120和***I/O 122之间桥接数据信号。至少在在一个实施例中,***逻辑芯片可以提供用于耦合到图形控制器的图形端口。在至少一个实施例中,MCH 116可以通过高带宽存储器路径118耦合到存储器120,并且图形/视频卡112可以通过加速图形端口(″AGP″)互连114耦合到MCH 116。
在至少一个实施例中,计算机***100可以使用作为专有集线器接口总线的***I/O 122将MCH 116耦合到I/O控制器集线器(″ICH″)130。在至少一个实施例中,ICH 130可以通过本地I/O总线提供到一些I/O设备的直接连接。在至少一个实施例中,本地I/O总线可以包括但不限于用于将***设备连接到存储器120、芯片组和处理器102的高速I/O总线。示例可以包括但不限于音频控制器129、固件集线器(″闪存BIOS″)128、无线收发器126、数据存储器124、包含用户输入接口125和键盘接口的传统I/O控制器123、串行扩展端口127(例如USB)和网络控制器134。数据存储器124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备或其他大容量存储设备。
图2示出了根据至少一个实施例的用于执行强化学习以生成数据路径电路的改进设计的示例***200。在一些实施例中,该***是或包括Q网络。在一些实施例中,***200是或包括深度Q网络。
强化学习(RL)是一类适用于顺序决策任务的算法。RL利用马尔可夫决策过程(MDP)形式,其中代理202尝试优化其环境204中的功能。MDP可以完全由状态空间S(具有状态s∈S)、动作空间A(a∈A),转移函数T:S×A→S和奖励函数R:描述。在MDP中,情节在离散的时间步长t=0,1,2,...,n上演变,其中代理202观察状态st(206)并使用策略π(at|st)以动作at(210)响应。环境204向代理202提供下一个状态st+1~T(st,at)212和奖励rt=R(st,at)214。代理202的任务是通过学习最优策略π*最大化回报(累积的未来奖励)。
Q网络可以通过称为Q学习的过程进行训练。Q学习是强化学习过程,它使模型执行一系列动作,最终产生最大的总奖励。这个总奖励也称为Q值。计算Q值的函数可以如下:
Q(st,at)←rt+γmaxaQ(st+1,a)
上述等式表明,处于状态st(206)并执行动作at(210)所产生的Q值是即时奖励r(st,at)(214)加上可能来自下一个状态st+1(212)的最高Q值,其中γ是折扣因子,它在未来进一步控制奖励的贡献。Q函数的递归定义允许将Q(St+1,at+1)的表达式展开到未来状态,如下所示:
Q(st,at)=rt+γrt+1+…+γn-1rt+n-1+γnQ(st+n,at+n)
代理202的机器学习模型240通过执行以下更新步骤来学习预测Q(st,at):
其中α表示学习率或步长,它控制新获得的信息覆盖旧信息的程度。
在实施例中,策略π下的状态-动作对(st,at)的Q值被定义为如果在状态st206处采取动作at210并且使用策略π采取未来动作时的预期回报,如下所述:
在实施例中,折扣因子γ∈[0,1]平衡短期与长期回报。Q-学习算法可以用随机策略启动代理202,并使用在其与环境(st,at,rt,St+1)204交互期间收集的经验通过以学习率α∈[0,1]更新Q来迭代到最优策略:
Q学习代理202的策略可以表示为π(·|st)=argmaxQ(st,a)。在一个实施例中,使用a∈-贪婪策略,其中随机动作a以概率∈被选择以增加在状态空间中的探索。在一个实施例中,∈在训练过程中被退火到零并且在执行评估时为零。在一个实施例中,可以在一系列∈值的情况下并行进行多次探索。
深度Q学习是Q学习的扩展,其实现一个或更多个机器学习模型(例如,机器学习模型240),例如神经网络,以基本上逼近上述Q值。在深度Q学习中,一个或更多个人工神经网络(例如,机器学习模型240)可用于逼近上述Q值函数。人工神经网络通常包括具有分类器或回归层的特征表示组件,将特征映射到所需的输出空间。例如,卷积神经网络(CNN)承载多层卷积滤波器。执行池化,并且可以在较低层解决非线性问题,在其上通常附加一个多层感知器,将卷积层提取的顶层特征映射到决策(例如修改前缀电路的设计状态)。深度学习是一类机器学习算法,它使用级联的多层非线性处理单元进行特征提取和转换。每个连续的层都使用前一层的输出作为输入。深度神经网络可以以有监督(例如,分类)和/或无监督(例如,模式分析)的方式学习。深度神经网络包括层次结构,其中不同的层学习对应于不同抽象级别的不同级别的表示。在深度学习中,每个级别都学习将其输入数据转换为稍微抽象和复合的表示。值得注意的是,深度学习过程可以自行学习哪些特征以最佳方式放置在哪个级别。″深度学习″中的″深度″是指数据经过转换的层数。更准确地说,深度学习***具有相当大的信用分配路径(CAP)深度。CAP是从输入到输出的转换链。CAP描述了输入和输出之间潜在的因果关系。对于前馈神经网络,CAP的深度可能是网络的深度,也可能是隐藏层数加一。对于循环神经网络,其中信号可能不止一次地通过层传播,CAP深度可能是无限的。
在实施例中,深度Q网络(DQN)可以使用第二目标网络来稳定训练以估计(st+1,a’)的Q值。第二目标网络的更新频率可能低于第一网络。在实施例中,DQN可以对体验重放缓冲区进行采样。在一个实施例中,第一机器学习模型用于确定预测并且第二神经网络用于确定目标。在实施例中,第二神经网络可以具有与第一神经网络相同的架构。然而,在一个实施例中,第二神经网络可以具有冻结参数,而第一神经网络可以具有可变参数。在一个实施例中,第二神经网络的更新频率低于第一神经网络。在一个实施例中,使用双DQN算法,该算法可以通过减少DQN中的高估来进一步改进训练。
在一些实施例中,***200可以包括代理(例如,演员、电路修改器等)202和环境(例如,模拟环境、电路合成器等)204。在一些实施例中,代理202可以包括一个或更多个机器学习模型240。机器学习模型240可以是例如深度神经网络(例如,卷积神经网络、变换器、图神经网络等)或决策树。例如,机器学习模型240可以是深度Q网络的神经网络。
在一些示例中,可以利用***200来设计参考图1所描述的数据路径电路108。在实施例中,数据路径电路(例如,前缀电路)的优化通过为它们的构造创建MDP被构建为RL任务。例如,可以训练RL***200选择并行前缀加法器的设计(例如,设计包括可能的连接逻辑的加法器的面积延迟最小化帕累托边界)。在一些实施例中,代理202被配置为修改数据路径电路的设计并基于修改来训练机器学习模型240。在一些实施例中,代理202可以在处理设备(诸如图形处理单元(GPU)或中央处理单元(CPU))上执行。在一些实施例中,***200可以包括可以并行操作并且共享学习的多个代理202。每个代理202可以在相同或不同的处理设备和/或处理设备的相同或不同核上执行。每个代理可以并行执行数据路径电路的修改——例如,多个代理202可以同时修改数据路径电路。这可以减少寻找目标或最佳数据路径电路设计所需的时间量。在一些实施例中,代理202(或多个代理)可以接收数据路径电路的设计状态206。在接收到设计状态206时,代理202(或多个代理)可以通过动作210修改设计状态206。在实施例中,每个代理202可以输出不同的动作210。在一些实施例中,可以通过机器学习模型240(例如,诸如深度神经网络)为代理202确定动作210。代理202还可以被配置为向环境204输出数据路径电路的修改状态。
在实施例中,数据路径电路108(例如,诸如并行前缀加法器的前缀电路)的设计可以使用前缀图来表示。前缀图是有向无环图(DAG),其中边可以表示信号或信号对,节点可以表示逻辑运算符。例如,并行前缀计算可以表示为有向无环并行前缀图,其中每个计算单元zi:j是对两个输入执行单个操作的图节点:其中表示一种运算,例如求和运算、进位运算、差分运算等。
因此,代理202可以接收表示数据路径电路的初始设计状态206的前缀图。代理202然后可以修改前缀图(例如,使用机器学习模型240)并且通过动作210输出表示数据路径电路的修改状态的新前缀图。在实施例中,修改前缀图可以包括添加节点、删除节点或移动前缀图中的节点。
图3示出了根据至少一些实施例的示例前缀图修改。数据路径电路可以由前缀图305、310表示,其中前缀图305表示数据路径电路(例如,加法器)的电路设计的初始状态,并且前缀图310表示修改或更新数据路径电路的状态。在前缀问题中,n个输入xn-1,xn-2,...x0和任意关联算子用于计算n个输出因此,每个输出yi取决于相同或更低索引(j≤i)的所有输入xj。
在示例中,由于算子的关联性,N输入前缀和计算可以以多种方式执行。例如,可以计算4输入前缀和的两种方法是:
在该示例中,引入附加项z3:2打破了y3对y2的依赖性,并允许它与y2并行计算,因此称为并行前缀。实施例记zi∶j以表示然后输出yi可以重写为zi:0,输入xi可以重写为zi:i。请注意,y0和x0可能都对应于z0∶0。
并行前缀计算可以表示为有向无环并行前缀图,其中每个计算单元zi:j是对两个输入执行单个操作的图节点:在实施例中,计算节点zi:j的最高和最低有效位(MSB,LSB)可以是(i,j)。使用这种表示法,节点(i,k)可以是(i,j)的上父节点,节点(k-1;j)可以是(i,.j)的下父节点。对应于上述示例的输入前缀和计算的前缀图在图4中示出为前缀图305和前缀图310。在这两个图中,节点(2,0)的上父节点和下父节点是(2,2)和(1,0)。
在至少一个实施例中,每个有效的N输入前缀图具有输入节点(i,i)、输出节点(i,0)用于1≤i≤N-1,以及输入/输出节点(0,0)。此外,在至少一个实施例中,每个非输入节点恰好具有一个上父节点(up)和一个下父节点(lp),使得:
LSB(节点)=LSB(lp(节点))
LSB(lp(节点))≤MSB(lp(节点))
MSB(lp(节点))=LSB(up(节点))-1
LSB(up(节点))≤MSB(up(节点))
MSB(up(节点))=MSB(节点)
在示例中,数据路径电路可以接收输入315-a到315-d并且产生输出325-a到325-d。在一些示例中,每个输入315和输出325可以表示由数据路径电路或到达数据路径电路的导线接收或产生的信号。在一些示例中,每个输入315可以表示数据路径电路被配置为合成的元素(或一些数据)。例如,在数据路径电路是二进制加法器的实施例中,每个输入可以表示加法器电路用来执行计算和的输入的位——例如,输入315-a可以表示第零位或一个位,并且输入315-d可以表示加法器电路要求和的数字的第三位或八位。因此,每个输出325可以表示数据路径电路在其操作期间生成的值或位。在一些实施例中,每个输出325可以从每个先前输入生成——例如,输出325-c可以从输入315-a到315-c生成,而输出325-d可以从输入315-a到315-d生成.
在一些实施例中,每个前缀图还可以包括一个或更多个节点。例如,前缀图305可以包括节点320-a到320-c。在一些实施例中,每个节点表示执行一个或更多个操作的数据路径电路的一个或更多个组件或与其相关联。例如,节点320-a可以表示数据路径电路108的一个或更多个逻辑门(例如,与(AND)门、或非(NOR)门、异或(XOR)门等)。在一些实施例中,节点320还可以表示缓冲区或其他类型的门。
在一些实施例中,数据路径电路的面积可以与表示数据路径电路的前缀图中的节点320的数量相关——例如,节点320的数量越多,与该数据路径电路相关联的面积就越大。例如,由前缀图305表示的数据路径电路的面积可以小于由前缀图310表示的数据路径电路的面积——例如,在前缀图305中有更少的节点320。在一些实施例中,前缀图还可以说明与数据路径电路相关的延迟。例如,数据路径电路的延迟可以与将输入315生成为输出325的最长路径相关。例如,输入315-a在用于生成前缀图305中的输出325之前经过三个节点320-d,而前缀图310的每个输入315经过不超过两个节点320。在这样的实施例中,与前缀图310相关联的数据路径电路的延迟可以小于数据路径电路108的延迟与前缀图305相关联。
参考图2和图3,在一些示例中,数据路径电路的每个设计状态206可以由唯一的前缀图来表示。在这样的实施例中,代理202可以接收表示数据路径电路108的当前设计状态206的前缀图。在一些实施例中,接收前缀图的网格表示,如下文详细阐述并参考图4。在示例中,如果前缀图305表示数据路径电路的初始设计状态206,则代理202可以在执行修改至此之前从环境204接收前缀图305(或前缀图的网格表示)。
在一些实施例中,代理202可以被配置为采取修改表示数据路径电路的当前设计状态206的前缀图的节点320的动作210。在至少一个实施例中,代理202可以从表示数据路径电路的当前设计状态206的前缀图中添加或移除节点320。例如,代理202可以将节点320-d添加到前缀图305。在一些实施例中,机器学习模型240可以确定要移除哪个节点320或确定将节点320添加到前缀图的何处。在一些实施例中,机器学习模型240接收前缀图的输入网格表示并输出修改的前缀图的网格表示,其中节点已被添加或移除。
在一些实施例中,代理202包括图有效性确定器244。可选地,图有效性确定器244可以包括在环境204中。图有效性确定器244可以评估更新的前缀图的有效性(例如,由机器学习模型240输出的)。如果更新的前缀图无效,则图有效性确定器244对前缀图执行一个或更多个进一步修改以使其有效。这样的修改可以是向前缀图添加或从前缀图中删除一个或更多个节点。在一些实施例中,如果图有效性确定器244确定动作210导致无效状态(例如,无效前缀图),则图有效性确定器244可以再次修改设计状态206。也就是说,图有效性确定器244可以验证动作之后的更新状态。在一些实施例中,图有效性确定器244可以通过添加或移除无效节点和/或确保每个节点遵循如下规定的规则来验证状态。
在实施例中,有效的N输入前缀图具有输入节点(i,i)、输出节点(i,0)用于1≤i≤N-1和如上所述的输入/输出节点(0,0)。例如,在前缀图310中,输入节点(1,1)到(3,3)对应于索引一(1)到三(3)处的输入315-b到315-d;输出节点(1,0)到(3,0)对应于节点320-a到320-c,它们在索引一(1)到三(3)处馈送输出325-b到325-d;输入/输出节点(0,0)对应于索引零(0)处的输入315-a,它也馈送索引零(0)处的输出325-a。
在一些实施例中,有效前缀图可以是其中每个非输入节点(例如,每个节点不是(0,0)、(1,1,)、(2,2)等)恰好具有两个父节点,上父节点和下父节点,它直接从中接收值。这些父节点可以是另一个非输入节点320或输入315。即,前缀图其中非输入节点320具有一个父节点或多于两个父节点是无效的。在一些实施例中,有效前缀图还具有每个节点320,其具有直接或间接从其接收值的输入索引的顺序连续范围。例如,节点320-b是具有范围(2,0)的有效节点,因为它从索引零(0)、一(1)和二(2)处的输入接收值。在节点的(MSB,LSB)表示法中,最高有效位(MSB)表示节点范围的上端或第一个元素,最低有效位(LSB)表示节点范围的下端或第二元素。随着范围从MSB增加到LSB,范围为(0,2)的节点320将无效。在一些实施例中,具有范围(6,3)但未从索引五(5)处的输入接收值的节点320的是无效的——例如,范围不连续,因为节点320在索引三(3)、四(4)和六(6)但不在五(5)处接收输入。
此外,每个非输入节点都可以直接从一个连续的上父节点和一个下父节点直接接收值。例如,如果节点320具有范围(3,1),并且具有范围(3,3)的上父节点,则节点320也必须具有范围(2,1)的下父节点。也就是说,节点320的上父范围必须具有MSB作为节点320的范围(例如,3),并且节点320的下父范围必须具有与节点320的范围(例如,1)相同的LSB,同时也是连续的——例如,包括在索引2处输入。因此,前缀图可以遵循上面关于上下父节点的规则。
在实施例中,N输入前缀图的动作空间A由任何非输入/输出节点的两个动作(添加或删除)组成——例如,其中LSB∈[1,N-2]并且MSB∈[LSB+1,N-1]。因此,|A|=(N-1)×(N-2)/2。通过T的环境演化可以通过以下方式维持有效的前缀图:1)在可以添加或删除额外节点以维持有效性的动作之后应用验证过程(例如,由图有效性确定器244执行);2)禁止可能被验证程序撤销的冗余动作。
在一个实施例中,在验证期间,节点的上父节点up(node)是具有相同MSB和次高LSB的现有节点。在一个实施例中,节点的下父节点lp(node)使用节点及其上父节点根据以下公式计算:
(MSBlp(node),LSBlp(node))=(LSBup(node)-1,LSBnode)
在一个实施例中,无效条件发生在节点的下父节点不存在时。在这种情况下,图有效性确定器244执行验证过程以添加任何丢失的下父节点。
在一个实施例中,***200(例如,环境204或代理202)维护有效前缀图中所有节点的列表(nodelist)。在一个实施例中,添加节点列表中已经存在的节点的动作是多余的并且被禁止。在一个实施例中,***200(例如,环境204或代理202)维护来自节点列表的节点的最小列表(minlist),这些节点不是其他节点的下父节点。在一个实施例中,删除节点的动作仅限于最小列表中的那些,否则可能会删除不存在的节点,或者是另一个节点的下父节点。对于此类修改,可以在验证期间将删除的节点添加回来。
环境204接收动作210(例如,前缀图更新)并确定下一个设计状态212和与当前设计状态206上的动作210相关联的奖励214。环境204可以从初始状态S0开始,其在一些实施例中可以随机选择。在一些示例中,环境204可以在一个或更多个处理设备(诸如CPU或GPU)上执行。在一些实施例中,***200可以包括多个环境204,每个环境204可以接收不同的动作(例如,数据路径电路的不同修改状态)。在一个示例中,多个环境204可以同时接收由不同代理202输出的数据路径电路的修改状态,以减少找到目标数据路径电路设计的时间量。在至少一个实施例中,环境204可以基于机器学习模型240选择的动作210来更新或修改设计状态206。在一个实施例中,环境204可以在动作210之后为状态212生成前缀图——例如,当动作210指定将具有值(3,2)的节点320添加到前缀图305时,环境可以生成前缀图310。在一些实施例中,代理202可以接收与修改状态相关联的前缀图310——例如,代理202可以接收前缀图310或前缀图的网格表示。
对于每个动作210(例如,对于数据路径电路的每个设计状态),环境204的前缀图评估器242可以估计数据路径电路的一个或更多个参数。例如,这样的估计参数可以包括数据路径电路的面积、数据路径电路的功耗和/或数据路径电路的延迟。前缀图评估器242然后可以将确定的参数与数据路径电路的一个或更多个目标和/或约束进行比较。此外,前缀图评估器242可以估计(或可以先前估计)用于数据路径电路的先前状态(例如,设计状态206)的类似参数。前缀图评估器242可以另外将数据路径电路的先前状态的参数与约束和/或目标进行比较。前缀图评估器242可以将初始设计状态206的参数和/或参数和目标之间的距离与更新的设计状态212的参数和/或参数和目标之间的距离进行比较。基于这种比较,前缀图评估器242可以输出奖励214。例如,如果与更新的设计状态相关联的参数比与先前设计状态相关联的参数更接近目标,则可以输出正奖励214。另一方面,如果与更新的设计状态相关联的参数比与先前设计状态相关联的参数更远离目标,则可以输出负奖励214。环境204还可以输出下一个设计状态212以输入到代理202中。
如果环境204确定在修改当前设计状态206的动作210之后的下一个设计状态212是有效的或者已经验证了修改后的设计状态,则环境可以计算下一个奖励214。在一些实施例中,奖励214作为动作210的结果,预测数据路径电路108的面积、功耗和/或延迟的净变化。也就是说,环境204可以计算初始状态(或当前设计状态206)的延迟、面积和功耗和下一个设计状态212的延迟、面积和功率,并确定两者之间的差以计算下一个奖励214。在一个实施例中,环境204可以如参考图8所描述的那样确定奖励。在一些实施例中,环境204可以通过参考图7描述的第二机器学习模型来确定奖励。也就是说,环境204可以包括第二机器学习模型,该模型预测在动作210之后数据路径电路的面积、延迟和功率的变化。在一些示例中,环境204可以确定奖励208(或下一个奖励214),如参考图5所述。
例如,环境204可以确定具有由前缀图305表示的设计的数据路径电路108面积、延迟和/或功耗。在一些示例中,环境204的前缀图评估器242可以在给定前缀图(例如,前缀图305)的情况下,利用合成工具505计算物理数据路径电路的面积、延迟和/或功率。在一些示例中,合成工具505可以确定要使用的逻辑门的类型、确定要使用的逻辑门的大小、确定逻辑门的连通性、确定缓冲区或其他组件是否将优化前缀图,等等。在一些示例中,经由合成工具505从前缀图生成潜在的物理数据路径电路可以增加或减少数据路径电路的面积、延迟或功耗。也就是说,由于物理和制造限制,生成潜在的物理数据路径电路会导致前缀图对特定电路实现的改变和修改。例如,如果前缀图的一个节点是四个其他节点的输入(例如,四个其他节点从该节点接收值),则合成工具505可以在生成潜在物理数据路径电路时***缓冲区,从而导致增加面积。
在一些实施例中,环境204的前缀图评估器242还可以确定具有由代理202输出的前缀图(例如,前缀图310)表示的设计的数据路径电路的面积、延迟和/或功耗(例如,这是输入前缀图的修改和验证的结果)。为了确定数据路径电路的面积、延迟和/或功率,环境可以使用合成工具505从前缀图生成预测的物理数据路径电路。对于每个计算(例如,对于诸如前缀电路305的初始前缀电路的计算和诸如前缀电路310的修改或更新的前缀电路的计算),前缀图评估器242可以确定图510的面积/延迟曲线。也就是说,环境204可以确定曲线515,该曲线515表示与相应区域的初始前缀图(例如,前缀图305)相关联的数据路径电路的延迟。类似地,环境204可以确定曲线520,其表示与相应区域的更新前缀图(例如,前缀图310)相关联的数据路径电路的延迟。
在一些实施例中,环境可以通过基于参考图6描述的权重约束确定延迟和面积的差异来计算动作210的奖励。例如,如果权重是一(1),则可以通过取点530和535之间的差来计算奖励——例如,基于参照图6描述的权重曲线。在本实施例中,通过动作210从前缀图305到前缀图310的修改减少了面积和延迟。因此,环境204可以计算下一个奖励214,其指示通过动作210减少的面积量和减少的延迟量。在其他实施例中,环境204可以计算指示面积增加、面积减少、延迟增加、延迟减少或其组合的下一个奖励214。尽管在图5中显示了面积与延迟的关系,环境204可以在计算下一个奖励214时确定面积、功率、延迟或其任何组合的差异。在一些实施例中,环境204可以将下一个奖励发送给代理202——例如,发送给机器学习型号240。
代理202可以被配置为接收下一个奖励214。在一些实施例中,代理202可以确定所采取的动作210是否优化了数据路径电路——例如,动作210是否导致数据路径电路的面积、功率和/或延迟减少。在一些实施例中,代理202可以使用强化学习来训练机器学习模型240。也就是说,代理202可以基于接收到的下一个奖励214来训练机器学习模型240。在一个实施例中,代理202基于奖励214和先前输出的动作210训练一个或更多个机器学习模型240。可以通过定义错误(例如,基于动作和奖励)并使用诸如随机梯度下降和反向传播之类的技术来调整网络在其所有层和节点上的权重,以使误差最小化。
在一个示例中,如果下一个奖励214指示面积、功率或延迟的减少,则机器学习模型240可以继续采取类似于导致减少那些的动作210。如果下一个奖励214指示面积、功率或延迟的增加,则机器学习模型240可以被训练以通过调整机器学习模型中的节点的权重来采取其他动作210。在一些实施例中,机器学习模型240可以使用模型(基于/免费)、基于价值/策略或开/关策略强化学习技术来训练。
如上所述,在机器学习模型240用作深度Q网络的组件的实施例中,机器学习模型240可以接收设计状态206的输入,预测动作210的面积和延迟减少。例如,机器学习模型240可以接收状态st206作为输入并预测:
机器学习模型的输入可以是N×N×4张量,其中四个通道将节点特征编码为:
1)如果节点(MSB,LSB)在节点列表中,则为1,否则为0;
2)如果节点(MSB,LSB)在最小列表中,则为1,否则为0;
3)节点列表中节点的级别(MSB,LSB),否则为0;
4)节点列表中节点(MSB,LSB)的扇出,否则为0;
其中节点列表是有效前缀图中的所有节点320,最小列表是节点列表中不是其他节点的下父节点的所有节点320,节点级别是从前缀图中的输入节点开始的拓扑深度(例如,它和相应的输入315之间节点的数量320)和节点的扇出是指依赖于它的节点320的数量。随着时间的推移,机器学习模型240通过强化学习技术被训练以采取最优化数据路径电路108的设计的动作210——例如,减少数据路径电路108的面积、功率和/或延迟。
在一些实施例中,代理202可以被配置为针对代理202要优化的每个独特电路分别训练机器学习模型240的不同实例。例如,代理202可以针对32位加法器电路训练机器学习模型240并且针对64位加法器电路单独训练机器学习模型240的另一个实例。在一些实施例中,机器学习模型240的不同实例可以针对每个相应属性进行训练——例如针对数据路径电路的每个目标延迟时间进行训练以尽可能地减少面积。通过将强化学习与机器学习模型结合使用,与其他解决方案相比,数据路径电路的设计可以更加优化——例如,可以减少数据路径电路的延迟、面积和/或功率。因此,包含数据路径电路的任何***(例如,存储器***)的整体性能可以随着数据路径电路消耗更少的功率、具有更少的延迟以及在存储器***中占用更少的面积而增加。
在一些示例中,代理202和/或环境204可以使用强化学习来训练机器学习模型240以采取优化数据路径电路108的面积、延迟和/或功率的动作210,如本文所述。在一些实施例中,机器学习模型240可以基于编程的约束或值来确定是添加还是移除节点320。例如,机器学习模型240可以受最大电路宽度、数据路径电路的最大到达时间、面积与延迟之间的权重(或面积与功率、功率与延迟、功率与面积或其任何组合)、技术库、合成工具、电路发生器选项和/或数据路径电路的其他目标参数的约束。这样的约束可以由环境204提供并且在实施例中用于确定奖励214。
在示例中,可以训练机器学***衡。在其他实施例中,可以训练机器学习模型240以针对给定区域、给定功耗和/或给定延迟修改数据路径电路。
在一些实施例中,机器学习模型240可以受电路发生器选项的约束。也就是说,可以有不同的方式来为相同的并行前缀图生成数据路径电路——例如,数据路径电路的预测物理实现可以基于选择哪些选项来预测物理实现而改变。例如,对于加法器数据路径电路,前缀加法器电路通常执行以下功能:
O(n+1)=A(n)+B(n)+C(1)
其中″O″是长度为n+1位的输出,″A″和″B″是长度为″n″位的二进制输入,″C″是具有长度为一(1)位的输入。在一些实施例中,电路生成器可以不同的选项导致不同的功能和结果。例如,以下功能是可能的:
1)没有带入(例如,没有″C″值):O(n+1)=A(n)+B(n);
2)没有带出:O(n)=A(n)+B(n)+C(1);
3)没有带入或带出:O(n)=A(n)+B(n);
4)当输入″A/B/C″的一位或更多位在值一(1)和零(0)处固定时;在一些实施例中,***200可以在上面列出的任何选项之间进行选择。在这样的示例中,代理202或环境204可以基于选择哪个选项从相同的并行前缀图生成不同类型的电路——例如,相同的前缀图可以基于电路发生器的选定设置导致不同的面积、延迟、功耗或其任何组合。因此,代理202基于为数据路径电路选择的特定设置和选项进行训练。在一些实施例中,前缀加法器的生成还可以受到循环选择(例如,Weinberger或Ling)或按位进位传播逻辑(XOR或OR)的选择的影响。在一些实施例中,上面列出的电路生成器的各种选项可以应用于加法器电路——例如,不适用于其他数据路径电路,诸如优先级编码器电路。
在一些实施例中,***200可以选择在数据路径电路108中包括连接逻辑。例如,环境204可以使用电路生成器,该电路生成器生成对应于前缀图的前缀电路以及连接到前缀电路的输入和/或输出的附加电路逻辑。在这样的示例中,基于连接到前缀电路的特定附加电路逻辑来训练代理202。在这样的示例中,前缀图评估器242可以评估前缀电路和附加电路逻辑组合的面积、功耗和/或延迟。
在其他实施例中,机器学***衡的约束。例如,前缀图评估器可以在计算奖励214时使用估计的面积、功耗和/或延迟之间的加权平衡。也就是说,如上所述,修改数据路径电路以减少与数据路径电路相关的面积、功率或延迟可以导致数据路径电路的不同特性增加——例如,减少延迟可以导致数据路径电路的面积增加。例如,修改前缀图305以生成前缀图310可以导致数据路径电路的延迟减少但数据路径电路的面积增加。因此,可以训练机器学习模型240以根据分配给延迟和面积的相应权重来优化数据路径电路。
在一个示例中,图6示出了数据路径电路的延迟和面积之间的曲线上的可能加权值。在一些实施例中,加权值610表示一(1)的权重值。在这样的实施例中,可以确定导致机器学习模型240仅寻求优化(最小化)延迟的奖励——例如,强化学习训练机器学习模型240采取减少延迟而不考虑减少或增加数据路径电路的面积的结果的动作210。在一些实施例中,加权值602表示零(0)的权重值。在这样的实施例中,机器学习模型240被训练以仅优化(最小化)数据路径电路的面积——例如,强化学习训练机器学习模型240采取动作210来减少面积而不考虑增加或减少数据路径电路的延迟的结果。加权值608可以表示对延迟的优化比对面积的优化更多,而加权值604可以表示对面积的优化比对延迟的优化更多。在一些实施例中,加权值606可以表示对延迟和面积的同等优化。
在一些实施例中,机器学习模型240和/或环境204可以使用以下公式来确定在延迟和面积之间优化多少:
其中Qarea与优化数据路径电路的面积相关,Qdelay与优化数据路径电路的延迟相关,st+1表示下一个设计状态212,″a″表示采取的动作(例如,从前缀图中添加或删除哪个节点320)并且″w″表示预定权重。在这样的实施例中,权重″w″可以具有介于零(0)和一(1)之间的值。通过利用加权平衡,机器学***衡,面积和功率或延迟和功率之间的加权平衡也是可能的。在一些实施例中,面积、延迟和功率之间的加权平衡也是可能的——例如,图600可以是表示机器学习模型240和/或环境204应该在功率、延迟和面积之间优化加权的三维图,。
在一些实施例中,使用网格表示来表示前缀图,如图4所示。前缀图的网格表示的使用使得前缀图能够被机器学习模型处理。网格表示是网格中前缀图的简明表示(例如,在二维网格中)。前缀图的网格表示的每一行和每一列可以与前缀图的不同输入相关联,并且行和列的每个交叉点可以与前缀图的节点相关联。在一个实施例中,***200的状态空间S由所有有效的N输入前缀图组成。N输入图可以用N×N网格表示,其中行表示MSB,列表示LSB。注意,在实施例中,输入节点(MSB=LSB)位于对角线上,输出节点将位于第一列(LSB=0),并且对角线上方的位置(LSB>MSB)不能包含节点。在实施例中,剩余的(N-1)(N-2)/2个位置,其中非输入/输出节点可能存在或不存在定义N输入前缀图的状态空间。例如,32输入图可能具有|S|=O(2465)的状态空间,由于某些可能的节点组合无效,因此精确值较低。
参考图3-4,网格的每个值可以表示前缀图305上的输入315(例如,输入节点)或潜在节点320。在这样的实施例中,每个节点320可以在网格405上具有范围(例如,位置),其对应于其在前缀图305上的位置。每个范围可以包括作为其第一元素的行索引和作为其第二元素的列索引。例如,节点320-a可以由范围420-a(1,0)表示——例如,节点320-a接收第一输入(例如,1或315-b)和第二输入(例如,0或315-a)。
如参考图3所描述的,前缀图的每个输出325直接或间接地从每个先前输入315接收值。有效的前缀图将具有与连续范围相关联的节点320——例如,(2,0)或(3,1),其中节点320分别在索引0-2或1-3处接收输入。在这样的实施例中,第一元素小于第二元素的范围是不可能的——例如,(0,3)不是节点的可能范围。
在一些实施例中,机器学习模型240可以接收数据路径电路的初始状态的网格表示,并且可以选择节点320用于从前缀图中添加或移除。机器学习模型240然后可以输出节点的网格表示以用于添加或移除。例如,用于Q网络的机器学习模型240可以在每个节点位置用Q值填充输出网格表示。任何位置的Q值将对应于Q值,用于对应于该位置的节点320的添加动作(如果节点不存在)或移除动作(如果节点存在)动作。在一些实施例中,机器学习模型240可以输出相同维度的多个网格表示。例如,如果机器学习模型240是针对数据路径电路108的面积和延迟进行优化的Q网络,则它可以输出Qarea的网格表示和Qdelay的网格表示。在这样的示例中,将选择具有最高加权Q值的动作来从前缀图中添加或移除节点320。
在一些实施例中,机器学习模型240可以接收当前设计状态206的网格表示。例如,当当前设计状态206由前缀图305表示时,机器学习模型240可以接收生成的网格405。在一些实施例中,机器学习模型240可以通过选择要添加到网格405或从网格405移除的节点来修改前缀图305。在一个实施例中,机器学习模型240可以选择添加节点420-d(例如,(3,2))到网格405以生成网格410。在至少一些实施例中,网格410可以表示对前缀图305的修改。例如,通过将范围420-d添加到用于前缀图的网格,前缀图305可以被修改以生成带有附加节点320-d的前缀图310的网格。
在实施例中,代理202(例如,代理202的机器学习模型240)可以输出动作。输出动作可以是更新前缀图的动作(例如,要添加的新节点或要删除的现有节点)。在示例中,输出要在(3,2)处添加的节点的网格表示。环境204接收输出动作210(例如,添加动作连同网格表示中的节点位置(3,2))。该环境可以被配置为对前缀图、前缀图的网格表示或前缀图的其他表示进行操作。在一些实施例中,环境204接收前缀图(例如,(3,2))的网格表示上的节点位置,并在从先前状态的网格(例如,网格405)更新到网格(例如,网格410)之后,生成前缀图310。。
如本公开的其他地方所述,机器学习模型240可以使用强化学习来训练,使得所采取的动作210针对面积、功耗和/或延迟优化数据路径电路。即,机器学习模型240可以被训练,使得它,例如,确定添加具有范围(3,2)的节点320-d以优化与数据路径电路相关联的一个或更多个属性——例如,因此它根据加权约束减少延迟、面积、功率和/或其任何组合。如别处所述,在一些实施例中,强化学习算法中的某些参数(例如折扣因子)可以被配置为训练机器学习模型240被训练为随着时间的推移选择一系列动作优化与数据路径电路108相关联的一个或更多个属性。
图7示出了根据至少一个实施例的使用强化和机器学习的数据路径电路设计的示例图700。图700中所示的强化学习可以通过包括硬件、软件、固件或其任何组合的处理逻辑来执行。在至少一个实施例中,图700中所示的操作包括由代理202、机器学习模型240和/或环境204执行的操作,如参照图2所描述的。尽管以特定的序列或顺序显示,除非另有说明,可以修改处理的顺序。因此,所示实施例应仅被理解为示例,并且所示过程可以以不同的顺序执行,并且一些过程可以并行执行。此外,在各种实施例中可以省略一个或更多个过程。因此,并非在每个实施例中都需要所有过程。
在操作705,代理202可以接收数据路径电路的当前设计状态206。在一些示例中,代理202可以接收对应于数据路径电路的当前设计状态206的前缀图。在至少一个实施例中,代理202可以接收或生成前缀图的网格表示,如参考图4所描述的。在一些实施例中,代理202可以将当前设计状态206的网格表示发送到机器学习模型240。在一些实施例中,代理202还可以接收奖励(例如,参考图2描述的奖励208)。在这样的实施例中,代理202可以基于接收到的奖励用强化技术训练机器学习模型240。例如,如果奖励指示机器学习模型240采取的先前动作导致与数据路径电路相关联的面积、延迟或功率减少,则代理可以训练机器学习模型240继续采取类似动作。
在操作710,机器学习模型240可以接收并行前缀电路的网格表示。在一些实施例中,机器学习模型240可以选择动作来修改前缀图的网格表示。在一些实施例中,机器学习模型240可以选择从前缀图中添加或移除节点的动作——例如,机器学习模型可以在网格表示上选择一个范围,其对应于在前缀图上添加或删除节点,如参考图2和图4所描述的。
在操作715,代理202可以将动作(例如,在(3,2)处添加节点)传输到环境204。
在操作720,环境204可以基于对前缀图的网格表示的修改来计算下一个奖励214——例如,环境204可以基于从代理202接收到的动作来修改网格表示,然后相应地修改前缀图。在一些实施例中,环境204可以首先确定接收到的动作是否导致设计状态206有效或无效,如参考图2所描述的。在一些实施例中,如果环境204确定动作导致状态无效,则环境204可以通过将无效节点添加到前缀图或从前缀图移除无效节点来验证状态。在一些实施例中,环境204可以在确定应用从代理202接收的动作之后的修改状态有效之后或在验证应用从代理202接收的动作之后的修改状态之后生成表示下一个设计状态212的前缀图。在一些实施例中,环境204可以在生成表示下一设计状态212的前缀图之后计算当前设计状态206和修改后的下一设计状态212的面积、延迟和/或功率。在一个实施例中,环境204可以通过对设计状态206和下一个设计状态212中的每一个执行电路合成来计算下一个奖励214。在这样的实施例中,环境204可以确定设计状态206和下一个设计状态212的面积、延迟和/或功率并确定两者之间的差异以确定下一个奖励214,如参考图5所描述的。
在一些实施例中,环境204可以包括度量预测器模型(例如,第二机器学习模型或第二模型)以计算下一个奖励214。在这样的实施例中,可以训练度量预测器模型来预测数据路径电路的每个状态(例如设计状态206和下一设计状态212)的延迟、面积、和/或功率。例如,最初,环境204可以通过使用电路合成确定修改的数据路径电路的面积、功率和/或延迟。数据库可以存储由环境生成的每个状态,并且面积、功率和/或延迟度量与相应状态相关联。例如,数据库可以存储设计状态206、下一个设计状态212,以及设计状态206和下一个设计状态212的面积、功率和/或延迟。度量预测器模型可以处理存储在数据库的数据并接受训练以预测相应状态的面积、功率和延迟。也就是说,可以训练度量预测器模型以接收状态作为输入,并基于处理存储在数据库中的数据来预测与状态相关的面积、延迟和/或功率——例如,基于处理先前的状态和它们各自的延迟、面积和功率。在实施例中,可以训练度量预测器模型以接收前缀图的网格表示作为输入。因此,当训练度量预测器模型时,环境可以将与给定状态相关联的前缀图(或网格表示)发送到度量预测器模型。在这样的实施例中,度量预测器模型可以预测相应状态的延迟、面积和/或功率。为了计算奖励,环境204可以找到度量预测器模型输出的预测延迟、面积和/或功率之间的差异。例如,环境204可以将设计状态206和下一个设计状态212提供给度量预测器模型。在这样的实施例中,度量预测器模型可以预测设计状态206和下一个设计状态212的延迟、面积和/或功率。环境204然后可以找到下一个设计状态212的延迟、面积和/或功率和设计状态206的延迟、面积和/或功率之间的差异用于确定下一个奖励214。在一些实施例中,环境204然后可以将奖励214发送回代理202。在这样的实施例中,代理202可以利用下一个奖励214通过本文描述的强化学习技术来训练机器学习模型240。在一些实施例中,使用机器学习来预测面积、延迟和功率可以比执行电路合成占用更少的资源和消耗更少的时间。
图8示出了根据至少一个实施例的使用机器学习模型240执行强化学习的示例***800。在一些实施例中,***800可以包括参照图2描述的代理(例如,演员、电路修改器等)202和环境(例如,模拟环境、电路合成器等)204。在一些实施例中,***800可以包括并行电路合成810、数据库810和优化器825。在一些实施例中,代理202可以包括参照图2描述的机器学习模型240。在一些示例中,优化器825可以包括在代理202中。在至少一个实施例中,***200可以用于设计如参考图1所描述的数据路径电路108。
如参考图2所述,代理202可以被配置为选择动作来修改数据路径电路的状态。在一些实施例中,环境204可以被配置为应用修改、在需要时验证修改后的状态并且将下一个状态(例如,新状态805)返回到代理202。在一些示例中,环境204还可以转换在将代理202采取的动作210应用到前缀图之后生成的状态-例如,将通过应用来自代理202的动作生成的网格转换成如参考图4所描述的前缀图。在一些实施例中,***800可以继续这个过程,直到数据路径电路的设计被优化,如参考图2所述。在一些实施例中,***800可以包括多个代理202和多个环境204来执行该过程。
在至少一个实施例中,***800可以独立于应用来自代理202的动作805计算从初始状态805到新状态805的转换的奖励。也就是说,与图2和图7所示的方法相比,***800示出了替代方法以利用强化学习来设计数据路径电路108。
例如,在一个实施例中,代理202可以将所采取的动作(例如,添加或移除节点)发送到环境204和数据库820两者。类似地,环境204可以将当前状态发送到代理202以及数据库820和并行电路合成810。在这样的实施例中,环境204和代理202可以循环通过动作和状态,而不需要等待电路合成810将前缀图转换为预测的物理数据路径电路来确定奖励——例如,代理202和环境204可以在更短的持续时间内循环通过状态和动作。
在一些实施例中,并行电路合成810可以包括将前缀图合成到预测的物理数据路径电路中的一个或更多个CPU。在这样的实施例中,并行电路合成810还可以计算从环境204接收到的每个状态805的奖励——例如,对于与相应状态805相关联的每个前缀图。也就是说,并行电路合成810可以确定从环境204接收到的每个前缀图和状态805的面积、功率和延迟。在一些实施例中,并行电路合成810可以计算多个奖励815并且同时合成多个前缀图——例如,包括在并行电路合成810中的每个CPU可以计算不同状态805的奖励815。在一些示例中,利用并行电路合成810可以减少计算每个状态805的奖励815的时间。在一些实施例中,并行电路合成810可以将为每个状态805计算的奖励815发送到数据库820。
在一些实施例中,数据库820可以被配置为存储状态805、动作210和奖励815——例如,在从第一状态805到第二状态805的转变时采取的每个动作210的奖励815。在一些在实施例中,数据库可以向数据库发送状态805、动作210和奖励815——例如,发送第一状态805、第二状态805、相应动作210用于从第一状态805转到第二状态805,针对修改计算奖励。在一些实施例中,优化器825可以访问状态805、动作210和奖励815的数据库。
在一些实施例中,优化器825可以从数据库接收状态805、动作210和奖励815。例如,优化器825可以接收第一状态805、第二状态805、用于从第一状态805转到第二状态805的相应动作210以及为修改计算的奖励815。优化器825可以确定所采取的动作210是否导致数据路径电路的面积、延迟或功率的减少。在一些示例中,优化器825可以响应于确定所采取的动作210是否减少了数据路径电路108的面积、功率和/或延迟来训练机器学习模型240。例如,如果优化器825确定动作210未能减少数据路径电路的面积、延迟和/或功率,优化器825可以更新或训练机器学习模型240以避免重新采取这样的动作210。因此,机器学习模型240可以使用强化学习来训练。在这样的实施例中,更新的机器学习模型240可以采取不同的动作210——例如,使代理202响应于被训练或更新而采取不同的动作210。在那,最初代理202可以使用初始机器学习算法采取多个动作802。当代理202循环通过多个动作时,并行电路合成810可以同时计算所采取的每个动作210的奖励815。因为合成比执行动作210花费更长的时间,所以代理202可以在计算任何奖励815之前继续循环几个动作210。在一些实施例中,当计算奖励815时,数据库可以将信息发送到优化器825。因此,可以更新机器学习模型240并且使代理采取使用更新的机器学习算法的动作210。代理202然后可以使用更新的机器学习算法循环通过动作210,直到优化器825计算并使用附加奖励815来第二次更新机器学习算法。***800可以继续使用该方法——例如,在周期性地更新机器学习模型240的同时独立于代理202和环境204动作210循环计算奖励——直到满足数据路径电路108的最优目标参数。
图9A示出了用于设计具有强化学习的数据路径电路的方法900的流程图。方法900可以由包括硬件、软件、固件或其任何组合的处理逻辑来执行。在至少一个实施例中,方法900由如参考图2描述的***200执行。尽管以特定的序列或顺序显示,除非另有说明,可以修改处理的顺序。因此,所示实施例应仅被理解为示例,并且所示过程可以以不同的顺序执行,并且一些过程可以并行执行。此外,在各种实施例中可以省略一个或更多个过程。因此,并非在每个实施例中都需要所有过程。说明数据路径电路的方法设计的其他图是可能的。
在操作905,处理逻辑可以接收数据路径电路的第一设计状态。在一个实施例中,数据路径电路可以包括并行前缀电路。在至少一个实施例中,处理逻辑可以响应于接收到第一设计状态而生成表示第一设计状态的第一并行前缀图。也就是说,处理逻辑可以利用第一并行前缀图来表示并行前缀电路的第一设计状态。在至少一个实施例中,处理逻辑可以生成第一并行前缀图的网格表示。
在操作910,处理逻辑可以将数据路径电路的第一设计状态输入到机器学习模型中。在至少一个实施例中,处理逻辑在生成网格表示之后将第一并行前缀图的网格表示输入到机器学习模型中。
在操作915,处理逻辑使用机器学习模型执行强化学习,以使机器学习模型输出数据路径电路的最终设计状态。最终的设计状态可以在强化学习的多次迭代之后实现,其中每次迭代都会生成和评估不同的设计状态,并且对于每次迭代,机器学习模型都经过训练以产生新的设计状态,这些状态比以前的设计状态有所改进。在一些实施例中,数据路径电路的最终设计状态与更接近与第一设计状态相关联的目标参数值的最终参数值相关联。也就是说,处理逻辑可以使用强化学习来优化数据路径电路的设计,如参考图2所描述的。在一些实施例中,第一参数值和最终参数值可以表示对与数据路径电路相关联的面积、与数据路径电路相关联的延迟、与数据路径电路相关联的功耗或任何的组合的预测。因此,数据路径电路的最终设计状态与具有小于第一参数值的面积、延迟或功耗的最终参数值相关联。在一些实施例中,第一参数值和第二参数值可以表示对加权值的预测——例如,参考图6描述的加权值。在一些实施例中,机器学习模型输出动作,其使处理逻辑构造表示代表最终设计状态的最终前缀图的网格。也就是说,机器学习模型可以输出动作,处理逻辑可以利用动作生成网格表示并将网格表示转换为表示最终设计状态的前缀图。在一些实施例中,机器学习模型可以迭代地将数据路径电路的设计状态从第一设计状态修改为最终设计状态,其中在每次迭代期间,机器学习模型移除或添加数据路径电路的图的节点,图的每个节点与数据路径电路的一个或更多个组件相关联——例如,与数据路径电路的一个或更多个逻辑门相关联。
图9B示出了用于设计具有强化学习的数据路径电路的方法902的流程图。方法902可以由包括硬件、软件、固件或其任意组合的处理逻辑来执行。在至少一个实施例中,方法902由如参考图2描述的***200执行。尽管以特定的序列或顺序显示,除非另有说明,可以修改处理的顺序。因此,所示实施例应仅被理解为示例,并且所示过程可以以不同的顺序执行,并且一些过程可以并行执行。此外,在各种实施例中可以省略一个或更多个过程。因此,并非在每个实施例中都需要所有过程。说明数据路径电路的方法设计的其他图是可能的。
在方法902的操作920,处理逻辑可以接收数据路径电路的设计状态。在一些实施例中,处理逻辑可以接收数据路径电路的第一设计状态。在一些实施例中,处理逻辑可以生成表示设计状态的并行前缀图——例如,表示第一设计状态的第一并行前缀图。在一些实施例中,处理逻辑可以生成并行前缀图的网格表示——例如,第一并行前缀图的第一网格表示。在一些实施例中,处理逻辑可以将网格表示输入到机器学习模型。
在操作925,处理逻辑可以使用机器学习模型来处理数据路径电路的设计状态以生成下一个设计状态——例如,第二设计状态。在一些实施例中,机器学习模型输出环境应用于数据路径电路的设计状态的动作以生成第二设计状态——例如,修改的设计状态。在一些实施例中,机器学习模型可以输出网格表示中的节点以添加到第一设计状态或从第一设计状态删除以生成第二设计状态。也就是说,机器学习模型可以输出处理逻辑可以用来构造与第二设计状态相关联的第二图的网格表示的动作——例如,与下一个设计状态相关的第二并行前缀图的第二网格表示。在一些实施例中,处理逻辑可以将图的第二网格表示转换为第二并行前缀图。
在操作928,处理逻辑可以确定第二设计状态是否有效。如果第二设计状态无效,则方法进行到操作929。如果确定第二设计状态有效,则方法继续到操作930。在操作929,处理逻辑将数据路径电路的第二设计状态修改为产生一个有效的更新的第二设计状态——例如,通过添加和/或删除附加的节点来验证并行前缀图。在一些实施例中,处理逻辑可以将第一和第二设计状态转换为数据路径电路实现。然后该方法继续到操作930。
在操作930,处理逻辑可以确定第一设计状态的第一参数值并且确定第二设计状态的第二参数值——例如,确定第一设计状态的第一参数值并且确定第二设计状态的第二参数值。在一些实施例中,处理逻辑可以确定与设计状态和下一设计状态相关联的面积、延迟和功率——例如,第一参数值和第二参数值可以表示面积、延迟和功率。处理逻辑然后可以基于第一面积、延迟和/或功率(例如,基于这些值的第一加权组合)确定第一参数值并且基于第二面积、延迟和/或功率确定第二参数值(例如,基于这些值的第一加权组合)。
在一些实施例中,处理逻辑可以使用第二模型(例如,第二机器学习模型或度量预测器模型)来处理第一设计状态,其中第二模型输出与第一设计状态相关联的第一参数值。类似地,处理逻辑可以使用第二模型处理第二设计状态,其中第二模型输出与第二设计状态相关联的第二参数值——例如,度量预测器模型可以处理第一设计状态和第二设计状态以输出第一个参数值和第二参数值。在这样的实施例中,处理设备可以将第一设计状态的第一图的网格表示作为第一输入发送到第二模型以接收第一参数值并且将第二设计状态的第二图的网格表示作为第二输入发送到第二模型以接收第二参数值——例如,度量预测器模型可以基于接收第一图和第二图的网格表示来输出第一参数值和第二参数值。在一些实施例中,第二模型可以接收第一设计状态的电路实现作为第一输入以确定第一参数值并且接收第二设计状态的电路实现作为第二输入以确定第二参数值——例如,度量预测器模型可以接收第一并行前缀图和第二并行前缀图。在一些实施例中,处理逻辑可以使用电路合成工具来处理第一设计状态和第二设计状态。在这样的实施例中,电路合成工具可以输出第一参数值和第二参数值。在一些实施例中,电路合成工具可以与输出数据路径电路的第二设计状态的机器学习模型同时处理第一设计状态。
在操作935,处理逻辑可以更新机器学习模型——例如,基于机器学习模型选择的修改是减少还是增加了与数据路径电路相关联的面积、延迟、功耗或其任何组合。在更新机器学习模型之后,在操作938,处理逻辑可以确定是否已经满足一个或更多个停止标准。例如,在设计状态的阈值迭代次数之后,在一个或更多个目标目标(例如,对于面积、功率和/或延迟)被满足之后,在没有进一步改进一个或更多个参数值的情况下执行了阈值数量的设计状态迭代之后,等等,停止标准可以满足。如果已经满足停止标准,则该方法可以进行到操作945,在该操作可以为数据路径电路选择最终设计状态。最终设计状态可以是例如最近的设计状态或在获得最佳数据路径电路度量(例如,最佳面积、延迟、功耗或其任何组合)的迭代期间遇到的设计状态或的参数最接近目标。如果没有满足停止标准,则在操作940,处理逻辑可以选择下一个设计状态以输入到机器学习模型中。下一个设计状态可以是例如最近的设计状态或在迭代期间遇到的另一个设计状态。该方法可以返回到操作925,其中使用机器学习模型处理下一个设计状态。处理逻辑可以利用更新的机器学习模型。例如,处理逻辑可以使用更新的机器学习模型来处理设计状态或下一个设计状态——例如,处理逻辑可以使用机器学习模型来处理第一设计状态或第二设计状态。在一些实施例中,更新的机器学习模型输出数据路径电路的第三设计状态,其是第一设计状态或第二设计状态的修改。在至少一个实施例中,处理逻辑可以确定与第三设计状态相关联的第三参数值,第三参数值比第一参数值或第二参数值更接近目标。该过程可以重复第四、第五和更多设计状态,直到满足停止标准。
图10A示出了用于执行与一个或更多个实施例相关联的推理和/或训练操作的推理和/或训练逻辑1015。下面结合图10A和/或图10B提供关于推理和/或训练逻辑1015的细节。
在至少一个实施例中,推理和/或训练逻辑1015可以包括但不限于代码和/或数据存储1001,用于存储前向和/或输出权重和/或输入/输出数据,和/或在一个或更多个实施例的方面中配置被训练为和/或用于推理的神经网络的神经元或层的其他参数。在至少一个实施例中,训练逻辑1015可以包括或耦合到用于存储图形代码或其他软件以控制时序和/或顺序的代码和/或数据存储1001,其中权重和/或其他参数信息被加载以配置逻辑,包括整数和/或浮点单元(统称为算术逻辑单元(ALU))。在至少一个实施例中,代码(诸如图代码)基于该代码所对应的神经网络的架构将权重或其他参数信息加载到处理器ALU中。在至少一个实施例中,代码和/或数据存储1001存储在使用一个或更多个实施例的方面训练和/或推理期间的输入/输出数据和/或权重参数的前向传播期间结合一个或更多个实施例训练或使用的神经网络的每个层的权重参数和/或输入/输出数据。在至少一个实施例中,代码和/或数据存储1001的任何部分都可以包括在其他片上或片外数据存储内,包括处理器的L1、L2或L3高速缓存或***存储器。
在至少一个实施例中,代码和/或数据存储1001的任何部分可以在一个或更多个处理器或其他硬件逻辑设备或电路的内部或外部。在至少一个实施例中,代码和/或数据存储1001可以是高速缓存存储器、动态随机可访问存储器(“DRAM”)、静态随机可访问存储器(“SRAM”)、非易失性存储器(例如闪存)或其他存储。在至少一个实施例中,对代码和/或数据存储1001是在处理器的内部还是外部的选择,例如,或者由DRAM、SRAM、闪存或某种其他存储类型组成,可以取决于片上或片外的可用存储空间,正在执行训练和/或推理功能的延迟要求,在神经网络的推理和/或训练中使用的数据的批大小或这些因素的某种组合。
在至少一个实施例中,推理和/或训练逻辑1015可以包括但不限于代码和/或数据存储1005,用于存储与在一个或更多个实施例的方面中被训练为和/或用于推理的神经网络的神经元或层相对应的反向和/或输出权重和/或输入/输出数据。在至少一个实施例中,在使用一个或更多个实施例的方面训练和/或推理期间,代码和/或数据存储1005存储在输入/输出数据和/或权重参数的反向传播期间结合一个或更多个实施例训练或使用的神经网络的每个层的权重参数和/或输入/输出数据。在至少一个实施例中,训练逻辑1015可以包括或耦合到用于存储图代码或其他软件以控制时序和/或顺序的代码和/或数据存储1005,其中权重和/或其他参数信息被加载以配置逻辑,该逻辑包括整数和/或浮点单元(统称为算术逻辑单元(ALU))。在至少一个实施例中,代码(诸如图代码)基于该代码所对应的神经网络的架构将权重或其他参数信息加载到处理器ALU中。在至少一个实施例中,代码和/或数据存储1005的任何部分可以与其他片上或片外数据存储一起包括,包括处理器的L1、L2或L3高速缓存或***存储器。在至少一个实施例中,代码和/或数据存储1005的任何部分可以在一个或更多个处理器或其他硬件逻辑设备或电路上的内部或外部。在至少一个实施例中,代码和/或数据存储1005可以是高速缓存存储器、DRAM、SRAM、非易失性存储器(例如闪存)或其他存储。在至少一个实施例中,代码和/或数据存储1005是在处理器的内部还是外部的选择,例如,是由DRAM、SRAM、闪存还是其他某种存储类型组成,取决于可用存储是片上还是片外,正在执行的训练和/或推理功能的延迟要求,在神经网络的推理和/或训练中使用的数据批量大小或这些因素的某种组合。
在至少一个实施例中,代码和/或数据存储1001以及代码和/或数据存储1005可以是分开的存储结构。在至少一个实施例中,代码和/或数据存储1001以及代码和/或数据存储1005可以是相同的存储结构。在至少一个实施例中,代码和/或数据存储1001以及代码和/或数据存储1005可以是部分相同的存储结构和部分分离的存储结构。在至少一个实施例中,代码和/或数据存储1001以及代码和/或数据存储1005的任何部分可以与其他片上或片外数据存储包括在一起,包括处理器的L1、L2或L3高速缓存或***存储器。
在至少一个实施例中,推理和/或训练逻辑1015可以包括但不限于一个或更多个算术逻辑单元(“ALU”)1010(包括整数和/或浮点单元),用于至少部分地基于训练和/或推理代码(例如,图代码)或由其指示来执行逻辑和/或数学运算,其结果可能会产生存储在激活存储1020中的激活(例如,来自神经网络内部的层或神经元的输出值),其是存储在代码和/或数据存储1001和/或代码和/或数据存储1005中的输入/输出和/或权重参数数据的函数。在至少一个实施例中,激活响应于执行指令或其他代码,由ALU1010执行的线性代数和/或基于矩阵的数学生成在激活存储1020中存储的激活,其中存储在代码和/或数据存储1005中和/或代码和/或数据存储1001中的权重值用作具有其他值的操作数,例如偏置值、梯度信息、动量值或其他参数或超参数,可以将任何或所有这些存储在代码和/或数据存储1005或代码和/或数据存储1001或其他片上或片外存储中。
在至少一个实施例中,一个或更多个处理器或其他硬件逻辑设备或电路中包括一个或更多个ALU 1010,而在另一实施例中,一个或更多个ALU1010可以在处理器或其他硬件逻辑设备或使用它们(例如协处理器)的电路外。在至少一个实施例中,可以将一个或更多个ALU 1010包括在处理器的执行单元之内,或者以其他方式包括在由处理器的执行单元可访问的ALU组中,该处理器的执行单元可以在同一处理器内或者分布在不同类型的不同处理器之间(例如,中央处理单元、图形处理单元、固定功能单元等)。在至少一个实施例中,代码和/或数据存储1001、代码和/或数据存储1005以及激活存储1020可以在同一处理器或其他硬件逻辑设备或电路上,而在另一实施例中,它们可以在不同的处理器或其他硬件逻辑设备或电路或相同和不同处理器或其他硬件逻辑设备或电路的某种组合中。在至少一个实施例中,激活存储1020的任何部分可以与其他片上或片外数据存储包括在一起,包括处理器的L1、L2或L3高速缓存或***存储器。此外,推理和/或训练代码可以与处理器或其他硬件逻辑或电路可访问的其他代码一起存储,并可以使用处理器的提取、解码、调度、执行、退出和/或其他逻辑电路来提取和/或处理。
在至少一个实施例中,激活存储1020可以是高速缓存存储器、DRAM、SRAM、非易失性存储器(例如,闪存)或其他存储。在至少一个实施例中,激活存储1020可以完全地或部分地在一个或更多个处理器或其他逻辑电路内部或外部。在至少一个实施例中,可以取决于片上或片外可用的存储,进行训练和/或推理功能的延迟要求,在推理和/或训练神经网络中使用的数据的批量大小或这些因素的某种组合,选择激活存储1020是处理器的内部还是外部,例如,或者包含DRAM、SRAM、闪存或其他存储类型。在至少一个实施例中,图10A中所示的推理和/或训练逻辑1015可以与专用集成电路(“ASIC”)结合使用,例如来自Google的处理单元、来自GraphcoreTM的推理处理单元(IPU)或来自IntelCorp的(例如“LakeCrest”)处理器。在至少一个实施例中,图10A所示的推理和/或训练逻辑1015可与中央处理单元(“CPU”)硬件,图形处理单元(“GPU”)硬件或其他硬件(例如数据处理单元(DPU)硬件或现场可编程门阵列(“FPGA”))结合使用。
图10B示出了根据至少一个或更多个实施例的推理和/或训练逻辑1015。在至少一个实施例中,推理和/或训练逻辑1015可以包括但不限于硬件逻辑,其中计算资源被专用或以其他方式唯一地连同对应于神经网络内的一层或更多层神经元的权重值或其他信息一起使用。在至少一个实施例中,图10B中所示的推理和/或训练逻辑1015可以与专用集成电路(ASIC)结合使用,例如来自Google的处理单元,来自GraphcoreTM的推理处理单元(IPU)或来自IntelCorp的(例如“LakeCrest”)处理器。在至少一个实施例中,图10B中所示的推理和/或训练逻辑1015可以与中央处理单元(CPU)硬件、图形处理单元(GPU)硬件或其他硬件(例如数据处理单元(DPU)硬件或现场可编程门阵列(FPGA))结合使用。在至少一个实施例中,推理和/或训练逻辑1015包括但不限于代码和/或数据存储1001以及代码和/或数据存储1005,其可以用于存储代码(例如,图代码)、权重值和/或其他信息,包括偏置值、梯度信息、动量值和/或其他参数或超参数信息。在图10B中所示的至少一个实施例中,代码和/或数据存储1001以及代码和/或数据存储1005中的每一个都分别与专用计算资源(例如计算硬件1002和计算硬件1006)相关联。在至少一个实施例中,计算硬件1002和计算硬件1006中的每一个包括一个或更多个ALU,这些ALU仅分别对存储在代码和/或数据存储1001和代码和/或数据存储1005中的信息执行数学函数(例如线性代数函数),执行函数的结果被存储在激活存储1020中。
在至少一个实施例中,代码和/或数据存储1001和1005以及相应的计算硬件1002和1006中的每一个分别对应于神经网络的不同层,使得从代码和/或数据存储1001和计算硬件1002的一个“存储/计算对1001/1002”得到的激活提供作为代码和/或数据存储1005和计算硬件1006的下一个“存储/计算对1005/1006”的输入,以便反映神经网络的概念组织。在至少一个实施例中,每个存储/计算对1001/1002和1005/1006可以对应于一个以上的神经网络层。在至少一个实施例中,在推理和/或训练逻辑1015中可以包括在存储计算对1001/1002和1005/1006之后或与之并行的附加存储/计算对(未示出)。
图11示出了可以使用至少一个实施例的示例数据中心1100。在至少一个实施例中,数据中心1100包括数据中心基础设施层1110、框架层1120、软件层1130和应用层1140。
在至少一个实施例中,如图11所示,数据中心基础设施层1110可以包括资源协调器1112、分组的计算资源1114和节点计算资源(“节点C.R.”)1116(1)-1116(N),其中“N”代表任何正整数。在至少一个实施例中,节点C.R.1116(1)-1116(N)可以包括但不限于任何数量的中央处理单元(“CPU”)或其他处理器(包括加速器、现场可编程门阵列(FPGA)、数据处理单元、图形处理器等),存储器设备(例如动态只读存储器)、存储设备(例如固态硬盘或磁盘驱动器),网络输入/输出(“NWI/O”)设备,网络交换机,虚拟机(“VM”),电源模块和冷却模块等。在至少一个实施例中,节点C.R.1116(1)-1116(N)中的一个或更多个节点C.R.可以是具有一个或更多个上述计算资源的服务器。
在至少一个实施例中,分组的计算资源1114可以包括容纳在一个或更多个机架内的节点C.R.的单独分组(未示出),或者容纳在各个地理位置的数据中心内的许多机架(也未示出)。分组的计算资源1114内的节点C.R.的单独分组可以包括可以被配置或分配为支持一个或更多个工作负载的分组的计算、网络、存储器或存储资源。在至少一个实施例中,可以将包括CPU或处理器的几个节点C.R.分组在一个或更多个机架内,以提供计算资源来支持一个或更多个工作负载。在至少一个实施例中,一个或更多个机架还可以包括任何数量的电源模块、冷却模块和网络交换机,以任意组合。
在至少一个实施例中,资源协调器1112可以配置或以其他方式控制一个或更多个节点C.R.1116(1)-1116(N)和/或分组的计算资源1114。在至少一个实施例中,资源协调器1112可以包括用于数据中心1100的软件设计基础结构(“SDI”)管理实体。在至少一个实施例中,资源协调器可以包括硬件、软件或其某种组合。
在至少一个实施例中,如图11所示,框架层1120包括作业调度器1122、配置管理器1124、资源管理器1126和分布式文件***1128。在至少一个实施例中,框架层1120可以包括支持软件层1130的软件1132和/或应用程序层1140的一个或更多个应用程序1142的框架。在至少一个实施例中,软件1132或应用程序1142可以分别包括基于Web的服务软件或应用程序,例如由AmazonWebServices,GoogleCloud和MicrosoftAzure提供的服务或应用程序。在至少一个实施例中,框架层1120可以是但不限于一种免费和开放源软件网络应用程序框架,例如可以利用分布式文件***1128来进行大范围数据处理(例如“大数据”)的ApacheSparkTM(以下称为“Spark”)。在至少一个实施例中,作业调度器1132可以包括Spark驱动器,以促进对数据中心1100的各个层所支持的工作负载进行调度。在至少一个实施例中,配置管理器1124可以能够配置不同的层,例如软件层1130和包括Spark和用于支持大规模数据处理的分布式文件***1128的框架层1120。在至少一个实施例中,资源管理器1126能够管理映射到或分配用于支持分布式文件***1128和作业调度器1122的集群或分组计算资源。在至少一个实施例中,集群或分组计算资源可以包括数据中心基础设施层1110上的分组计算资源1114。在至少一个实施例中,资源管理器1126可以与资源协调器1112协调以管理这些映射的或分配的计算资源。
在至少一个实施例中,包括在软件层1130中的软件1132可以包括由节点C.R.1116(1)-1116(N)的至少一部分,分组的计算资源1114和/或框架层1120的分布式文件***1128使用的软件。一种或更多种类型的软件可以包括但不限于Intemet网页搜索软件、电子邮件病毒扫描软件、数据库软件和流视频内容软件。
在至少一个实施例中,应用层1140中包括的一个或更多个应用程序1142可以包括由节点C.R.1116(1)-1116(N)的至少一部分、分组计算资源1114和/或框架层1120的分布式文件***1128使用的一种或更多种类型的应用程序。一种或更多种类型的应用程序可以包括但不限于任何数量的基因组学应用程序、认知计算和机器学习应用程序,包括训练或推理软件,机器学习框架软件(例如PyTorch、TensorFlow、Caffe等)或其他与一个或更多个实施例结合使用的机器学习应用程序。
在至少一个实施例中,配置管理器1124、资源管理器1126和资源协调器1112中的任何一个可以基于以任何技术上可行的方式获取的任何数量和类型的数据来实现任何数量和类型的自我修改动作。在至少一个实施例中,自我修改动作可以减轻数据中心1100的数据中心操作员做出可能不好的配置决定并且可以避免数据中心的未充分利用和/或执行差的部分。
在至少一个实施例中,数据中心1100可以包括工具、服务、软件或其他资源,以根据本文所述的一个或更多个实施例来训练一个或更多个机器学习模型或者使用一个或更多个机器学习模型来预测或推理信息。例如,在至少一个实施例中,可以通过使用上文关于数据中心1100描述的软件和计算资源,根据神经网络架构通过计算权重参数来训练机器学习模型。在至少一个实施例中,通过使用通过本文所述的一种或更多种训练技术计算出的权重参数,可以使用上面与关于数据中心1100所描述的资源,使用对应于一个或更多个神经网络的经训练的机器学习模型来推理或预测信息。
在至少一个实施例中,数据中心可以使用CPU、专用集成电路(ASIC)、GPU、DPU、FPGA或其他硬件来使用上述资源来执行训练和/或推理。此外,上述的一个或更多个软件和/或硬件资源可以配置成一种服务,以允许用户训练或执行信息推理,例如图像识别、语音识别或其他人工智能服务。
推理和/或训练逻辑1015用于执行与一个或更多个实施例相关联的推理和/或训练操作。本文结合图10A和/或图10B提供关于推理和/或训练逻辑1015的细节。在至少一个实施例中,推理和/或训练逻辑1015可以在***图11的***中使用,用于至少部分地基于使用神经网络训练操作、神经网络函数和/或架构或本文所述的神经网络用例计算的权重参数来推理或预测操作。
这样的组件可用于生成模拟网络训练过程中的故障情况的合成数据,这可有助于提高网络的性能,同时限制合成数据的量以避免过度拟合。
图12是示出根据至少一个实施例示例性计算机***的框图,该示例性计算机***可以是具有互连的设备和组件的***,片上***(SOC)或它们的某种形成有处理器的组合,该处理器可以包括执行单元以执行指令。在至少一个实施例中,根据本公开,例如本文所述的实施例,计算机***1200可以包括但不限于组件,例如处理器1202,其执行单元包括逻辑以执行用于过程数据的算法。在至少一个实施例中,计算机***1200可以包括处理器,例如可从加利福尼亚圣塔克拉拉的英特尔公司(IntelCorporationofSantaClara,California)获得的处理器家族、XeonTM、XScaleTM和/或StrongARMTM,CoreTM或NervanaTM微处理器,尽管也可以使用其他***(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在至少一个实施例中,计算机***1200可以执行可从华盛顿州雷蒙德市的微软公司(MicrosoftCorporationofRedmond,Wash.)获得的WINDOWS操作***版本,尽管其他操作***(例如UNIX和Linux)、嵌入式软件和/或图形用户界面也可以使用。
实施例可以用在其他设备中,例如手持设备和嵌入式应用程序。手持设备的一些示例包括蜂窝电话、互联网协议(InternetProtocol)设备、数码相机、个人数字助理(“PDA”)和手持PC。在至少一个实施例中,嵌入式应用程序可以包括微控制器、数字信号处理器(“DSP”)、片上***、网络计算机(“NetPC”)、机顶盒、网络集线器、广域网(“WAN”)交换机,边缘设备、物联网(″IoT″)设备或根据至少一个实施例可以执行一个或更多个指令的任何其他***。
在至少一个实施例中,计算机***1200可包括但不限于处理器1202,该处理器1202可包括但不限于一个或更多个执行单元1208,以根据本文描述的技术执行机器学习模型训练和/或推理。在至少一个实施例中,计算机***1200是单处理器台式机或服务器***,但是在另一实施例中,计算机***1200可以是多处理器***。在至少一个实施例中,处理器1202可以包括但不限于复杂指令集计算机(“CISC”)微处理器、精简指令集计算(“RISC”)微处理器、超长指令字(“VLIW”)微处理器、实现指令集组合的处理器,或任何其他处理器设备,例如数字信号处理器。在至少一个实施例中,处理器1202可以耦合到处理器总线1210,该处理器总线1210可以在处理器1202与计算机***1200中的其他组件之间传输数据信号。
在至少一个实施例中,处理器1202可以包括但不限于1级(“L1”)内部高速缓存存储器(“cache”)1204。在至少一个实施例中,处理器1202可以具有单个内部高速缓存或多级内部缓存。在至少一个实施例中,高速缓存存储器可以驻留在处理器1202的外部。根据特定的实现和需求,其他实施例也可以包括内部和外部高速缓存的组合。在至少一个实施例中,寄存器文件1206可以在各种寄存器中存储不同类型的数据,包括但不限于整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。
在至少一个实施例中,包括但不限于执行整数和浮点运算的逻辑执行单元1208,其也位于处理器1202中。在至少一个实施例中,处理器1202还可以包括微码(“ucode”)只读存储器(“ROM”),用于存储某些宏指令的微代码。在至少一个实施例中,执行单元1208可以包括用于处理封装指令集1209的逻辑。在至少一个实施例中,通过将封装指令集1209包括在通用处理器的指令集中,以及要执行指令的相关电路,可以使用处理器1202中的封装数据来执行许多多媒体应用程序使用的操作。在一个或更多个实施例中,可以通过使用处理器的数据总线的全宽度来在封装的数据上执行操作来加速和更有效地执行许多多媒体应用程序,这可能不需要在处理器的数据总线上传输较小的数据单元来一次执行一个数据元素的一个或更多个操作。
在至少一个实施例中,执行单元1208也可以用在微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中。在至少一个实施例中,计算机***1200可以包括但不限于存储器1220。在至少一个实施例中,存储器1220可以实现为动态随机存取存储器(“DRAM”)设备、静态随机存取存储器(“SRAM”)设备、闪存设备或其他存储设备。在至少一个实施例中,存储器1220可以存储由处理器1202可以执行的由数据信号表示的指令1219和/或数据1221。
在至少一个实施例中,***逻辑芯片可以耦合到处理器总线1210和存储器1220。在至少一个实施例中,***逻辑芯片可以包括但不限于存储器控制器集线器(“MCH”)1216,并且处理器1202可以经由处理器总线1210与MCH 1216通信。在至少一个实施例中,MCH1216可以提供到存储器1220的高带宽存储器路径1218以用于指令和数据存储以及用于图形命令、数据和纹理的存储。在至少一个实施例中,MCH 1216可以在处理器1202、存储器1220和计算机***1200中的其他组件之间启动数据信号,并且在处理器总线1210、存储器1220和***I/O 1222之间桥接数据信号。在至少一个实施例中,***逻辑芯片可以提供用于耦合到图形控制器的图形端口。在至少一个实施例中,MCH 1216可以通过高带宽存储器路径1218耦合到存储器1220,并且图形/视频卡1212可以通过加速图形端口(AcceleratedGraphics Port)(“AGP”)互连1214耦合到MCH 1216。
在至少一个实施例中,计算机***1200可以使用***I/O 1222,所述***I/O1222是专有集线器接口总线来将MCH 1216耦合到I/O控制器集线器(“ICH”)1230。在至少一个实施例中,ICH 1230可以通过本地I/O总线提供与某些I/O设备的直接连接。在至少一个实施例中,本地I/O总线可以包括但不限于用于将***设备连接到存储器1220、芯片组和处理器1202的高速I/O总线。示例可以包括但不限于音频控制器1229、固件集线器(“FlashBIOS”)1228、无线收发器1226、数据存储1224、包含用户输入和键盘接口的传统I/O控制器1223、串行扩展端口1227(例如通用串行总线(USB)端口)和网络控制器1234,在某些实施例中,可包括数据处理单元。数据存储1224可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备或其他大容量存储设备。
在至少一个实施例中,图12示出了包括互连的硬件设备或“芯片”的***,而在其他实施例中,图12可以示出示例性片上***(SoC)。在至少一个实施例中,设备可以与专有互连、标准化互连(例如,PCIe)或其某种组合互连。在至少一个实施例中,计算机***1200的一个或更多个组件使用计算快速链路(CXL)互连来互连。
推理和/或训练逻辑1015用于执行与一个或更多个实施例相关的推理和/或训练操作。下文结合图10A和/或图10B提供关于推理和/或训练逻辑1015的细节。在至少一个实施例中,推理和/或训练逻辑1015可以在图12的***中使用,用于至少部分地基于使用神经网络训练操作、神经网络函数和/或架构或本文所述的神经网络用例计算的权重参数来推理或预测操作。
这样的组件可用于生成模拟网络训练过程中的故障情况的合成数据,这可有助于提高网络的性能,同时限制合成数据的量以避免过度拟合。
图13是示出根据至少一个实施例的用于利用处理器1310的电子设备1300的框图。在至少一个实施例中,电子设备1300可以是,例如但不限于,笔记本电脑、塔式服务器、机架服务器、刀片服务器、膝上型计算机、台式机、平板电脑、移动设备、电话、嵌入式计算机,边缘设备,物联网设备或任何其他合适的电子设备。
在至少一个实施例中,***1300可以包括但不限于通信地耦合到任何合适数量或种类的组件、***设备、模块或设备的处理器1310。在至少一个实施例中,处理器1310使用总线或接口耦合,诸如1℃总线、***管理总线(“SMBus”)、低引脚数(LPC)总线、串行***接口(“SPI”)、高清音频(“HDA”)总线、串行高级技术附件(“SATA”)总线、通用串行总线(“USB”)(1、2、3版)或通用异步接收器/发送器(“UART”)总线。在至少一个实施例中,图13示出了***,该***包括互连的硬件设备或“芯片”,而在其他实施例中,图13可以示出示例性片上***(SoC)。在至少一个实施例中,图13中所示的设备可以与专有互连线、标准化互连(例如,PCIe)或其某种组合互连。在至少一个实施例中,图13的一个或更多个组件使用计算快速链路(CXL)互连线来互连。
在至少一个实施例中,图13可以包括显示器1324、触摸屏1325、触摸板1330、近场通信单元(“NFC”)1345、传感器集线器1340、热传感器1346、快速芯片组(“EC”)1335、可信平台模块(“TPM”)1338、BIOS/固件/闪存(“BIOS,FWFlash”)1322、DSP 1360、驱动器1320(例如固态磁盘(“SSD”)或硬盘驱动器(“HDD”))、无线局域网单元(“WLAN”)1350、蓝牙单元1352、无线广域网单元(“WWAN”)1356、全球定位***(GPS)1355、相机(“USB3.0相机”)1354(例如USB3.0相机)和/或以例如LPDDR3标准实现的低功耗双倍数据速率(“LPDDR”)存储器单元(“LPDDR3”)1315。这些组件可以各自以任何合适的方式实现。
在至少一个实施例中,其他组件可以通过上文所述的组件通信地耦合到处理器1310。在至少一个实施例中,加速度计1341、环境光传感器(“ALS”)1342、罗盘1343和陀螺仪1344可以可通信地耦合到传感器集线器1340。在至少一个实施例中,热传感器1339、风扇1337、键盘1336和触摸板1330可以通信地耦合到EC 1335。在至少一个实施例中,扬声器1363、耳机1364和麦克风(“mic”)1365可以通信地耦合到音频单元(“音频编解码器和D类放大器”)1362,其又可以通信地耦合到DSP 1360。在至少一个实施例中,音频单元1362可以包括例如但不限于音频编码器/解码器(“编解码器”)和D类放大器。在至少一个实施例中,SIM卡(“SIM”)1357可以通信地耦合到WWAN单元1356。在至少一个实施例中,组件(诸如WLAN单元1350和蓝牙单元1352以及WWAN单元1356)可以被实现为下一代形式因素(NGFF)。
推理和/或训练逻辑1015用于执行与一个或更多个实施例相关联的推理和/或训练操作。下文结合图10A和/或图10B提供关于推理和/或训练逻辑1015的细节。在至少一个实施例中,推理和/或训练逻辑1015可以在图13***中用于至少部分地基于使用神经网络训练操作、神经网络功能和/或架构或本文描述的神经网络用例计算的权重参数来推理或预测操作。
这样的组件可用于生成模拟网络训练过程中的故障情况的合成数据,这可有助于提高网络的性能,同时限制合成数据的量以避免过度拟合。
图14是根据至少一个实施例的处理***的框图。在至少一个实施例中,***1400包括一个或更多个处理器1402和一个或更多个图形处理器1408,并且可以是单处理器台式机***、多处理器工作站***或具有大量处理器1402或处理器核心1407的服务器***。在至少一个实施例中,***1400是结合在片上***(SoC)集成电路内的处理平台,以在移动、手持或嵌入式设备使用。
在至少一个实施例中,***1400可以包括或结合在基于服务器的游戏平台中,包括游戏和媒体控制台的游戏控制台、移动游戏控制台、手持游戏控制台或在线游戏控制台。在至少一个实施例中,***1400是移动电话、智能电话、平板计算设备或移动互联网设备。在至少一个实施例中,处理***1400还可包括与可穿戴设备耦合或集成在可穿戴设备中,例如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在至少一个实施例中,处理***1400是电视或机顶盒设备,其具有一个或更多个处理器1402以及由一个或更多个图形处理器1408生成的图形界面。
在至少一个实施例中,一个或更多个处理器1402每个包括一个或更多个处理器核心1407,以处理指令,该指令在被执行时执行针对***和用户软件的操作。在至少一个实施例中,一个或更多个处理器核心1407中的每一个被配置为处理特定指令组1409。在至少一个实施例中,指令组1409可以促进复杂指令集计算(CISC)、精简指令集计算(RISC),或通过超长指令字(VLIW)进行计算。在至少一个实施例中,处理器核心1407可以各自处理不同的指令组1409,该指令组可以包括有助于仿真其他指令组的指令。在至少一个实施例中,处理器核心1407还可以包括其他处理设备,例如数字信号处理器(DSP)。
在至少一个实施例中,处理器1402包括高速缓存存储器1404。在至少一个实施例中,处理器1402可以具有单个内部高速缓存或多个级别的内部高速缓存。在至少一个实施例中,高速缓存存储器在处理器1402的各个组件之间共享。在至少一个实施例中,处理器1402还使用外部高速缓存(例如,三级(L3)高速缓存或最后一级高速缓存(LLC))(未示出),可以使用已知的高速缓存一致性技术在处理器核心1407之间共享该外部高速缓存。在至少一个实施例中,处理器1402中另外包括寄存器文件1406,处理器可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。在至少一个实施例中,寄存器文件1406可以包括通用寄存器或其他寄存器。
在至少一个实施例中,一个或更多个处理器1402与一个或更多个接口总线1410耦合,以在处理器1402与***1400中的其他组件之间传输通信信号,例如地址、数据或控制信号。在至少一个实施例中,接口总线1410在一个实施例中可以是处理器总线,例如直接媒体接口(DMI)总线的版本。在至少一个实施例中,接口总线1410不限于DMI总线,并且可以包括一个或更多个***组件互连总线(例如,PCI,PCIExpress)、存储器总线或其他类型的接口总线。在至少一个实施例中,处理器1402包括集成存储器控制器1416和平台控制器集线器1430。在至少一个实施例中,存储器控制器1416促进存储器设备与处理***1400的其他组件之间的通信,而平台控制器集线器(PCH)1430通过本地I/O总线提供到I/O设备的连接。
在至少一个实施例中,存储器设备1420可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备、相变存储设备或具有适当的性能以用作处理器存储器。在至少一个实施例中,存储器设备1420可以用作处理***1400的***存储器,以存储数据1422和指令1421,以在一个或更多个处理器1402执行应用程序或过程时使用。在至少一个实施例中,存储器控制器1416还与可选的外部图形处理器1412耦合,其可以与处理器1402中的一个或更多个图形处理器1408通信以执行图形和媒体操作。在至少一个实施例中,显示设备1411可以连接至处理器1402。在至少一个实施例中,显示设备1411可以包括内部显示设备中的一个或更多个,例如在移动电子设备或膝上型设备或通过显示器接口(例如显示端口(DisplayPort)等)连接的外部显示设备中。在至少一个实施例中,显示设备1411可以包括头戴式显示器(HMD),诸如用于虚拟现实(VR)应用或增强现实(AR)应用中的立体显示设备。
在至少一个实施例中,平台控制器集线器1430使***设备能够通过高速I/O总线连接到存储器设备1420和处理器1402。在至少一个实施例中,I/O***设备包括但不限于音频控制器1446、网络控制器1434、固件接口1428、无线收发器1426、触摸传感器1425、数据存储设备1424(例如,硬盘驱动器、闪存等)。在至少一个实施例中,数据存储设备1424可以经由存储接口(例如,SATA)或经由***总线来连接,诸如***组件互连总线(例如,PCI、PCIe)。在至少一个实施例中,触摸传感器1425可以包括触摸屏传感器、压力传感器或指纹传感器。在至少一个实施例中,无线收发器1426可以是Wi-Fi收发器、蓝牙收发器或移动网络收发器,诸如3G、4G或长期演进(LTE)收发器。在至少一个实施例中,固件接口1428使能与***固件的通信,并且可以是例如统一可扩展固件接口(UEFI)。
在至少一个实施例中,网络控制器1434可以启用到有线网络的网络连接。在至少一个实施例中,高性能网络控制器(未示出)与接口总线1410耦合。
在至少一个实施例中,音频控制器1446是多通道高清晰度音频控制器。在至少一个实施例中,处理***1400包括可选的传统(1egacy)I/O控制器1440,用于将传统(例如,个人***2(PS/2))设备耦合到***1400。在至少一个实施例中,平台控制器集线器1430还可以连接到一个或更多个通用串行总线(USB)控制器1442,该控制器连接输入设备,诸如键盘和鼠标1443组合、相机1444或其他USB输入设备。
在至少一个实施例中,存储器控制器1416和平台控制器集线器1430的实例可以集成到离散的外部图形处理器中,例如外部图形处理器1412。在至少一个实施例中,平台控制器集线器1430和/或存储器控制器1416可以在一个或更多个处理器1402的外部。例如,在至少一个实施例中,***1400可以包括外部存储器控制器1416和平台控制器集线器1430,其可以配置成在与处理器1402通信的***芯片组中的存储器控制器集线器和***控制器集线器。
推理和/或训练逻辑1015用于执行与一个或更多个实施例相关联的推理和/或训练操作。下文结合图10A和/或图10B提供关于推理和/或训练逻辑1015的细节。在至少一个实施例中,部分或全部推理和/或训练逻辑1015可以结合到图形处理器1408中。例如,在至少一个实施例中,本文描述的训练和/或推理技术可以使用一个或更多个ALU,所述ALU体现在图形处理器中。此外,在至少一个实施例中,本文描述的推理和/或训练操作可以使用除图10A或图10B所示的逻辑之外的逻辑来完成。在至少一个实施例中,权重参数可以存储在片上或片外存储器和/或寄存器(示出或未示出)中,其配置图形处理器的ALU,以执行一种或更多种本文所述的机器学习算法、神经网络架构、用例或训练技术。
这样的组件可用于生成模拟网络训练过程中的故障情况的合成数据,这可有助于提高网络的性能,同时限制合成数据的量以避免过度拟合。
图15是根据至少一个实施例的具有一个或更多个处理器核心1502A-1502N、集成存储器控制器1514和集成图形处理器1508的处理器1500的框图。在至少一个实施例中,处理器1500可以包含附加核心,多达并包括以虚线框表示的附加核心1502N。在至少一个实施例中,每个处理器核心1502A-1502N包括一个或更多个内部高速缓存单元1504A-1504N。在至少一个实施例中,每个处理器核心还可以访问一个或更多个共享高速缓存单元1506。
在至少一个实施例中,内部高速缓存单元1504A-1504N和共享高速缓存单元1506表示处理器1500内的高速缓存存储器层次结构。在至少一个实施例中,高速缓存存储器单元1504A-1504N可以包括每个处理器核心内的至少一级指令和数据高速缓存以及共享中级高速缓存中的一级或更多级缓存,例如2级(L2)、3级(L3)、4级(L4)或其他级别的高速缓存,其中将外部存储器之前的最高级别的高速缓存归类为LLC。在至少一个实施例中,高速缓存一致性逻辑维持各种高速缓存单元1506和1504A-1504N之间的一致性。
在至少一个实施例中,处理器1500还可包括一组一个或更多个总线控制器单元1516和***代理核心1510。在至少一个实施例中,一个或更多个总线控制器单元1516管理一组***总线,例如一个或更多个PCI或PCIe总线。在至少一个实施例中,***代理核心1510为各种处理器组件提供管理功能。在至少一个实施例中,***代理核心1510包括一个或更多个集成存储器控制器1514,以管理对各种外部存储器设备(未示出)的访问。
在至少一个实施例中,一个或更多个处理器核心1502A-1502N包括对多线程同时进行的支持。在至少一个实施例中,***代理核心1510包括用于在多线程处理期间协调和操作核心1502A-1502N的组件。在至少一个实施例中,***代理核心1510可以另外包括电源控制单元(PCU),该电源控制单元包括用于调节处理器核心1502A-1502N和图形处理器1508的一个或更多个电源状态的逻辑和组件。
在至少一个实施例中,处理器1500还包括用于执行图处理操作的图形处理器1508。在至少一个实施例中,图形处理器1508与共享高速缓存单元1506和包括一个或更多个集成存储器控制器1514的***代理核心1510耦合。在至少一个实施例中,***代理核心1510还包括用于驱动图形处理器输出到一个或更多个耦合的显示器的显示器控制器1511。在至少一个实施例中,显示器控制器1511也可以是经由至少一个互连与图形处理器1508耦合的独立模块,或者可以集成在图形处理器1508内。
在至少一个实施例中,基于环的互连单元1512用于耦合处理器1500的内部组件。在至少一个实施例中,可以使用替代性互连单元,例如点对点互连、交换互连或其他技术。在至少一个实施例中,图形处理器1508经由I/O链路1513与环形互连1512耦合。
在至少一个实施例中,I/O链路1513代表多种I/O互连中的至少一种,包括促进各种处理器组件与高性能嵌入式存储器模块1518(例如eDRAM模块)之间的通信的封装I/O互连。在至少一个实施例中,处理器核心1502A-1502N和图形处理器1508中的每一个使用嵌入式存储器模块1518作为共享的最后一级高速缓存。
在至少一个实施例中,处理器核心1502A-1502N是执行公共指令集架构的同质核心。在至少一个实施例中,处理器核心1502A-1502N在指令集架构(ISA)方面是异构的,其中一个或更多个处理器核心1502A-1502N执行公共指令集,而一个或更多个其他处理器核心1502A-1502N执行公共指令集的子集或不同指令集。在至少一个实施例中,就微架构而言,处理器核心1502A-1502N是异构的,其中具有相对较高功耗的一个或更多个核心与具有较低功耗的一个或更多个功率核心耦合。在至少一个实施例中,处理器1500可以在一个或更多个芯片上实现或被实现为SoC集成电路。
推理和/或训练逻辑1015用于执行与一个或更多个实施例相关联的推理和/或训练操作。下文结合图10A和/或图10B提供关于推理和/或训练逻辑1015的细节。在至少一个实施例中,部分或全部推理和/或训练逻辑1015可以结合到处理器1500中。例如,在至少一个实施例中,本文描述的训练和/或推理技术可以使用一个或更多个ALU,所述ALU体现在图15中的图形处理器1508、图形核心1502A-1502N或其他组件中。此外,在至少一个实施例中,本文描述的推理和/或训练操作可以使用除图10A或图10B所示的逻辑之外的逻辑来完成。在至少一个实施例中,权重参数可以存储在片上或片外存储器和/或寄存器(示出或未示出)中,其配置图形处理器1500的ALU以执行一种或更多种本文所述的机器学习算法、神经网络架构、用例或训练技术。
这样的组件可用于生成模拟网络训练过程中的故障情况的合成数据,这可有助于提高网络的性能,同时限制合成数据的量以避免过度拟合。
图16是根据至少一个实施例的生成和部署图像处理和推理管线的过程1600的示例数据流程图。在至少一个实施例中,过程1600可以被部署用于在一个或更多个设施1602处与成像设备、处理设备和/或其他设备类型一起使用。过程1600可以在训练***1604和/或部署***1606内执行。在至少一个实施例中,训练***1604可以用于执行机器学习模型(例如,神经网络、对象检测算法、计算机视觉算法等)的训练、部署和实现,以用于部署***1606。在至少一个实施例中,部署***1606可以被配置为在分布式计算环境中卸载处理和计算资源,以减少设施1602的基础设施需求。在至少一个实施例中,管线中的一个或更多个应用程序在应用程序执行期间,可以使用或调用部署***1606的服务(例如,推理、可视化、计算、AI等)。
在至少一个实施例中,在高级处理和推理管线中使用的一些应用程序可以使用机器学习模型或其他AI来执行一个或更多个处理步骤。在至少一个实施例中,可以使用在设施1602处生成(并存储在设施1602处的一个或更多个图片存档和通信***(PACS)服务器上)的数据1608(例如成像数据)在设施1602处训练机器学习模型,可以使用于自另一个或更多个设施的成像或测序数据1608来训练机器学习模型,或其组合。在至少一个实施例中,训练***1604可以用于提供应用程序、服务和/或其他资源,以生成用于部署***1606的工作的、可部署的机器学习模型。
在至少一个实施例中,模型注册表1624可以由对象存储支持,该对象存储可以支持版本控制和对象元数据。在至少一个实施例中,可以从云平台内通过例如云存储(例如,图17的云1726)兼容的应用程序编程接口(API)来访问对象存储。在至少一个实施例中,模型注册表1624内的机器学习模型可以由与API交互的***的开发者或合作伙伴上传、列出、修改或删除。在至少一个实施例中,API可以提供对方法的访问,所述方法允许具有适当凭证的用户将模型与应用程序相关联,使得模型可以作为应用程序的容器化实例化的执行的一部分来执行。
在至少一个实施例中,训练管线1704(图17)可以包括以下情形:其中设施1602正在训练他们自己的机器学习模型,或者具有需要优化或更新的现有机器学习模型。在至少一个实施例中,可以接收由成像设备、测序设备和/或其他类型设备生成的成像数据1608。在至少一个实施例中,一旦接收到成像数据1608,AI辅助注释1610就可以用于帮助生成与成像数据1608相对应的注释,以用作机器学习模型的地面实况数据。在至少一个实施例中,AI辅助注释1610可以包括一个或更多个机器学习模型(例如,卷积神经网络(CNN)),可以对该机器学习模型进行训练,以生成对应于某些类型的成像数据1608(例如,来自某些设备)的注释。在至少一个实施例中,然后AI辅助注释1610可以被直接使用,或者可以使用注释工具进行调整或微调,以生成地面实况数据。在至少一个实施例中,AI辅助注释1610、标记的临床数据1612或其组合可以用作训练机器学习模型的地面实况数据。在至少一个实施例中,经训练的机器学习模型可以被称为输出模型1616,并且可以由部署***1606使用,如本文所述。
在至少一个实施例中,训练管线1704(图17)可以包括以下情形:其中设施1602需要机器学习模型,以用于执行用于部署***1606中的一个或更多个应用程序的一个或更多个处理任务,但是设施1602当前可能没有这种机器学习模型(或者可能没有为此目的而优化的、高效的或有效的模型)。在至少一个实施例中,可以从模型注册表1624中选择现有的机器学习模型。在至少一个实施例中,模型注册表1624可以包括机器学习模型,其被训练为对成像数据执行各种不同的推理任务。在至少一个实施例中,可以在来自不同的设施(例如,位于远处的设施)而不是设施1602的成像数据上训练模型注册表1624中的机器学习模型。在至少一个实施例中,机器学习模型可能已经在来自一个位置、两个位置或任意数量的位置的成像数据上进行训练。在至少一个实施例中,当在来自特定位置的成像数据上进行训练时,可以在该位置处进行训练,或者至少以保护成像数据的机密性或限制成像数据从场外转移的方式进行训练。在至少一个实施例中,一旦在一个位置处训练了模型或部分地训练了模型,则可以将机器学习模型添加到模型注册表1624。在至少一个实施例中,然后可以在任意数量的其他设施处对机器学习模型进行重新训练或更新,经重新训练或更新的模型可以在模型注册表1624中使用。在至少一个实施例中,然后可以从模型注册表1624中选择机器学习模型(并称为输出模型1616),并且可以在部署***1606中,以执行用于部署***的一个或更多个应用程序的一个或更多个处理任务。
在至少一个实施例中,在训练管线1704(图17)中,场景可以包括需要机器学习模型的设施1602,以用于执行用于部署***1606中的一个或更多个应用程序的一个或更多个处理任务,但是设施1602当前可能没有这样的机器学习模型(或者可能没有优化的、高效的或有效的模型)。在至少一个实施例中,由于用于训练机器学习模型的训练数据的种群差异、稳健性,训练数据异常的多样性,和/或训练数据的其他问题,从模型注册表1624中选择的机器学习模型可能不会针对在设施1602处生成的成像数据1608进行微调或优化。在至少一个实施例中,AI辅助注释1610可以用于帮助生成与成像数据1608相对应的注释,以用作训练或更新机器学习模型的地面实况数据。在至少一个实施例中,标记的临床数据1612可以用作训练机器学习模型的地面实况数据。在至少一个实施例中,重新训练或更新机器学习模型可以称为模型训练1614。在至少一个实施例中,模型训练1614(例如AI辅助注释1610,标记的临床数据1612或其组合)可以用作重新训练或更新机器学习模型的地面实况数据。在至少一个实施例中,训练的机器学习模型可以被称为输出模型1616,并且可以由部署***1606使用,如本文所述。
在至少一个实施例中,部署***1606可以包括软件1618、服务1620、硬件1622和/或其他组件、特征和功能。在至少一个实施例中,部署***1606可以包括软件“栈”,以使软件1618可以构建在服务1620的顶部上,并且可以使用服务1620来执行一些或全部处理任务,并且服务1620和软件1618可以构建在硬件1622的顶部上,并使用硬件1622来执行部署***的处理、存储和/或其他计算任务。在至少一个实施例中,软件1618可以包括任意数量的不同容器,其中每个容器可以执行应用程序的实例化。在至少一个实施例中,每个应用程序可以在高级处理和推理管线中执行一个或更多个处理任务(例如,推理、对象检测、特征检测、分割、图像增强、校准等)。在至少一个实施例中,除了接收和配置成像数据以供每个容器使用和/或在通过管线处理后由设施1602使用的容器以外,还可以基于对处理成像数据1608想要的或所需的不同容器的选择来定义高级处理和推理管线(例如,以将输出转换回可用的数据类型。在至少一个实施例中,软件1618内的容器组合(例如,其构成管线)可以被称为虚拟仪器(如本文中更详细地描述的),并且虚拟仪器可以利用服务1620和硬件1622来执行容器中实例化的应用程序的部分或全部处理任务。
在至少一个实施例中,数据处理管线可以响应于推理请求(例如,来自部署***1606的用户的请求)接收具体格式的输入数据(例如,成像数据1608)。在至少一个实施例中,输入数据可以代表由一个或更多个成像设备生成的一个或更多个图像、视频和/或其他数据表示。在至少一个实施例中,数据可以作为数据处理管线的一部分进行预处理,以准备数据用于由一个或更多个应用程序处理。在至少一个实施例中,可以在管线的一个或更多个推理任务或其他处理任务的输出上执行后处理,以准备下一个应用程序的输出数据和/或准备输出数据,以供用户传输和/或使用(例如作为对推理请求的响应)。在至少一个实施例中,推理任务可以由一个或更多个机器学习模型执行,例如经训练或部署的神经网络,所述模型可以包括训练***1604的输出模型1616。
在至少一个实施例中,数据处理管线的任务可以封装在容器中,每个容器表示能够引用机器学习模型的应用程序和虚拟化计算环境的离散、全功能实例化。在至少一个实施例中,容器或应用程序可被发布到容器注册表(本文更详细地描述)的私有(例如,有限访问)区域中,并且经训练或部署的模型可存储在模型注册表1624中,并与一个或更多个应用程序相关联。在至少一个实施例中,应用程序的图像(例如,容器图像)可在容器注册表中使用,并且一旦用户从容器注册表中选择图像以用于在管线中部署,则该图像可用于生成用于应用程序的实例化的容器,以供用户的***使用。
在至少一个实施例中,开发者(例如,软件开发者、临床医生、医生等)可以开发、发布和存储应用程序(例如,作为容器),用于对所提供的数据执行图像处理和/或推理。在至少一个实施例中,可以使用与***相关联的软件开发工具包(SDK)来执行开发、发布和/或存储(例如,以确保开发的应用程序和/或容器符合***或与***兼容)。在至少一个实施例中,所开发的应用程序可以使用SDK在本地测试(例如,在第一设施处,对来自第一设施的数据进行测试),所述SDK作为***(例如图17中的***1700)可以支持至少某些服务1620。在至少一个实施例中,由于DICOM对象可能包含一到数百个图像或其他数据类型,并且由于数据的变化,因此开发者可负责管理(例如,设置构造,用于将预处理构建到应用程序中等)传入的数据的提取和准备。在至少一个实施例中,一旦通过***1700的验证(例如,为了准确性),应用程序便会在容器注册表中可用,以供用户选择和/或实现,以对用户的设施(例如第二设施)处的数据执行一个或更多个处理任务。
在至少一个实施例中,开发者随后可以通过网络共享应用程序或容器,以供***(例如,图17的***1700)的用户访问和使用。在至少一个实施例中,可以将完成并经过验证的应用程序或容器存储在容器注册表中,并且可以将相关的机器学习模型存储在模型注册表1624中。在至少一个实施例中,请求实体(其提供推理或图像处理请求)可以浏览容器注册表和/或模型注册表1624,以获得应用程序、容器、数据集、机器学习模型等,选择所需的元素组合以包含在数据处理管线中,并提交图像处理请求。在至少一个实施例中,请求可以包括执行请求所必需的输入数据(以及在一些示例中与患者相关的数据),和/或可以包括对在处理请求时要执行的应用程序和/或机器学习模型的选择。在至少一个实施例中,然后可以将请求传递到部署***1606的一个或更多个组件(例如,云),以执行数据处理管线的处理。在至少一个实施例中,由部署***1606进行的处理可以包括引用从容器注册表和/或模型注册表1624中选择的元素(例如,应用程序、容器、模型等)。在至少一个实施例中,一旦通过管线生成结果,结果可返回给用户以供参考(例如,用于在本地、本地工作站或终端上执行的查看应用程序套件中进行查看)。
在至少一个实施例中,为了帮助处理或执行管线中的应用程序或容器,可以利用服务1620。在至少一个实施例中,服务1620可以包括计算服务、人工智能(AI)服务、可视化服务和/或其他服务类型。在至少一个实施例中,服务1620可以提供软件1618中的一个或更多个应用程序所共有的功能,因此可以将功能抽象为可以被应用程序调用或利用的服务。在至少一个实施例中,由服务1620提供的功能可以动态且更有效地运行,同时还可以通过允许应用程序并行地处理数据(例如,使用图17中的并行计算平台1730)来很好地缩放。在至少一个实施例中,不是要求共享服务1620提供的相同功能的每个应用程序都必须具有服务1620的相对应实例,而是可以在各种应用程序之间和之中共享服务1620。在至少一个实施例中,作为非限制性示例,服务可包括可用于执行检测或分割任务的推理服务器或引擎。在至少一个实施例中,可以包括模型训练服务,其可以提供机器学习模型训练和/或重新训练能力。在至少一个实施例中,可以进一步包括数据增强服务,其可以提供GPU加速的数据(例如,DICOM、RIS、CIS、符合REST、RPC、原始等)提取、调整大小、缩放和/或其他增强。在至少一个实施例中,可以使用可视化服务,其可以添加图像渲染效果(例如光线跟踪、光栅化、去噪、锐化等),以向二维(2D)和/或三维(3D)模型添加真实感。在至少一个实施例中,可以包括虚拟仪器服务,其为虚拟仪器的管线内的其他应用程序提供波束赋形、分割、推理、成像和/或支持。
在至少一个实施例中,在服务1620包括AI服务(例如,推理服务)的情况下,作为应用程序执行的一部分,可以通过调用(例如,作为API调用)推理服务(例如,推理服务器),以执行一个或更多个机器学习模型或其处理,来执行一个或更多个机器学习模型。在至少一个实施例中,在另一应用程序包括用于分割任务的一个或更多个机器学习模型的情况下,应用程序可以调用推理服务来执行机器学习模型,以用于执行与分割任务相关联的一个或更多个处理操作。在至少一个实施例中,实现高级处理和推理管线的软件1618,其包括分割应用程序和异常检测应用程序,可以被流水线化,因为每个应用程序可以调用相同的推理服务来执行一个或更多个推理任务。
在至少一个实施例中,硬件1622可包括GPU、CPU、DPU、图形卡、AI/深度学***台或其组合。在至少一个实施例中,可以使用不同类型的硬件1622,以为部署***1606中的软件1618和服务1620提供高效的、专门构建的支持。在至少一个实施例中,可以实现使用GPU处理来在AI/深度学***台还可包括用于深度学***台可以进一步包括DPU处理以将通过网络和/或通过网络控制器或其他网络接口接收的数据直接传输到一个或更多个GPU(例如,存储器)。在至少一个实施例中,可以使用AI/深度学***台,来执行云平台(例如,NVIDIA的NGC)。在至少一个实施例中,云平台可以在多个GPU上集成应用程序容器集群***或协调***(例如,KUBERNETES),以实现无缝缩放和负载均衡。
图17是根据至少一个实施例的用于生成和部署成像部署管线的示例***1700的***图。在至少一个实施例中,***1700可以用于实现图16的过程1600和/或其他过程,包括高级处理和推理管线。在至少一个实施例中,***1700可以包括训练***1604和部署***1606。在至少一个实施例中,可以使用软件1618、服务1620和/或硬件1622,来实现训练***1604和部署***1606,如本文所述。
在至少一个实施例中,***1700(例如,训练***1604和/或部署***1606)可以在云计算环境中(例如,使用云1726)实现。在至少一个实施例中,***1700可以在本地实现(关于医疗服务设施),或者作为云计算资源和本地计算资源的组合来实现。在至少一个实施例中,可以通过制定安全措施或协议,将对云1726中的API的访问权限限制为授权用户。在至少一个实施例中,安全协议可以包括网络令牌,其可以由认证(例如,AuthN、AuthZ、Gluecon等)服务签名,并且可以携带适当的授权。在至少一个实施例中,虚拟仪器的API(本文中描述)或***1700的其他实例可以被限制为已被审核或授权用于交互的一组公共IP。
在至少一个实施例中,***1700的各个组件可以使用多种不同网络类型中的任何一种在彼此之间进行通信,所述不同网络类型包括但不限于经由有线和/或无线通信协议的局域网(LAN)和/或广域网(WAN)。在至少一个实施例中,***1700的设施和组件之间的通信(例如,用于发送推理请求、用于接收推理请求的结果等)可以通过一个或更多个数据总线、无线数据协议(Wi-Fi)、有线数据协议(例如以太网)等进行传送。
在至少一个实施例中,类似于本文关于图16所描述的,训练***1604可以执行训练管线1704。在至少一个实施例中,其中部署***1606将在部署管线1710中使用一个或更多个机器学习模型,训练管线1704可用于训练或重新训练一个或更多个(例如,预训练的)模型,和/或实现一个或更多个预训练模型1706(例如,无需重新训练或更新)。在至少一个实施例中,作为训练管线1704的结果,可以生成输出模型1616。在至少一个实施例中,训练管线1704可以包括任意数量的处理步骤,诸如但不限于成像数据(或其他输入数据)的转换或适配。在至少一个实施例中,对于由部署***1606使用的不同的机器学习模型,可以使用不同的训练管线1704。在至少一个实施例中,类似于关于图16描述的第一示例的训练管线1704可用于第一机器学习模型,类似于关于图16描述的第二示例的训练管线1704可用于第二机器学习模型,类似于关于图16描述的第三示例的训练管线1704可用于第三机器学习模型。在至少一个实施例中,可以根据每个相对应机器学习模型的要求来使用训练***1604内任务的任何组合。在至少一个实施例中,一个或更多个机器学习模型可能已经被训练并准备好用于部署,因此训练***1604可能不会对机器学习模型进行任何处理,并且一个或更多个机器学习模型可以由部署***1606来实现。
在至少一个实施例中,根据实现方式或实施例,输出模型1616和/或预训练模型1706可包括任何类型的机器学习模型。在至少一个实施例中并且不限于此,***1700使用的机器学习模型可以包括使用线性回归、逻辑回归、决策树、支持向量机(SVM)、朴素贝叶斯、k-最近邻(Knn)、k均值聚类、随机森林、降维算法、梯度提升算法、神经网络(例如,自动编码器、卷积、递归、感知器、长/短期记忆(LSTM)、Hopfield、Boltzmann、深度信念、反卷积、生成对抗、液体状态机等),和/或其他类型的机器学习模型。
在至少一个实施例中,训练管线1704可以包括AI辅助注释,如本文关于至少图16B更详细描述的。在至少一个实施例中,可以通过任何数量的技术来生成标记的临床数据1612(例如,传统注释)。在至少一个实施例中,在一些示例中可以在绘图程序(例如,注释程序)、计算机辅助设计(CAD)程序、标记程序、适用于生成地面实况的注释或标签的另一类型的应用程序中、和/或可以手绘,生成标签或其他注释。在至少一个实施例中,地面实况数据可以被合成产生(例如,从计算机模型或渲染生成)、真实产生(例如,从真实世界数据设计和生成)、机器自动产生(例如,使用特征分析和学***台,所述多层平台可以包括诊断应用程序(或其他应用程序类型)的软件层(例如软件1618),其可以执行一个或更多个医学成像和诊断功能。在至少一个实施例中,***1700可以通信地耦合到(例如,经由加密链路)一个或更多个设施的PACS服务器网络。在至少一个实施例中,***1700可被配置为从PACS服务器访问和引用数据,以执行操作,例如训练机器学习模型、部署机器学习模型、图像处理、推理和/或其他操作。
在至少一个实施例中,软件层可以被实现为安全的、加密的和/或经认证的API,通过所述API可以从外部环境(例如,设施1602)援引(invoke)(例如,调用(call))应用程序或容器。在至少一个实施例中,应用程序随后可以调用或执行一个或更多个服务1620,以执行与各自的应用程序相关联的计算、AI或可视化任务,并且软件1618和/或服务1620可以利用硬件1622以有效和高效的方式执行处理任务。
在至少一个实施例中,部署***1606可以执行部署管线1710。在至少一个实施例中,部署管线1710可以包括任意数量的应用程序,所述应用程序可以是顺序的、非顺序的,或者以其他方式应用于成像数据(和/或其他数据类型)-包括AI辅助注释,所述成像数据由成像设备、测序设备、基因组学设备等生成,如上所述。在至少一个实施例中,如本文所述,用于个体设备的部署管线1710可以被称为用于设备的虚拟仪器(例如,虚拟超声仪器、虚拟CT扫描仪器、虚拟测序仪器等)。在至少一个实施例中,对于单个设备,可以存在不止一个部署管线1710,这取决于从设备生成的数据所期望的信息。在至少一个实施例中,在期望从MRI机器检测到异常的情况下,可以存在第一部署管线1710,并且在期望从MRI机器的输出进行图像增强的情况下,可以存在第二部署管线1710。
在至少一个实施例中,图像生成应用程序可以包括包括使用机器学习模型的处理任务。在至少一个实施例中,用户可能希望使用他们自己的机器学习模型,或者从模型注册表1624中选择机器学习模型。在至少一个实施例中,用户可以实现他们自己的机器学习模型或选择机器学习模型,以包含在执行处理任务的应用程序中。在至少一个实施例中,应用程序可以是可选择的和可定制的,并且通过定义应用程序的构造,针对特定用户的应用程序的部署和实现被呈现为更加无缝的用户体验。在至少一个实施例中,通过利用***1700的其他特征(例如服务1620和硬件1622),部署管线1710可以更加用户友好,提供更容易的集成,并且产生更准确、高效和及时的结果。
在至少一个实施例中,部署***1606可以包括用户接口1717(例如,图形用户接口、Web接口等),所述用户接口可以被用于选择要包括在部署管线1710中的应用程序、布置应用程序、修改或改变应用程序或其参数或构造、在设置和/或部署期间使用部署管线1710以及与其交互,和/或以其他方式与部署***1606交互。在至少一个实施例中,尽管没有关于训练***1604示出,但是用户接口1714(或不同的用户接口)可用于选择在部署***1606中使用的模型、用于选择用于在训练***1604中训练或重新训练的模型,和/或用于以其他方式与训练***1604交互。
在至少一个实施例中,除了应用程序协调***1728之外,还可以使用管线管理器1712来管理部署管线1710的应用程序或容器与服务1620和/或硬件1622之间的交互。在至少一个实施例中,管线管理器1712可以被配置为促进从应用程序到应用程序、从应用程序到服务1620,和/或从应用程序或服务到硬件1622的交互。在至少一个实施例中,尽管示出为包括在软件1618中,这并不旨在进行限制,并且在一些示例中(例如,如图15所示),管线管理器1712可以被包括在服务1620中。在至少一个实施例中,应用程序协调***1728(例如,Kubernetes、DOCKER等)可以包括容器协调***,其可以将应用程序分组到容器中,作为用于协调、管理、缩放和部署的逻辑单元。在至少一个实施例中,通过将来自部署管线1710的应用程序(例如,重建应用程序、分割应用程序等)与各个容器相关联,每个应用程序可以在自包含的环境(例如,在内核级)中执行,以提高速度和效率。
在至少一个实施例中,每个应用程序和/或容器(或其映像)可以被单独开发、修改和部署(例如,第一用户或开发者可以开发、修改和部署第一应用程序,第二用户或开发者可以开发、修改和部署与第一用户或开发者分开的第二应用程序),这可以允许专注并关注单个应用程序和/或容器的任务,而不受另一个应用程序或容器的任务的阻碍。在至少一个实施例中,管线管理器1712和应用程序协调***1728可以辅助不同容器或应用程序之间的通信和协作。在至少一个实施例中,只要每个容器或应用程序的预期输入和/或输出是***已知的(例如,基于应用程序或容器的构造),则应用程序协调***1728和/或管线管理器1712可以促进每个应用程序或容器之间和之中的通信以及资源的共享。在至少一个实施例中,由于部署管线1710中的一个或更多个应用程序或容器可以共享相同的服务和资源,因此应用程序协调***1728可以在各个应用程序或容器之间和之中进行协调、负载均衡,并确定服务或资源的共享。在至少一个实施例中,调度器可用于跟踪应用程序或容器的资源需求、这些资源的当前使用或计划使用,以及资源可用性。因此,在至少一个实施例中,考虑到***的需求和可用性,调度器可以将资源分配给不同的应用程序,并在应用程序之间和之中分配资源。在一些示例中,调度器(和/或应用程序协调***1728的其他组件)可以基于施加在***上的约束(例如,用户约束)来确定资源可用性和分布,例如服务质量(QoS)、对数据输出的迫切需求(例如,以确定是执行实时处理还是延迟处理)等。
在至少一个实施例中,由部署***1606中的应用程序或容器利用并由其共享的服务1620,可以包括计算服务1716、AI服务1718、可视化服务1720和/或其他服务类型。在至少一个实施例中,应用程序可以调用(例如,执行)一个或更多个服务1620,以执行针对应用程序的处理操作。在至少一个实施例中,应用程序可以利用计算服务1716来执行超级计算或其他高性能计算(HPC)任务。在至少一个实施例中,可以利用一个或更多个计算服务1716来执行并行处理(例如,使用并行计算平台1730),以通过一个或更多个应用程序和/或单个应用程序的一个或更多个任务基本上同时地处理数据。在至少一个实施例中,并行计算平台1730(例如,NVIDIA的CUDA)可以在GPU(GPGPU)(例如,GPU1722)上实现通用计算。在至少一个实施例中,并行计算平台1730的软件层可以提供对GPU的虚拟指令集和并行计算元素的访问,以执行计算内核。在至少一个实施例中,并行计算平台1730可以包括存储器,并且在一些实施例中,可以在多个容器之间和之中,和/或在单个容器内的不同处理任务之间和之中共享存储器。在至少一个实施例中,可以为多个容器和/或容器内的多个进程生成进程间通信(IPC)调用,以使用于自并行计算平台1730的共享存储器段的相同数据(例如,其中一应用程序或多个应用程序的多个不同阶段正在处理相同的信息)。在至少一个实施例中,不是复制数据并将数据移动到存储器中的不同位置(例如,读/写操作),而是可以将存储器相同位置中的相同数据用于任何数量的处理任务(例如,在同一时间、不同时间等)。在至少一个实施例中,由于作为处理的结果数据被用于生成新数据,因此数据的新位置的该信息可以在各个应用程序之间存储和共享。在至少一个实施例中,数据的位置以及经更新或修改的数据的位置可以是如何理解容器中的有效负载的定义的一部分。
在至少一个实施例中,可以利用AI服务1718来执行推理服务,该推理服务用于执行与应用程序相关联的机器学***协议,例如用于在紧急情况下对紧急请求执行推理,或者在诊断过程中用于放射科医生。在至少一个实施例中,第二类别可以包括标准优先级路径,其可用于可能不紧急的请求或者可以在稍后的时间执行分析的情况。在至少一个实施例中,应用程序协调***1728可以基于优先级路径来分配资源(例如,服务1620和/或硬件1622),以用于AI服务1718的不同推理任务。
在至少一个实施例中,共享存储器可以被安装到***1700中的AI服务1718。在至少一个实施例中,共享存储器可以操作为高速缓存(或其他存储设备类型),并且可以用于处理来自应用程序的推理请求。在至少一个实施例中,当提交推理请求时,部署***1606的一组API实例可以接收请求,并且可以选择一个或更多个实例(例如,为了最佳拟合、为了负载均衡等)来处理请求。在至少一个实施例中,为了处理请求,可以将请求输入到数据库中,如果尚未在高速缓存中,则可以从模型注册表1624定位机器学习模型,验证步骤可以确保将适当的机器学习模型加载到高速缓存中(例如,共享存储),和/或可以将模型的副本保存到高速缓存中。在至少一个实施例中,如果应用程序尚未运行或没有足够的应用程序的实例,则可使用调度器(例如,管线管理器1712的调度器)来启动在请求中引用的应用程序。在至少一个实施例中,如果尚未启动推理服务器来执行模型,则可以启动推理服务器。每个模型可以启动任意数量的推理服务器。在至少一个实施例中,在将推理服务器聚类的拉(pull)模型中,每当负载均衡有利时,就可以将模型高速缓存。在至少一个实施例中,推理服务器可以静态加载到相应的分布式服务器中。
在至少一个实施例中,可以使用在容器中运行的推理服务器来执行推理。在至少一个实施例中,推理服务器的实例可以与模型(并且可选地与模型的多个版本)相关联。在至少一个实施例中,如果在接收到对模型执行推理的请求时推理服务器的实例不存在,则可以加载新实例。在至少一个实施例中,当启动推理服务器时,可以将模型传递到推理服务器,使得可以使用相同的容器来服务不同的模型,只要推理服务器作为不同的实例运行即可。
在至少一个实施例中,在应用程序执行期间,可以接收对给定应用程序的推理请求,并且可以加载(如果尚未加载的话)容器(例如,托管推理服务器的实例),以及可以调用启动程序。在至少一个实施例中,容器中的预处理逻辑可以(例如,使用CPU和/或GPU和/或DPU)对传入的数据进行加载、解码和/或执行任何附加的预处理。在至少一个实施例中,一旦数据准备好进行推理,容器就可以根据需要对数据进行推理。在至少一个实施例中,这可以包括对一个图像(例如,手部X光线)的单个推理调用,或可要求对数百个图像(例如,胸部CT)进行推理。在至少一个实施例中,应用程序可在完成之前总结结果,其可以包括但不限于单个置信度得分、像素级分割、体素级分割、生成可视化或生成文本以总结结果。在至少一个实施例中,可以为不同的模型或应用程序分配不同的优先级。例如,一些模型可具有实时(TAT小于1分钟)优先级,而其他模型可具有较低的优先级(例如,TAT小于12分钟)。在至少一个实施例中,模型执行时间可以从请求机构或实体进行测量,并且可以包括合作网络遍历时间以及推理服务的执行时间。
在至少一个实施例中,请求在服务1620和推理应用程序之间的传送可以隐藏在软件开发工具包(SDK)后面,并且可以通过队列提供鲁棒的传输。在至少一个实施例中,将通过AP1将请求放置在队列中,以用于个体应用程序/租户ID组合,并且SDK将从队列中拉取请求并将请求提供给应用程序。在至少一个实施例中,在SDK将从中拾取队列的环境中,可以提供队列的名称。在至少一个实施例中,通过队列的异步通信可能有用,因为它可以允许应用程序的任何实例在其可用时拾取工作。可以通过队列将结果传送回去,以确保没有数据丢失。在至少一个实施例中,队列还可以提供对工作进行分割的能力,因为最高优先级的工作可以进入与应用程序的大多数实例连接的队列,而最低优先级的工作可以进入与单个实例连接的队列,所述实例按照接收到的顺序处理任务。在至少一个实施例中,应用程序可以在GPU加速的实例上运行,所述实例在云1726中生成,并且推理服务可以在GPU上执行推理。
在至少一个实施例中,可以利用可视化服务1720来生成用于查看应用程序和/或部署管线1710输出的可视化。在至少一个实施例中,可视化服务1720可以利用GPU1722来生成可视化。在至少一个实施例中,可视化服务1720可以实现诸如光线追踪之类的渲染效果,以生成更高质量的可视化。在至少一个实施例中,可视化可以包括但不限于2D图像渲染、3D体渲染、3D体重建、2D层析切片、虚拟现实显示、增强现实显示等。在至少一个实施例中,可以使用虚拟化环境来生成虚拟交互显示或环境(例如,虚拟环境),以供***用户(例如,医生、护士、放射科医生等)进行交互。在至少一个实施例中,可视化服务1720可以包括内部可视化器、电影和/或其他渲染或图像处理能力或功能(例如,光线追踪、光栅化、内部光学器件等)。
在至少一个实施例中,硬件1622可以包括GPU 1722、AI***1724、云1726和/或用于执行训练***1604和/或部署***1606的任何其他硬件。在至少一个实施例中,GPU 1722(例如,NVIDIA的TESLA和/或QUADROGPU)可包括可用于执行计算服务1716、AI服务1718、可视化服务1720、其他服务和/或软件1618的任何特征或功能的处理任务的任意数量的GPU。例如,对于AI服务1718,GPU 1722可用于对成像数据(或机器学***台。在至少一个实施例中,AI***1724可以使用GPU,并且可以使用一个或更多个AI***1724来执行云1726(或者任务为深度学习或推理的至少部分)。同样,尽管硬件1622被示出为离散组件,但这并不意图是限制,并且硬件1622的任何组件可以与硬件1622的任何其他组件组合,或由硬件1622的任何其他组件利用。
在至少一个实施例中,AI***1724可包括专门构建的计算***(例如,超级计算机或HPC),该计算***配置用于推理、深度学习、机器学习和/或其他人工智能任务。在至少一个实施例中,除了CPU、RAM、存储器和/或其他组件、特征或功能之外,AI***1724(例如,NVIDIA的DGX)还可以包括可以使用多个GPU1722来执行分GPU优化的软件(例如,软件栈)。在至少一个实施例中,可以在云1726中(例如,在数据中心中)实现一个或更多个AI***1724,以执行***1700的一些或全部基于AI的处理任务。
在至少一个实施例中,云1726可以包括GPU加速的基础设施(例如,NVIDIA的NGC),其可以提供用于执行***1700的处理任务的GPU优化的平台。在至少一个实施例中,云1726可以包括AI***1724,其用于执行***1700的一个或更多个基于AI的任务(例如,作为硬件抽象和缩放平台)。在至少一个实施例中,云1726可以与利用多个GPU的应用程序协调***1728集成,以实现应用程序和服务1620之间和之中的无缝缩放和负载均衡。在至少一个实施例中,如本文所述,云1726可以负责执行***1700的至少一些服务1620,包括计算服务1716、AI服务1718和/或可视化服务1720。在至少一个实施例中,云1726可以执行大小批的推理(例如,执行NVIDIA的TENSORRT),提供加速的并行计算API和平台1730(例如,NVIDIA的CUDA),执行应用程序协调***1728(例如,KUBERNETES),提供图形渲染API和平台(例如,用于光线跟踪,2D图形、3D图形和/或其他渲染技术以产生更高质量的电影效果),和/或可以为***1700提供其他功能。
图18A示出了根据至少一个实施例的用于训练、重新训练或更新机器学习模型的过程1800的数据流图。在至少一个实施例中,可以使用作为非限制性示例的图17的***1700来执行过程1800。在至少一个实施例中,过程1800可以利用***1700的服务1620和/或硬件1622,如本文所述。在至少一个实施例中,由过程1800生成的精炼模型1812可以由部署***1606针对部署管线1710中的一个或更多个容器化的应用程序执行。
在至少一个实施例中,模型训练1614可包括使用新的训练数据(例如,新的输入数据(诸如客户数据集1806),和/或与输入数据相关联的新的地面实况数据)重新训练或更新初始模型1804(例如,预训练模型)。在至少一个实施例中,为了重新训练或更新初始模型1804,可以重置或删除初始模型1804的输出或损失层,和/或用更新的或新的输出或损失层代替。在至少一个实施例中,初始模型1804可以具有从先前的训练中保留下来的先前精细调整的参数(例如,权重和/或偏差),因此训练或重新训练1614可能不需要花费与从头开始训练模型一样长的时间或不需要那么多的处理。在至少一个实施例中,在模型训练1614期间,通过重置或替换初始模型1804的输出或损失层,在新的客户数据集1806(例如图16的图像数据1608)上生成预测时,可以基于与输出或损失层的精度相关联的损失计算,更新和重新调整新数据集的参数。
在至少一个实施例中,可以将经预训练的模型1706存储在数据存储或注册表中(例如,图16的模型注册表1624)。在至少一个实施例中,经预训练的模型1706可能已经至少部分地在除了执行过程1800的设施之外的一个或更多个设施处被训练。在至少一个实施例中,为了保护患者、受试者或不同设施的客户的隐私和权利,经预训练的模型1706可能已经使用本地生成的客户或患者数据在本地进行了训练。在至少一个实施例中,可以使用云1726和/或其他硬件1622来训练经预训练的模型1706,但是机密的、受隐私保护的患者数据可以不被传送到云1726的任何组件(或其他非本地硬件)、由其使用或由其访问。在至少一个实施例中,如果使用于自不止一个设施的患者数据来训练经预训练的模型1706,则在来自另一设施的患者或客户数据上进行训练之前,经预训练的模型1706可能已经针对每个设施进行了单独训练。在至少一个实施例中,例如在客户或患者数据已发布隐私问题(例如,通过放弃,用于实验用途等),或者其中客户或患者数据包括在公共数据集中的情况下,来自任意数量的设施的客户或患者数据可以用于在本地和/或外部训练经预训练的模型1706,例如在数据中心中或其他云计算基础设施中。
在至少一个实施例中,在选择应用程序以在部署管线1710中使用时,用户还可以选择用于特定应用程序的机器学习模型。在至少一个实施例中,用户可能没有模型以使用,因此用户可以选择要与应用程序一起使用的经预训练的模型1706。在至少一个实施例中,经预训练的模型1706可能没有被优化用于在用户设施的客户数据集1806上生成准确的结果(例如,基于患者多样性、人口统计、所使用的医学成像设备的类型等)。在至少一个实施例中,在将经预训练的模型1706部署到部署管线1710中以与一个或更多个应用程序一起使用之前,经预训练的模型1706可以被更新、重新训练和/或微调,以用于在各个设施处使用。
在至少一个实施例中,用户可以选择要更新、重新训练和/或微调的经预训练的模型1706,并且经预训练的模型1706可以称为过程1800中训练***1604的初始模型1804。在至少一个实施例中,客户数据集1806(例如,成像数据、基因组数据、测序数据或由设施处的设备生成的其他数据类型)可用于对初始模型1804执行模型训练1617(其可包括但不限于传递学习),以生成精炼模型1812。在至少一个实施例中,可以由训练***1604生成与客户数据集1806相对应的地面实况数据。在至少一个实施例中,可以至少部分地由临床医生、科学家、医生、从业者在设施处生成地面实况数据(例如,如图16中的标记的临床数据1612)。
在至少一个实施例中,在一些示例中可以使用AI辅助注释1610来生成地面实况数据。在至少一个实施例中,AI辅助注释1610(例如,使用AI辅助注释SDK实现)可以利用机器学习模型(例如,神经网络)来生成用于客户数据集的建议或预测的地面实况数据。在至少一个实施例中,用户1810可以在计算设备1808上的用户界面(图形用户界面(GUI))内使用注释工具。
在至少一个实施例中,用户1810可以经由计算设备1808与GUI交互,以编辑或微调注释或自动注释。在至少一个实施例中,多边形编辑特征可以用于将多边形的顶点移动到更精确或微调的位置。
在至少一个实施例中,一旦客户数据集1806具有相关联的地面实况数据,则地面实况数据(例如,来自AI辅助注释、手动标记等)可以在模型训练1614期间用于生成精炼模型1812。在至少一个实施例中,客户数据集1806可以被应用到初始模型1804任意次数,并且地面实况数据可以用于更新初始模型1804的参数,直到对于精炼模型1812达到可接受的精度水平为止。在至少一个实施例中,一旦生成精炼模型1812,就可以在设施处的一个或更多个部署管线1710内部署精炼模型1812,以用于执行关于医学成像数据的一个或更多个处理任务。
在至少一个实施例中,可以将精炼模型1812上传到模型注册表1624中的经预训练的模型1706,以由另一个设施选择。在至少一个实施例中,他的过程可以在任意数量的设施处完成,使得可以在新数据集上对精炼模型1812进一步精炼任意次数,以生成更通用的模型。
图18B是根据至少一个实施例的用于利用经预训练的注释模型来增强注释工具的客户端-服务器架构1832的示例图示。在至少一个实施例中,可以基于客户端-服务器架构1832来实例化AI辅助注释工具1836。在至少一个实施例中,成像应用程序中的注释工具1836可以帮助放光线医生,例如识别器官和异常。在至少一个实施例中,成像应用程序可以包括软件工具,作为非限制性示例,所述软件工具帮助用户1810识别原始图像1834中(例如,在3DMRI或CT扫描中)的特定感兴趣器官上的几个极值点,并接收特定器官的所有2D切片的自动注释结果。在至少一个实施例中,结果可以作为训练数据1838存储在数据存储中,并且用作(例如但不限于)用于训练的地面实况数据。在至少一个实施例中,当计算设备1808发送用于AI辅助注释1610的极值点时,例如,深度学习模型可以接收该数据作为输入并返回分割器官或异常的推理结果。在至少一个实施例中,预实例化的注释工具(例如图18B中的AI辅助注释工具1836B)可以通过对服务器(诸如注释助手服务器1840)进行API调用(例如API调用1844)来增强,注释助手服务器1840可包括存储在例如注释模型注册表中的一组经预训练的模型1842。在至少一个实施例中,注释模型注册表可以存储经预训练的模型1842(例如,机器学习模型,诸如深度学习模型),其被预训练以对特定器官或异常执行AI辅助注释。在至少一个实施例中,可以通过使用训练管线1704来进一步更新这些模型。在至少一个实施例中,随着添加新标记的临床数据1612,可以随时间改进预安装的注释工具。
这样的组件可用于生成模拟网络训练过程中的故障情况的合成数据,这可有助于提高网络的性能,同时限制合成数据的量以避免过度拟合。
其他其他变型在本公开的精神内。因此,尽管公开的技术易于进行各种修改和替代构造,但是某些示出的其实施例在附图中示出并且已经在上面进行了详细描述。然而,应理解,无意将公开内容限制为所公开的一种或更多种特定形式,而是相反,其意图是涵盖落入如所附权利要求书所定义的本公开内容的精神和范围内的所有修改、替代构造和等同物。
除非另有说明或显然与上下文矛盾,否则在描述所公开的实施例的上下文中(特别是在所附权利要求的上下文中),术语“一”和“一个”和“该”以及类似指代的使用应被解释为涵盖单数和复数,而不是作为术语的定义。除非另有说明,否则术语“包括”、“具有”、“包含”和“含有”应被解释为开放式术语(意味着“包括但不限于”)。术语“连接”(在未经修改时指的是物理连接)应解释为部分或全部包含在内、附接到或连接在一起,即使有某些介入。除非本文另外指出,否则本文中对数值范围的引用仅旨在用作分别指代落入该范围内的每个单独值的简写方法,并且每个单独值都被并入说明书中,就如同其在本文中被单独叙述一样。在至少一个实施例中,除非另外指出或与上下文矛盾,否则术语“集”(例如“项目集”)或“子集”的使用应解释为包括一个或更多个成员的非空集合。此外,除非另外指出或与上下文矛盾,否则术语相对应集的“子集”不一定表示对应集的适当子集,而是子集和对应集可以相等。
除非以其他方式明确指出或与上下文明显矛盾,否则诸如“A,B和C中的至少一个”或“A,B与C中的至少一个”形式的短语之类的连接语在上下文中理解为通常用于表示项目、条款等,其可以是A或B或C,也可以是A和B和C集的任何非空子集。例如,在具有三个成员的集的说明性示例中,连接短语“A,B和C中的至少一个”和“A,B与C中的至少一个”是指以下任意集:{A},{B},{C},{A,B},{A,C},{B,C},{A,B,C}。因此,这种连接语言通常不旨在暗示某些实施例要求存在A中的至少一个,B中的至少一个和C中的至少一个。另外,除非另有说明或与上下文矛盾,否则术语“多个”表示复数的状态(例如,“多个项目”表示多个项目)。在至少一个实施例中,多个项目中项目的数量至少为两个,但如果明确指示或通过上下文指示,则可以更多。此外,除非另有说明或从上下文中可以清楚得知,否则短语“基于”是指“至少部分基于”而不是“仅基于”。
除非本文另外指出或与上下文明显矛盾,否则本文描述的过程的操作可以任何合适的顺序执行。在至少一个实施例中,诸如本文所述的那些过程(或其变形和/或其组合)之类的过程在配置有可执行指令的一个或更多个计算机***的控制下执行,并且被实现为代码(例如,可执行指令,一个或更多个计算机程序或一个或更多个应用程序),该代码通过硬件或其组合在一个或更多个处理器上共同执行。在至少一个实施例中,代码以例如计算机程序的形式存储在计算机可读存储介质上,该计算机程序包括可由一个或更多个处理器执行的多个指令。在至少一个实施例中,计算机可读存储介质是非暂时性计算机可读存储介质,其排除了暂时性信号(例如,传播的瞬态电或电磁传输),但包括非暂时性数据存储电路(例如,缓冲区、高速缓存和队列)。在至少一个实施例中,代码(例如,可执行代码或源代码)被存储在其上存储有可执行指令的一组一个或更多个非暂时性计算机可读存储介质(或用于存储可执行指令的其他存储器)上,该可执行指令在由计算机***的一个或更多个处理器执行时(即,作为被执行的结果),使得计算机***执行本文所述的操作。在至少一个实施例中,一组非暂时性计算机可读存储介质包括多个非暂时性计算机可读存储介质,并且多个非暂时性计算机可读存储介质中的个体非暂时性存储介质中的一个或更多个缺少全部代码,而是多个非暂时性计算机可读存储介质共同存储全部代码。在至少一个实施例中,可执行指令被执行,以使得不同的指令由不同的处理器执行。
因此,在至少一个实施例中,计算机***被配置为实现单独地或共同地执行本文所述的过程的操作的一个或更多个服务,并且这样的计算机***被配置有使能实施操作的适用的硬件和/或软件。此外,实现本公开的至少一个实施例的计算机***是单个设备,并且在另一实施例中是分布式计算机***,其包括以不同方式操作的多个设备,使得分布式计算机***执行本文所述的操作,并且使得单个设备不执行所有操作。
本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本公开的实施例,并且不对公开的范围构成限制,除非另有要求。说明书中的任何语言都不应被解释为表示任何未要求保护的要素对于实践公开内容是必不可少的。
本文引用的所有参考文献,包括出版物、专利申请和专利,均通过引用并入本文,其程度就如同每个参考文献被单独且具体地指示为以引用的方式并入本文并且其全部内容在本文中阐述一样。
在说明书和权利要求中,可以使用术语“耦合”和“连接”以及它们的派生词。应当理解,这些术语可能不旨在作为彼此的同义词。相反,在特定示例中,“连接”或“耦合”可用于指示两个或更多个元件彼此直接或间接物理或电接触。“耦合”也可能意味着两个或更多个元素彼此不直接接触,但仍彼此协作或交互。
除非另有明确说明,否则可以理解,在整个说明书中,诸如“处理”、“计算”、“计算”、“确定”等之类的术语,是指计算机或计算***或类似的电子计算设备的动作和/或过程,其将计算***的寄存器和/或存储器中表示为物理量(例如电子)的数据处理和/或转换为类似表示为计算***的存储器、寄存器或其他此类信息存储、传输或显示设备中的物理量的其他数据。
以类似的方式,术语“处理器”可以指处理来自寄存器和/或存储器的电子数据并将该电子数据转换成可以存储在寄存器和/或存储器中的其他电子数据的任何设备或存储器的一部分。“计算平台”可以包括一个或更多个处理器。如本文所使用的,“软件”进程可以包括例如随时间执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。同样,每个过程可以指代多个过程,以连续地或间歇地顺序地或并行地执行指令。在至少一个实施例中,术语“***”和“方法”在本文中可以互换使用,只要***可以体现一种或更多种方法,并且方法可以被认为是***。
在本文件中,在至少一个实施例中,可以参考获得、获取、接收或将模拟或数字数据输入子***、计算机***或计算机实现的机器中的过程。在至少一个实施例中,可以通过多种方式来获得、获取、接收或输入模拟和数字数据的过程,例如通过接收作为函数调用或对应用程序编程接口的调用的参数的数据。在至少一个实施例中,可以通过经由串行或并行接口传输数据来完成获得、获取、接收或输入模拟或数字数据的过程。在至少一个实施例中,可以通过经由计算机网络将数据从提供实体传输到获取实体来完成获得、获取、接收或输入模拟或数字数据的过程。在至少一个实施例中,也可以参考提供、输出、传送、发送或呈现模拟或数字数据。在各种示例中,提供、输出、传送、发送或呈现模拟或数字数据的过程可以通过将数据作为函数调用的输入或输出参数、应用程序编程接口或进程间通信机制的参数进行传输来实现。
尽管本文讨论阐述了所描述的技术的示例实施例,但是其他架构可以用于实现所描述的功能,并且旨在落入本公开的范围内。此外,尽管出于描述的目的在上面定义了具体的职责分配,但是根据情况,可以以不同的方式分配和划分各种功能和职责。
此外,尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所附权利要求书所要求保护的主题不必限于所描述的特定特征或动作。而是,公开了特定的特征和动作作为实现权利要求的示例性形式。
Claims (20)
1.一种方法,包括:
使用处理设备接收数据路径电路的第一设计状态;
提供所述数据路径电路的所述第一设计状态作为机器学习模型的输入;以及
使用所述机器学习模型执行一种或更多种强化学习技术以使所述机器学习模型输出所述数据路径电路的最终设计状态,其中所述数据路径电路的所述最终设计状态与最终参数值相关联,所述最终参数值比与所述第一设计状态相关联的第一参数值更接近目标。
2.如权利要求1所述的方法,其中执行所述一种或更多种强化学习技术包括:
使用所述机器学习模型处理所述数据路径电路的所述第一设计状态,其中所述机器学习模型输出所述数据路径电路的第二设计状态,所述第二设计状态是所述第一设计状态的修改;
确定所述第一设计状态的所述第一参数值和所述第二设计状态的第二参数值;
基于所述第一参数值和所述第二参数值的比较来更新所述机器学习模型;以及
使用更新的机器学习模型处理所述数据路径电路的所述第一设计状态或所述第二设计状态,其中所述更新的机器学习模型输出所述数据路径电路的第三设计状态,所述第三设计状态是所述第一设计状态或所述第二设计状态的修改。
3.如权利要求2所述的方法,还包括:
使用第二模型处理所述第一设计状态,其中所述第二模型输出与所述第一设计状态相关联的所述第一参数值;
使用所述第二模型处理所述第二设计状态,其中所述第二模型输出与所述第二设计状态相关联的所述第二参数值;以及
在所述第二参数值和所述第一参数值之间进行比较,以确定所述第一参数值和所述第二参数值中的哪一个更接近所述目标。
4.如权利要求3所述的方法,其中:
所述机器学习模型接收所述第一设计状态的第一图的网格表示作为输入,并输出所述第二设计状态的第二图的网格表示;以及
所述第二模型是度量预测模型,所述度量预测模型接收所述第一设计状态的所述第一图的所述网格表示作为第一输入,并且接收所述第二设计状态的所述第二图的所述网格表示作为第二输入。
5.如权利要求3所述的方法,所述机器学习模型接收所述第一设计状态的第一图的网格表示作为输入,并输出动作以生成所述第二设计状态的第二图的所述网格表示,所述方法还包括:
将所述第二设计状态的第二图的网格表示转换为所述第二设计状态的电路实现;
其中所述第二模型接收所述第一设计状态的电路实现作为第一输入,并且接收所述第二设计状态的电路实现作为第二输入。
6.如权利要求2所述的方法,还包括:
确定所述第二参数值和所述第一参数值之间的差值,其中所述机器学习模型基于所述差值而更新。
7.如权利要求2所述的方法,还包括:
使用电路合成工具处理所述第一设计状态,其中所述电路合成工具输出与所述第一设计状态相关联的所述第一参数值;
使用所述电路合成工具处理所述第二设计状态,其中所述电路合成工具输出与所述第二设计状态相关联的所述第二参数值;以及
在所述第二参数值和所述第一参数值之间进行比较,以确定所述第一参数值和所述第二参数值中的哪一个更接近所述目标。
8.如权利要求7所述的方法,其中所述电路合成工具处理所述第一设计状态至少部分与所述机器学习模型输出动作同步,以生成所述数据路径电路的所述第二设计状态。
9.如权利要求2所述的方法,还包括:
在确定所述第二参数值之前确定所述第二设计状态为无效状态;
修改所述数据路径电路的所述第二设计状态以产生有效的更新的第二设计状态;其中所述第二参数值是根据所述更新的第二设计状态确定的。
10.如权利要求2所述的方法,还包括:
生成表示所述第一设计状态的第一并行前缀图;以及
生成所述第一并行前缀图的网格表示,其中提供所述第一并行前缀图的网格表示作为所述机器学习模型的输入,并且其中所述机器学习模型输出一个或更多个动作以构造表示所述最终设计状态的最终并行前缀图的网格表示。
11.如权利要求1所述的方法,其中所述数据路径电路包括并行前缀电路或具有连接到其输入或输出的附加电路逻辑的并行前缀电路。
12.如权利要求1所述的方法,其中所述第一参数值和所述最终参数值各自表示以下各项中的至少一个:与所述数据路径电路相关联的区域的预测、与所述数据路径电路相关联的延迟、与所述数据路径电路相关联的功耗或其任何组合。
13.如权利要求12所述的方法,其中所述第一参数值和所述最终参数值各自表示以下各项中的至少一个:与所述数据路径电路相关联的区域的加权值的预测、与所述数据路径电路相关联的延迟或与数据路径电路相关联的功耗。
14.如权利要求1所述的方法,其中所述机器学习模型将所述数据路径电路的设计状态从所述第一设计状态迭代地修改为所述最终设计状态,其中每次迭代包括移除或添加所述数据路径电路的图的节点中的至少一个,其中所述图的每个节点与所述数据路径电路的一个或更多个组件相关联。
15.一种***,包括:
第一处理设备,用于:
接收数据路径电路的第一设计状态;以及
使用机器学习模型处理所述数据路径电路的所述第一设计状态,其中所述机器学习模型用于生成包括所述数据路径电路的第二设计状态的输出,所述第二设计状态是所述第一设计状态的修改;以及
第二处理设备,其被配置为:
确定所述第一设计状态的第一参数值和所述第二设计状态的第二参数值;
基于所述第一参数值和所述第二参数值的比较确定与所述输出相关联的奖励;以及
其中所述第一处理设备进一步用于基于所述奖励更新所述机器学习模型;
其中在对所述机器学习模型进行一次或更多次更新后,所述机器学习模型用于输出所述数据路径电路的最终设计状态,所述数据路径电路的所述最终设计状态与最终参数值相关联,所述最终参数值比与所述第一设计状态相关联的第一参数值更接近目标。
16.如权利要求15所述的***,其中所述第一处理设备进一步用于:
使用更新的机器学习模型来处理所述数据路径电路的所述第一设计状态或所述第二设计状态;以及
输出所述数据路径电路的第三设计状态,所述第三设计状态是所述第一设计状态或所述第二设计状态的修改。
17.如权利要求15所述的***,其中所述第二处理设备进一步用于:
使用第二模型处理所述第一设计状态,其中所述第二模型输出与所述第一设计状态相关联的所述第一参数值;
使用所述第二模型处理所述第二设计状态,其中所述第二模型输出与所述第一设计状态相关联的所述第二参数值;以及
比较所述第二参数值和所述第一参数值,以确定所述第一参数值和所述第二参数值中的哪一个更接近所述目标。
18.如权利要求15所述的***,其中所述第二处理设备或第三处理设备中的至少一者进一步被配置为:
使用电路合成工具处理所述第一设计状态,其中所述电路合成工具输出与所述第一设计状态相关联的所述第一参数值;
使用所述电路合成工具处理所述第二设计状态,其中所述电路合成工具输出与所述第一设计状态相关联的所述第二参数值;以及
比较所述第二参数值和所述第一参数值,以确定所述第一参数值和所述第二参数值中的哪一个更接近所述目标。
19.如权利要求15所述的***,其中所述第一处理设备包括图形处理单元GPU并且所述第二处理设备包括中央处理单元CPU。
20.一种非暂时性计算机可读介质,其上存储有指令,其中所述指令在由处理设备执行时,使所述处理设备:
接收数据路径电路的第一设计状态;
提供所述数据路径电路的所述第一设计状态作为机器学习模型的输入;以及
使用所述机器学习模型应用一种或更多种强化学习技术,以使所述机器学习模型输出所述数据路径电路的最终设计状态,其中所述数据路径电路的所述最终设计状态与最终参数值相关联,所述最终参数值比与所述第一设计状态相关联的第一参数值更接近目标。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/517,612 | 2021-11-02 | ||
US17/517,612 US20230139623A1 (en) | 2021-11-02 | 2021-11-02 | Data path circuit design using reinforcement learning |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116070557A true CN116070557A (zh) | 2023-05-05 |
Family
ID=85983960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210443734.1A Pending CN116070557A (zh) | 2021-11-02 | 2022-04-25 | 使用强化学习的数据路径电路设计 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230139623A1 (zh) |
JP (1) | JP2023068601A (zh) |
CN (1) | CN116070557A (zh) |
DE (1) | DE102022128165A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230214571A1 (en) * | 2022-01-06 | 2023-07-06 | X Development Llc | Voxel-based electromagnetic-aware integrated circuit routing |
CN117077616B (zh) * | 2023-10-17 | 2024-01-26 | 苏州异格技术有限公司 | 一种基于结构导向的电路生成方法、装置、设备及介质 |
CN117744546B (zh) * | 2024-02-21 | 2024-05-28 | 深圳市山海半导体科技有限公司 | 数字电路评估方法、***、设备及存储介质 |
-
2021
- 2021-11-02 US US17/517,612 patent/US20230139623A1/en active Pending
- 2021-12-06 JP JP2021197583A patent/JP2023068601A/ja active Pending
-
2022
- 2022-04-25 CN CN202210443734.1A patent/CN116070557A/zh active Pending
- 2022-10-25 DE DE102022128165.5A patent/DE102022128165A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102022128165A1 (de) | 2023-05-04 |
US20230139623A1 (en) | 2023-05-04 |
JP2023068601A (ja) | 2023-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11816790B2 (en) | Unsupervised learning of scene structure for synthetic data generation | |
CN112685069B (zh) | 用于机器学习模型的实时更新的方法和*** | |
US20210089921A1 (en) | Transfer learning for neural networks | |
US20210142177A1 (en) | Synthesizing data for training one or more neural networks | |
CN111950695A (zh) | 使用一个或更多个神经网络进行语法迁移 | |
CN114365185A (zh) | 使用一个或更多个神经网络生成图像 | |
US20230139623A1 (en) | Data path circuit design using reinforcement learning | |
US20210374489A1 (en) | Scene graph generation for unlabeled data | |
CN114266347A (zh) | 神经网络的无监督域适应 | |
CN113934413A (zh) | 使用一个或更多个神经网络进行界面转换 | |
WO2020236596A1 (en) | Motion prediction using one or more neural networks | |
US20230061998A1 (en) | Determining one or more neural networks for object classification | |
CN113893551A (zh) | 使用一个或更多个神经网络的推荐生成 | |
CN113781617B (zh) | 使用一个或更多个神经网络生成环境 | |
CN114581587A (zh) | 采用隐式形状的实时渲染 | |
CN113034698A (zh) | 使用一个或更多个神经网络生成全景图 | |
US20230376291A1 (en) | Caching of compiled shader programs in a cloud computing environment | |
CN116206042A (zh) | 空间哈希一致采样 | |
CN117122929A (zh) | 识别用于后处理的应用程序缓冲器及在辅助应用程序中的重用 | |
CN114627234A (zh) | 用于渲染逼真光照的自适应时间图像滤波 | |
KR20220083755A (ko) | 하나 이상의 신경망을 사용하는 이미지 생성 | |
CN115495614A (zh) | 使用一个或更多个神经网络的视频上采样 | |
US20240129380A1 (en) | Data center job scheduling using machine learning | |
US20230281907A1 (en) | Offloading shader program compilation | |
US20230077865A1 (en) | Compiled shader program caches in a cloud computing environment |
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 |