CN108805292A - 用于自主机器的机器学习中的即时深度学习 - Google Patents

用于自主机器的机器学习中的即时深度学习 Download PDF

Info

Publication number
CN108805292A
CN108805292A CN201810419226.3A CN201810419226A CN108805292A CN 108805292 A CN108805292 A CN 108805292A CN 201810419226 A CN201810419226 A CN 201810419226A CN 108805292 A CN108805292 A CN 108805292A
Authority
CN
China
Prior art keywords
processor
model
user
data
memory
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
Application number
CN201810419226.3A
Other languages
English (en)
Inventor
R·Y·耶海兹克尔罗厄卡尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to CN202010770667.5A priority Critical patent/CN111915025B/zh
Priority to CN202311277782.9A priority patent/CN117556868A/zh
Publication of CN108805292A publication Critical patent/CN108805292A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • G06F18/2148Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the process organisation or structure, e.g. boosting cascade
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2411Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on the proximity to a decision surface, e.g. support vector machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/774Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/95Hardware or software architectures specially adapted for image or video understanding structured as a network, e.g. client-server architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V2201/00Indexing scheme relating to image or video recognition or understanding
    • G06V2201/06Recognition of objects for industrial automation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/174Facial expression recognition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Neurology (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

描述了一种用于促进自主机器的机器学习中的即时深度学习的机制。如本文所述的实施例的方法包括检测与第一深度网络相关联的输出,第一深度网络用作与在具有耦合到存储器的处理器的计算设备处的一个或多个神经网络的学习相关联的用户无关模型。该方法还可以包括自动生成用作用户相关模型的第二深度网络的训练数据,其中基于输出生成训练数据。该方法可以进一步包括将用户无关模型与用户相关模型合并成单个联合模型。

Description

用于自主机器的机器学习中的即时深度学习
技术领域
本申请要求由Yehezkel Rohekar等人于2017年5月5日提交的题为“ON-THE-FLYDEEP LEARNING IN MACHINE LEARNING AT AUTONOMOUS MACHINES(在自主机器处的机器学习中的即时深度学习)”的美国临时申请第62/502,294号的权益和优先权,该申请通过引用方式并入本文。
技术领域
这里描述的实施例总体上涉及数据处理,并且更具体地涉及促进用于自主机器的机器学习中的即时深度学习。
背景技术
当前的并行图形数据处理包括开发用于对图形数据执行特定操作的系统和方法,例如线性插值,铺砌(tessellation),光栅化,纹理映射,深度测试等。传统上,图形处理器使用固定功能计算单元来处理图形数据;然而,最近,已经使得图形处理器的部分可编程,使得这些处理器能够支持更广泛的操作来处理顶点和片段数据。
为了进一步提高性能,图形处理器通常实现处理技术,例如尝试遍及图形管线的不同部分并行处理尽可能多的图形数据的管线技术。具有单指令多线程(SIMT)架构的并行图形处理器被设计为最大化图形管线中的并行处理量。在SIMT架构中,并行线程构成的组尝试尽可能经常地一起同步执行程序指令以提高处理效率。在Shane Cook,CUDAProgramming,第3章,第37-51页(2013)和/或Nicholas Wilt,CUDA Handbook,GPU编程综合指南,第2.6.2节到3.1.2节(2013年6月)中可以找到关于SIMT架构的软件和硬件的一般概述。
机器学习已经成功地解决了许多种任务。在训练和使用机器学习算法(例如神经网络)时产生的计算自然支持高效的并行实现方式。因此,诸如通用图形处理单元(GPGPU)之类的并行处理器在深度神经网络的实际实现方式中发挥了重要作用。具有单指令多线程(SIMT)架构的并行图形处理器被设计为最大化图形管线中的并行处理量。在SIMT架构中,并行线程构成组尝试尽可能经常地一起同步执行程序指令以提高处理效率。并行机器学习算法实现方式提供的效率允许使用高容量网络,并使这些网络能够在更大的数据集上进行训练。
目前,自主机器及其机器学习系统在变化的上下文下学习的能力限于具有适度适应灵活性的简单算法。深度学习算法在许多领域提供了技术发展最新水平的精确度,例如面部表情识别;然而,它们缺乏提供上下文相关的解决方案(例如,不是用于训练的数据中的、特定人员的面部表情)的能力以及随时间适应的能力。
附图说明
在附图中通过举例而非限制的方式示出实施例,其中相同的附图标记指代相似的元件。为了能够详细理解上述特征的方式,可以通过参考实施例来获得上面简要总结的更具体的描述,其中一些实施例在附图中示出。然而,要注意的是,附图仅示出了典型的实施例,因此不应被认为是对其范围的限制,因为附图可以示出其他等效的实施例。
图1是示出被配置为实现这里描述的实施例的一个或多个方面的计算机系统的框图。
图2A-2D示出了根据实施例的并行处理器组件。
图3A-3B是根据实施例的图形多处理器的框图。
图4A-4F示出其中多个图形处理单元通信地耦合到多个多核处理器的示例性架构。
图5是根据实施例的图形处理管线的概念图。
图6示出了根据一个实施例的托管即时深度学习机制的计算设备。
图7示出了根据一个实施例的即时深度学习机制。
图8A示出根据一个实施例的用于即时学习的方法。
图8B示出根据一个实施例的与离线学习的阶段一相关联的方法。
图8C-8D图示了根据一个实施例的表示在即时学习中的阶段二的方法。
图8E示出根据一个实施例的与联合调谐(joint tuning)、训练和/或重新训练的阶段三相关联的方法。
图9A示出了根据一个实施例的与即时学习相关联的各个阶段的事务序列。
图9B示出了根据一个实施例的与各个阶段的即时学习相关联的事务序列。
图10示出了根据实施例的机器学习软件栈。
图11示出了根据实施例的高度并行的通用图形处理单元。
图12示出了根据实施例的多GPU计算系统。
图13A-13B示出了示例性深度神经网络的层。
图14示出了深度神经网络的训练和部署。
图15示出了深度神经网络的训练和部署
图16是示出分布式学习的框图。
图17示出了适合使用经训练的模型进行推理的示例性的推理片上系统(SOC)。
图18是具有处理器的计算机系统的实施例的框图,该处理器具有一个或多个处理器核心和图形处理器。
图19是具有一个或多个处理器核心、集成存储器控制器和集成图形处理器的处理器的一个实施例的框图。
图20是可以是离散图形处理单元或者可以是与多个处理核心集成的图形处理器的一个实施例的框图。
图21是用于图形处理器的图形处理引擎的实施例的框图。
图22是图形处理器的另一实施例的框图。
图23是包括处理元素阵列的线程执行逻辑的框图。
图24示出根据实施例的图形处理器执行单元指令格式。
图25是包括图形管线、媒体管线、显示引擎、线程执行逻辑和渲染输出管线的图形处理器的另一实施例的框图。
图26A是示出根据实施例的图形处理器命令格式的框图。
图26B是示出根据实施例的图形处理器命令序列的框图。
图27示出根据实施例的用于数据处理系统的示例性图形软件架构。
图28是示出根据实施例的可用于制造集成电路以执行操作的IP核心开发系统的框图。
图29是示出根据实施例的可以使用一个或多个IP核心制造的示例性片上系统集成电路的框图。
图30是示出了片上系统集成电路的示例性图形处理器的框图。
图31是示出了片上系统集成电路的附加示例性图形处理器的框图。
具体实施方式
实施例提供了一种新颖的技术,用于利用事先的有限数据收集并且通过在机器正常操作期间即时地智能采集关于自主机器的用户的有用数据来学习复杂的机器学习模型(深度学习)。
目前,深度学习网络使用大量被训练的数据集进行离线训练,因此这些技术缺乏即时的在线学习或训练以及适应新数据的能力。例如,提供了一种新技术,用于使用小的已标记数据集进行离线训练,然后不断适应新传入的未标记数据。该未标记数据可能与已标记数据具有稍微不同的统计数据。
可以预期的是,在个人计算系统中的“用户理解”,例如在用户的面部表情识别等情况下在中间件层中,通常使用多个子系统,诸如:1)用户外观的校准(这是一个交互式程序);以及2)与用户无关的分类器(在采集来自若干用户的数据后离线训练)。
实施例提供了用于实时上下文相关深度学习的新颖技术,以实现高度准确且高效的上下文相关解决方案,其实时地(在评分/接口阶段期间)在通用训练和上下文相关训练之间“相互作用(interplay)”。这是通过使用两种截然不同的深度学习技术(CNN和DBN,有监督和无监督)以及引入一种调解算法来结合这两种截然不同的技术来完成的。
在正常系统操作的第一时间段(例如,分钟)期间,这种新颖的调解技术取得一个用作通用模型的预先训练的深度网络的输出,并自动生成用作上下文相关模型的第二深度网络的训练数据。此外,一旦收敛,比如进入仿真若干分钟,两个网络可以被共同地和端对端地进行微调,并且没有利用使用任何小的通用标记数据的调解算法。合并的网络现在是一个上下文相关的高效分类器,并且比起最初的通用分类器具有更高的准确性。
可以预期并注意的是,在整个本文档中使用了若干机器学习术语,例如a)深度学习,指的是由多层神经网络组成的机器学习模型族,具有高表达能力并提供最先进的精度,b)卷积神经网络(CNN),指的是一种深度学习模型,c)深度信念网络(DBN),指的是一种深度学习模型,d)与用户无关的分类器/模型,指的是一旦被训练就对各种用户具有一致的准确度的分类器,以及e)用户相关分类器/模型,指的是一旦被训练则具有仅针对特定用户保证的准确度水平的分类器。
可以设想,在整个本文档中,“与用户无关的”和“用户相关的”分别被认为是“与上下文无关的”或“与上下文相关的”的特殊情况或同义的引用;例如,提供识别特定用户的面部表情作为如何采用或使用各种实施例的示例。
应当指出,诸如“卷积神经网络”、“CNN”、“神经网络”、“NN”、“深度神经网络”、“DNN”、“递归神经网络”、“RNN”和/或类似物等术语或缩略词在该整篇文档中可以互换地引用。此外,诸如“自主机器”或简称为“机器”、“自主运载工具”或简称为“运载工具”、“自主代理”或简称为“代理”、“自主设备”或“计算设备”,“机器人”和/或类似物在整个文档中可以互换地引用。
在一些实施例中,图形处理单元(GPU)通信地耦合到主机/处理器核心以加速图形操作、机器学习操作、模式分析操作和各种通用GPU(GPGPU)功能。GPU可以通过总线或另一互连(例如诸如PCIe或NVLink的高速互连)通信地耦合到主机处理器/核心。在其他实施例中,GPU可以集成在与核心相同的封装或芯片上,并通过内部处理器总线/互连(即,在封装或芯片内部)通信地耦合到核心。不管GPU连接的方式如何,处理器核心都可以以包含在工作描述符中的命令/指令序列的形式将工作分配给GPU。GPU然后使用专用电路/逻辑来高效地处理这些命令/指令。
在以下描述中,阐述了许多具体细节。然而,如本文所述,可以在没有这些具体细节的情况下实施实施例。在其他情况下,众所周知的电路、结构和技术未被详细示出以免混淆对本说明书的理解。
系统概述I
图1是示出被配置为实施本文中所描述的实施例的一个或多个方面的计算系统100的框图。计算系统100包括处理子系统101,其具有经由互连路径通信的一个或多个处理器102和系统存储器104,该互连路径可以包括存储器集线器105。存储器集线器105可以是芯片组组件内的分离组件,或者可以被集成在一个或多个处理器102内。存储器集线器105经由通信链路106与I/O子系统111耦合。I/O子系统111包括I/O集线器107,其可以使计算系统100能够从一个或多个输入设备108接收输入。另外,I/O集线器107可以使可以被包括在一个或多个处理器102中的显示控制器能够向一个或多个显示设备110A提供输出。在一个实施例中,与I/O集线器107耦合的一个或多个显示设备110A可以包括本地、内部或嵌入式显示设备。
在一个实施例中,处理子系统101包括经由总线或其他通信链路113耦合到存储器集线器105的一个或多个并行处理器112。通信链路113可以是任何数量的基于标准的通信链路技术或协议之一,例如但不限于PCI Express,或者可以是供应商特定的通信接口或通信结构。在一个实施例中,一个或多个并行处理器112形成计算上集中的并行或向量处理系统,其包括大量处理核心和/或处理集群,诸如许多集成核心(MIC)处理器。在一个实施例中,一个或多个并行处理器112形成图形处理子系统,图形处理子系统可以将像素输出到经由I/O集线器107耦合的一个或多个显示设备110A中的一个。一个或多个并行处理器112还可以包括显示控制器和显示接口(未示出)以实现到一个或多个显示设备110B的直接连接。
在I/O子系统111内,系统存储单元114可连接到I/O集线器107以为计算系统100提供存储机制。I/O交换机116可用于提供接口机构以实现I/O集线器107与可以被集成到平台中的其他组件(例如网络适配器118和/或无线网络适配器119)以及可以经由一个或多个附加设备120加入的各种其他设备之间的连接。网络适配器118可以是以太网适配器或另一个有线网络适配器。无线网络适配器119可以包括Wi-Fi、蓝牙、近场通信(NFC)或包括一个或多个无线无线电的其他网络设备中的一个或多个。
计算系统100可以包括未明确示出的其他组件,包括USB或其它端口连接、光存储驱动器、视频捕获设备等等,也可以连接到I/O集线器107。互连图1中的各种组件的通信路径可以使用诸如基于PCI(外围组件互连)的协议(例如,PCI-Express)的任何适当的协议、或诸如NV-Link高速互连的任何其他总线或点对点通信接口和/或协议、或本领域中已知的互连协议等来实现。
在一个实施例中,一个或多个并行处理器112并入针对图形和视频处理而优化的电路,包括例如视频输出电路,并且构成图形处理单元(GPU)。在另一个实施例中,一个或多个并行处理器112并入针对通用处理而优化的电路,同时保留在此更详细描述的底层计算架构。在又一个实施例中,计算系统100的组件可以与单个集成电路上的一个或多个其他系统元件集成。例如,一个或多个并行处理器112、存储器集线器105、处理器102和I/O集线器107可以集成到片上系统(SoC)集成电路中。可替代地,计算系统100的组件可以被集成到单个封装中以形成系统级封装(SIP)配置。在一个实施例中,计算系统100的组件的至少一部分可以被集成到多芯片模块(MCM)中,其可以与其他多芯片模块互连成模块化计算系统。
将会意识到,这里示出的计算系统100是说明性的,并且变化和修改是可能的。包括桥的数量和布置、处理器102的数量以及并行处理器112的数量的连接拓扑可以根据需要进行修改。例如,在一些实施例中,系统存储器104直接连接到处理器102而不是通过桥,而其他设备经由存储器集线器105和处理器102与系统存储器104通信。在其他替代拓扑中,并行处理器112连接到I/O集线器107或直接连接到一个或多个处理器102中的一个,而不连接到存储器集线器105。在其他实施例中,I/O集线器107和存储器集线器105可以被集成到单个芯片中。一些实施例可以包括经由多个插座附接的处理器构成的两个或更多个集合102,其可以与并行处理器112的两个或更多个实例耦合。
这里示出的特定组件中的一些是可选的并且可以不包括在计算系统100的所有实现方式中。例如,可以支持任何数量的附加卡或外围设备,或者可以消除一些组件。此外,一些架构可以将不同的术语用于与图1中所示的组件类似的组件。例如,在一些架构中,存储器集线器105可以被称为北桥,而I/O集线器107可以被称为南桥。
图2A示出根据实施例的并行处理器200。并行处理器200的各种组件可以使用诸如可编程处理器、专用集成电路(ASIC)或现场可编程门阵列(FPGA)之类的一个或多个集成电路设备来实现。根据实施例,所示出的并行处理器200是图1所示的一个或多个并行处理器112的变型。
在一个实施例中,并行处理器200包括并行处理单元202。并行处理单元包括I/O单元204,该I/O单元204使得能够与其他设备(包括并行处理单元202的其他实例)进行通信。I/O单元204可以直接连接到其他设备。在一个实施例中,I/O单元204通过使用诸如存储器集线器105的集线器或交换机接口与其他设备连接。存储器集线器105和I/O单元204之间的连接形成通信链路113。在并行处理单元202内,I/O单元204与主机接口206和存储器交叉开关216连接,其中主机接口206接收涉及执行处理操作的命令,并且存储器交叉开关216接收涉及执行存储器操作的命令。
当主机接口206经由I/O单元204接收命令缓冲器时,主机接口206可以将执行那些命令的工作操作引导到前端208。在一个实施例中,前端208与调度器210耦合,调度器210被配置为将命令或其他工作项目分发到处理集群阵列212。在一个实施例中,调度器210确保处理集群阵列212被恰当地配置并且在任务被分发到处理集群阵列212的处理集群之前处于有效状态。
处理集群阵列212可以包括多达“N”个处理集群(例如,集群214A,集群214B,至集群214N)。处理集群阵列212的每个集群214A-214N可以执行大量的并发线程。调度器210可以使用各种调度和/或工作分配算法将工作分配给处理集群阵列212的集群214A-214N,这可以根据针对每种类型的程序或计算产生的工作负荷而变化。调度可以由调度器210动态地处理,或者可以在对被配置为由处理集群阵列212执行的程序逻辑进行编译期间由编译器逻辑部分地协助。
在一个实施例中,处理集群阵列212的不同集群214A-214N可被分配用于处理不同类型的程序或用于执行不同类型的计算。
处理集群阵列212可以被配置为执行各种类型的并行处理操作。在一个实施例中,处理集群阵列212被配置为执行通用并行计算操作。例如,处理集群阵列212可以包括执行处理任务的逻辑,该处理任务包括视频和/或音频数据的过滤,执行建模操作(包括物理操作)以及执行数据转换。
在一个实施例中,处理集群阵列212被配置为执行并行图形处理操作。在其中并行处理器200被配置为执行图形处理操作的实施例中,处理集群阵列212可以包括用于支持这些图形处理操作的执行的附加逻辑,包括但不限于用于执行纹理操作的纹理采样逻辑,以及铺砌逻辑和其他顶点处理逻辑。另外,处理集群阵列212可以被配置为执行与图形处理相关的着色器程序,例如但不限于顶点着色器、铺砌着色器、几何着色器和像素着色器。并行处理单元202可以经由I/O单元204从系统存储器传输数据以进行处理。在处理期间,传输的数据可以在处理期间被存储到片上存储器(例如,并行处理器存储器222),然后被写回到系统存储器。
在一个实施例中,当并行处理单元202被用于执行图形处理时,调度器210可被配置为将处理工作负荷分成大致相等大小的任务,以更好地使图形处理操作分布到处理集群阵列212的多个集群214A-214N。在一些实施例中,处理集群阵列212的部分可以被配置为执行不同类型的处理。例如,第一部分可以被配置为执行顶点着色和拓扑生成,第二部分可以被配置为执行铺砌和几何着色,并且第三部分可以被配置为执行像素着色或其他屏幕空间操作,以产生渲染的图像用于显示。由集群214A-214N中的一个或多个产生的中间数据可被存储在缓冲器中以允许中间数据在集群214A-214N之间传输以用于进一步处理。
在操作期间,处理集群阵列212可以经由调度器210接收要执行的处理任务,调度器210从前端208接收定义处理任务的命令。对于图形处理操作,处理任务可以包括要处理的数据的索引,例如表面(补丁)数据、基元数据、顶点数据和/或像素数据以及定义如何处理数据(例如,要执行什么程序)的状态参数和命令。调度器210可以被配置为获取与任务对应的索引,或者可以从前端208接收索引。前端208可以被配置为确保在由传入的命令缓冲器(例如,批缓冲器、推缓冲器等)指定的工作负荷被启动之前处理集群阵列212被配置为有效状态。
并行处理单元202的一个或多个实例中的每一个可以与并行处理器存储器222耦合。可以经由存储器交叉开关216来访问并行处理器存储器222,存储器交叉开关216可以从处理集群阵列212以及I/O单元204接收存储器请求。存储器交叉开关216可以经由存储器接口218访问并行处理器存储器222。存储器接口218可以包括多个分区单元(例如,分区单元220A、分区单元220B、至分区单元220N),每个分区单元可以耦合到并行处理器存储器222的一部分(例如,存储器单元)。在一个实现方式中,分区单元220A-220N的数量被配置为等于存储器单元的数量,使得第一分区单元220A具有对应的第一存储器单元224A,第二分区单元220B具有对应的存储器单元224B,并且第N分区单元220N具有对应的第N存储器单元224N。在其他实施例中,分区单元220A-220N的数量可以不等于存储器设备的数量。
在各种实施例中,存储器单元224A-224N可以包括各种类型的存储器设备,包括动态随机存取存储器(DRAM)或图形随机存取存储器,诸如同步图形随机存取存储器(SGRAM),其包括图形双倍数据速率(GDDR)存储器。在一个实施例中,存储器单元224A-224N还可以包括3D堆叠存储器,包括但不限于高带宽存储器(HBM)。本领域的技术人员将会意识到,存储器单元224A-224N的具体实现方式可以变化,并且可以从各种常规设计之一中选择。诸如帧缓冲器或纹理映射之类的渲染目标可跨存储器单元224A-224N存储,允许分区单元220A-220N并行地写入每个渲染目标的部分以高效地使用并行处理器存储器222的可用带宽。在一些在实施例中,可以排除并行处理器存储器222的本地实例,以支持与本地高速缓存存储器结合使用系统存储器的统一存储器设计。
在一个实施例中,处理集群阵列212的集群214A-214N中的任何一个可以处理将被写入并行处理器存储器222内的存储器单元224A-224N中的任何存储器单元的数据。存储器交叉开关216可以被配置以将每个集群214A-214N的输出传送到任何分区单元220A-220N或另一个集群214A-214N,其可以对输出执行附加的处理操作。每个集群214A-214N可以通过存储器交叉开关216与存储器接口218通信,以从各种外部存储器设备读取或写入各种外部存储器设备。在一个实施例中,存储器交叉开关216具有到存储器接口218的连接以与I/O单元204通信,以及到并行处理器存储器222的本地实例的连接,使得不同的处理集群214A-214N内的处理单元能够与不在并行处理单元202本地的系统存储器或其它存储器进行通信。在一个实施例中,存储器交叉开关216可以使用虚拟信道来分离集群214A-214N与分区单元220A-220N之间的业务流。
尽管在并行处理器200内示出并行处理单元202的单个实例,但可以包括并行处理单元202的任何数量的实例。例如,可以在单个附加卡上提供并行处理单元202的多个实例,或者可以互连多个附加卡。即使不同实例具有不同数量的处理核心、不同量的本地并行处理器存储器和/或其他配置差异,并行处理单元202的不同实例也可以被配置为相互操作。例如,并且在一个实施例中,并行处理单元202的一些实例可以包括相对于其他实例更高精度的浮点单元。包含并行处理单元202或并行处理器200的一个或多个实例的系统可以以各种配置和形状因数来实现,包括但不限于台式计算机、膝上型计算机或手持式个人计算机、服务器、工作站、游戏控制台,和/或嵌入式系统。
图2B是根据实施例的分区单元220的框图。在一个实施例中,分区单元220是图2A的分区单元220A-220N之一的实例。如图所示,分区单元220包括L2高速缓存221、帧缓冲器接口225和ROP 226(光栅操作单元)。L2高速缓存221是被配置为执行从存储器交叉开关216和ROP 226接收的加载和存储操作的读取/写入高速缓存。读取未命中和紧急回写请求由L2高速缓存221输出到帧缓冲器接口225用于处理。脏更新也可以经由帧缓冲器接口225被发送到帧缓冲器以用于机会性处理。在一个实施例中,帧缓冲器接口225与并行处理器存储器(诸如图2A的存储器单元224A-224N(例如,并行处理器存储器222内))中的存储器单元之一接口连接。
在图形应用程序中,ROP 226是执行光栅操作(例如模板、z测试、混合等)的处理单元。ROP 226随后输出存储在图形存储器中的经处理的图形数据。在一些实施例中,ROP 226包括压缩逻辑,用于压缩写入存储器的z或颜色数据以及解压从存储器读取的z或颜色数据。在一些实施例中,ROP 226被包括在每个处理集群(例如图2A的集群214A-214N)内而不是在分区单元220内。在这样的实施例中,用于像素数据的读取和写入请求而不是像素片段数据通过存储器交叉开关216传输。
经处理的图形数据可以被显示在诸如图1的一个或多个显示设备110之一的显示设备上,被路由以供处理器102进一步处理,或被路由用于通过图2A的并行处理器200内的处理实体中的一个进一步处理。
图2C是根据实施例的并行处理单元内的处理集群214的框图。在一个实施例中,处理集群是图2A的处理集群214A-214N中的一个的实例。处理集群214可以被配置为并行执行多个线程,其中术语“线程”是指在特定的一组输入数据上执行的特定程序的实例。在一些实施例中,单指令多数据(SIMD)指令发布技术被用于支持大量线程的并行执行,而无需提供多个独立的指令单元。在其它实施例中,使用单指令多线程(SIMT)技术来支持大量通常同步的线程的并行执行,使用被配置为向处理集群中的每一个内的一组处理引擎发出指令的公共指令单元。与其中所有处理引擎通常执行相同指令的SIMD执行机制不同,SIMT执行允许不同线程更容易地遵循通过给定线程程序的散开的执行路径。本领域的技术人员将会理解,SIMD处理机制表示SIMT处理机制的功能子集。
处理集群214的操作可以经由将处理任务分配给SIMT并行处理器的管线管理器232来控制。管线管理器232接收来自图2A的调度器210的指令并且经由图形多处理器234和/或纹理单元236管理那些指令的执行。图示的图形多处理器234是SIMT并行处理器的示例性实例。然而,不同架构的各种类型的SIMT并行处理器可以被包括在处理集群214内。图形多处理器234的一个或多个实例可以被包括在处理集群214内。图形多处理器234可以处理数据,并且数据交叉开关240可用于将处理后的数据分发到多个可能的目的地之一,包括其他着色单元。管线管理器232可以通过指定要经由数据交叉开关240分发的经处理数据的目的地来促进经处理数据的分发。
处理集群214内的每个图形多处理器234可以包括相同的一组功能执行逻辑(例如算术逻辑单元、加载存储单元等)。功能执行逻辑可以进行配置,以管线方式可以在先前的指令完成之前发布新的指令。可以提供功能执行逻辑。功能逻辑支持各种操作,包括整数和浮点算术比较操作、布尔操作移位和各种代数函数的计算。在一个实施例中,可以利用相同的功能单元硬件来执行不同的操作,并且可以存在功能单元的任何组合。
发送到处理集群214的指令构成线程。在一组并行处理引擎上执行的一组线程是线程组。线程组在不同的输入数据上执行相同的程序。线程组内的每个线程可以被分配给图形多处理器234内的不同处理引擎。线程组可以包括比图形多处理器234内的处理引擎的数量少的线程。当线程组包括比处理引擎数量少的线程时,处理引擎中的一个或多个可能在处理该线程组的循环期间空闲。线程组还可以包括比图形多处理器234内的处理引擎的数量多的线程。当线程组包括比图形多处理器234内的处理引擎的数量多的线程时,可以在连续的时钟周期上执行处理。在一个实施例中,可以在图形多处理器234上同时执行多个线程组。
在一个实施例中,图形多处理器234包括内部高速缓存存储器以执行加载和存储操作。在一个实施例中,图形多处理器234可以放弃内部高速缓存并且使用处理集群214内的高速缓存存储器(例如L1高速缓存308)。每个图形多处理器234还可以访问分区单元(例如,图2A的分区单元220A-220N)内的L2高速缓存,其在所有处理集群214之间共享,并可用于在线程之间传输数据。图形多处理器234还可以访问芯片外全局存储器,其可以包括本地并行处理器存储器和/或系统存储器中的一个或多个。并行处理单元202外部的任何存储器可以用作全局存储器。其中处理集群214包括图形多处理器234的多个实例的实施例可共享可存储在L1高速缓存308中的公共指令和数据。
每个处理集群214可以包括被配置为将虚拟地址映射到物理地址的MMU 245(存储器管理单元)。在其他实施例中,MMU 245的一个或多个实例可驻留在图2A的存储器接口218内。MMU 245包括用于将虚拟地址映射到瓦片(将关于拼贴做更多论述)的物理地址和可选地高速缓存行索引的一组页表条目(PTE)。MMU 245可以包括可以驻留在图形多处理器234或L1高速缓存或处理集群214内的地址转换后备缓冲器(TLB)或高速缓存。物理地址被处理以分布表面数据存取位置以允许分区单元之间的高效请求交错。高速缓存行索引可用于确定对高速缓存行的请求是命中还是未命中。
在图形和计算应用中,处理集群214可被配置为使得每个图形多处理器234耦合到纹理单元236以执行纹理映射操作,例如确定纹理样本位置,读取纹理数据和过滤纹理数据。纹理数据从内部纹理L1高速缓存(未示出)读取或者在一些实施例中从图形多处理器234内的L1高速缓存读取,并且根据需要从L2高速缓存、本地并行处理器存储器或系统存储器中取得。每个图形多处理器234将经处理的任务输出到数据交叉开关240以将经处理的任务提供给另一个处理集群214以用于进一步处理或经由存储器交叉开关216将经处理的任务存储在L2高速缓存、本地并行处理器存储器或系统存储器中。preROP 242(前光栅操作单元)被配置为从图形多处理器234接收数据,将数据引导到ROP单元,ROP单元可以如本文描述的那样与分区单元(例如,图2A的分区单元220A-220N)一起定位。preROP 242单元可以执行对颜色混合的优化,组织像素颜色数据,并执行地址转换。
应该意识到,这里描述的核心架构是说明性的,并且变化和修改是可能的。任何数量的处理单元,例如图形多处理器234、纹理单元236、preROP 242等可以被包括在处理集群214内。此外,尽管仅示出一个处理集群214,但是如本文所述的并行处理单元可以包括处理集群214的任何数量的实例。在一个实施例中,每个处理集群214可以被配置为使用分离的和不同的处理单元、L1高速缓存等独立于其他处理集群214来操作。
图2D示出根据一个实施例的图形多处理器234。在这样的实施例中,图形多处理器234与处理集群214的管线管理器232耦合。图形多处理器234具有执行管线,包括但不限于指令高速缓存252、指令单元254、地址映射单元256、寄存器文件258、一个或多个通用图形处理单元(GPGPU)核心262以及一个或多个加载/存储单元266。GPGPU核心262和加载/存储单元266经由存储器和高速缓存互连268与缓存存储器272和共享存储器270耦合。
在一个实施例中,指令高速缓存252从管线管理器232接收要执行的指令流。指令被高速缓存在指令高速缓存252中,并被派遣供指令单元254执行。指令单元254可以将指令派遣作为线程组(例如,线程束(warp)),其中线程组的每个线程被分配给GPGPU核心262内的不同执行单元。指令可以通过指定统一地址内的地址来访问本地、共享或全局地址空间中的任何。地址映射单元256可用于将统一地址空间中的地址转换成可由加载/存储单元266访问的不同存储器地址。
寄存器文件258为图形多处理器234的功能单元提供一组寄存器。寄存器文件258为连接到图形多处理器234的功能单元(例如,GPGPU核心262、加载/存储单元266)的数据路径的操作数提供临时存储。在一个实施例中,寄存器文件258被划分在各个功能单元之间,使得每个功能单元被分配寄存器文件258的专用部分。在一个实施例中,寄存器文件258被划分在图形多处理器234正在执行的不同的线程束之间。
每个GPGPU核心262可以包括用于执行图形多处理器234的指令的浮点单元(FPU)和/或整数算术逻辑单元(ALU)。根据实施例,GPGPU核心262可以在架构上类似或可以在架构上不同。例如,并且在一个实施例中,GPGPU核心262的第一部分包括单精度FPU和整数ALU,而GPGPU核心的第二部分包括双精度FPU。在一个实施例中,FPU可以实现用于浮点算术的IEEE 754-2008标准或使能可变精度浮点算术。图形多处理器234可以另外包括一个或多个固定功能或特殊功能单元以执行诸如复制矩形或像素混合操作的特定功能。在一个实施例中,GPGPU核心中的一个或多个还可以包括固定的或特殊的功能逻辑。
存储器和高速缓存互连268是互连网络,其将图形多处理器234的每个功能单元连接到寄存器文件258和共享存储器270。在一个实施例中,存储器和高速缓存互连268是交叉开关互连,其允许加载/存储单元266在共享存储器270和寄存器文件258之间实现加载和存储操作。寄存器文件258可以以与GPGPU核心262相同的频率操作,因此GPGPU核心262与寄存器文件258之间的数据传输具有非常低的等待时间。共享存储器270可以用于使能在图形多处理器234内的功能单元上执行的线程之间的通信。例如,高速缓存存储器272可以用作数据高速缓存,以便高速缓存在功能单元和纹理单元236之间传送的纹理数据。共享存储器270也可以用作程序管理高速缓存。除了存储在高速缓存存储器272内的自动高速缓存的数据之外,在GPGPU核心262上执行的线程还可以以编程方式在共享存储器内存储数据。
图3A-3B示出了根据实施例的附加图形多处理器。所示出的图形多处理器325、350是图2C的图形多处理器234的变型。所示出的图形多处理器325、350可以被配置为能够同时执行大量执行线程的流式多处理器(SM)。
图3A示出了根据另外的实施例的图形多处理器325。图形多处理器325包括相对于图2D的图形多处理器234的多个执行资源单元的附加实例。例如,图形多处理器325可以包括指令单元332A-332B、寄存器文件334A-334B和纹理单元344A-344B的多个实例。图形多处理器325还包括多组图形或计算执行单元(例如,GPGPU核心336A-336B、GPGPU核心337A-337B、GPGPU核心338A-338B)和多组加载/存储单元340A-340B。在一个实施例中,执行资源单元具有公共指令高速缓存330、纹理和/或数据高速缓存存储器342以及共享存储器346。各种组件可以经由互连结构327进行通信。在一个实施例中,互连结构327包括一个或更多交叉开关交换结构以实现图形多处理器325的各种组件之间的通信。
图3B示出了根据另外的实施例的图形多处理器350。如图2D和图3A所示,图形处理器包括多组执行资源356A-356D,其中每组执行资源包括多个指令单元、寄存器文件、GPGPU核心和加载存储单元。在共享指令高速缓存354和共享存储器362的同时,执行资源356A-356D可以与纹理单元360A-360D一起工作以用于纹理操作。在一个实施例中,执行资源356A-356D可以共享指令高速缓存354和共享存储器362,以及纹理和/或数据高速缓存存储器358A-358B的多个实例。各种组件可以通过类似于图3A的互连结构327的互连结构352进行通信。
本领域的技术人员将会理解,图1、图2A-2D和图3A-3B中描述的架构是描述性的,而不是限制本实施例的范围。因此,本文描述的技术可以在任何适当配置的处理单元上实现,包括但不限于一个或多个移动应用处理器,包括多核CPU的一个或多个台式或服务器中央处理单元(CPU)、诸如图2A的并行处理单元202之类的一个或多个并行处理单元以及一个或多个图形处理器或专用处理单元,而不偏离本文描述的实施例的范围。
在一些实施例中,如本文所述的并行处理器或GPGPU可通信地耦合到主机/处理器核心以加速图形操作、机器学习操作、模式分析操作和各种通用GPU(GPGPU)功能。GPU可以通过总线或其他互连(例如,诸如PCIe或NVLink的高速互连)通信地耦合到主机处理器/核心。在其他实施例中,GPU可以集成在与核心相同的封装或芯片上,并通过内部处理器总线/互连(即,在封装或芯片内部)通信地耦合到核心。不管GPU连接的方式如何,处理器核心都可以以包含在工作描述符中的命令/指令序列的形式将工作分配给GPU。GPU然后使用专用电路/逻辑来高效地处理这些命令/指令。
GPU主机处理器互连的技术
图4A示出了其中多个GPU 410-413通过高速链路440-443(例如总线、点对点互连等)通信地耦合到多个多核处理器405-406的示例性架构)。在一个实施例中,取决于实现方式,高速链路440-443支持4GB/s、30GB/s、80GB/s或更高的通信吞吐量。可以使用各种互连协议,包括但不限于PCIe 4.0或5.0和NVLink 2.0。然而,本发明的基本原理不限于任何特定的通信协议或吞吐量。
另外,在一个实施例中,GPU 410-413中的两个或更多个通过高速链路444-445互连,这可以使用与用于高速链路440-443的那些相同或不同的协议/链路来实现。类似地,多核处理器405-406中的两个或更多个可以通过高速链路433连接,所述高速链路433可以是以20GB/s、30GB/s、120GB/s或更高操作的对称多处理器(SMP)总线。可替代地,图4A中所示的各种系统组件之间的所有通信可以使用相同的协议/链路(例如,通过公共互连结构)来完成。然而,如上所述,本发明的基本原理不限于任何特定类型的互连技术。
在一个实施例中,每个多核处理器405-406分别经由存储器互连430-431通信地耦合到处理器存储器401-402,并且每个GPU 410-413分别通过GPU存储器互连450-453通信地耦合到GPU存储器420-423。存储器互连430-431和450-453可以利用相同或不同的存储器访问技术。作为示例而非限制,处理器存储器401-402和GPU存储器420-423可以是易失性存储器,诸如动态随机存取存储器(DRAM)(包括堆叠的DRAM)、图形DDR SDRAM(GDDR)(例如,GDDR5、GDDR6)或高带宽存储器(HBM),和/或可以是诸如3D XPoint或Nano-Ram的非易失性存储器。在一个实施例中,存储器的一些部分可以是易失性存储器,并且另一部分可以是非易失性存储器(例如,使用两级存储器(2LM)分级结构)。
如下所述,尽管各种处理器405-406和GPU 410-413可以分别物理地耦合到特定存储器401-402、420-423,但是可以实现统一存储器架构,其中相同的虚拟系统地址空间(也称为“有效地址”空间)分布在所有各种物理存储器之中。例如,处理器存储器401-402每个可以包括64GB的系统存储器地址空间,并且GPU存储器420-423每个可以包括32GB的系统存储器地址空间(在该示例中导致总共256GB的可寻址存储器)。
图4B示出根据一个实施例的用于多核处理器407与图形加速模块446之间的互连的附加细节。图形加速模块446可以包括集成在经由高速链路440耦合到处理器407的线卡上的一个或多个GPU芯片。可替代地,图形加速模块446可以集成在与处理器407相同的封装或芯片上。
所示的处理器407包括多个核心460A-460D,每个核心具有转换后备缓冲器461A-461D和一个或多个高速缓存462A-462D。核心可以包括用于执行指令和处理数据的各种其他组件,这些各种其他组件未示出以避免模糊本发明的基本原理(例如,指令获取单元、分支预测单元、解码器、执行单元、重排序缓冲器等)。高速缓存462A-462D可以包括级别1(L1)和级别2(L2)高速缓存。另外,一个或多个共享高速缓存426可以被包括在高速缓存分级结构中并且被多组核心460A-460D共享。例如,处理器407的一个实施例包括24个核心,每个核心具有其自己的L1高速缓存,12个共享L2高速缓存以及12个共享L3高速缓存。在该实施例中,L2和L3高速缓存中的一个被两个相邻的核心共享。处理器407和图形加速器集成模块446与系统存储器441连接,系统存储器441可以包括处理器存储器401-402。
经由相干总线464上的核心间通信来维持存储在各种高速缓存462A-462D、456和系统存储器441中的数据和指令的一致性。例如,每一高速缓存可具有与其相关联的高速缓存一致性逻辑/电路,响应于检测到对特定高速缓存行的读取或写入而通过相干总线464进行通信。在一个实现方式中,高速缓存侦听协议在相干总线464上实现以侦听高速缓存访问。本领域技术人员很好理解高速缓存侦听/一致性技术,并且为了避免模糊本发明的基本原理,这里不再对其详细描述。
在一个实施例中,代理电路425将图形加速模块446通信地耦合到相干总线464,允许图形加速模块446作为核心的对等体参与高速缓存一致性协议。特别地,接口435通过高速链路440(例如,PCIe总线、NVLink等)向代理电路425提供连接,并且接口437将图形加速模块446连接到链路440。
在一个实现方式中,加速器集成电路436代表图形加速模块446的多个图形处理引擎431、432、N提供高速缓存管理、存储器访问、上下文管理和中断管理服务。图形处理引擎431、432、N可以每个包括单独的图形处理单元(GPU)。可替代地,图形处理引擎431、432、N可包括GPU内的不同类型的图形处理引擎,诸如图形执行单元、媒体处理引擎(例如,视频编码器/解码器)、采样器和位块传输引擎。换句话说,图形加速模块可以是具有多个图形处理引擎431-432、N的GPU,或者图形处理引擎431-432、N可以是集成在公共封装、线卡或芯片上的各个GPU。
在一个实施例中,加速器集成电路436包括用于执行诸如虚拟到物理存储器转换(也被称为有效到实际存储器转换)的各种存储器管理功能的存储器管理单元(MMU)439,以及用于访问系统存储器441的存储器访问协议。MMU 439还可以包括用于高速缓存虚拟/有效到物理/真实地址转换的转换后备缓冲器(TLB)(未示出)。在一个实现方式中,高速缓存438存储用于图形处理引擎431-432、N的高效访问的命令和数据。在一个实施例中,存储在高速缓存438和图形存储器433-434、N中的数据与核心高速缓存462A-462D、456和系统存储器411保持一致。如上所述,这可以通过代理电路425来实现,代理电路425代表高速缓存438和存储器433-434、N参与高速缓存一致性机制(例如,将与处理器高速缓存462A-462D、456上的高速缓存行的修改/访问有关的更新发送到高速缓存438以及从高速缓存438接收更新)。
一组寄存器445存储由图形处理引擎431-432、N执行的线程的上下文数据,并且上下文管理电路448管理线程上下文。例如,上下文管理电路448可以执行保存和恢复操作以在上下文切换期间保存和恢复各种线程的上下文(例如,在第一线程被保存并且第二线程被存储的情况下,使得第二线程可以由图形处理引擎执行)。例如,在上下文切换时,上下文管理电路448可将当前寄存器值存储到存储器中的指定区域(例如,由上下文指针标识)。它然后可能会在返回上下文时恢复寄存器值。在一个实施例中,中断管理电路447接收并处理从系统设备接收的中断。
在一个实现方式中,来自图形处理引擎431的虚拟/有效地址由MMU439转换为系统存储器411中的实际/物理地址。加速器集成电路436的一个实施例支持多个(例如4个、8个、16个)图形加速器模块446和/或其他加速器设备。图形加速器模块446可以专用于在处理器407上执行的单个应用程序,或者可以在多个应用程序之间共享。在一个实施例中,呈现虚拟化图形执行环境,其中图形处理引擎431-432、N的资源与多个应用程序或虚拟机(VM)共享。资源可以被细分为基于与VM和/或应用程序相关联的处理要求和优先级而被分配给不同的VM和/或应用程序的“切片”。
因此,加速器集成电路充当到用于图形加速模块446的系统的桥梁并且提供地址转换和系统存储器高速缓存服务。另外,加速器集成电路436可以为主机处理器提供虚拟化设施以管理图形处理引擎的虚拟化、中断和存储器管理。
因为图形处理引擎431-432、N的硬件资源显式地映射到由主机处理器407看到的实地址空间,所以任何主机处理器都可以使用有效地址值直接寻址这些资源。在一个实施例中,加速器集成电路436的一个功能是图形处理引擎431-432、N的物理分离,使得它们对于系统表现为独立单元。
如上所述,在所说明的实施例中,一个或多个图形存储器433-434、M分别耦合到图形处理引擎431-432、N中的每一者。图形存储器433-434、M存储由图形处理引擎431-432、N中的每一个处理的指令和数据。图形存储器433-434、M可以是易失性存储器,诸如DRAM(包括堆叠的DRAM)、GDDR存储器(例如,GDDR5、GDDR6)或HBM,和/或可以是诸如3D XPoint或Nano-Ram的非易失性存储器。
在一个实施例中,为了减少链路440上的数据业务,使用偏置技术来确保存储在图形存储器433-434、M中的数据是图形处理引擎431-432、N将最频繁使用并且优选地不被核心460A-460D(至少不频繁)使用的数据。类似地,偏置机制试图将核心(并且优选地不是图形处理引擎431-432、N)所需的数据保持在核心的高速缓存462A-462D、456和系统存储器411内。
图4C示出了另一个实施例,其中加速器集成电路436集成在处理器407内。在该实施例中,图形处理引擎431-432、N经由接口437和接口435(其也可以利用任何形式的总线或接口协议)在高速链路440上直接与加速器集成电路436进行通信。加速器集成电路436可以执行与关于图4B所描述的操作相同的操作,但是考虑到其与相干总线462和高速缓存462A-462D、426紧密接近,可能以较高的吞吐量执行操作。
一个实施例支持包括专用进程编程模型(无图形加速模块虚拟化)和共享编程模型(具有虚拟化)的不同编程模型。后者可以包括由加速器集成电路436控制的编程模型和由图形加速模块446控制的编程模型。
在专用过程模型的一个实施例中,图形处理引擎431-432、N专用于单个操作系统下的单个应用程序或进程。单个应用程序可以将其他应用程序请求集中到图形引擎431-432、N,从而在VM/分区内提供虚拟化。
在专用进程编程模型中,图形处理引擎431-432、N可由多个VM/应用程序分区共享。共享模型需要系统管理程序(system hypervisor)虚拟化图形处理引擎431-432、N以允许每个操作系统进行访问。对于没有管理程序的单分区系统,图形处理引擎431-432、N由操作系统拥有。在这两种情况下,操作系统都可以虚拟化图形处理引擎431-432、N以提供对每个进程或应用程序的访问。
对于共享编程模型,图形加速模块446或单独的图形处理引擎431-432、N使用进程句柄来选择进程元素。在一个实施例中,进程元素被存储在系统存储器411中,并且能够使用本文描述的有效地址到实地址转换技术来寻址。进程句柄可以是当向图形处理引擎431-432、N注册其上下文时提供给主机进程的特定于实现方式的值(即,调用系统软件将进程元素添加到进程元素链表)。进程句柄的低16位可以是进程元素链表内的进程元素的偏移。
图4D图示了示例性加速器集成切片490。如本文所使用的,“切片”包括加速器集成电路436的处理资源的指定部分。系统存储器411内的应用有效地址空间482存储进程元素483。在一个实施例中,响应于来自在处理器407上执行的应用程序480的GPU调用481而存储进程元素483。进程元素483包含相应应用程序480的进程状态。包含在进程元素483中的工作描述符(WD)484可以是由应用程序请求的单个作业,或者可以包含指向作业队列的指针。在后一种情况下,WD 484是指向应用程序的地址空间482中的作业请求队列的指针。
图形加速模块446和/或各个图形处理引擎431-432、N可以由系统中的进程的全部或子集共享。本发明的实施例包括用于建立进程状态并将WD484发送到图形加速模块446以在虚拟环境中开始作业的基础设施。
在一个实现方式中,专用进程编程模型是实现方式特定的。在该模型中,单个进程拥有图形加速模块446或单独的图形处理引擎431。由于图形加速模块446由单个进程拥有,管理程序初始化加速器集成电路436以获得所属分区,并且操作系统在图形加速模块446被分配时,初始化加速器集成电路436以获得所属进程。
在操作中,加速器集成切片490中的WD获取单元491获取下一个WD 484,其包括将由图形加速模块446的图形处理引擎之一完成的工作的指示。来自WD 484的数据可以存储在寄存器445中,并且如图所示由MMU 439、中断管理电路447和/或上下文管理电路446使用。例如,MMU 439的一个实施例包括用于访问OS虚拟地址空间485内的段/页表486的段/页遍历电路。中断管理电路447可以处理从图形加速模块446接收的中断事件492。当执行图形操作,由图形处理引擎431-432、N生成的有效地址493由MMU 439转换为实地址。
在一个实施例中,相同的一组寄存器445被复制用于每个图形处理引擎431-432、N和/或图形加速模块446,并且可以由管理程序或操作系统初始化。这些复制的寄存器中的每一个可以被包括在加速器集成切片490中。由管理程序初始化的示例性的寄存器显示在表1中。
表1-管理程序初始化的寄存器
1 切片控制寄存器
2 实地址(RA)调度进程区域指针
3 权限掩码覆盖寄存器
4 中断向量表条目偏移
5 中断向量表条目限制
6 状态寄存器
7 逻辑分区ID
8 实地址(RA)管理程序加速器利用记录指针
9 存储描述寄存器
表2中示出了可以由操作系统初始化的示例性寄存器。
表2-操作系统初始化的寄存器
1 进程和线程标识
2 有效地址(EA)上下文保存/恢复指针
3 虚拟地址(VA)加速器利用记录指针
4 虚拟地址(VA)存储段表指针
5 权限掩码
6 工作描述符
在一个实施例中,每个WD 484特定于特定图形加速模块446和/或图形处理引擎431-432、N。它包含图形处理引擎431-432、N需要完成其工作的所有信息,或者它可以是指向应用程序已经建立了要完成的工作的命令队列的存储器位置的指针。
图4E示出了共享模型的一个实施例的附加细节。该实施例包括其中存储进程元素列表499的管理程序实地址空间498。管理程序实地址空间498可以通过虚拟化操作系统495的图形加速模块引擎的管理程序496访问。
共享编程模型允许来自系统中的分区的全部或子集的进程的全部或子集使用图形加速模块446。存在两个编程模型,其中图形加速模块446由多个进程和分区共享:时间切片共享和图形定向共享。
在该模型中,系统管理程序496拥有图形加速模块446并使其功能对所有操作系统495可用。为了图形加速模块446支持系统管理程序496的虚拟化,图形加速模块446可以遵循以下要求:1)应用程序的作业请求必须是自主的(也就是说,不需要在作业之间维护状态),或者图形加速模块446必须提供上下文保存和恢复机制。2)应用程序的作业请求由图形加速模块446保证在指定的时间量内完成,包括任何转换错误,或者图形加速模块446提供抢占作业处理的能力。3)当在定向共享编程模型中操作时,图形加速模块446必须保证进程之间的公平性。
在一个实施例中,对于共享模型,要求应用程序480使得操作系统495对图形加速模块446类型、工作描述符(WD)、权限掩码寄存器(AMR)值和上下文保存/恢复区域指针(CSRP)进行系统调用。图形加速模块446类型描述系统调用的目标加速函数。图形加速模块446类型可以是系统特定的值。WD特别针对图形加速模块446进行格式化,并且可以采用图形加速模块446命令、指向用户定义结构的有效地址指针、指向命令队列的有效地址指针或任何其他用来描述待由图形加速模块446完成的工作的数据结构的形式。在一个实施例中,AMR值是用于当前进程的AMR状态。传递给操作系统的值与设置AMR的应用程序类似。如果加速器集成电路436和图形加速模块446的实现方式不支持用户权限掩码覆盖寄存器(UAMOR),则操作系统可以在管理程序调用中通过AMR之前将当前UAMOR值应用于AMR值。在将AMR放入进程元素483之前,管理程序496可以可选地应用当前权限掩码覆盖寄存器(AMOR)值。在一个实施例中,CSRP是包含应用程序地址空间482中的用于图形加速模块446保存和恢复上下文状态的区域的有效地址的寄存器445中的一个。如果不需要在作业之间或当作业被抢占时保存状态,则此指针是可选的。上下文保存/恢复区域可以是固定的系统存储器。
在接收到系统调用时,操作系统495可以验证应用程序480已经注册并且被赋予了使用图形加速模块446的权限。操作系统495然后使用表3中所示的信息调用管理程序496。
表3-OS到管理程序调用参数
1 工作描述符(WD)
2 权限掩码寄存器(AMR)值(可能被掩蔽)。
3 有效地址(EA)上下文保存/恢复区域指针(CSRP)
4 进程ID(PID)和可选的线程ID(TID)
5 虚拟地址(VA)加速器利用记录指针(AURP)
6 存储段表指针(SSTP)的虚拟地址
7 逻辑中断服务号码(LISN)
在接收到管理程序调用后,管理程序496验证操作系统495已经注册并且被赋予了使用图形加速模块446的权限。管理程序496然后将进程元素483放入进程元素链表中以用于对应的图形加速模块446类型。进程元素可以包含表4中显示的信息
表4-进程元素信息
1 工作描述符(WD)
2 权限掩码寄存器(AMR)值(可能被掩蔽)。
3 有效地址(EA)上下文保存/恢复区域指针(CSRP)
4 进程ID(PID)和可选的线程ID(TID)
5 虚拟地址(VA)加速器利用记录指针(AURP)
6 存储段表指针(SSTP)的虚拟地址
7 逻辑中断服务号码(LISN)
8 中断向量表,由管理程序调用参数导出。
9 状态寄存器(SR)值
10 逻辑分区ID(LPID)
11 实地址(RA)管理程序加速器利用记录指针
12 存储描述符寄存器(SDR)
在一个实施例中,管理程序初始化多个加速器集成切片490寄存器445。
如图4F所示,本发明的一个实施例采用能够经由用于访问物理处理器存储器401-402和GPU存储器420-423的公共虚拟存储器地址空间寻址的统一存储器。在该实现方式中,在GPU 410-413上执行的操作利用相同的虚拟/有效存储器地址空间来访问处理器存储器401-402,反之亦然,从而简化可编程性。在一个实施例中,将虚拟/有效地址空间的第一部分分配给处理器存储器401,将第二部分分配给第二处理器存储器402,将第三部分分配给GPU存储器420等等。整个虚拟/有效存储器空间(有时称为有效地址空间)由此被分布为跨处理器存储器401-402和GPU存储器420-423的每个,允许任何处理器或GPU利用映射到物理存储器的虚拟地址访问任何物理存储器。
在一个实施例中,MMU 439A-439E中的一个或多个内的偏置/一致性管理电路494A-494E确保主机处理器(例如405)与GPU 410-413的高速缓存之间的高速缓存一致性,并实现偏置技术指示应该在其中存储某些类型的数据的物理存储器。尽管在图4F中图示了偏置/一致性管理电路494A-494E的多个实例,但是偏置/一致性电路可以在一个或多个主机处理器405的MMU内和/或在加速器集成电路436内实现。
一个实施例允许将GPU附加存储器420-423映射为系统存储器的一部分,并使用共享虚拟存储器(SVM)技术进行访问,但不会遭受与全系统高速缓存一致性相关联的典型性能缺陷。GPU附加存储器420-423作为系统存储器被访问而不会造成繁重的缓存一致性开销的能力,为GPU卸载提供了有利的操作环境。这种安排允许主机处理器405软件设置操作数并访问计算结果,而没有传统I/O DMA数据副本的开销。这些传统副本涉及驱动器调用、中断和存储器映射I/O(MMIO)访问,这些访问相对于简单存储器访问来说都是低效的。同时,在没有高速缓存一致性开销的情况下访问GPU附加存储器420-423的能力对于卸载计算的执行时间可能是关键的。例如,在具有大量流式写入存储器业务的情况下,高速缓存一致性开销可以显著降低GPU 410-413所见的有效写入带宽。操作数设置的效率,结果访问的效率以及GPU计算的效率都在确定GPU卸载的有效性方面发挥着重要作用。
在一个实现方式中,GPU偏置和主机处理器偏置之间的选择由偏置跟踪器数据结构驱动。例如,可以使用偏置表,其可以是每个GPU附加存储器页面包括1或2个比特的页面粒度结构(即,以存储器页面的粒度来控制)。偏置表可以在一个或多个GPU附加存储器420-423的被盗存储器范围内实现,利用或不利用GPU 410-413中的偏置高速缓存(例如,以高速缓存频繁/最近使用的偏置表的条目)。可替代地,整个偏置表可以保持在GPU内。
在一个实现方式中,在对GPU存储器的实际访问之前,与对GPU附加存储器420-423的每个访问相关联的偏置表条目被访问,导致以下操作。首先,来自GPU 410-413的在GPU偏置中发现其页面的本地请求被直接转发到对应的GPU存储器420-423。来自GPU的在主机偏置中发现其页面的本地请求被转发给处理器405(例如,如上所述通过高速链路)。在一个实施例中,来自处理器405的在主机处理器偏置中找到所请求的页面的请求像正常的存储器读取一样完成请求。可替代地,针对GPU偏置页面的请求可以被转发给GPU 410-413。如果GPU当前未使用该页面,则GPU可以将该页面转换为主机处理器偏置。
页面的偏置状态可以通过基于软件的机制、硬件辅助的基于软件的机制或者对于有限的一组情况纯粹基于硬件的机制来改变。
用于改变偏置状态的一种机制采用API调用(例如OpenCL),其进而调用GPU的设备驱动器,该设备驱动器进而发送消息(或将命令描述符排队)到GPU以引导其更改偏置状态,并且对于某些转换,在主机中执行高速缓存冲洗操作。高速缓存冲洗操作对于从主机处理器405偏置到GPU偏置的转换是必需的,但是对于相反的转换不是必需的。
在一个实施例中,通过暂时地渲染由主机处理器405不可缓存的GPU偏置页面来维持高速缓存一致性。为了访问这些页面,处理器405可以请求来自GPU 410的访问,GPU 410可以立即授权访问或者不允许访问,取决于实现方式。因此,为了减少处理器405与GPU 410之间的通信,有利的是确保GPU偏置页面是GPU所需但不是主机处理器405所需的页面,反之亦然。
图形处理管线
图5示出了根据一个实施例的图形处理管线500。在一个实施例中,图形处理器可以实现图示的图形处理管线500。图形处理器可以被包括在本文所描述的并行处理子系统内,例如图2A的并行处理器200,在一个实施例中,其是图1的并行处理器112的变型。各种并行处理系统可经由如本文所描述的并行处理单元(例如,图2A的并行处理单元202)的一个或多个实例来实施图形处理管线500。举例来说,着色器单元(例如,图2D的图形多处理器234)可经配置以执行顶点处理单元504、铺砌控制处理单元508、铺砌评估处理单元512、几何形状处理单元516以及片段/像素处理单元524中的一个或多个的功能。数据组装器502、基元组装器506、514、518、铺砌单元510、光栅化器522和光栅操作单元526的功能也可以由处理集群(例如,图2C的处理集群214)内的其他处理引擎和对应的分区单元(例如,图2A的分区单元220A-220N)来执行。图形处理管线500也可以使用用于一个或多个功能的专用处理单元来实现。在一个实施例中,图形处理管线500的一个或多个部分可以由通用处理器(例如,CPU)内的并行处理逻辑来执行。在一个实施例中,图形处理管线500的一个或多个部分可以经由存储器接口528来访问片上存储器(例如,如图2A中的并行处理器存储器222),存储器接口528可以是图2A的存储器接口218的实例。
在一个实施例中,数据组装器502是收集表面的顶点数据和基元的处理单元。然后,数据组装器502将包括顶点属性的顶点数据输出到顶点处理单元504。顶点处理单元504是可编程执行单元,其执行顶点着色器程序,照明和变换顶点着色器程序指定的顶点数据。顶点处理单元504读取存储在高速缓存、本地或系统存储器中的数据用于处理顶点数据,并且可以编程为将顶点数据从基于对象的坐标表示转换为世界空间坐标空间或归一化设备坐标空间。
基元组装器506的第一实例接收来自顶点处理单元504的顶点属性。基元组装器506根据需要读取存储的顶点属性并构建图形基元以供铺砌控制处理单元508处理。图形基元包括三角形、线段、点、补丁等,如各种图形处理应用程序编程接口(API)所支持的。
铺砌控制处理单元508将输入顶点视为几何补丁的控制点。控制点从来自补丁(例如,补丁的库)的输入表示变换为适用于由铺砌评估处理单元512进行的表面评估的表示。铺砌控制处理单元508还可以计算用于几何补丁的边缘的铺砌因子。铺砌因子适用于单个边缘,并量化与边缘相关的视图相关细节水平。铺砌单元510被配置为接收补片的边缘的铺砌因子并且将补片铺砌成多个几何基元,诸如线、三角形或四边形基元,其被传送到铺砌评估处理单元512。铺砌评估处理单元512对细分的补丁的参数化坐标进行操作以生成与几何基元相关联的每个顶点的表面表示和顶点属性。
基元组装器514的第二实例接收来自铺砌评估处理单元512的顶点属性,根据需要读取存储的顶点属性,并构建图形基元供几何处理单元516处理。几何处理单元516是可编程执行单元,执行几何着色器程序以变换由几何着色器程序指定的从基元组装器514接收的图形基元。在一个实施例中,几何处理单元516被编程为将图形基元细分为一个或多个新的图形基元并计算用于光栅化新的图形基元的参数。
在一些实施例中,几何处理单元516可以添加或删除几何流中的元素。几何处理单元516将指定新图形基元的参数和顶点输出到基元组装器518。基元组装器518从几何处理单元516接收参数和顶点,并构建用于由视口缩放、剔除和剪辑单元520处理的图形基元。几何处理单元516读取存储在并行处理器存储器或系统存储器中的数据,以用于处理几何数据。视口缩放、剔除和剪辑单元520执行剪辑、剔除和视口缩放,并将处理后的图形基元输出到光栅化器522。
光栅化器522可以执行深度剔除和其他基于深度的优化。光栅化器522还对新图形基元执行扫描转换以生成片段并将这些片段和相关联的覆盖数据输出到片段/像素处理单元524。
片段/像素处理单元524是可编程执行单元,其被配置执行片段着色器程序或像素着色器程序。片段/像素处理单元524变换如片段或像素着色器程序所指定的从光栅化器522接收的片段或像素。例如,片段/像素处理单元524可以被编程为执行包括但不限于纹理映射、着色、混合、纹理校正和透视校正的操作以产生输出到光栅操作单元526的着色片段或像素。片段/像素处理单元524可以读取存储在并行处理器存储器或系统存储器中的数据,以在处理片段数据时使用。片段或像素着色器程序可以被配置成根据为处理单元配置的采样速率在样本、像素、瓦片或其他粒度上进行着色。
光栅操作单元526是执行光栅操作的处理单元,其包括但不限于模板、z测试、混合等,并将像素数据作为处理后的图形数据输出以图形存储器中存储,例如,如图2A中所示的并行处理器存储器222和/或如图1中所示的系统存储器104,以便被显示在一个或多个显示设备110上或者用于由一个或多个处理器102或并行处理器112中的一个进一步处理。在一些实施例中,光栅操作单元526被配置为压缩写入到存储器的z或颜色数据并解压从存储器读取的z或颜色数据。
图6示出了根据一个实施例的托管即时深度学习机制610(“即时机制”)的计算设备600。计算设备600代表通信和数据处理设备,包括(但不限于)智能可穿戴设备、智能电话、虚拟现实(VR)设备、头戴式显示器(HMD)、移动计算机、物联网(IoT)设备、笔记本电脑计算机、台式计算机、服务器计算机等,并且与图1的计算设备100相似或相同;因此,为了简洁、清楚和易于理解,以上参考图1-5所述的许多细节不在下文中进一步讨论或重复。
计算设备600还可以包括(但不限于)自主机器或人工智能代理,诸如机械代理或机器,电子代理或机器,虚拟代理或机器,机电代理或机器等。自主机器或人工智能代理的示例可以包括(但不限于)机器人、自主运载工具(例如,自驾车,自驾飞机,自航船等)、自主设备(自运行建造运载工具、自运行医疗设备等)和/或诸如此类。在整个文档中,“计算设备”可以互换地称为“自主机器”或“人工智能代理”或简称为“机器人”。
预期尽管在整篇本文档中引用“自主运载工具”和“自主驾驶”,但实施例不限于此。例如,“自主运载工具”不限于自动汽车,而是可以包括任何数量和类型的自主机器,例如机器人、自主设备、家用自主设备和/或类似物,以及任何一个或多个与这种自主机器相关的任务或操作可以与自主驾驶可互换地引用。
计算设备600还可以包括(不限于)大型计算系统,诸如服务器计算机、台式计算机等,并且还可以包括机顶盒(例如,基于互联网的有线电视机顶盒等)、基于全球定位系统(GPS)的设备等。计算设备600可以包括充当通信设备的移动计算设备,诸如包括智能手机的蜂窝电话、个人数字助理(PDA)、平板电脑、膝上型计算机、电子阅读器、智能电视、电视平台、可穿戴设备(例如,眼镜、手表、手镯、智能卡、珠宝、衣物等)、媒体播放器等。例如,在一个实施例中,计算设备600可以包括采用承载集成电路(“IC”)的计算机平台的移动计算设备,例如片上系统(“SoC”或“SOC”),其将计算设备600的各种硬件和/或软件组件集成在单个芯片上。
如图所示,在一个实施例中,计算设备600可以包括任何数量和类型的硬件和/或软件组件,诸如(但不限于)图形处理单元(“GPU”或简称“图形处理器”)614、图形驱动器(还称为“GPU驱动器”、“图形驱动器逻辑”、“驱动器逻辑”、用户模式驱动器(UMD)、UMD、用户模式驱动器框架(UMDF)、UMDF或简称为“驱动器”)616、中央处理单元(“CPU”或简称为“应用处理器”)612、存储器608、网络设备、驱动器等,以及输入/输出(I/O)源604,诸如触摸屏、触摸板、触摸垫、虚拟或常规键盘、虚拟或常规鼠标、端口、连接器等。计算设备600可包括用作计算机设备600的硬件和/或物理资源和用户之间的接口的操作系统(OS)606。预期图形处理器614和应用处理器612可以是图1的处理器102中的一个或多个。
应该意识到,对于某些实现方式,比上述示例更少或更多配备的系统可能是优选的。因此,取决于许多因素,例如价格限制、性能要求、技术改进或其他情况,计算设备600的配置可以随实现方式不同而变化。
可以将实施例实现为以下中的任一个或其组合:使用主板互连的一个或多个微芯片或集成电路、硬连线逻辑、由存储器设备存储并由微处理器执行的软件、固件、专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)。作为示例,术语“逻辑”、“模块”、“组件”、“引擎”和“机构”可以包括软件或硬件和/或软件和硬件的组合。
在一个实施例中,即时机制610可以由计算设备600的操作系统606托管或促进。在另一个实施例中,即时机制610可以由图形处理单元(“GPU”或简称为图形处理器)614或图形处理器614的固件或其部分来托管。例如,即时机制610可以嵌入图形处理器614的处理硬件中或者作为图形处理器614的处理硬件的一部分来实现。类似地,在又一个实施例,即时机制610可以由中央处理单元(“CPU”或简称为“应用处理器”)612或者其部分托管。例如,即时机制610可以嵌入应用处理器612的处理硬件或实现为应用处理器612的处理硬件的部分。在又一个实施例中,即时机制610可以由计算设备600的任何数量和类型的组件或其部分托管,诸如即时机制610的一部分可以由操作系统606或者其一部分托管,另一部分可以由图形处理器614或者其一部分托管,另一部分可以由应用处理器612或者其一部分托管,而即时机制610的一个或多个部分可以由操作系统606和/或计算设备600的任何数量和类型的设备或其一部分托管。可以预期的是,即时机制610的一个或多个部分或组件可以被采用为硬件、软件和/或固件。
可以设想,实施例不限于即时机制610的任何特定实现方式或托管,并且即时机制610及其组件中的一个或多个可以被实现为硬件、软件、固件、或其任何组合。
计算设备600可以托管网络接口以提供对诸如LAN、广域网(WAN)、城域网(MAN)、个域网(PAN)、蓝牙、云端网络、移动网络(例如,第三代(3G)、第四代(4G)等)、内联网、因特网等网络的访问。网络接口可以包括例如具有天线的无线网络接口,其可以表示一个或多个天线。网络接口还可以包括例如有线网络接口,以通过网络电缆与远程设备通信,所述网络电缆可以是例如以太网电缆、同轴电缆、光纤光缆、串行电缆或者并行电缆。
例如,可以提供作为计算机程序产品的实施例,该计算机程序产品可以包括一个或多个其上存储有机器可执行指令的机器可读介质,该机器可执行指令在由一个或多个机器如计算机、计算机网络或其他电子设备执行时可以使得一个或多个机器根据这里描述的实施例执行操作。机器可读介质可以包括但不限于软盘、光盘、CD-ROM(光盘只读存储器)和磁光盘、ROM、RAM、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁卡或光卡、闪速存储器或适用于存储机器可执行指令的其他类型的介质/机器可读介质。
此外,实施例可以作为计算机程序产品下载,其中程序可以凭借在载波或其他传播介质中体现和/或由其调制的一个或多个数据信号从远程计算机(例如,服务器)通过通信链路(例如,调制解调器和/或网络连接)传输到请求计算机(例如,客户端)。
在整篇文档中,术语“用户”可以可互换地称为“观看者”、“观察者”、“人”、“个人”、“最终用户”等。要注意的是,贯穿本文档,诸如“图形域”之类的术语可以与“图形处理单元”、“图形处理器”或简称为“GPU”可互换地引用,并且类似地,“CPU域”或“主机域”可以与“计算机处理单元”、“应用处理器”或简称为“CPU”可互换引用。
需要注意的是,诸如“节点”、“计算节点”、“服务器”、“服务器设备”、“云计算机”、“云服务器”、“云服务器计算机”、“机器”、“主机”、“设备”、“计算设备”、“计算机”、“计算系统”等术语可在本文档中互换使用。需要进一步指出的是,在整个文档中可以互换地使用诸如“应用程序”、“软件应用程序”、“程序”、“软件程序”、“包”、“软件包”等的术语。而且,诸如“作业”、“输入”、“请求”、“消息”等的术语在本文档中可以互换使用。
图7示出了根据一个实施例的图6的即时深度学习机制610。为了简洁起见,参考图1-6已经讨论的许多细节在下文中不再重复或讨论。在一个实施例中,即时机制610可以包括任何数量和类型的组件,诸如(没有限制):检测/观察逻辑701;离线学习逻辑703;即时学习逻辑705;通信/兼容性逻辑707;调谐逻辑709;以及生成和调解逻辑711。
如先前所讨论的,常规技术或系统未考虑如下假设:在个人计算中,特定用户可能正在使用系统持续一段时间(例如,若干分钟),因此这些技术限于使用预先训练的和用户无关的分类器。
为了实现用户相关性,这种常规技术使用用于调谐内部参数的校准过程。该阶段在学习分类器之后执行,并且不影响训练阶段。例如,在学习用于面部表情识别的用户无关分类器之后,由于其面部解剖结构,某个用户的“中性”面部对分类器可能看起来“正在微笑”。因此,这些技术存储他的中性面部的得分,并在输出它之前从最终的“正在微笑”得分中减去它。这些技术或系统不会训练分类器以考虑该用户的独特面部结构。
机器学习中的最新进展包括采用深度学习(例如,CNN)以实现高分类准确度。但是,这些解决方案需要收集相对较大的训练数据并且具有高计算复杂度。此外,这些被视为与用户无关的系统,并使用复杂的模型来试图支持用户的全部各种面部结构。
实施例提供了一种新颖的技术,如由即时机制610所促进的,从用户无关模型开始并在运行时逐渐变换成用户相关模型(例如,具有低计算复杂度),例如在用户使用系统(例如,正常操作)期间。
实施例进一步提供这种新颖的技术来执行三重操作,诸如附加中间件层以获得低等待时间和低计算复杂度(例如,为独立软件供应商(ISV)软件留下足够的计算能力)和低功率(例如,移动平台),同时实现高精度。
例如,传统的校准过程是乏味的并且需要用户在系统的正常操作之前执行某些动作,这导致不满并且在一些应用中不可行。传统技术需要大力发展,以实现高度准确和健壮的用户无关分类器,这往往导致更长的上市时间(例如,主要是由于采集训练和验证数据库的努力以及分类器的开发和训练时间)。
可以预期和注意的是,贯穿本文档,用户面部表情识别被用作学习应用的示例;然而,实施例不限于此,并且能够覆盖任何数量和类型的其他用户行为,例如手势识别,其可以被示出为覆盖多模态。此外,这里讨论的各种机器学习模型是神经网络的类型,但是同样,实施例不限于此,并且也可以使用具有可比较特性的其他模型(例如,用于第一阶段的频谱嵌入)。
此外,尽管实施例不限于此,但即时机制610可以驻留在中间件层中,其中软件开发者可以使用这种新颖技术的输出来增强他们的应用。此外,实施例完全适用于任何数量和类型的计算平台,例如个人计算机、移动计算机、固定计算机(诸如维护多个用户简档的设备)、可穿戴计算机等,并且与其兼容。此外,关于实现方式,使用机器学习技术通过这种新颖技术学习的模型被外部应用程序(例如,移动应用程序)即时地(例如,实时地)用作预言器(oracle)以查询用户的行为(例如,分类面部表情,如角度、幸福、悲伤等)。一方面,低功率/计算和低等待时间需求通常需要使用简单的机器学习模型,但另一方面,可以通过更高和更复杂的模型来获得更高的精度。
实施例提供了这种新颖的技术,如通过即时机制610所促进的,以在极低的计算和等待时间下实现高精度(诸如,当与用于照亮房间中的感兴趣点的小型电池供电激光器相比,而不是照亮整个房间的氖灯泡)。
复杂模型经常需要用于训练的大的已标记数据集。而且,扩展到其他分类问题通常需要收集用于训练和重复开发工作的新数据集。通过减轻开发人员的训练数据收集(例如只需要一个小的已标记数据集)。
实施例提供了这种新颖技术,如即时机制610所促进,仅需要来自开发人员的小的已标记数据库,因为其自动地为其自身即时采集额外的训练数据。
一些现有解决方案包括基于全局特征提取的经典方法(例如,Gabor小波),通常跟随有线性分类器(例如,支持向量机(SVM)),并且还基于局部特征(例如,眼角、嘴唇等),通常跟随非线性分类器(例如,内核SVM)。所有这些解决方案或技术具有高计算成本,例如低精度等。
实施例提供了一种新颖的技术,如即时机制610所促进的,用于实现在用户无关训练和用户相关训练之间在正常系统操作期间即时进行相互作用的高度准确且计算上不昂贵的技术。这是通过使用多种不同的深度学习方法或技术以及通过引入调停或调解算法来组合这些多种方法来实施的。
在正常系统操作的前几分钟期间,如即时机制610促进的这种新颖技术取得一个预先训练的深度网络的输出,用作用户无关模型,并且自动生成第二深度网络的训练数据,用作用户相关分类器。一旦收敛(例如,进入应用程序若干分钟),两个网络被重新训练,这次是联合的,并且没有使用与用户无关的数据的调解算法。现在合并的网络是用户相关分类器,并且比用户无关分类器具有更高的准确度。
在一个实施例中,检测/观察逻辑701可用于连续地、周期性地或按需地检测和/或观察与自主机器600处的机器学习相关联的任何数量和类型的网络和/或模型。
在一个实施例中,可以使用离线学习逻辑703来启动第一阶段(“阶段一”),其中使用已标记数据来执行神经网络(例如CNN)的离线学习。在该阶段一,用户的参与可能不适用,因为这个阶段是在开发过程中执行的。此外,在一个实施例中,离线学习逻辑703可以用于在中间件和/或系统和/或应用程序的阶段一期间引入和提供离线学习阶段,其中该阶段一在背景中执行并且可能不需要来自用户的任何特殊动作。在阶段一期间,分类结果可以从用户无关模型(例如,第一网络)获得,其中准确度和计算复杂度可以仅仅取决于该模型(诸如具有合理准确度和低复杂度的CNN模型)。
随后,通过采用调解算法来训练连续的限制层,如深度信念网络(DBN)中的限制玻尔兹曼机器层,可以使用即时学习逻辑705来启动即时学习(例如,无监督)的第二阶段(“阶段二”)。在此阶段,向用户提供自主机器600的正常使用(例如,移动应用程序启动并运行),而系统的准确度可以是中等至低等。
在一个实施例中,可以触发调谐逻辑709以使用小的已标记数据来启动第三阶段,以便对整个CNN进行一次性调谐,诸如DBN级联。在这个阶段,用户会遇到从系统正常使用的中断,比如在退出应用程序时。
第一神经网络为任何用户(例如在用户无关模型中)提取一般外观特征。第二神经网络比第一网络具有更强的表达能力,并且当考虑与用户无关的场景时,它可能在它的能量函数中具有若干局部最小值(这是大数据集的过程中的一个)。然而,对于特定用户(例如,在用户相关模型中),使用来自第一网络的任何用户无关外观特征对该第二网络进行训练,引导网络朝向对该特定人员最有利的局部最小值。最后的阶段,利用与用户无关的数据重新训练两个网络,并将网络移动到能量函数的最近的局部最小点(例如负对数似然值)。
此外,在一个实施例中,由于其用于其分类器的骨干而获得较高的分类准确度,从而导致最先进的机器(深度)学习方法。在一个实施例中,提供用户无关分类以对训练数据外的用户以在8-10%错误警报和90-92%准确度的检测概率进行测试。
如由离线学习逻辑703所促进的,这种与用户无关的测试可以是任何下一阶段的起点,其中使用用户折叠交叉验证方案,其中验证集合可包括那些不在训练集中的用户(例如,省去一个人)。
关于诸如等待时间、功率和计算等系统资源和性能问题,当使用小模型/深度网络分类时,如先前所讨论的,对于真实世界场景,准确度可能不够好。在一个实施例中,维持小模型/深度网络,同时增加特定用户随时间的准确度(例如在几分钟内达到峰值)并保持相同的计算复杂度水平。
最先进的面部表情系统的例子可能在第一层有1024个卷积内核。相比之下,例如,实施例在第一层中仅提供8个卷积内核。这是因为如即时机制610促进的这种新颖的即时技术能够即时地针对特定用户调谐这个小型网络。以类比的方式,它就像是一个电池供电的激光指示器,照亮房间里的小的兴趣点,相对于照亮整个房间的耗电的氖灯泡(例如同时支持所有可能的用户)。例如,这种新颖的技术允许将激光指向特定的感兴趣位置(例如特定用户)。
关于减轻开发工作,实施例提供仅使用小的深度网络来实现高准确度,这减少了对常规重型离线训练的需求。此外,这种新颖的技术通过消除事先收集大量数据集进行训练的需要,从而改进了开发上市时间。而且,训练复杂模型本身可能需要很长一段时间。
例如,现有技术的系统能够使用超过100,000个图像用于离线训练,其中实施例仅使用300个图像。此外,使用即时机制610,可以以相同的方式处理各种分类任务。开发工作的减少可能达到任何软件开发者可以定义其自己的分类问题,收集小数据集并且使用通过通信/兼容性逻辑707提供的这种新颖的应用程序编程接口(API)(在中间件层)学习一个好的分类器的目的。
典型地,针对用户自我调谐的机器学习系统可能需要“校准阶段”,其中用户可能被要求做某些动作。关于其应用、部署和用户界面,在一个实施例中,即时机制610提供调解算法,如生成和调解逻辑711所促进的,以及使这变得陈旧的一系列过程。这里,“校准阶段”不提示用户,并且在正常系统操作期间在后台完成,其中调解算法观察用户并自动检测在自主机器600处调谐机器学习系统所需的行为。
此外,可以使用通信/兼容性逻辑707来促进计算设备600的任何数量的设备与即时机制610的各种组件之间所需的通信和兼容性。
通信/兼容性逻辑707可以用于促进计算设备600与任何数量和类型的其他计算设备(诸如移动计算设备、台式计算机、服务器计算设备等);处理设备或组件(如CPU、GPU等);捕捉/感测/检测设备(诸如包括相机、深度感测相机、相机传感器、红绿蓝(“RGB”或“rgb”)传感器、麦克风等的捕捉/感测组件);显示设备(如输出组件,包括显示屏、显示区、显示投影仪等);用户/上下文感知组件和/或识别/验证传感器/设备(诸如生物传感器/检测器、扫描仪等);数据库730,诸如存储器或存储设备、数据库和/或数据源(诸如数据存储设备、硬盘驱动器、固态驱动器、硬盘、存储卡或设备、存储器电路等);通信介质725,诸如一个或多个通信信道或网络(例如,云网络、因特网、内联网、蜂窝网络,诸如蓝牙、低功耗蓝牙(BLE)、蓝牙智能、Wi-Fi近场通信、射频识别(RFID)、近场通信(NFC)、身体局域网(BAN)等的接近网络);无线或有线通信和相关协议(例如WiMAX、以太网等);连接性和位置管理技术;软件应用程序/网站(例如,社交和/或商业联网网站等,商业应用程序,游戏和其他娱乐应用程序等);以及编程语言等之间的动态通信和兼容性,同时确保与不断变化的技术、参数、协议、标准等的兼容性。
此外,任何特定品牌、词语、术语、短语、名称和/或首字母缩略词的使用,例如“检测”、“观察”、“产生”、“反转”、“双向镶边”、“再生模型”、“辨别模型”、“训练”、“学习”、“拓扑”、“构造”、“特征装袋”、“训练集”、“自动机器”、“代理”、“机器”、“运载工具”、“机器人”、“驾驶”、“神经网络”、“CNN”、“DNN”、“NN”、“执行单元”、“EU”、“共享本地存储器”、“SLM”、“图形流”、“高速缓存”、“图形高速缓存”、“GPU”,“图形处理器”、“GPU域”、“GPGPU”、“CPU”、“应用处理器”、“CPU域”、“图形驱动器”、“工作负荷”、“应用程序”、“图形管线”、“管线进程”、“API”、“3D API”、“硬件”、“软件”、“代理”、“图形驱动器”、“内核模式图形驱动器”、“用户模式驱动器”、“用户模式驱动器框架”、“缓冲器”、“图形缓冲器”、“任务”、“过程”、“操作”、“软件应用程序”、“游戏”等等,不应该被理解为将实施例限于在产品中或本文档外部的文献中携带该标签的软件或设备。
可以预期的是,可以将任何数量和类型的组件添加到即时机制610和/或从即时机制610移除,以促进包括添加、去除和/或增强某些特征的各种实施例。为了简化、清楚并易于理解即时机制610,许多标准和/或已知组件(诸如计算设备的那些组件)在这里未被示出或讨论。可以设想,如本文所述的实施例不限于任何特定的技术、系统、架构和/或标准,并且足够动态以采用和适应任何未来的变化。
图8A示出根据一个实施例的用于即时学习的方法800。为了简洁起见,之前参照图1-7讨论的许多细节可能在下文中不被讨论或重复。与该方法800相关的任何过程可以通过处理逻辑来执行,该处理逻辑可以包括硬件(例如电路、专用逻辑、可编程逻辑等)、软件(诸如在处理设备上运行的指令)或其组合,如由图6的即时机制610促进的。与该方法800相关联的过程可以为了简洁和清晰呈现而以线性序列示出或叙述;然而,预期可以并行、异步或以不同的顺序执行任意数量的过程。
如之前参考图7所描述的,可以在多个阶段中执行即时学习,诸如三个阶段,这些阶段包括:由离线学习逻辑703促进的简单用户无关模型的离线训练,通过即时学习逻辑705促进的使用调解算法的即时学习,以及联合模型调谐,将模型合并为单个网络以及如调谐逻辑709所促进的参数的调谐。
方法800开始于框801,其中使用与用户无关的训练数据821来学习用户无关模型(例如,CNN)。在一个实施例中,方法800然后可继续在框803处使用实况传感数据(例如,视频帧)823从使用用户无关模型的实况数据中提取特征。在框805,生成用户相关的训练数据,而在框807,学习和/或更新用户相关模型(例如,DBN)。
在框809,如图所示,做出关于用户相关学习是否已完成的决定。如果否,则方法800在框803处继续以从实况数据提取特征。如果是,则方法800在框811处继续,将用户无关模型和用户相关模型组合成联合模型。在框813,使用与用户无关的数据更新联合模型。在框815处,方法800结束或以完全操作重新开始。
图8B示出根据一个实施例的与离线学习的阶段一相关联的方法830。为了简洁起见,先前参照图1-8A讨论的许多细节可能在下文中不被讨论或重复。与该方法830相关的任何过程可以由处理逻辑来执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑等)、软件(诸如在处理设备上运行的指令)或其组合,如由图6的即时机制610促进的。与该方法830相关联的过程可以为了简洁和清晰呈现而以线性序列示出或叙述;然而,可以预期的是,任意数量的它们可以并行、异步或以不同的顺序执行。
在开发阶段期间,仅使用传统实践训练用户无关模型;除外,简单的模型可能就足够了。在这个阶段适度的准确度可能就足够了,在这种情况下,在一个实施例中,可以使用具有几个卷积层的小CNN,而相关数据库可以由任意数量的已标记图像组成,例如300。
如图所示,当在框833处使用用户无关训练数据837训练小的用户无关分类器(例如CNN网络)时,方法830在框831处以离线状态开始。该训练可以产生用户无关分类器(例如,CNN)839并且在框835处结束(准备部署)。
图8C-8D示出根据一个实施例的表示在即时学习中的阶段二的方法840、860。为了简洁起见,之前参考图1-8B讨论的许多细节可能在下文中不被讨论或重复。与这些方法840、860相关的任何过程可以通过处理逻辑来执行,该处理逻辑可以包括硬件(例如电路、专用逻辑、可编程逻辑等)、软件(诸如在处理设备上运行的指令)或其组合,如图6的即时机制610所促进的。为了简洁和清晰呈现,与这些方法840、860相关联的过程可以以线性序列示出或叙述;然而,可以预期的是,任意数量的它们可以并行、异步或以不同的顺序执行。
在自主机器上部署机器学习系统之后,用户(例如,客户)开始使用该系统。在第一使用时段期间(例如进入的最初几分钟),调解算法为用户相关模型生成小批量训练数据。首先,它通过馈送CNN模型(例如用户无关模型),并获得其特征输出,来从实况传感数据(例如,视频帧、语音等)中提取特征。批处理缓冲器填充有这些特征向量的序列。然后,从该批缓冲器,如图6的即时机制610所促进的这种新颖技术允许检测与任何唯一特征向量相比时是独特的、驻留在一个小批量缓冲器中、在之前的迭代中收集的特征向量(若干特征向量)。
在一个实施例中,可以使用以下公式来相对于已经在小批量缓冲器中的一组唯一特征,向量对特征向量X唯一性进行评分,例如:
这里,d(X,Y)是两个向量X和Y之间的距离度量,并且在我们的情况下是欧几里得距离;α()和β()是正则化项,在我们的情况下,它们都等于1。只有具有高于某个阈值的唯一性分数的特征向量才添加到小批量缓冲器中。这个过程确保迷你批量接近于i.i.d并且是多种多样的(例如,空间几乎被同等采样)。
一旦迷你批量缓冲器满了,它就被传递到DBN训练算法(例如,对比散度,随机梯度下降),迷你批量缓冲器被重置(它可以包含一些“参考”特征向量以“指导”唯一性分数,有利于每个迷你批量收集迭代的不同特征向量)。一旦DBN参数稳定(或在某些固定数量的迷你批量之后,或在某种退出标准之后),该阶段终止。
图8C的方法840以框841处的第一次系统操作开始,并且继续进行在框843处即时学习过程的初始化。在框845处,使用用户无关模型执行分类,接收传感数据(例如,视频帧)858并输出用户无关分类器(例如,CNN)859。在框845处执行分类后,产生分类结果并在框847处输出,而在框849处提供用于训练用户相关模型的数据迷你批量,其然后导致在框851处训练用户相关模型并且在框853处输出用户相关分类器(例如,DBN)。
在一个实施例中,在框851处训练用户相关模型时,在框855处确定用户相关模型的学习是否完成。如果不是,则方法840循环回框845以进行用户无关模型的分类并继续。如果不是,则在框857处触发联合学习/更新阶段,如关于图8D进一步描述和说明的。
现在参考图8D,方法860开始于在框861处使用感测数据(例如,视频帧)879使用图8C的用户无关模型(例如,CNN)提取特征向量,进而提供一批特征向量(例如,来自视频帧序列的特征)863。在框865处,确定关于用户无关模型是否存在一个或多个新的和/或独特的特征。如果不是,则方法860循环回到框861处的附加特征向量的提取。如果是,则方法860继续在框867处更新迷你批量缓冲器,从而在框869处产生迷你批量缓冲器。
在一个实施例中,在框871处关于迷你批量缓冲器是否已满而做出另一确定。如果不是,则方法860循环回到在框861处提取附加特征向量。如果是,方法860继续在框873处更新用户相关模型(例如,DBN),然后导致关于在框875处是否已完成了用户相关的学习的另一确定。如果否,则在框878处重置迷你批量缓冲器,并且过程循环回到在框861处提取附加特征向量。如果是,则完成方法860并因此在框877处结束即时学习过程。
图8E示出根据一个实施例的与联合调谐、训练和/或重新训练的阶段三相关联的方法880。为了简洁起见,先前参考图1-8D讨论的许多细节可能在下文中不被讨论或重复。与该方法880相关的任何过程可以通过处理逻辑来执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑等)、软件(诸如在处理设备上运行的指令)或其组合,如这通过图6的即时机制610促进的。为了简洁和清晰呈现,可以用线性序列来图示或叙述与该方法880相关联的过程;然而,可以预期的是,任意数量的它们可以并行、异步或以不同的顺序执行。
如本实施例所示,方法880从框881处的联合学习和/或更新阶段开始,然后导致模型(例如,用户相关模型、用户无关模型等)的堆叠以及层的合并,例如在框883处使用框885处的用户无关分类器(例如,CNN)和框887处的用户相关分类器(例如,DBN)将连续层CNN转换为DBN,然后转换为单个网络。
在一个实施例中,方法880继续在框889处使用用户无关训练数据891更新联合模型的参数,并输出最终分类器893,并随后导致方法880结束,现在具有可用的最高准确度。
图9A示出根据一个实施例的与即时学习相关联的各个阶段的事务序列900。为了简洁起见,先前参照图1-8E讨论的许多细节可能在下文中不再讨论或重复。与该事务序列900相关的任何过程可以由可以包括硬件(例如,电路、专用逻辑、可编程逻辑等)、软件(诸如在处理设备上运行的指令)或其组合的处理逻辑来执行,如由图6的即时机制610所促进的。为了简洁和清楚呈现,可以用线性序列来图示或叙述与该事务序列900相关联的过程;然而,可以预期的是,任意数量的它们可以并行、异步或以不同的顺序执行。
在所示实施例中,事务顺序900的各种过程在x轴和y轴中示出,用于提供如何实施或执行这些过程的适当概述。例如,分类准确度901、系统输出903、学习阶段905和数据类型使用907中的一个或多个可以在开发阶段911、正常操作913(在用于后台即时学习的系统部署之后)、重新训练915和另一后续的正常操作917中的一个或多个期间实施。例如,如先前所讨论的,用户无关分类921可以被认为是在正常操作913和重新训练915期间执行的系统输出903的一部分。类似地,如图所示,在正常操作917期间分别通过分类准确度901和系统输出903实现完全的用户相关分类923和最高分类准确度925。
图9B示出根据一个实施例的与即时学习的各个阶段相关联的事务序列950。为了简洁起见,之前参考图1-9A讨论的许多细节可能在下文中不被讨论或重复。与该事务序列950相关的任何过程可以由可包括硬件(例如电路、专用逻辑、可编程逻辑等)、软件(诸如在处理设备上运行的指令)或其组合的处理逻辑来执行,如由图6的即时机制610所促进的。为了简洁和清楚呈现,与该事务序列950相关联的过程可以以线性序列图示或叙述;然而,可以预期的是,任意数量的它们可以并行、异步或以不同的顺序执行。
在所说明的实施例中,事务序列950提供与即时学习相关联的各种过程和阶段的概述,例如开始于在自主机器处接收输入日期951(例如,视频帧),其随后通过神经网络(例如,CNN)的特征提取层953进行处理,从而在CNN分类955处产生用户无关的分类结果921。事务序列950还在路由通过调解算法(在即时学习期间)之后在DBN 957处提供用户相关分类结果923。
机器学习概述
机器学习算法是可以基于一组数据进行学习的算法。机器学习算法的实施例可以被设计成对数据集内的高级抽象建模。例如,可以使用图像识别算法来确定给定输入属于若干类别中的哪个类别;回归算法可以对于给定输入输出数值;并且模式识别算法可以用于生成转换后文本或执行文本到语音和/或语音识别。
机器学习算法的示例性类型是神经网络。有许多类型的神经网络;一个简单类型的神经网络就是前馈网络。前馈网络可以被实现为其中节点被分层布置的非循环图。通常,前馈网络拓扑结构包括由至少一个隐藏层分开的输入层和输出层。隐藏层将输入层接收到的输入转换为可用于在输出层中生成输出的表示形式。网络节点通过边完全连接到相邻层中的节点,但每层中的节点之间没有边。在前馈网络的输入层的节点处接收到的数据经由激活函数被传播(即,“前馈”)到输出层的节点,该激活函数基于分别与连接层的边中的每个边相关联的系数(“权重”)来计算网络中的每个连续层的节点的状态。根据正在执行的算法所表示的特定模型,神经网络算法的输出可以采取各种形式。
在可以使用机器学习算法来对特定问题建模之前,使用训练数据集来训练算法。训练神经网络涉及选择网络拓扑结构,使用一组训练数据表示由网络建模的问题,并且调整权重直到网络模型表现为对于训练数据集的所有实例具有最小误差。例如,在用于神经网络的监督式学习训练过程期间,网络响应于表示训练数据集中的实例的输入而产生的输出与该实例的“正确”的已标记输出进行比较,计算表示输出和已标记输出之间的差异的误差信号,并且调整与连接相关联的权重以使误差最小化,因为误差信号通过网络的层向后传播。当从训练数据集的实例产生的输出中的每个的误差最小化时,网络被认为是“经训练的”。
机器学习算法的准确度可以受用于训练算法的数据集的质量显著影响。训练过程可能是计算密集型的,并且可能在传统通用处理器上需要大量时间。因此,并行处理硬件被用于训练许多类型的机器学习算法。这对于优化神经网络的训练特别有用,因为在调整神经网络中的系数中执行的计算帮助本身自然地适合于并行实现。具体来说,许多机器学习算法和软件应用程序已经适应于利用通用图形处理设备内的并行处理硬件。
图10是机器学习软件栈1000的概括图。机器学习应用程序1002可以被配置为使用训练数据集训练神经网络或使用经训练的深度神经网络来实现机器智能。机器学习应用程序1002可以包括可以用于在部署之前训练神经网络的神经网络和/或专用软件的训练和推理功能。机器学习应用程序1002可以实现任何类型的机器智能,包括但不限于图像识别、映射和定位、自主导航、语音合成、医学成像或语言翻译。
机器学习应用程序1002的硬件加速可以通过机器学习框架1004启用。机器学习框架1004可以提供机器学习基元的库。机器学习基元是通常由机器学习算法执行的基本操作。如果没有机器学习框架1004,机器学习算法的开发者将需要创建和优化与机器学习算法相关联的主要计算逻辑,然后在开发新的并行处理器时重新优化计算逻辑。相反,机器学习应用程序可以被配置为使用由机器学习框架1004提供的基元来执行必要的计算。示例性基元包括张量卷积、激活函数和池化(pooling),它们是在训练卷积神经网络(CNN)时执行的计算操作。机器学习框架1004还可以提供基元来实现由许多机器学习算法执行的基本线性代数子程序,诸如矩阵和向量操作。
机器学习框架1004可以处理从机器学习应用程序1002接收到的输入数据并且生成到计算框架1006的适当输入。计算框架1006可以抽象提供给GPGPU驱动器1008的基础指令以使机器学习框架1004利用经由GPGPU硬件1010的硬件加速而不需要机器学习框架1004具有对GPGPU硬件1010的架构的深入了解。另外,计算框架1006可以跨各种类型和代的GPGPU硬件1010实现机器学习框架1004的硬件加速。
GPGPU机器学习加速
图11示出根据一个实施例的高度并行的通用图形处理单元1100。在一个实施例中,通用处理单元(GPGPU)1100可以被配置为在处理与训练深度神经网络相关联的计算工作负荷的类型时特别高效。另外,GPGPU 1100可以直接链接到GPGPU的其他实例以创建多GPU集群来改进特别深的神经网络的训练速度。
GPGPU 1100包括主机接口1102以实现与主机处理器的连接。在一个实施例中,主机接口1102是PCI Express接口。但是,主机接口也可以是供应商特定的通信接口或通信结构。GPGPU 1100从主机处理器接收命令,并使用全局调度器1104将与那些命令相关联的执行线程分配给一组计算集群1106A-H。计算集群1106A-H共享高速缓存存储器1108。高速缓存存储器1108可以用作计算集群1106A-H内的高速缓存存储器的高级高速缓存。
GPGPU 1100包括经由一组存储器控制器1112A-B与计算集群1106A-H耦合的存储器1114A-B。在各种实施例中,存储器1114A-B可以包括各种类型的存储器设备,包括动态随机存取存储器(DRAM)或图形随机存取存储器,诸如同步图形随机存取存储器(SGRAM),包括图形双倍数据速率(GDDR)存储器。在一个实施例中,存储器单元224A-N还可以包括3D堆叠存储器,包括但不限于高带宽存储器(HBM)。
在一个实施例中,每个计算集群GPLAB06A-H包括一组图形多处理器,诸如图4A的图形多处理器400。计算集群的多种类型的整数和浮点逻辑单元的图形多处理器可以执行精度范围内的计算操作,包括适合于机器学习计算的计算操作。例如,并且在一个实施例中,每个计算集群1106A-H中的浮点单元的至少一个子集可以被配置为执行16位或32位浮点运算,而浮点单元的不同子集可以被配置为执行64位浮点运算。
GPGPU 1100的多个实例可以被配置为作为计算集群来操作。计算集群用于同步和数据交换的通信机制因实施例而异。在一个实施例中,GPGPU 1100的多个实例通过主机接口1102进行通信。在一个实施例中,GPGPU 1100包括将GPGPU 1100与使得能够直接连接到GPGPU的其他实例的GPU链路1110耦合的I/O集线器1108。在一个实施例中,GPU链路1110被耦合到专用GPU到GPU桥,该专用GPU到GPU桥允许GPGPU 1100的多个实例之间的通信和同步。在一个实施例中,GPU链路1110与高速互连耦合以发送和接收数据到其他GPGPU或并行处理器。在一个实施例中,GPGPU 1100的多个实例位于分离的数据处理系统中,并且经由可经由主机接口1102访问的网络设备进行通信。在一个实施例中,除主机接口1102之外或作为主机接口1102的替代,GPU链路1110可以被配置为实现与主机处理器的连接。
虽然GPGPU 1100的所示配置可以被配置为训练神经网络,但是一个实施例提供了可以被配置用于在高性能或低功率推理平台内部署的GPGPU 1100的替代配置。在推理配置中,GPGPU 1100相对于训练配置包括更少的计算集群1106A-H。另外,与存储器1114A-B相关联的存储器技术可能在推理配置和训练配置之间不同。在一个实施例中,GPGPU 1100的推理配置可以支持推理特定指令。例如,推理配置可以提供对一个或多个8位整数点积指令的支持,这些指令通常在已部署神经网络的推理操作期间使用。
图12示出根据一个实施例的多GPU计算系统1200。多GPU计算系统1200可以包括经由主机接口交换机1204耦合到多个GPGPU 1206A-D的处理器1202。在一个实施例中,主机接口交换机1204是PCI Express交换机设备,其将处理器1202耦合到PCI express总线,处理器1202可以通过该总线与该组GPGPU 1206A-D进行通信。多个GPGPU 1206A-D中的每一个可以是图11的GPGPU 1100的实例。GPGPU 1206A-D可以经由一组高速点对点GPU到GPU链路1216互连。高速GPU到GPU链路可以经由专用GPU链路(诸如图11中的GPU链路1110)连接到GPGPU 1206A-D中的每个。P2P GPU链路1216允许GPGPU 1206A-D中的每个之间的直接通信,而不需要通过主机接口总线进行通信,处理器1202连接到该主机接口总线。利用针对P2PGPU链路的GPU到GPU业务,主机接口总线保持可用于系统存储器访问或者例如经由一个或多个网络设备与多GPU计算系统1200的其他实例进行通信。虽然在所示实施例中,GPGPU1206A-D经由主机接口交换机1204连接到处理器1202,但是在一个实施例中,处理器1202包括对P2P GPU链路1216的直接支持并且可以直接连接到GPGPU 1206A-D。
机器学习神经网络实现方式
由在此描述的实施例提供的计算架构可以被配置为执行特别适合训练和部署用于机器学习的神经网络的并行处理类型。神经网络可以一般化为具有图形关系的函数网络。如本领域所熟知的,在机器学习中使用了各种类型的神经网络实现方式。如前所述,一种示例性类型的神经网络是前馈网络。
第二种示例性类型的神经网络是卷积神经网络(CNN)。CNN是用于处理具有已知网格状拓扑结构的数据(例如图像数据)的专用前馈神经网络。因此,CNN通常用于计算视觉和图像识别应用,但它们也可用于其他类型的模式识别,如语音和语言处理。CNN输入层中的节点被组织成一组“过滤器”(特征检测器受到视网膜中发现的感受场(receptive field)的启发),并且每组过滤器的输出被传播到网络连续层中的节点。CNN的计算包括将卷积数学运算应用于每个滤波器以产生该滤波器的输出。卷积是由两个函数执行以产生第三函数的一种专门类型的数学运算,该第三函数是两个原始函数之一的修改版本。在卷积网络术语中,卷积的第一函数可以称为输入,而第二函数可以称为卷积内核。输出可以被称为特征图。例如,卷积层的输入可以是定义输入图像的各种颜色分量的多维数据阵列。卷积内核可以是多维参数阵列,其中通过神经网络的训练过程来调整参数。
递归神经网络(RNN)是包括层之间的反馈连接的一系列前馈神经网络。RNN通过在神经网络的不同部分中共享参数数据来对顺序数据进行建模。RNN的架构包括周期。这些周期代表变量当前值对其自己将来时间的值的影响,因为来自RNN的输出数据的至少一部分被用作用于处理序列中后续输入的反馈。由于可以组成语言数据的变量性质,此特征使得RNN对语言处理特别有用。
下面描述的附图给出了示例性前馈、CNN和RNN网络,并且描述了分别训练和部署这些类型的网络中的每一个的一般过程。将理解的是,这些描述对于本文描述的任何特定实施例而言是示例性的且非限制性的,并且所示的概念一般可应用于深度神经网络和机器学习技术。
上述示例性神经网络可用于执行深度学习。深度学习是使用深度神经网络的机器学习。用于深度学习的深度神经网络是由多个隐藏层组成的人工神经网络,而与只包含单个隐藏层的浅层神经网络不同。越深的神经网络通常训练上越计算密集。然而,网络的附加隐藏层使得多步模式识别能够相对于浅机器学习技术导致输出误差减少。
在深度学习中使用的深度神经网络通常包括前端网络,用于执行耦合到后端网络的特征识别,所述后端网络表示可以基于提供给模型的特征表示执行操作(例如,对象分类、语音识别等)的数学模型。深度学习使得能够执行机器学习,而无需为模型执行手工制作的特征设计。相反,深度神经网络可以根据输入数据中的统计结构或相关性来学习特征。可以将学习到的特征提供给可以将检测到的特征映射到输出的数学模型。网络使用的数学模型通常专用于要执行的特定任务,并且将使用不同的模型来执行不同的任务。
一旦神经网络结构化,可以将学习模型应用于网络以训练网络而执行特定的任务。学习模型描述如何调整模型中的权重以减少网络的输出误差。误差的反向传播是用于训练神经网络的常用方法。输入向量被呈现给网络进行处理。使用损失函数将网络的输出与期望的输出进行比较,并且针对输出层中的每个神经元计算误差值。然后误差值反向传播,直到每个神经元都具有相关的误差值,该误差值大致表示其对原始输出的贡献。网络然后可以使用算法(例如随机梯度下降算法)从这些误差中学习以更新神经网络的权重。
图13A-B示出了示例性卷积神经网络。图13A示出了CNN内的各种层。如图13A所示,用于对图像处理建模的示例性CNN可以接收描述输入图像的红色、绿色和蓝色(RGB)分量的输入1302。输入1302可以由多个卷积层(例如,卷积层1304、卷积层1306)处理。来自多个卷积层的输出可以可选地由一组完全连接的层1308进行处理。完全连接层中的神经元具有与前一层中的所有激活的完全连接,如前面针对前馈网络所描述的那样。来自完全连接层1308的输出可以用于从网络产生输出结果。可以使用矩阵乘法而不是卷积来计算完全连接层1308内的激活。并非所有的CNN实现方式都使用完全连接的层DPLA08。例如,在一些实现方式中,卷积层1306可以为CNN生成输出。
卷积层是稀疏连接的,这与完全连接层1308中存在的传统神经网络配置不同。传统神经网络层完全连接,使得每个输出单元与每个输入单元交互作用。然而,卷积层是稀疏连接的,因为如图所示,场的卷积的输出被输入(而不是场中每个节点的相应状态值)到后续层的节点。与卷积层相关联的内核执行卷积运算,其输出被发送到下一层。卷积层中执行的降维是使CNN能够缩放以处理大图像的一个方面。
图13B说明CNN的卷积层内的示范性计算阶段。对CNN的卷积层1312的输入可以在卷积层1314的三个阶段中进行处理。三个阶段可以包括卷积阶段1316、检测器阶段1318和池化阶段1320。然后,卷积层1314可以输出数据到连续的卷积层。网络的最终卷积层可以生成输出特征图数据或向完全连接的层提供输入,例如以生成到CNN的输入的分类值。
在卷积阶段1316中并行执行若干卷积以产生一组线性激活。卷积阶段1316可以包括仿射变换,该仿射变换是可以被指定为线性变换加上平移的任何变换。仿射变换包括旋转、平移、缩放和这些变换的组合。卷积阶段计算连接到输入中的特定区域的函数(例如,神经元)的输出,其可以被确定为与神经元相关联的局部区域。神经元计算神经元的权重与神经元所连接的局部输入中的区域之间的点积。卷积阶段1316的输出定义由卷积层1314的连续阶段处理的一组线性激活。
线性激活可以由检测器阶段1318处理。在检测器阶段1318中,每个线性激活由非线性激活函数处理。非线性激活函数增加了整个网络的非线性特性,而不影响卷积层的感受场。可以使用几种类型的非线性激活函数。一种特殊类型是整流线性单元(ReLU),其使用定义为f(x)=max(0,x)的激活函数,使得激活阈值为零。
池化阶段1320使用池化函数,其用附近输出的汇总统计来替换卷积层1306的输出。池化函数可用于将平移不变量引入神经网络,从而对输入的小型转换不会改变池化输出。在输入数据中存在特征比特征的精确位置更重要的场景中,对局部转换的不变性可能是有用的。在池化阶段1320期间可以使用各种类型的池化函数,包括最大池化、平均池化和l2范数池化。另外,一些CNN实现方式不包含池化阶段。相反,这样的实现方式取而代之,并且额外的卷积阶段相对于先前的卷积阶段具有增加的步幅。
来自卷积层1314的输出然后可以由下一层1322处理。下一层1322可以是附加的卷积层或完全连接层1308中的一个。例如,图13A的第一卷积层1304可以输出到第二卷积层1306,而第二卷积层可以输出到完全连接层1308的第一层。
图14示出示例性递归神经网络1400。在递归神经网络(RNN)中,网络的先前状态影响网络的当前状态的输出。可以使用各种函数以各种方式构建RNN。RNN的使用通常围绕使用数学模型来基于先前的输入序列来预测未来。例如,可以使用RNN来执行统计语言建模以在给定先前的词语序列的情况下预测即将到来的词语。所示出的RNN 1400可被描述为具有接收输入向量的输入层1402,实现递归函数的隐藏层1404,启用先前状态的“存储器”的反馈机制1405以及输出结果的输出层1406。RNN 1400基于时间步来运行。在给定时间步下RNN的状态经由反馈机构1405基于前一时间步而受到影响。对于给定的时间步,隐藏层1404的状态由前一状态和当前时间步的输入来定义。第一时间步处的初始输入(x1)可以由隐藏层1404处理。隐藏层1404可以使用在初始输入(x1)的处理期间确定的状态信息来处理第二输入(x2)。给定的状态可以计算为st=f(Uxt+Wst-1),其中U和W是参数矩阵。函数f通常是一个非线性函数,如双曲正切函数(Tanh)或整流器函数f(x)=max(0,x)的一个变型。然而,隐藏层1404中使用的具体数学函数可以根据RNN 1400的具体实现细节而变化。
除了所描述的基本CNN和RNN网络之外,可以启用这些网络上的变型。一个示例RNN变型是长短期记忆(LSTM)RNN。LSTM RNN能够学习处理更长序列语言所需的长期依赖关系。CNN上的变型是卷积深层信念网络,其结构类似于CNN,并且以类似于深层信念网络的方式进行训练。深层信念网络(DBN)是由多层随机(任取)变量组成的生成神经网络。DBN可以使用贪心无监督学习逐层训练。通过确定神经网络的最佳初始权重集合,DBN的经学习的权重然后可用于提供预训练神经网络。
图15说明了深度神经网络的训练和部署。一旦已经为任务构建了给定网络,则使用训练数据集1502来训练神经网络。已经开发了各种训练框架1504以使得能够实现训练过程的硬件加速。例如,图10的机器学习框架1004可以被配置为训练框架1004。训练框架1004可以挂钩到未训练的神经网络1506中,并且使得能够使用本文描述的并行处理资源来训练未训练的神经网以生成经训练的神经网1508。
为了开始训练过程,可以随机地或通过使用深度信念网络的预训练来选择初始权重。训练周期然后以有监督或无监督的方式进行。
监督学习是这样一种学习方法,其中训练作为调解操作来执行,诸如当训练数据集1502包括与输入的期望输出配对的输入时,或者在训练数据集包括具有已知输出的输入并且神经网络的输出是手动分级的情况下。网络处理输入并将结果输出与一组预期或期望的输出进行比较。然后误差通过系统反向传播。训练框架1504可以进行调整以调整控制未训练的神经网络1506的权重。训练框架1504可以提供工具来监视未训练的神经网络1506向适合基于已知输入数据生成正确答案的模型收敛的程度。随着网络权重的调整,训练过程重复进行,以细化神经网络产生的输出。训练过程可以继续,直到神经网络达到与经训练的神经网络1508相关联的统计期望的准确度。然后,可以部署经训练的神经网络1508以实现任意数量的机器学习操作。
无监督学习是这样一种学习方法,其中网络试图使用未标记数据来训练自己。因此,对于无监督学习,训练数据集1502将包括没有任何相关输出数据的输入数据。未训练的神经网络1506可以学习未标记的输入内的分组并且可以确定各个输入如何与总体数据集相关。可以使用无监督训练来生成自组织图,自组织图是一种经训练的神经网络1507,其能够执行用于减少数据的维度的操作。无监督训练也可用于执行异常检测,这允许识别输入数据集中偏离数据正常模式的数据点。
也可以采用有监督和无监督训练的变化。半监督学习是这样一种技术,其中在训练数据集1502中包括相同分布的已标记数据和未标记数据的混合。增量学习是监督式学习的一种变型,其中输入数据不断用于进一步训练模型。增量学习使得经训练的神经网络1508能够适应新数据1512,而不会忘记在初始训练期间灌输到网络内的知识。
无论是有监督的还是无监督的,针对特定深度神经网络的训练过程对于单个计算节点而言可能是过于计算密集的。可以使用计算节点的分布式网络来加速训练过程,而不是使用单个计算节点。
图16是示出分布式学习的框图。分布式学习是一种训练模型,它使用多个分布式计算节点来执行神经网络的有监督或无监督训练。分布式计算节点可以各自包括一个或多个主机处理器以及通用处理节点中的一个或多个,诸如图11中的高度并行通用图形处理单元1100。如图所示,可以执行分布式学习模型并行化1602、数据并行化1604或模型和数据并行化1604的组合。
在模型并行化1602中,分布式系统中的不同计算节点可以对单个网络的不同部分执行训练计算。例如,神经网络的每一层都可以由分布式系统的不同处理节点来训练。模型并行化的益处包括能够扩展到特别大的模型的能力。拆分与神经网络的不同层相关联的计算使得能够训练非常大的神经网络,其中所有层的权重不适合单个计算节点的存储器。在某些情况下,模型并行化对于执行大型神经网络的无监督训练特别有用。
在数据并行化1604中,分布式网络的不同节点具有模型的完整实例,并且每个节点接收数据的不同部分。然后组合来自不同节点的结果。虽然数据并行化的不同方法是可能的,但所有数据并行训练方法都需要一种将结果组合并在每个节点之间同步模型参数的技术。用于组合数据的示例性方法包括参数平均和基于更新的数据并行化。参数平均训练训练数据的子集上的每个节点,并将全局参数(例如,权重、偏置)设置为来自每个节点的参数的平均值。参数平均使用维护参数数据的中央参数服务器。基于更新的数据并行化与参数平均类似,不同之处在于不是将参数从节点传输到参数服务器,而是传输对模型的更新。另外,基于更新的数据并行化可以以分散的方式执行,其中更新在节点之间被压缩和传输。
组合模型和数据并行性1606可以例如在其中每个计算节点包括多个GPU的分布式系统中实现。每个节点可以有模型的完整实例,其中每个节点内的单独GPU用于训练模型的不同部分。
相对于在单个机器上的训练,分布式训练增加了开销。然而,这里描述的并行处理器和GPGPU可以各自实现各种技术以减少分布式训练的开销,包括实现高带宽GPU到GPU数据传输和加速的远程数据同步的技术。
示例性机器学习应用
机器学习可以应用于解决各种技术问题,包括但不限于计算机视觉、自主驾驶和导航、语音识别、和语言处理。传统上,计算机视觉一直是机器学习应用最活跃的研究领域之一。计算机视觉的应用范围从复制人类视觉能力,如识别面部,到创造视觉能力的新类别。例如,计算机视觉应用序可以配置为识别视频中可见对象中引发的振动产生的声波。并行处理器加速机器学习使计算机视觉应用程序能够使用比先前可行的显著更大的训练数据集进行训练,并使得推理系统能够使用低功率并行处理器进行部署。
并行处理器加速机器学习具有自主驾驶应用,包括车道和道路标志识别、避障、导航和驾驶控制。加速机器学习技术可用于基于定义对特定训练输入的适当响应的数据集来训练驾驶模型。这里描述的并行处理器可以实现用于自主驾驶解决方案的日益复杂的神经网络的快速训练,并且使得能够在适合于集成到自主运载工具中的移动平台中部署低功率推理处理器。
并行处理器加速深度神经网络使机器学习方法能够实现自动语音识别(ASR)。ASR包括创建一个函数,该函数根据给定的输入声音序列计算最可能的语言序列。使用深度神经网络的加速机器学习能够替代先前用于ASR的隐马尔可夫模型(HMM)和高斯混合模型(GMM)。
并行处理器加速机器学习也可用于加速自然语言处理。自动学习程序可以利用统计推断算法来生成对错误或不熟悉的输入鲁棒的模型。示例性自然语言处理器应用包括人类语言之间的自动机器翻译。
用于机器学习的并行处理平台可以分为训练平台和部署平台。训练平台通常是高度并行的,包括用于加速多GPU单节点训练和多节点多GPU训练的优化。适于训练的示例性并行处理器包括图11的高度并行通用图形处理单元1100和图12的多GPU计算系统1200。相反,部署的机器学习平台通常包括适于在相机、自主机器人和自动驾驶运载工具等产品中使用的较低功率的并行处理器。
图17示出适用于使用训练模型执行推理的示例性推理片上系统(SOC)1700。SOC1700可以集成包括媒体处理器1702、视觉处理器1704、GPGPU 1706和多核处理器1708的处理组件。SOC 1700可以另外包括片上存储器1705,片上存储器1705可以启用可由每个处理组件访问的共享的片上数据池。处理组件可针对低功耗操作进行优化,以支持到各种机器学习平台的部署,包括自主运载工具和自主机器人。例如,SOC 1700的一个实现方式可以用作自主运载工具的主控制系统的一部分。在SOC 1700被配置用于自主运载工具的情况下,SOC被设计和配置为符合部署管辖权的相关功能安全标准。
在操作期间,媒体处理器1702和视觉处理器1704可协同工作以加速计算机视觉操作。媒体处理器1702可以启用多个高分辨率(例如,4K、8K)视频流的低延迟解码。经解码的视频流可被写入片上存储器1705中的缓冲器。然后,视觉处理器1704可解析解码的视频并对解码视频的帧执行初步处理操作,以准备使用经训练的图像识别模型来处理帧。例如,视觉处理器1704可以加速用于对高分辨率视频数据执行图像识别的CNN的卷积操作,而由GPGPU 1706执行后端模型计算。
多核处理器1708可以包括控制逻辑以辅助由媒体处理器1702和视觉处理器1704执行的数据传输和共享存储器操作的定序和同步。多核处理器1708还可以用作应用程序处理器执行可以利用GPGPU 1706的推理计算能力的软件应用程序。例如,导航和驾驶逻辑的至少一部分可以在多核处理器1708上执行的软件中实现。这种软件可以直接将计算工作负荷发布给GPGPU 1706或者可以将计算工作负荷发布给多核处理器1708,多核处理器1708可以将这些操作的至少一部分卸载到GPGPU 1706。
GPGPU 1706可以包括计算集群,诸如高度并行通用图形处理单元1100内的计算集群1106A-1106H的低功率配置。GPGPU 1706内的计算集群可以支持特别优化以在经训练的神经网络上执行推理计算的指令。例如,GPGPU 1706可以支持执行低精度计算(例如8位和4位整数向量运算)的指令。
系统概述II
图18是根据一个实施例的处理系统1800的框图。在各种实施例中,系统1800包括一个或多个处理器1802和一个或多个图形处理器1808,并且可以是单处理器桌面系统、多处理器工作站系统或具有大量处理器1802或处理器核心1807的服务器系统。在一个实施例中,系统1800是结合在用于移动、手持或嵌入式设备的片上系统(SoC)集成电路内的处理平台。
系统1800的实施例可以包括或者并入在基于服务器的游戏平台、包括游戏和媒体控制台的游戏控制台、移动游戏控制台、手持游戏控制台或在线游戏控制台内。在一些实施例中,系统1800是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统1800还可以包括可穿戴设备(诸如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备),与可穿戴设备(诸如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备)耦合或集成在可穿戴设备(诸如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备)内。在一些实施例中,数据处理系统1800是具有一个或多个处理器1802和由一个或多个图形处理器1808生成的图形界面的电视或机顶盒设备。
在一些实施例中,一个或多个处理器1802每个均包括一个或多个处理器核心1807以处理在被执行时执行用于系统和用户软件的操作的指令。在一些实施例中,一个或多个处理器核心1807中的每一个被配置为处理特定指令集1809。在一些实施例中,指令集1809可以促进复杂指令集计算(CISC)、精简指令集计算(RISC)或经由极长指令字(VLIW)的计算。多个处理器核心1807可以各自处理不同的指令集1809,其可以包括用于促进对其他指令集的仿真的指令。处理器核心1807还可以包括其他处理设备,诸如数字信号处理器(DSP)。
在一些实施例中,处理器1802包括高速缓存存储器1804。取决于架构,处理器1802可具有单个内部高速缓存或多个级别的内部高速缓存。在一些实施例中,高速缓存存储器在处理器1802的各种组件之间共享。在一些实施例中,处理器1802还使用外部高速缓存(例如,级别3(L3)高速缓存或最末级高速缓存(LLC))(未示出),其可以使用已知的高速缓存一致性技术在处理器核心1807之间共享。处理器1802中另外包括寄存器文件1806,其可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以专用于处理器1802的设计。
在一些实施例中,处理器1802耦合到处理器总线1810以在处理器1802与系统1800中的其它组件之间传输诸如地址、数据或控制信号的通信信号。在一个实施例中,系统1800使用示例性“集线器“系统架构,包括存储器控制器集线器1816和输入输出(I/O)控制器集线器1830。存储器控制器集线器1816促进存储器设备与系统1800的其他组件之间的通信,而I/O控制器集线器(ICH)1830通过本地I/O总线提供到I/O设备的连接。在一个实施例中,存储器控制器集线器1816的逻辑被集成在处理器内。
存储器设备1820可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备、相变存储器设备或一些其它具有合适的性能来充当进程存储器的存储器设备。在一个实施例中,存储器设备1820可以作为系统1800的系统存储器来操作,以存储数据1822和指令1821以供当一个或多个处理器1802执行应用或进程时使用。存储器控制器集线器1816还与可选的外部图形处理器1812耦合,该外部图形处理器1812可以与处理器1802中的一个或多个图形处理器1808进行通信以执行图形和媒体操作。
在一些实施例中,ICH 1830使得外围设备能够经由高速I/O总线连接到存储器设备1820和处理器1802。I/O外围设备包括但不限于音频控制器1846、固件接口1828、无线收发机1826(例如Wi-Fi、蓝牙)、数据存储设备1824(例如硬盘驱动器、闪速存储器等)以及用于将传统(例如,个人系统2(PS/2))设备耦合到系统的传统I/O控制器1840。一个或多个通用串行总线(USB)控制器1842连接诸如键盘和鼠标1844组合的输入设备。网络控制器1834还可以耦合到ICH 1830。在一些实施例中,高性能网络控制器(未示出)耦合到处理器总线1810。将意识到,所示的系统1800是示例性的而不是限制性的,因为也可以使用其他类型的不同配置的数据处理系统。例如,I/O控制器集线器1830可以被集成在一个或多个处理器1802内,或者存储器控制器集线器1816和I/O控制器集线器1830可以被集成到诸如外部图形处理器1812的分立的外部图形处理器内。
图19是具有一个或多个处理器核心1902A-1902N、集成存储器控制器1914和集成图形处理器1908的处理器1900的实施例的框图。具有与本文任何其它附图的元素相同的附图标记(或名称)的图19的那些元素可以以与本文其他地方所描述的类似的任何方式操作或起作用,但不限于此。处理器1900可以包括额外的核心直到并且包括由虚线框表示的附加核心1902N。处理器核心1902A-1902N中的每一个包括一个或多个内部高速缓存单元1904A-1904N。在一些实施例中,每个处理器核心还可以访问一个或多个共享高速缓存单元1906。
内部高速缓存单元1904A-1904N和共享高速缓存单元1906表示处理器1900内的高速缓存存储器分级结构。高速缓存存储器分级结构可以包括每个处理器核心中的至少一个级别的指令和数据高速缓存以及一个或多个级别的共享中间级高速缓存,例如级别2(L2)、级别3(L3)、级别4(L4)或其他级别的高速缓存,其中外部存储器之前的最高级别的高速缓存被分类为LLC。在一些实施例中,高速缓存一致性逻辑保持各个高速缓存单元1906和1904A-1904N之间的一致性。
在一些实施例中,处理器1900还可以包括一组一个或多个总线控制器单元1916和系统代理核心1910。一个或多个总线控制器单元1916管理一组外围总线,例如一个或多个外围设备组件互连总线(例如,PCI、PCI Express)。系统代理核心1910为各种处理器组件提供管理功能。在一些实施例中,系统代理核心1910包括一个或多个集成存储器控制器1914以管理对各种外部存储器设备(未示出)的访问。
在一些实施例中,处理器核心1902A-1902N中的一个或多个包括对同时多线程的支持。在这样的实施例中,系统代理核心1910包括用于在多线程处理期间协调和操作核心1902A-1902N的组件。系统代理核心1910可以另外包括功率控制单元(PCU),其包括用于调节处理器核心1902A-1902N和图形处理器1908的功率状态的逻辑和组件。
在一些实施例中,处理器1900另外包含图形处理器1908以执行图形处理操作。在一些实施例中,图形处理器1908与共享高速缓存单元集合1906和包括一个或多个集成存储器控制器1914的系统代理核心1910耦合。在一些实施例中,显示控制器1911与图形处理器1908耦合以将图形处理器输出驱动到一个或多个耦合的显示器。在一些实施例中,显示控制器1911可以是经由至少一个互连与图形处理器耦合的分立模块,或者可以被集成在图形处理器1908或系统代理核心1910内。
在一些实施例中,基于环的互连单元1912用于耦合处理器1900的内部组件。然而,可以使用替代的互连单元,诸如点对点互连、交换互连或其他技术,包括本领域众所周知的技术。在一些实施例中,图形处理器1908经由I/O链路1913与环形互连1912耦合。
示例性I/O链路1913代表多种I/O互连中的至少一种,包括便于各种处理器组件与高性能嵌入式存储器模块1918(例如eDRAM模块)之间的通信的封装上I/O互连。在一些实施例中,处理器核心1902A-1902N中的每个和图形处理器1908使用嵌入式存储器模块1918作为共享的最后级别高速缓存。
在一些实施例中,处理器核心1902A-1902N是执行相同指令集架构的同质核心。在另一个实施例中,处理器核心1902A-1902N在指令集架构(ISA)方面是异构的,其中处理器核心1902A-N中的一个或多个执行第一指令集,而其他核心中的至少一个核心执行第一指令集的子集或不同的指令集。在一个实施例中,就微架构而言,处理器核心1902A-1902N是异构的,其中具有相对较高功耗的一个或多个核心与具有较低功耗的一个或多个功率核心耦合。另外,除了其他组件之外,处理器1900可以在一个或多个芯片上实现,或者作为具有所示组件的SoC集成电路来实现。
图20是图形处理器2000的框图,其可以是分立的图形处理单元,或者可以是与多个处理核心集成的图形处理器。在一些实施例中,图形处理器经由存储器映射的I/O接口与图形处理器上的寄存器进行通信,并且通信放置在处理器存储器中的命令。在一些实施例中,图形处理器2000包括用于访问存储器的存储器接口2014。存储器接口2014可以是本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存和/或系统存储器的接口。
在一些实施例中,图形处理器2000还包括显示控制器2002以将显示输出数据驱动到显示设备2020。显示控制器2002包括用于一个或多个覆盖平面的硬件,用于多层视频或用户界面元素的显示和合成。在一些实施例中,图形处理器2000包括视频编解码器引擎2006,以将媒体编码为一个或多个媒体编码格式、从一个或多个媒体编码格式对媒体进行编码、或在一个或多个媒体编码格式之间对媒体进行转码,包括但不限于诸如MPEG-2的运动图像专家组(MPEG)格式,诸如H.264/MPEG-4AVC的高级视频编码(AVC)格式,以及电影和电视工程师协会(SMPTE)421M/VC-1,以及联合图像专家组(JPEG)格式,如JPEG和MotionJPEG(MJPEG)格式。
在一些实施例中,图形处理器2000包括块图像传送(BLIT)引擎2004用于执行二维(2D)光栅化器操作,包括例如位边界块传送。然而,在一个实施例中,使用图形处理引擎(GPE)2010的一个或多个组件来执行2D图形操作。在一些实施例中,图形处理引擎2010是用于执行图形操作的计算引擎,包括三维(3D)图形操作和媒体操作。
在一些实施例中,GPE 2010包括用于执行3D操作的3D管线2012,诸如使用作用于3D基元形状(例如,矩形、三角形等)的处理功能来渲染三维图像和场景。3D管线2012包括执行元件内的各种任务和/或产生执行线程到3D/媒体子系统2015的可编程和固定功能元件。虽然3D管线2012可用于执行媒体操作,但GPE 2010的实施例还包括专门用于执行媒体操作(例如视频后处理和图像增强)的媒体管线2016。
在一些实施例中,媒体管线2016包括固定功能或可编程逻辑单元来代替视频编解码器引擎2006或代表视频编解码器引擎2006执行一个或多个专用媒体操作,诸如视频解码加速,视频去隔行和视频编码加速。在一些实施例中,媒体管线2016另外包括线程产生单元以产生用于在3D/媒体子系统2015上执行的线程。产生的线程执行用于3D/媒体子系统2015中包括的一个或多个图形执行单元上的媒体操作的计算。
在一些实施例中,3D/媒体子系统2015包括用于执行3D管线2012和媒体管线2016产生的线程的逻辑。在一个实施例中,管线将线程执行请求发送到3D/媒体子系统2015,其包括用于仲裁并分派各种请求给可用的线程执行资源的线程分派逻辑。执行资源包括图形执行单元的阵列来处理3D和媒体线程。在一些实施例中,3D/媒体子系统2015包括用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,子系统还包括共享存储器(包括寄存器和可寻址存储器)以在线程之间共享数据并存储输出数据。
3D/媒体处理
图21是根据一些实施例的图形处理器的图形处理引擎2110的框图。在一个实施例中,图形处理引擎(GPE)2110是图20中所示的GPE 2010的版本。具有与本文任何其它图的元件相同的附图标记(或名称)的图21的元件可以以与本文其他地方所描述的任何类似的方式操作或起作用,但不限于此。例如,图示了图20的3D管线2012和媒体管线2016。在GPE2110的一些实施例中,媒体管线2016是可选的,并且可以不明确地包括在GPE 2110内。例如,并且在至少一个实施例中,单独的媒体和/或图像处理器耦合到GPE 2110。
在一些实施例中,GPE 2110与命令流化器2103耦合或包括命令流化器2103,命令流化器2103向3D管线2012和/或媒体管线2016提供命令流。在一些实施例中,命令流化器2103与存储器耦合,存储器可以是系统存储器,或一个或多个内部高速缓存存储器和共享高速缓存存储器。在一些实施例中,命令流化器2103从存储器接收命令并将命令发送到3D管线2012和/或媒体管线2016。这些命令是从存储3D管线2012和媒体管线2016的命令的环形缓冲器中取出的指令。在一个实施例中,环形缓冲器可以另外包括存储批量多个命令的批量命令缓冲器。用于3D管线2012的命令还可以包括对存储在存储器中的数据的引用,例如但不限于用于3D管线2012的顶点和几何数据和/或用于媒体管线2016的图像数据和存储器对象。3D管线2012和媒体管线2016通过经由相应管线内的逻辑执行操作或通过将一个或多个执行线程分派到图形核心阵列2114来处理命令和数据。
在各种实施例中,3D管线2012可以通过处理指令并将执行线程分派给图形核心阵列2114来执行一个或多个着色器程序,例如顶点着色器、几何着色器、像素着色器、片段着色器、计算着色器或其他着色器程序。图形核心阵列2114提供统一的执行资源块。图形核心阵列2114内的多用途执行逻辑(例如,执行单元)包括对各种3D API着色器语言的支持,并且可以执行与多个着色器相关联的多个同时执行线程。
在一些实施例中,图形核心阵列2114还包括用于执行诸如视频和/或图像处理的媒体功能的执行逻辑。在一个实施例中,除了图形处理操作之外,执行单元还包括可编程以执行并行通用计算操作的通用逻辑。通用逻辑可以并行或结合图18的处理器核心1807或图19中的核心1902A-1902N内的通用逻辑来执行处理操作。
由在图形核心阵列2114上执行的线程生成的输出数据可以将数据输出到统一返回缓冲器(URB)2118中的存储器。URB 2118可以存储用于多个线程的数据。在一些实施例中,URB 2118可用于在图形核心阵列2114上执行的不同线程之间发送数据。在一些实施例中,URB 2118可另外用于图形核心阵列上的线程与共享功能逻辑2120内的固定功能逻辑之间的同步。
在一些实施例中,图形核心阵列2114是可缩放的,使得阵列包括可变数量的图形核心,每个图形核心具有基于GPE 2110的目标功率和性能水平的可变数量的执行单元。在一个实施例中,执行资源是动态可缩放的,从而可以根据需要启用或禁用执行资源。
图形核心阵列2114与共享功能逻辑2120耦合,该共享功能逻辑2120包括在图形核心阵列中的图形核心之间共享的多个资源。共享功能逻辑2120内的共享功能是向图形核心阵列2114提供专用补充功能的硬件逻辑单元。在各种实施例中,共享功能逻辑2120包括但不限于采样器2121、数学2122和线程间通信(ITC)2123逻辑。此外,一些实施例在共享功能逻辑2120内实现一个或多个高速缓存2125。在给定专用功能的需求不足以包含在图形核心阵列2114内的情况下实现共享功能。取而代之的是,专用功能的单个实例化在共享功能逻辑2120中被实现为独立实体并且在图形核心阵列2114内的执行资源之间共享。在图形核心阵列2114之间共享并包括在图形核心阵列2114内的精确功能组在各实施例之间变化。
图22是图形处理器2200的另一实施例的框图。具有与本文任何其它图的元件相同的附图标记(或名称)的图22的元件可以以与本文其他地方所描述的任何类似的方式操作或起作用,但不限于此。
在一些实施例中,图形处理器2200包括环形互连2202、管线前端2204、媒体引擎2237和图形核心2280A-2280N。在一些实施例中,环形互连2202将图形处理器耦合到包括其他图形处理器或一个或多个通用处理器核心的其他处理单元。在一些实施例中,图形处理器是集成在多核处理系统内的许多处理器中的一个。
在一些实施例中,图形处理器2200经由环形互连2202接收批量命令。传入命令由管线前端2204中的命令流化器2203解释。在一些实施例中,图形处理器2200包括可缩放执行逻辑以通过图形核心2280A-2280N执行3D几何处理和媒体处理。对于3D几何处理命令,命令流化器2203向几何管线2236提供命令。对于至少一些媒体处理命令,命令流化器2203将命令提供给与媒体引擎2237耦合的视频前端2234。在一些实施例中,媒体引擎2237包括用于视频和图像后处理的视频质量引擎(VQE)2230和用于提供硬件加速的媒体数据编码和解码的多格式编码/解码(MFX)2233引擎。在一些实施例中,几何管线2236和媒体引擎2237各自为由至少一个图形核心2280A提供的线程执行资源生成执行线程。
在一些实施例中,图形处理器2200包括以模块化核心2280A-2280N(有时称为核心切片)为特征的可缩放线程执行资源,每个模块化核心具有多个子核心2250A-2250N,2260A-2260N(有时被称为核心子切片)。在一些实施例中,图形处理器2200可以具有任何数量的图形核心2280A到2280N。在一些实施例中,图形处理器2200包括具有至少第一子核心2250A和第二核心子核心2260A的图形核心2280A。在其他实施例中,图形处理器是具有单个子核心(例如,2250A)的低功率处理器。在一些实施例中,图形处理器2200包括多个图形核心2280A-2280N,每个图形核心包括一组第一子核心2250A-2250N和一组第二子核心2260A-2260N。一组第一子核心2250A-2250N中的每个子核心至少包括第一组执行单元2252A-2252N和媒体/纹理采样器2254A-2254N。该组第二子核心2260A-2260N中的每个子核心至少包括第二组执行单元2262A-2262N和采样器2264A-2264N。在一些实施例中,每个子核心2250A-2250N,2260A-2260N共享一组共享资源2270A-2270N。在一些实施例中,共享资源包括共享高速缓存存储器和像素操作逻辑。其他共享资源也可以被包括在图形处理器的各种实施例中。
执行逻辑
图23示出了包括在GPE的一些实施例中采用的处理元素阵列的线程执行逻辑2300。具有与本文任何其它图的元件相同的附图标记(或名称)的图23的元件可以以与本文其他地方所描述的任何类似的方式操作或起作用,但不限于此。
在一些实施例中,线程执行逻辑2300包括像素着色器2302、线程分派器2304、指令高速缓存2306、包括多个执行单元2308A-2308N的可缩放执行单元阵列、采样器2310、数据高速缓存2312和数据端口2314。在一个实施例中,所包括的组件经由链接到每个组件的互连结构互连。在一些实施例中,线程执行逻辑2300包括通过指令高速缓存2306、数据端口2314、采样器2310和执行单元阵列2308A-2308N的一个或多个到存储器(例如系统存储器或高速缓存存储器)的一个或多个连接。在一些实施例中,每个执行单元(例如,2308A)是能够执行多个并发线程并为每个线程并行处理多个数据元素的单独向量处理器。在一些实施例中,执行单元阵列2308A-2308N包括任何数量的单独执行单元。
在一些实施例中,执行单元阵列2308A-2308N主要用于执行“着色器”程序。在一些实施例中,在阵列2308A-2308N中的执行单元执行包括用于许多标准3D图形着色器指令的本地支持的指令集,使得来自图形库(例如,Direct 3D和OpenGL)的着色器程序被以最小的转化执行。执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器),像素处理(例如,像素着色器、片段着色器)和通用处理(例如,计算着色器和媒体着色器)。
执行单元阵列2308A-2308N中的每个执行单元对数据元素阵列进行操作。数据元素的数量是“执行大小”或指令的通道数量。执行通道是指令内数据元素访问、掩蔽和流程控制的逻辑执行单位。通道的数量可以独立于特定图形处理器的物理算术逻辑单元(ALU)或浮点单元(FPU)的数量。在一些实施例中,执行单元2308A-2308N支持整数和浮点数据类型。
执行单元指令集包括单指令多数据(SIMD)或单指令多线程(SIMT)指令。各种数据元素可以作为打包数据类型存储在寄存器中,并且执行单元将基于元素的数据大小处理各种元素。例如,当在256位宽度的向量上操作时,向量的256位被存储在寄存器中,并且执行单元对向量进行操作,当作4个单独的64位打包数据元素(四字(QW)大小的数据元素)、8个单独的32位打包数据元素(双字(DW)大小的数据元素),16个单独的16位打包数据元素(字(W)大小的数据元素)或32个单独的8位数据元素(字节(B)大小的数据元素)。但是,不同的向量宽度和寄存器大小是可能的。
一个或多个内部指令高速缓存(例如,2306)被包括在线程执行逻辑2300中以高速缓存用于执行单元的线程指令。在一些实施例中,包括一个或多个数据高速缓存(例如,2312)以在线程执行期间高速缓存线程数据。在一些实施例中,采样器2310被包括以提供用于3D操作的纹理采样和用于媒体操作的媒体采样。在一些实施例中,采样器2310包括专用纹理或媒体采样功能,以在将采样数据提供给执行单元之前在采样过程期间处理纹理或媒体数据。
在执行期间,图形和媒体管线经由线程产生和分派逻辑将线程发起请求发送到线程执行逻辑2300。在一些实施例中,线程执行逻辑2300包括本地线程分派器2304,该本地线程分派器2304仲裁来自图形和媒体管线的线程发起请求并在一个或多个执行单元2308A-2308N上实例化所请求的线程。例如,几何管线(例如,图22的2236)将顶点处理、铺砌或几何处理线程分派给线程执行逻辑2300(图23)。在一些实施例中,线程分派器2304还可以处理来自正在执行的着色器程序的运行时线程产生请求。
一旦一组几何对象已经被处理并光栅化为像素数据,就调用像素着色器2302以进一步计算输出信息并使结果被写入输出表面(例如,颜色缓冲器、深度缓冲器、模板缓冲器等等)。在一些实施例中,像素着色器2302计算要在光栅化对象上插值的各种顶点属性的值。在一些实施例中,像素着色器2302然后执行应用程序编程接口(API)供应的像素着色器程序。为了执行像素着色器程序,像素着色器2302通过线程分派器2304将线程分派给执行单元(例如2308A)。在一些实施例中,像素着色器2302使用采样器2310中的纹理采样逻辑来访问存储在存储器中的纹理图中的纹理数据。对纹理数据和输入几何数据的算术运算计算每个几何片段的像素颜色数据,或丢弃一个或多个像素以免进一步处理。
在一些实施例中,数据端口2314提供存储器访问机制以便线程执行逻辑2300输出经处理的数据到存储器以供在图形处理器输出管线上处理。在一些实施例中,数据端口2314包括或耦合到一个或多个高速缓存存储器(例如,数据高速缓存2312)以经由数据端口高速缓存用于存储器访问的数据。
图24是示出根据一些实施例的图形处理器指令格式2400的框图。在一个或多个实施例中,图形处理器执行单元支持具有多种格式的指令的指令集。实线框说明通常包含在执行单元指令中的组件,而虚线包括可选组件或仅包含在指令的子集中的组件。在一些实施例中,所描述和说明的指令格式2400是宏指令,因为它们是提供给执行单元的指令,而不是一旦指令被处理则由指令解码产生的微操作。
在一些实施例中,图形处理器执行单元本地支持128位指令格式2410的指令。基于所选择的指令、指令选项和操作数的数量,64位压缩指令格式2430可用于某些指令。本地128位指令格式2410提供对所有指令选项的访问,而一些选项和操作被限制在64位指令格式2430中。在64位指令格式2430中可用的本地指令因实施例而异。在一些实施例中,部分地使用索引字段2413中的一组索引值来压缩指令。执行单元硬件基于索引值参考一组压缩表并且使用压缩表输出来重建128位指令格式2410的本地指令。
对于每种格式,指令操作码2412定义执行单元要执行的操作。执行单元跨每个操作数的多个数据元素并行执行每条指令。例如,响应于添加指令,执行单元在表示纹理元素或图片元素的每个颜色通道上执行同时添加操作。默认情况下,执行单元在操作数的所有数据信道上执行每条指令。在一些实施例中,指令控制字段2414使得能够控制某些执行选项,诸如信道选择(例如,预测)和数据信道顺序(例如,调配)。对于128位指令2410,执行大小字段2416限制将并行执行的数据信道的数量。在一些实施例中,执行大小字段2416不可用于64位紧凑指令格式2430。
一些执行单元指令具有多达三个操作数,包括两个源操作数src0 2420,src12422和一个目的地2418。在一些实施例中,执行单元支持双目的地指令,其中目的地之一被隐含。数据操纵指令可以具有第三源操作数(例如,SRC2 2424),其中指令操作码2412确定源操作数的数量。指令的最后源操作数可以是与指令一起传递的立即(例如,硬编码)值。
在一些实施例中,128位指令格式2410包括访问/地址模式信息2426,其指定例如是使用直接寄存器寻址模式还是间接寄存器寻址模式。当使用直接寄存器寻址模式时,一个或多个操作数的寄存器地址由指令2410中的位直接提供。
在一些实施例中,128位指令格式2410包括访问/地址模式字段2426,其指定该指令的地址模式和/或访问模式。在一个实施例中,访问模式定义指令的数据访问对齐。一些实施例支持包括16字节对齐访问模式和1字节对齐访问模式的访问模式,其中访问模式的字节对齐确定指令操作数的访问对齐。例如,当处于第一模式时,指令2410可以针对源操作数和目的地操作数使用字节对齐寻址,并且当处于第二模式时,指令2410可以针对所有源操作数和目的地操作数使用16字节对齐寻址。
在一个实施例中,访问/地址模式字段2426的地址模式部分确定指令是使用直接寻址还是间接寻址。当使用直接寄存器寻址模式时,指令2410中的位直接提供一个或多个操作数的寄存器地址。当使用间接寄存器寻址模式时,可以基于指令中的地址寄存器值和地址立即数字段来计算一个或多个操作数的寄存器地址。
在一些实施例中,基于操作码2412位字段对指令进行分组以简化操作码解码2440。对于8位操作码,位4、5和6允许执行单元确定操作码的类型。所示的精确操作码分组仅仅是一个例子。在一些实施例中,移动和逻辑操作码组2442包括数据移动和逻辑指令(例如,移动(mov)、比较(cmp))。在一些实施例中,移动和逻辑组2442共享五个最高有效位(MSB),其中移动(mov)指令为0000xxxxb的形式而逻辑指令为0001xxxxb的形式。流程控制指令组2444(例如,调用,跳转(jmp))包括形式为0010xxxxb(例如,0x20)的指令。杂项指令组2446包括指令混合,其包括0011xxxxb(例如,0x30)形式的同步指令(例如,等待、发送)。并行数学指令组2448包括0100xxxxb(例如,0x40)形式的组件方面算术指令(例如,加法,乘法(mul))。并行数学组2448在数据信道上并行执行算术运算。向量数学组2450包括形式为0101xxxxb(例如,0x50)的算术指令(例如,dp4)。向量数学组对向量操作数执行算术运算,例如点积计算。
图形管线
图25是图形处理器2500的另一实施例的框图。具有与本文任何其它图的元件相同的附图标记(或名称)的图25的元件可以以与本文其他地方所描述的任何类似的方式操作或起作用,但不限于此。
在一些实施例中,图形处理器2500包括图形管线2520、媒体管线2530、显示引擎2540、线程执行逻辑2550和渲染输出管线2570。在一些实施例中,图形处理器2500是包含一个或多个通用处理核心的多核处理系统内的图形处理器。通过到一个或多个控制寄存器(未示出)的寄存器写入或经由环形互连2502发布给图形处理器2500的命令来控制图形处理器。在一些实施例中,环形互连2502将图形处理器2500耦合到其他处理组件,诸如其他图形处理器或通用处理器。命令流化器2503解释来自环形互连2502的命令,命令流化器2503向图形管线2520或媒体管线2530的各个组件提供指令。
在一些实施例中,命令流化器2503引导从存储器读取顶点数据的顶点获取器2505的操作,并执行由命令流化器2503提供的顶点处理命令。在一些实施例中,顶点获取器2505将顶点数据提供给顶点着色器2507,顶点着色器2507对每个顶点执行坐标空间变换和照明操作。在一些实施例中,顶点获取器2505和顶点着色器2507通过经由线程分派器2531将执行线程分派给执行单元2552A、2552B来执行顶点处理指令。
在一些实施例中,执行单元2552A、2552B是具有用于执行图形和媒体操作的指令集的向量处理器的阵列。在一些实施例中,执行单元2552A、2552B具有附接的L1高速缓存2551,其专用于每个阵列或在阵列之间共享。高速缓存可以配置为数据高速缓存、指令高速缓存或被分区以在不同分区中包含数据和指令的单个高速缓存。
在一些实施例中,图形管线2520包括铺砌组件用于执行3D对象的硬件加速铺砌。在一些实施例中,可编程外壳着色器2511配置铺砌操作。可编程域着色器2517提供铺砌输出的后端评估。铺砌器2513在外壳着色器2511的方向上操作并且包含专用逻辑以基于作为输入提供给图形管线2520的粗糙几何模型来生成一组详细的几何对象。在一些实施例中,如果不使用铺砌,铺砌组件2511、2513、2517可以被绕过。
在一些实施例中,完整的几何对象可以由几何着色器2519经由分派到执行单元2552A、2552B的一个或多个线程来处理,或者可以直接进行到裁剪器2529。在一些实施例中,几何着色器在整个几何对象上,而不是像在图形管线的先前阶段那样在顶点或顶点片上进行操作。如果铺砌被禁用,则几何着色器2519从顶点着色器2507接收输入。在一些实施例中,几何着色器2519可由几何着色器程序编程,以在铺砌单元被禁用时执行几何铺砌。
在光栅化之前,裁剪器2529处理顶点数据。裁剪器2529可以是固定功能裁剪器或具有裁剪和几何着色器功能的可编程裁剪器。在一些实施例中,渲染输出管线2570中的光栅化器和深度测试组件2573分派像素着色器以将几何对象转换为它们的每像素表示。在一些实施例中,像素着色器逻辑被包括在线程执行逻辑2550中。在一些实施例中,应用程序可以绕过光栅化并且经由流出单元2523访问未经光栅化的顶点数据。
图形处理器2500具有允许数据和消息在处理器的主要组件之间传递的互连总线、互连结构或一些其他互连机制。在一些实施例中,执行单元2552A、2552B和关联的高速缓存2551、纹理和媒体采样器2554以及纹理/采样器高速缓存2558经由数据端口2556互连以执行存储器访问并且与处理器的渲染输出管线组件进行通信。在一些实施例中,采样器2554、高速缓存2551、2558和执行单元2552A、2552B各自具有分离的存储器访问路径。
在一些实施例中,渲染输出管线2570包含将基于顶点的对象转换成相关联的基于像素的表示的光栅化器和深度测试组件2573。在一些实施例中,渲染输出管线2570包括加窗器/掩蔽单元以执行固定功能三角和线光栅化。在一些实施例中,相关联的渲染高速缓存2578和深度高速缓存2579也是可用的。像素操作组件2577对数据执行基于像素的操作,但是在一些情况下,与2D操作相关联的像素操作(例如,具有混合的位块图像传送)由2D引擎2541执行,或者在显示时间通过显示器控制器2543使用重叠显示平面替代。在一些实施例中,共享L3高速缓存2575可用于所有图形组件,允许在不使用主系统存储器的情况下共享数据。
在一些实施例中,图形处理器媒体管线2530包括媒体引擎2537和视频前端2534。在一些实施例中,视频前端2534从命令流化器2503接收管线命令。在一些实施例中,媒体管线2530包括单独的命令流化器。在一些实施例中,视频前端2534在将命令发送给媒体引擎2537之前处理媒体命令。在一些实施例中,媒体引擎2537包括线程产生功能以产生线程从而经由线程分派器2531分派给线程执行逻辑2550。
在一些实施例中,图形处理器2500包括显示引擎2540。在一些实施例中,显示引擎2540在处理器2500的外部并且经由环形互连2502或一些其它互连总线或结构与图形处理器耦合。在一些实施例中,显示引擎2540包括2D引擎2541和显示控制器2543。在一些实施例中,显示引擎2540包含能够独立于3D管线而操作的专用逻辑。在一些实施例中,显示控制器2543与显示设备(未示出)耦合,该显示设备可以是如膝上型计算机中的系统集成显示设备,或者经由显示设备连接器附接的外部显示设备。
在一些实施例中,图形管线2520和媒体管线2530可配置为基于多个图形和媒体编程接口执行操作,并且不特定于任何一个应用编程接口(API)。在一些实施例中,用于图形处理器的驱动器软件将对特定图形或媒体库特定的API调用转换成可由图形处理器处理的命令。在一些实施例中,为来自Khronos Group的开放图形库(OpenGL)和开放计算语言(OpenCL),来自微软公司的Direct3D库提供支持,或者可以向OpenGL和D3D二者提供支持。也可以为开源计算机视觉库(OpenCV)提供支持。如果可以进行从未来API的管线到图形处理器的管线的映射,则还将支持具有兼容的3D管线的未来的API。
图形管线编程
图26A是示出根据一些实施例的图形处理器命令格式2600的框图。图26B是示出根据一个实施例的图形处理器命令序列2610的框图。图26A中的实线框示出了通常包括在图形命令中的组件,而虚线包括可选的组件或仅包含在图形命令的子组中的组件。图26A的示例性图形处理器命令格式2600包括用于标识该命令的目标客户端2602、命令操作码(操作码)2604以及该命令的相关数据2606的数据字段。子操作码2605和命令大小2608也包含在一些命令中。
在一些实施例中,客户端2602指定处理命令数据的图形设备的客户端单元。在一些实施例中,图形处理器命令解析器检查每个命令的客户端字段以调节命令的进一步处理并将命令数据路由到适当的客户端单元。在一些实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元和媒体单元。每个客户端单元都有处理这些命令的相应处理管线。一旦客户端单元接收到该命令,客户端单元就读取操作码2604以及子操作码2605(如果存在)以确定要执行的操作。客户端单元使用数据字段2606中的信息来执行命令。对于一些命令,预期显式命令大小2608指定命令的大小。在一些实施例中,命令解析器基于命令操作码自动确定命令中的至少一些的大小。在一些实施例中,命令经由双字的倍数对齐。
图26B中的流程图示出了示例性图形处理器命令序列2610。在一些实施例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用所示命令序列的一个版本来设置、执行和终止一组图形操作。仅出于示例的目的示出并描述了样本命令序列,因为实施例不限于这些特定命令或该命令序列。而且,命令可以作为命令序列中的一批命令发布,使得图形处理器将至少部分地同时处理命令序列。
在一些实施例中,图形处理器命令序列2610可以以管线冲洗命令2612开始,以使任何活动图形管线完成管线的当前未决命令。在一些实施例中,3D管线2622和媒体管线2624不同时操作。执行管线冲洗以使活动图形管线完成任何未决命令。响应于管线冲洗,图形处理器的命令解析器将暂停命令处理,直到活动绘图引擎完成未决操作并且相关读取高速缓存失效。可选地,渲染缓存中标记为“脏”的任何数据都可以冲洗到存储器。在一些实施例中,管线冲洗命令2612可以用于管线同步或者在将图形处理器置于低功率状态之前使用。
在一些实施例中,当命令序列要求图形处理器在管线之间显式切换时使用管线选择命令2613。在一些实施例中,在发布管线命令之前,在执行上下文中仅需要一次管线选择命令2613,除非该上下文将发布用于两个管线的命令。在一些实施例中,紧接在经由管线选择命令2613的管线切换之前需要管线冲洗命令2612。
在一些实施例中,管线控制命令2614配置用于操作的图形管线并且用于编程3D管线2622和媒体管线2624。在一些实施例中,管线控制命令2614配置活动管线的管线状态。在一个实施例中,管线控制命令2614用于管线同步并在处理一批命令之前清除活动管线内的一个或多个高速缓存存储器的数据。
在一些实施例中,用于返回缓冲器状态2616的命令被用于为相应管线配置一组返回缓冲器以写入数据。一些管线操作需要分配、选择或配置一个或多个返回缓冲器,操作在处理期间将中间数据写入返回缓冲器。在一些实施例中,图形处理器还使用一个或多个返回缓冲器来存储输出数据并执行交叉线程通信。在一些实施例中,配置返回缓冲器状态2616包括选择用于一组管线操作的返回缓冲器的大小和数量。
命令序列中的其余命令基于用于操作的活动管线而不同。基于管线确定2620,命令序列针对从3D管线状态2630开始的3D管线2622或从媒体管线状态2640开始的媒体管线2624进行调整。
用于3D管线状态2630的命令包括用于顶点缓冲器状态、顶点元素状态、恒定颜色状态、深度缓冲器状态以及在处理3D基元命令之前要配置的其他状态变量的3D状态设置命令。这些命令的值至少部分基于正在使用的特定3D API来确定。在一些实施例中,3D管线状态2630命令还能够选择性地禁用或绕过某些管线元素,如果那些元素将不被使用的话。
在一些实施例中,3D基元2632命令用于提交将由3D管线处理的3D基元。通过3D基元2632命令传递给图形处理器的命令和相关联的参数被转发到图形管线中的顶点提取函数。顶点提取函数使用3D基元2632命令数据来生成顶点数据结构。顶点数据结构存储在一个或多个返回缓冲器中。在一些实施例中,3D基元2632命令被用于经由顶点着色器对3D基元执行顶点操作。为了处理顶点着色器,3D管线2622将着色器执行线程分派给图形处理器执行单元。
在一些实施例中,3D管线2622经由执行2634命令或事件来触发。在一些实施例中,寄存器写入触发命令执行。在一些实施例中,通过命令序列中的“去”或“踢”命令触发执行。在一个实施例中,使用管线同步命令触发命令执行以通过图形管线冲洗命令序列。3D管线将执行3D基元的几何处理。一旦操作完成,产生的几何对象被光栅化,并且像素引擎为所产生的像素着色。对于那些操作,也可以包含用于控制像素着色和像素后端操作的其他命令。
在一些实施例中,当执行媒体操作时,图形处理器命令序列2610跟随媒体管线2624路径。通常,媒体管线2624的具体使用和编程方式取决于要执行的媒体或计算操作。在媒体解码期间,特定的媒体解码操作可以被卸载到媒体管线。在一些实施例中,媒体管线也可以被绕过,并且可以使用由一个或多个通用处理核心提供的资源整体或部分地执行媒体解码。在一个实施例中,媒体管线还包括用于通用图形处理器单元(GPGPU)操作的元件,其中图形处理器用于使用与图形基元的渲染不显式相关的计算着色器程序来执行SIMD向量操作。
在一些实施例中,媒体管线2624以与3D管线2622类似的方式配置。配置媒体管线状态2640的一组命令在媒体对象命令2642之前被分派或放置到命令队列中。在一些实施例中,用于媒体管线状态2640的命令包括配置将用于处理媒体对象的媒体管线元素的数据。这包括配置媒体管线内的视频解码和视频编码逻辑的数据,如编码或解码格式。在一些实施例中,用于媒体管线状态2640的命令还支持使用一个或多个指向包含一批状态设置的“间接”状态元素的指针。
在一些实施例中,媒体对象命令2642提供指向媒体对象的指针以供媒体管线处理。媒体对象包括包含要处理的视频数据的存储器缓冲器。在一些实施例中,在发布媒体对象命令2642之前,所有媒体管线状态必须是有效的。一旦管线状态被配置并且媒体对象命令2642排队,则媒体管线2624经由执行命令2644或等同的执行事件(例如寄存器写入)触发。然后,来自媒体管线2624的输出可以由3D管线2622或媒体管线2624提供的操作进行后处理。在一些实施例中,GPGPU操作以与媒体操作类似的方式被配置和执行。
图形软件架构
图27示出根据一些实施例的用于数据处理系统2700的示例性图形软件架构。在一些实施例中,软件架构包括3D图形应用程序2710、操作系统2720和至少一个处理器2730。在一些实施例中,处理器2730包括图形处理器2732和一个或多个通用处理器核心2734。图形应用程序2710和操作系统2720各自在数据处理系统的系统存储器2750中执行。
在一些实施例中,3D图形应用程序2710包含一个或多个着色器程序,其包括着色器指令2712。着色器语言指令可以是高级着色器语言,诸如高级着色器语言(HLSL)或OpenGL着色器语言(GLSL)。应用程序还包括适用于由通用处理器核心2734执行的机器语言的可执行指令2714。该应用程序还包括由顶点数据定义的图形对象2716。
在一些实施例中,操作系统2720是来自微软公司的 操作系统、专有的类UNIX操作系统或者使用Linux内核的变体的开源类UNIX操作系统。操作系统2720可以支持诸如Direct3D API或OpenGL API之类的图形API 2722。当Direct3D API在使用时,操作系统2720使用前端着色器编译器2724来将HLSL中的任何着色器指令2712编译成较低级着色器语言。编译可以是准时(JIT)编译或应用程序可以执行着色器预编译。在一些实施例中,在编译3D图形应用程序2710期间将高级着色器编译成低级着色器。
在一些实施例中,用户模式图形驱动器2726包含后端着色器编译器2727以将着色器指令2712转换成硬件特定表示。当OpenGL API在使用时,GLSL高级语言中的着色器指令2712被传递给用户模式图形驱动器2726用于编译。在一些实施例中,用户模式图形驱动器2726使用操作系统内核模式功能2728来与内核模式图形驱动器2729进行通信。在一些实施例中,内核模式图形驱动器2729与图形处理器2732通信以分派命令和指令。
IP核实现方式
至少一个实施例的一个或多个方面可以通过存储在代表和/或定义诸如处理器的集成电路内的逻辑的机器可读介质上的代表性代码来实现。例如,机器可读介质可以包括表示处理器内的各种逻辑的指令。当由机器读取时,指令可以使机器制造逻辑以执行本文描述的技术。被称为“IP核”的这种表示是用于集成电路的逻辑的可重用单元,其可以作为描述集成电路的结构的硬件模型存储在有形的机器可读介质上。硬件模型可以提供给各种客户或制造设施,这些客户或制造设施在制造集成电路的制造机器上加载硬件模型。集成电路可以被制造为使得电路执行结合本文描述的任何实施例描述的操作。
图28是示出可用于制造集成电路以执行根据一个实施例的操作的IP核开发系统2800的框图。IP核开发系统2800可以用于生成模块化的可重用的设计,其可以被结合到更大的设计中或者用于构建整个集成电路(例如,SOC集成电路)。设计设施2830可以用高级编程语言(例如,C/C++)生成IP核设计的软件仿真2810。软件仿真2810可以用于使用仿真模型2812来设计、测试和验证IP核的行为。仿真模型2812可以包括功能、行为和/或时序仿真。随后可以从仿真模型2812创建或合成寄存器传输级(RTL)设计2815。RTL设计2815是对硬件寄存器之间的数字信号的流进行建模的集成电路的行为的抽象,包括使用建模的数字信号执行的关联的逻辑。除了RTL设计2815之外,还可以创建、设计或合成逻辑级别或晶体管级别的低级别设计。因此,初始设计和仿真的具体细节可以不同。
RTL设计2815或等同物可以进一步由设计设施合成为硬件模型2820,其可以是硬件描述语言(HDL)或物理设计数据的一些其他表示。可以进一步仿真或测试HDL以验证IP核设计。可以使用非易失性存储器2840(例如,硬盘、闪速存储器或任何非易失性存储介质)来存储IP核设计以便递送到第三方制造设施2865。可替代地,IP核设计可以通过有线连接2850或无线连接2860传输(例如,经由因特网)。制造设施2865然后可以制造至少部分地基于IP核设计的集成电路。所制造的集成电路可以被配置为执行根据在此描述的至少一个实施例的操作。
示例性的片上系统集成电路
图29-31示出根据本文描述的各种实施例的可使用一个或多个IP核制造的示例性集成电路和相关联的图形处理器。除了图示的之外,可以包括其他逻辑和电路,包括附加的图形处理器/核心、外围接口控制器、或通用处理器核心。
图29是示出根据实施例的可以使用一个或多个IP核制造的示例性片上系统集成电路2900的框图。示例性集成电路2900包括一个或多个应用处理器2905(例如,CPU)、至少一个图形处理器2910,并且可以另外包括图像处理器2915和/或视频处理器2920,其中的任何一个可以是来自相同或多个不同设计设施的模块化IP核。集成电路2900包括外围设备或总线逻辑,包括USB控制器2925、UART控制器2930、SPI/SDIO控制器2935和I2S/I2C控制器2940。另外,集成电路可以包括显示设备2945,显示设备2945耦合到高清晰度多媒体接口(HDMI)控制器2950和移动工业处理器接口(MIPI)显示接口2955中的一个或多个。存储可由包括闪速存储器和闪速存储器控制器的闪速存储器子系统2960提供。存储器接口可以经由存储器控制器2965提供用于访问SDRAM或SRAM存储器设备。一些集成电路还包括嵌入式安全引擎2970。
图30是示出根据一个实施例的可以使用一个或多个IP核制造的片上系统集成电路的示例性图形处理器3010的框图。图形处理器3010可以是图29的图形处理器2910的变型。图形处理器3010包括顶点处理器3005和一个或多个片段处理器3015A-3015N(例如,3015A、3015B、3015C、3015D、至3015N-1和3015N)。图形处理器3010可以通过单独的逻辑执行不同的着色器程序,使得顶点处理器3005被优化以执行顶点着色器程序的操作,而一个或多个片段处理器3015A-3015N执行用于片段或像素着色器程序的片段(例如,像素)着色操作。顶点处理器3005执行3D图形管线的顶点处理阶段并产生基元和顶点数据。片段处理器3015A-3015N使用由顶点处理器3005产生的基元和顶点数据来产生显示在显示设备上的帧缓冲器。在一个实施例中,片段处理器3015A-3015N被优化以执行OpenGL API中提供的片段着色器程序,其可以用于执行与Direct 3D API中提供的像素着色器程序相似的操作。
图形处理器3010另外包括一个或多个存储器管理单元(MMU)3020A-3020B、高速缓存3025A-3025B以及电路互连3030A-3030B。一个或多个MMU 3020A-3020B为包括顶点处理器3005和/或片段处理器3015A-3015N的图形处理器3010提供虚拟到物理地址映射,除了存储在一个或多个高速缓存3025A-3025B中的顶点或图像/纹理数据之外,其还可以引用存储在存储器中的顶点或图像/纹理数据。在一个实施例中,一个或多个MMU 3020A-3020B可以与系统内的其他MMU同步,包括与图29的一个或多个应用处理器2905、图像处理器2915和/或视频处理器2920相关联的一个或多个MMU,使得每个处理器2905-2920可以参与共享或统一的虚拟存储器系统。根据实施例,一个或多个电路互连3030A-3030B使得图形处理器3010能够经由SoC的内部总线或经由直接连接与SoC内的其他IP核进行接口连接。
图31是示出根据一个实施例的可以使用一个或多个IP核制造的片上系统集成电路的附加示例性图形处理器3110的框图。图形处理器3110可以是图29的图形处理器2910的变型。图形处理器3110包括图30的集成电路3000的一个或多个MMU 3020A-3020B、高速缓存3025A-3025B以及电路互连3030A-3030B。
图形处理器3110包括一个或多个着色器核心3115A-3115N(例如,3115A、3115B、3115C、3115D、3115E、3115F、至3015N-1和3015N),其提供统一着色器核心架构,其中单个核心或类型或核心可以执行所有类型的可编程着色器代码,包括用于实现顶点着色器、片段着色器和/或计算着色器的着色器程序代码。存在的着色器核心的确切数量可以在各实施例和各实现方式中有所不同。另外,图形处理器3110包括作为线程分派器的核心间任务管理器3105,充当将执行线程分派给一个或多个着色器核心3115A-3115N的线程分派器。图形处理器3110另外包括拼贴单元3118,以加速用于基于瓦片的渲染的拼贴操作,其中用于场景的渲染操作在图像空间中被细分。基于瓦片的渲染可用于利用场景内的局部空间一致性或优化内部高速缓存的使用。
对“一个实施例”、“实施例”、“示例实施例”、“各种实施例”等的引用指示如此描述的实施例可以包括特定的特征、结构或特性,但不是每个实施例都必然包括特定的特征、结构或特性。此外,一些实施例可能具有针对其他实施例描述的特征中的一些、全部特征或者不具有针对其他实施例描述的特征。
在前述说明书中,参考其具体示例性实施例描述了实施例。然而,显而易见的是,可以对其进行各种修改和改变而不脱离如所附权利要求书中阐述的实施例的更宽泛的精神和范围。因此,说明书和附图被认为是说明性的而不是限制性的。
在以下描述和权利要求中,可以使用术语“耦合”及其衍生词。“耦合”用于指示两个或更多个元件彼此协作或相互作用,但是它们可以在它们之间或者可以不在它们之间插入物理或电子组件。
如权利要求中所使用的,除非另外指明,否则使用序数形容词“第一”、“第二”、“第三”等来描述共同元素仅仅指示正在引用相似元素的不同实例,并不意味着如此描述的元素必须按照以时间、空间、排名或任何其他方式的给定顺序。
以下条款和/或示例涉及进一步的实施例或示例。这些示例中的细节可以在一个或多个实施例中的任何地方使用。不同实施例或示例的各种特征可以与所包括的一些特征以及排除在外的一些其他特征进行各种组合,以适应各种不同的应用。示例可以包括诸如方法、用于执行方法的动作的单元、包括在由机器执行时使机器执行方法的动作的指令的至少一个机器可读介质、或者用于根据在此描述的实施例和示例来促进混合通信的装置或系统之类的主题。
一些实施例涉及示例1,其包括促进自主机器的机器学习中的即时深度学习的装置,所述装置包括:由处理器促进或至少部分地并入处理器中的检测/观察逻辑,用于检测与第一深度网络相关联的输出,所述第一深度网络用作与在具有所述处理器的装置处学习一个或多个神经网络相关联的用户无关模型;以及即时学习逻辑,用于自动生成第二深度网络的训练数据,所述第二深度网络用作用户相关模型,其中所述训练数据基于所述输出而生成,其中所述即时学习逻辑进一步将用户无关模型与用户相关模型合并为单个联合模型。
示例2包括示例1的主题,还包括离线学习逻辑,用于执行与神经网络中的一个或多个相关联的用户无关模型的离线训练,其中用户无关模型表示上下文无关模型。
示例3包括示例1的主题,其中,即时学习逻辑进一步即时训练联合模型以用作用户相关分类器,其中,用户相关分类器表示上下文相关分类器。
示例4包括示例3的主题,其中,训练是在运行时和装置的正常操作期间执行的,其中正常操作包括应用程序的启动或运行中的一个或多个。
示例5包括示例3的主题,其中,训练联合模型包括在用户无关模型的一个或多个层与在联合模型内收敛的用户相关模型的一个或多个层之间进行调解。
示例6包括示例1的主题,还包括:调谐逻辑,用于执行联合模型的一个或多个参数的联合模型调谐,其中使用小的已标记数据执行联合模型调谐;以及生成和调解逻辑,用于生成一个或多个调解参数以定义用于联合模型的学习或训练的调解。
示例7包括示例1的主题,其中处理器包括与应用处理器共置在公共半导体封装上的图形处理器。
一些实施例涉及包括用于促进自主机器的机器学习中的即时深度学习的方法的示例8,所述方法包括:检测与第一深度网络相关联的输出,所述第一深度网络用作与在具有耦合到存储器的处理器的计算设备处学习一个或多个神经网络相关联的用户无关模型;以及自动生成第二深度网络的训练数据,所述第二深度网络用作用户相关模型,其中基于输出生成训练数据;并将用户无关模型与用户相关模型合并为单个联合模型。
示例9包括示例8的主题,还包括执行与神经网络中的一个或多个相关联的用户无关模型的离线训练,其中用户无关模型表示上下文无关模型。
示例10包括示例8-9的主题,还包括即时训练该联合模型以用作用户相关分类器,其中用户相关分类器表示上下文相关分类器。
示例11包括示例8-10的主题,其中在运行时和装置的正常操作期间执行训练,其中正常操作包括应用程序的启动或运行中的一个或多个。
示例12包括示例8-11的主题,其中训练联合模型包括在用户无关模型的一个或多个层与在联合模型内收敛的用户相关模型的一个或多个层之间进行调解。
示例13包括示例8-12的主题,还包括:执行联合模型的一个或多个参数的联合模型调谐,其中使用小的已标记数据执行联合模型调谐;以及生成一个或多个调解参数以定义用于联合模型的学习或训练的调解。
示例14包括示例8-13的主题,其中该处理器包括与应用处理器共置在公共半导体封装上的图形处理器。
一些实施例涉及包括图形处理系统的示例15,该图形处理系统包括具有耦合到处理器的存储器的计算设备,该处理器用于:检测与第一深度网络相关联的输出,该第一深度网络用作在与具有耦合到存储器的处理器的计算设备处学习一个或多个神经网络相关联的用户无关模型;并且自动生成用作用户相关模型的第二深度网络的训练数据,其中训练数据是基于输出生成的;并将用户无关模型与用户相关模型合并为单个联合模型。
示例16包括示例15的主题,其中处理器还执行与神经网络中的一个或多个相关联的用户无关模型的离线训练,其中用户无关模型表示上下文无关模型。
示例17包括示例15-16的主题,其中处理器进一步对联合模型进行即时训练以用作用户相关分类器,其中用户相关分类器表示上下文相关分类器。
示例18包括示例15-17的主题,其中训练是在运行时和装置的正常操作期间执行的,其中正常操作包括应用程序的启动或运行中的一个或多个。
示例19包括示例15-18的主题,其中训练联合模型包括在用户无关模型的一个或多个层与在联合模型内收敛的用户相关模型的一个或多个层之间进行调解。
示例20包括示例15-19的主题,还包括:执行联合模型的一个或多个参数的联合模型调谐,其中使用小的已标记数据执行联合模型调谐;以及生成一个或多个调解参数以定义用于联合模型的学习或训练的调解。
示例21包括示例15-20的主题,其中该处理器包括与应用处理器共置在公共半导体封装上的图形处理器。
示例22包括至少一个包括多个指令的非暂时性或有形的机器可读介质,当多个指令在计算设备上执行时,用于实现或执行如权利要求或示例8-14中任一项所述的方法。
示例23包括至少一个包括多个指令的机器可读介质,当多个指令在计算设备上执行时,用于实现或执行如权利要求或示例8-14中任一项所述的方法。
示例24包括一种系统,该系统包括用于实现或执行如权利要求或示例8-14中的任一项所述的方法的机构。
示例25包括一种装置,该装置包括用于执行如权利要求或示例8-14中的任一项所述的方法的单元。
示例26包括一种计算设备,该计算设备被设置为实现或执行如权利要求或示例8-14中的任一项所述的方法。
示例27包括一种通信设备,该通信设备被设置为实现或执行如权利要求或示例8-14中的任一项所述的方法。
示例28包括至少一个包括多个指令的机器可读介质,当多个指令在计算设备上执行时,用于实施或执行如前述权利要求中任一项所述的方法或实现如前述权利要求中任一项所述装置。
示例29包括包括多个指令的至少一个非暂时性或有形的机器可读介质,当多个指令在计算设备上执行时,用于实施或执行如前述权利要求中任一项所述的方法或实现如前述权利要求中任一项所述的装置。
示例30包括一种系统,该系统包括用于实施或执行方法或实现如前述权利要求中任一项所述的装置的机构。
示例31包括一种装置,该装置包括用于执行前述权利要求中任一项所述的方法的模块。
示例32包括一种计算设备,该计算设备被设置为实施或执行如前述权利要求中任一项所述的方法或实现如前述权利要求中任一项所述的装置。
示例33包括一种通信设备,该通信设备被设置为实施或执行如前述权利要求中任一项所述的方法或实现如前述权利要求中任一项所述的装置。
附图和前面的描述给出了实施例的示例。本领域技术人员将认识到,所描述的元件中的一个或多个可以很好地组合成单个功能元件。可替代地,某些元件可能会被分成多个功能元件。来自一个实施例的元件可以被添加到另一实施例。例如,这里描述的过程的顺序可以被改变并且不限于这里描述的方式。此外,任何流程图的操作都不需要按所示顺序执行;也不一定需要执行所有这些行为。而且,那些不依赖于其他行为的行为可以与其他行为并行执行。实施例的范围绝不受这些具体示例的限制。许多变化,无论是否在说明书中明确给出,例如结构、尺寸和材料使用方面的差异,都是可能的。实施例的范围至少与所附权利要求所给出的范围一样宽。

Claims (19)

1.一种用于促进自主机器的机器学习中的即时深度学习的装置,所述装置包括:
检测/观察逻辑,由处理器促进或至少部分地被并入到处理器中,用于检测与第一深度网络相关联的输出,所述第一深度网络用作与在具有所述处理器的装置处学习一个或多个神经网络相关联的用户无关模型;以及
即时学习逻辑,用于自动地生成第二深度网络的训练数据,所述第二深度网络用作用户相关模型,其中,所述训练数据是基于所述输出生成的,
其中,所述即时学习逻辑还用于将所述用户无关模型与所述用户相关模型合并成单个联合模型。
2.如权利要求1所述的装置,还包括离线学习逻辑,用于执行与所述一个或多个神经网络相关联的所述用户无关模型的离线训练,其中,所述用户无关模型表示上下文无关模型。
3.如权利要求1所述的装置,其中,所述即时学习逻辑还用于即时训练所述联合模型以用作用户相关分类器,其中,所述用户相关分类器表示上下文相关分类器。
4.如权利要求3所述的装置,其中,训练是在运行时和所述装置的正常操作期间执行的,其中,所述正常操作包括应用程序的启动或运行中的一个或多个。
5.如权利要求3所述的装置,其中,训练所述联合模型包括在所述用户无关模型的一个或多个层与在所述联合模型内收敛的所述用户相关模型的一个或多个层之间进行调解。
6.如权利要求1所述的装置,还包括:
调谐逻辑,用于执行所述联合模型的一个或多个参数的联合模型调谐,其中,所述联合模型调谐是使用小的已标记数据来执行的;以及
生成和调解逻辑,用于生成一个或多个调解参数以定义用于所述联合模型的学习或训练的调解。
7.如权利要求1所述的装置,其中,所述处理器包含与应用处理器共置在公共半导体封装上的图形处理器。
8.一种用于促进自主机器的机器学习中的即时深度学习的方法,所述方法包括:
检测与第一深度网络相关联的输出,所述第一深度网络用作与在具有耦合到存储器的处理器的计算设备处学习一个或多个神经网络相关联的用户无关模型;
自动地生成第二深度网络的训练数据,所述第二深度网络用作用户相关模型,其中,所述训练数据是基于所述输出生成的;以及
将所述用户无关模型与所述用户相关模型合并为单个联合模型。
9.如权利要求8所述的方法,还包括执行与所述一个或多个神经网络相关联的所述用户无关模型的离线训练,其中,所述用户无关模型表示上下文无关模型。
10.如权利要求8所述的方法,还包括即时训练所述联合模型以用作用户相关分类器,其中,所述用户相关分类器表示上下文相关分类器。
11.如权利要求10所述的方法,其中,训练是在运行时和所述装置的正常操作期间执行的,其中,所述正常操作包括应用程序的启动或运行中的一个或多个。
12.如权利要求10所述的方法,其中,训练所述联合模型包括在所述用户无关模型的一个或多个层与在所述联合模型内收敛的所述用户相关模型的一个或多个层之间进行调解。
13.如权利要求8所述的方法,还包括:
执行所述联合模型的一个或多个参数的联合模型调谐,其中,所述联合模型调谐是使用小的已标记数据来执行的;以及
生成一个或多个调解参数以定义用于学习或训练所述联合模型的调解。
14.如权利要求8所述的方法,其中,所述处理器包括与应用处理器共置在公共半导体封装上的图形处理器。
15.包括多个指令的至少一个机器可读介质,当在计算设备上执行所述多个指令时,所述多个指令用于实施或执行如权利要求8-14中任一项所述的方法。
16.一种包括实施或执行如权利要求或实例8-14中任一项所述的方法的机构的系统。
17.一种包括用于执行如权利要求或实例8-14中任一项所述的方法的单元的装置。
18.一种被设置为实施或执行如权利要求或实例8-14中任一项所述的方法的计算设备。
19.一种被设置为实施或执行如权利要求或实例8-14中任一项所述的方法的通信设备。
CN201810419226.3A 2017-05-05 2018-05-04 用于自主机器的机器学习中的即时深度学习 Pending CN108805292A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010770667.5A CN111915025B (zh) 2017-05-05 2018-05-04 用于自主机器的机器学习中的即时深度学习
CN202311277782.9A CN117556868A (zh) 2017-05-05 2018-05-04 用于自主机器的机器学习中的即时深度学习

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762502294P 2017-05-05 2017-05-05
US62/502,294 2017-05-05
US15/659,818 US10572773B2 (en) 2017-05-05 2017-07-26 On the fly deep learning in machine learning for autonomous machines
US15/659,818 2017-07-26

Related Child Applications (2)

Application Number Title Priority Date Filing Date
CN202010770667.5A Division CN111915025B (zh) 2017-05-05 2018-05-04 用于自主机器的机器学习中的即时深度学习
CN202311277782.9A Division CN117556868A (zh) 2017-05-05 2018-05-04 用于自主机器的机器学习中的即时深度学习

Publications (1)

Publication Number Publication Date
CN108805292A true CN108805292A (zh) 2018-11-13

Family

ID=64014186

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202010770667.5A Active CN111915025B (zh) 2017-05-05 2018-05-04 用于自主机器的机器学习中的即时深度学习
CN201810419226.3A Pending CN108805292A (zh) 2017-05-05 2018-05-04 用于自主机器的机器学习中的即时深度学习
CN202311277782.9A Pending CN117556868A (zh) 2017-05-05 2018-05-04 用于自主机器的机器学习中的即时深度学习

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202010770667.5A Active CN111915025B (zh) 2017-05-05 2018-05-04 用于自主机器的机器学习中的即时深度学习

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202311277782.9A Pending CN117556868A (zh) 2017-05-05 2018-05-04 用于自主机器的机器学习中的即时深度学习

Country Status (2)

Country Link
US (6) US10572773B2 (zh)
CN (3) CN111915025B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109617845A (zh) * 2019-02-15 2019-04-12 中国矿业大学 一种基于深度学习的无线通信解调器的设计及解调方法
CN110147251A (zh) * 2019-01-28 2019-08-20 腾讯科技(深圳)有限公司 用于计算神经网络模型的架构、芯片及计算方法
CN110378472A (zh) * 2019-07-24 2019-10-25 苏州浪潮智能科技有限公司 一种深度神经网络模型的数据并行训练方法、装置及设备
US10572773B2 (en) 2017-05-05 2020-02-25 Intel Corporation On the fly deep learning in machine learning for autonomous machines
CN110837896A (zh) * 2019-11-22 2020-02-25 中国联合网络通信集团有限公司 机器学习模型的存储和调用方法、装置
CN111341102A (zh) * 2020-03-02 2020-06-26 北京理工大学 运动基元库构建方法和装置、连接运动基元的方法和装置
CN111507466A (zh) * 2019-01-30 2020-08-07 北京沃东天骏信息技术有限公司 数据处理方法、装置、电子设备及可读介质
CN111680798A (zh) * 2019-03-11 2020-09-18 人工智能医生股份有限公司 联合学习模型系统和方法、装置和计算机可读存储介质
CN111930510A (zh) * 2020-08-20 2020-11-13 北京达佳互联信息技术有限公司 电子设备和数据处理方法
CN112465156A (zh) * 2019-08-12 2021-03-09 美光科技公司 优化车辆的预测性维护的神经网络计算的系统、方法和设备
CN112997195A (zh) * 2018-12-10 2021-06-18 希侬人工智能公司 机器学习模型的数字水印
CN113010674A (zh) * 2021-03-11 2021-06-22 平安科技(深圳)有限公司 文本分类模型封装方法、文本分类方法及相关设备
TWI757999B (zh) * 2020-12-04 2022-03-11 國立陽明交通大學 即時避障系統、即時避障方法及具有即時避障功能的無人載具
CN114202027A (zh) * 2021-12-10 2022-03-18 北京百度网讯科技有限公司 执行配置信息的生成方法、模型训练方法和装置

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
US11042155B2 (en) 2017-06-06 2021-06-22 Plusai Limited Method and system for closed loop perception in autonomous driving vehicles
US11392133B2 (en) 2017-06-06 2022-07-19 Plusai, Inc. Method and system for object centric stereo in autonomous driving vehicles
US11573573B2 (en) 2017-06-06 2023-02-07 Plusai, Inc. Method and system for distributed learning and adaptation in autonomous driving vehicles
US10409667B2 (en) * 2017-06-15 2019-09-10 Salesforce.Com, Inc. Error assignment for computer programs
US11003992B2 (en) * 2017-10-16 2021-05-11 Facebook, Inc. Distributed training and prediction using elastic resources
US10802489B1 (en) 2017-12-29 2020-10-13 Apex Artificial Intelligence Industries, Inc. Apparatus and method for monitoring and controlling of a neural network using another neural network implemented on one or more solid-state chips
US11321612B2 (en) * 2018-01-30 2022-05-03 D5Ai Llc Self-organizing partially ordered networks and soft-tying learned parameters, such as connection weights
US10769310B2 (en) * 2018-07-20 2020-09-08 Nxp B.V. Method for making a machine learning model more difficult to copy
US11468291B2 (en) 2018-09-28 2022-10-11 Nxp B.V. Method for protecting a machine learning ensemble from copying
US10891514B2 (en) * 2018-12-17 2021-01-12 Microsoft Technology Licensing, Llc Image classification pipeline
CN111400021B (zh) * 2019-01-02 2023-03-31 中国移动通信有限公司研究院 一种深度学习方法、装置及系统
US11507677B2 (en) 2019-02-15 2022-11-22 Microsoft Technology Licensing, Llc Image classification modeling while maintaining data privacy compliance
JP7231511B2 (ja) * 2019-07-29 2023-03-01 株式会社日立製作所 管理装置、管理方法、および管理プログラム
CN112306623A (zh) * 2019-07-31 2021-02-02 株式会社理光 深度学习任务的处理方法、装置及计算机可读存储介质
US11636411B2 (en) * 2019-08-12 2023-04-25 Wynden Stark Llc Apparatus for determining role fitness while eliminating unwanted bias
US11429839B2 (en) * 2019-08-22 2022-08-30 International Business Machines Corporation Adapting movie storylines
US11663814B2 (en) * 2019-08-23 2023-05-30 Arm Limited Skip predictor for pre-trained recurrent neural networks
CN110488835B (zh) * 2019-08-28 2020-12-08 北京航空航天大学 一种基于双反向传播神经网络的无人系统智能局部路径规划方法
US11453404B2 (en) * 2019-09-05 2022-09-27 Baidu Usa Llc Gear based vehicle load inference system
US11625648B2 (en) 2019-09-14 2023-04-11 Oracle International Corporation Techniques for adaptive pipelining composition for machine learning (ML)
US11663523B2 (en) 2019-09-14 2023-05-30 Oracle International Corporation Machine learning (ML) infrastructure techniques
US11562267B2 (en) * 2019-09-14 2023-01-24 Oracle International Corporation Chatbot for defining a machine learning (ML) solution
CN110633805B (zh) * 2019-09-26 2024-04-26 深圳前海微众银行股份有限公司 纵向联邦学习系统优化方法、装置、设备及可读存储介质
CN110674770A (zh) * 2019-09-29 2020-01-10 上海依图网络科技有限公司 用于人脸表情检测的系统以及方法
US11727314B2 (en) * 2019-09-30 2023-08-15 Amazon Technologies, Inc. Automated machine learning pipeline exploration and deployment
CN115066697A (zh) * 2019-11-07 2022-09-16 科蒂卡有限公司 狭义ai代理的集合
CN112787840B (zh) * 2019-11-11 2022-07-22 华为技术有限公司 一种实现业务功能部署的方法、装置和系统
US11288515B2 (en) * 2019-11-11 2022-03-29 Samsung Electronics Co., Ltd. Methods and systems for real-time data reduction
JP7363407B2 (ja) * 2019-11-21 2023-10-18 オムロン株式会社 追加学習装置、方法、及びプログラム
US10956807B1 (en) 2019-11-26 2021-03-23 Apex Artificial Intelligence Industries, Inc. Adaptive and interchangeable neural networks utilizing predicting information
US10691133B1 (en) * 2019-11-26 2020-06-23 Apex Artificial Intelligence Industries, Inc. Adaptive and interchangeable neural networks
US11366434B2 (en) 2019-11-26 2022-06-21 Apex Artificial Intelligence Industries, Inc. Adaptive and interchangeable neural networks
US11367290B2 (en) 2019-11-26 2022-06-21 Apex Artificial Intelligence Industries, Inc. Group of neural networks ensuring integrity
US11687778B2 (en) 2020-01-06 2023-06-27 The Research Foundation For The State University Of New York Fakecatcher: detection of synthetic portrait videos using biological signals
US11599376B1 (en) * 2020-02-20 2023-03-07 Amazon Technologies, Inc. Deep learning architecture for edge computing system
CN110991625B (zh) * 2020-03-02 2020-06-16 南京邮电大学 基于循环神经网络的地表异常现象遥感监测方法、装置
JP7415693B2 (ja) * 2020-03-13 2024-01-17 オムロン株式会社 打ち方決定装置、打ち方決定方法、打ち方決定プログラム、及び返球ロボット
US11500858B2 (en) * 2020-04-08 2022-11-15 International Business Machines Corporation Generating three-dimensional spikes using low-power computing hardware
US11222201B2 (en) 2020-04-14 2022-01-11 International Business Machines Corporation Vision-based cell structure recognition using hierarchical neural networks
US11734576B2 (en) * 2020-04-14 2023-08-22 International Business Machines Corporation Cooperative neural networks with spatial containment constraints
US20210329306A1 (en) * 2020-04-15 2021-10-21 Nvidia Corporation Video compression using neural networks
CN111523676B (zh) * 2020-04-17 2024-04-12 第四范式(北京)技术有限公司 辅助机器学习模型上线的方法及装置
CN111698327B (zh) * 2020-06-12 2022-07-01 中国人民解放军国防科技大学 基于聊天室架构的分布并行强化学习模型训练方法及系统
US11574175B2 (en) * 2020-06-25 2023-02-07 Intel Corporation Security optimizing compute distribution in a hybrid deep learning environment
CN111767059B (zh) * 2020-06-30 2023-03-31 北京百度网讯科技有限公司 深度学习模型的部署方法、装置、电子设备和存储介质
US11742901B2 (en) * 2020-07-27 2023-08-29 Electronics And Telecommunications Research Institute Deep learning based beamforming method and apparatus
EP3958182A1 (en) * 2020-08-20 2022-02-23 Dassault Systèmes Variational auto-encoder for outputting a 3d model
CN112101680B (zh) * 2020-09-25 2024-02-09 东北大学 基于章鱼模型的自适应长短期ies负荷预测方法
US11681511B2 (en) * 2020-12-24 2023-06-20 Sway AI Inc. Systems and methods for building and deploying machine learning applications
CN114697206B (zh) * 2020-12-31 2024-04-19 新智云数据服务有限公司 物联网节点管理方法、装置、设备和计算机可读介质
CN112732591B (zh) * 2021-01-15 2023-04-07 杭州中科先进技术研究院有限公司 一种缓存深度学习的边缘计算架构
JP2024519267A (ja) * 2021-05-07 2024-05-10 グーグル エルエルシー 機械学習ワークロードの非同期分散データフロー
CN115499300B (zh) * 2022-09-19 2024-03-15 八维通科技有限公司 嵌入式设备集群化运行架构系统、构建方法及构建装置
US11869212B1 (en) * 2023-02-07 2024-01-09 Deeping Source Inc. Method for training video object detection model using training dataset and learning device using the same
CN117688367B (zh) * 2024-01-25 2024-05-03 国能日新科技股份有限公司 一种基于即时学习的风力发电超短期功率预测方法及装置

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7219085B2 (en) * 2003-12-09 2007-05-15 Microsoft Corporation System and method for accelerating and optimizing the processing of machine learning techniques using a graphics processing unit
US7873812B1 (en) 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
US8250001B2 (en) * 2008-12-18 2012-08-21 Motorola Mobility Llc Increasing user input accuracy on a multifunctional electronic device
US8639502B1 (en) * 2009-02-16 2014-01-28 Arrowhead Center, Inc. Speaker model-based speech enhancement system
US11232290B2 (en) * 2010-06-07 2022-01-25 Affectiva, Inc. Image analysis using sub-sectional component evaluation to augment classifier usage
US20170098122A1 (en) * 2010-06-07 2017-04-06 Affectiva, Inc. Analysis of image content with associated manipulation of expression presentation
US9477925B2 (en) * 2012-11-20 2016-10-25 Microsoft Technology Licensing, Llc Deep neural networks training for speech and pattern recognition
WO2014117096A1 (en) * 2013-01-25 2014-07-31 Davey Sonya Novel algorithms for feature detection and hiding from ultrasound images
JP6164639B2 (ja) * 2013-05-23 2017-07-19 国立研究開発法人情報通信研究機構 ディープ・ニューラルネットワークの学習方法、及びコンピュータプログラム
US9620145B2 (en) * 2013-11-01 2017-04-11 Google Inc. Context-dependent state tying using a neural network
US9953634B1 (en) * 2013-12-17 2018-04-24 Knowles Electronics, Llc Passive training for automatic speech recognition
WO2015188275A1 (en) * 2014-06-10 2015-12-17 Sightline Innovation Inc. System and method for network based application development and implementation
US10223333B2 (en) 2014-08-29 2019-03-05 Nvidia Corporation Performing multi-convolution operations in a parallel processing system
CN106062786B (zh) * 2014-09-12 2019-12-31 微软技术许可有限责任公司 用于训练神经网络的计算系统
GB2532075A (en) * 2014-11-10 2016-05-11 Lego As System and method for toy recognition and detection based on convolutional neural networks
CN104463324A (zh) * 2014-11-21 2015-03-25 长沙马沙电子科技有限公司 一种基于大规模高性能集群的卷积神经网络并行处理方法
US10007406B1 (en) * 2014-11-24 2018-06-26 Evernote Corporation Adaptive writing interface
US10489703B2 (en) * 2015-05-20 2019-11-26 Nec Corporation Memory efficiency for convolutional neural networks operating on graphics processing units
US10474950B2 (en) * 2015-06-29 2019-11-12 Microsoft Technology Licensing, Llc Training and operation of computational models
US9786270B2 (en) * 2015-07-09 2017-10-10 Google Inc. Generating acoustic models
US10002402B2 (en) * 2015-07-23 2018-06-19 Sony Corporation Learning convolution neural networks on heterogeneous CPU-GPU platform
US9767565B2 (en) * 2015-08-26 2017-09-19 Digitalglobe, Inc. Synthesizing training data for broad area geospatial object detection
US10884503B2 (en) * 2015-12-07 2021-01-05 Sri International VPA with integrated object recognition and facial expression recognition
US10229672B1 (en) * 2015-12-31 2019-03-12 Google Llc Training acoustic models using connectionist temporal classification
US9805255B2 (en) * 2016-01-29 2017-10-31 Conduent Business Services, Llc Temporal fusion of multimodal data from multiple data acquisition systems to automatically recognize and classify an action
US10884761B2 (en) * 2016-03-22 2021-01-05 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Best performance delivery in heterogeneous computing unit environment
US10402670B2 (en) * 2016-04-19 2019-09-03 GM Global Technology Operations LLC Parallel scene primitive detection using a surround camera system
CN106096602A (zh) * 2016-06-21 2016-11-09 苏州大学 一种基于卷积神经网络的中文车牌识别方法
CN106250812B (zh) * 2016-07-15 2019-08-20 汤一平 一种基于快速r-cnn深度神经网络的车型识别方法
US11263516B2 (en) * 2016-08-02 2022-03-01 International Business Machines Corporation Neural network based acoustic models for speech recognition by grouping context-dependent targets
US10528864B2 (en) 2016-08-11 2020-01-07 Nvidia Corporation Sparse convolutional neural network accelerator
US10891538B2 (en) 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
KR102033411B1 (ko) * 2016-08-12 2019-10-17 한국전자통신연구원 주의집중 기반 문맥 종속 음향 모델을 이용한 음성 인식 장치 및 방법
US10970768B2 (en) * 2016-11-11 2021-04-06 Ebay Inc. Method, medium, and system for image text localization and comparison
CN106600667B (zh) * 2016-12-12 2020-04-21 南京大学 一种基于卷积神经网络的视频驱动人脸动画方法
US10268200B2 (en) * 2016-12-21 2019-04-23 Baidu Usa Llc Method and system to predict one or more trajectories of a vehicle based on context surrounding the vehicle
US10346944B2 (en) 2017-04-09 2019-07-09 Intel Corporation Machine learning sparse computation mechanism
US10671840B2 (en) * 2017-05-04 2020-06-02 Intel Corporation Method and apparatus for person recognition using continuous self-learning
US10572773B2 (en) 2017-05-05 2020-02-25 Intel Corporation On the fly deep learning in machine learning for autonomous machines
KR102521054B1 (ko) * 2017-10-18 2023-04-12 삼성전자주식회사 조기 중단에 기반한 심층 신경망의 연산 제어 방법 및 시스템
US11146564B1 (en) * 2018-07-24 2021-10-12 Pure Storage, Inc. Login authentication in a cloud storage platform
US10877812B2 (en) * 2018-09-06 2020-12-29 International Business Machines Corporation Hardware environment and method of performing matrix multiplication in artificial intelligence applications
US11232782B2 (en) * 2019-08-30 2022-01-25 Microsoft Technology Licensing, Llc Speaker adaptation for attention-based encoder-decoder
US20210174214A1 (en) * 2019-12-10 2021-06-10 The Mathworks, Inc. Systems and methods for quantizing a neural network
US11816790B2 (en) * 2020-03-06 2023-11-14 Nvidia Corporation Unsupervised learning of scene structure for synthetic data generation
DE112021007132T5 (de) * 2021-06-09 2023-12-21 Nvidia Corporation Berechnung der bewegung von pixeln zwischen bildern

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11354542B2 (en) 2017-05-05 2022-06-07 Intel Corporation On-the-fly deep learning in machine learning at autonomous machines
US11120304B2 (en) 2017-05-05 2021-09-14 Intel Corporation On-the-fly deep learning in machine learning at autonomous machines
US11663456B2 (en) 2017-05-05 2023-05-30 Intel Corporation On-the-fly deep learning in machine learning at autonomous machines
US10572773B2 (en) 2017-05-05 2020-02-25 Intel Corporation On the fly deep learning in machine learning for autonomous machines
CN112997195A (zh) * 2018-12-10 2021-06-18 希侬人工智能公司 机器学习模型的数字水印
CN110147251B (zh) * 2019-01-28 2023-07-25 腾讯科技(深圳)有限公司 用于计算神经网络模型的系统、芯片及计算方法
CN110147251A (zh) * 2019-01-28 2019-08-20 腾讯科技(深圳)有限公司 用于计算神经网络模型的架构、芯片及计算方法
CN111507466A (zh) * 2019-01-30 2020-08-07 北京沃东天骏信息技术有限公司 数据处理方法、装置、电子设备及可读介质
CN109617845B (zh) * 2019-02-15 2020-09-18 中国矿业大学 一种基于深度学习的无线通信解调器的设计及解调方法
CN109617845A (zh) * 2019-02-15 2019-04-12 中国矿业大学 一种基于深度学习的无线通信解调器的设计及解调方法
CN111680798A (zh) * 2019-03-11 2020-09-18 人工智能医生股份有限公司 联合学习模型系统和方法、装置和计算机可读存储介质
CN110378472A (zh) * 2019-07-24 2019-10-25 苏州浪潮智能科技有限公司 一种深度神经网络模型的数据并行训练方法、装置及设备
CN112465156A (zh) * 2019-08-12 2021-03-09 美光科技公司 优化车辆的预测性维护的神经网络计算的系统、方法和设备
CN110837896A (zh) * 2019-11-22 2020-02-25 中国联合网络通信集团有限公司 机器学习模型的存储和调用方法、装置
CN111341102A (zh) * 2020-03-02 2020-06-26 北京理工大学 运动基元库构建方法和装置、连接运动基元的方法和装置
CN111930510A (zh) * 2020-08-20 2020-11-13 北京达佳互联信息技术有限公司 电子设备和数据处理方法
CN111930510B (zh) * 2020-08-20 2024-05-07 北京达佳互联信息技术有限公司 电子设备和数据处理方法
TWI757999B (zh) * 2020-12-04 2022-03-11 國立陽明交通大學 即時避障系統、即時避障方法及具有即時避障功能的無人載具
CN113010674A (zh) * 2021-03-11 2021-06-22 平安科技(深圳)有限公司 文本分类模型封装方法、文本分类方法及相关设备
CN113010674B (zh) * 2021-03-11 2023-12-22 平安创科科技(北京)有限公司 文本分类模型封装方法、文本分类方法及相关设备
CN114202027A (zh) * 2021-12-10 2022-03-18 北京百度网讯科技有限公司 执行配置信息的生成方法、模型训练方法和装置

Also Published As

Publication number Publication date
US20230376739A1 (en) 2023-11-23
CN111915025A (zh) 2020-11-10
US10572773B2 (en) 2020-02-25
CN117556868A (zh) 2024-02-13
US20200279135A1 (en) 2020-09-03
CN111915025B (zh) 2024-04-30
US11663456B2 (en) 2023-05-30
US20200349392A1 (en) 2020-11-05
US11354542B2 (en) 2022-06-07
US20180322365A1 (en) 2018-11-08
US20220067440A1 (en) 2022-03-03
US11120304B2 (en) 2021-09-14
US20240005137A1 (en) 2024-01-04

Similar Documents

Publication Publication Date Title
CN108805292A (zh) 用于自主机器的机器学习中的即时深度学习
CN108734286A (zh) 在推断期间中对图形处理器的协调和增加利用
CN108694690A (zh) 频域中的子图和对gpu上的卷积实现的动态选择
CN108734648A (zh) 计算优化机制
CN108734272A (zh) 卷积神经网络优化机构
CN108805283A (zh) 在机器学习中对神经网络的拓扑的高效学习和使用
CN110349075A (zh) 低精度机器学习操作的计算优化
CN108804205A (zh) 原子操作的智能线程分派和向量化
CN108805794A (zh) 对自主机器处的机器学习进行存储管理
CN108694080A (zh) 高效线程组调度
CN108734636A (zh) 用于高效卷积的专用固定功能硬件
CN108805795A (zh) 用于机器学习的硬件实现的点对点通信原语
CN108734274A (zh) 用于深度神经网络的计算优化机制
CN108694689A (zh) 神经网络调度机制
CN109993278A (zh) 机器学习环境中的有效卷积
CN109712064A (zh) 使用低精度和高精度的混合推理
CN110352430A (zh) 使用合成数据和创新生成网络进行深度神经网络的高级和增强训练的方法和系统
CN108734285A (zh) 神经网络的计算优化
CN108694692A (zh) 机器学习稀疏计算机制
CN108734645A (zh) 神经网络优化机制
CN108805798A (zh) 用于深度学习框架的细粒度计算通信执行
CN109993277A (zh) 用于深度神经网络的计算优化机制
CN110462602A (zh) 用于多处理器平台上的深度学习网络执行流水线的方法和装置
CN108876698A (zh) 对自主机器处的机器学习进行屏障和同步
CN108734642A (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