CN113762461A - 使用可逆增强算子采用有限数据训练神经网络 - Google Patents

使用可逆增强算子采用有限数据训练神经网络 Download PDF

Info

Publication number
CN113762461A
CN113762461A CN202110623844.1A CN202110623844A CN113762461A CN 113762461 A CN113762461 A CN 113762461A CN 202110623844 A CN202110623844 A CN 202110623844A CN 113762461 A CN113762461 A CN 113762461A
Authority
CN
China
Prior art keywords
data
enhancement
distribution
training
input data
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
CN202110623844.1A
Other languages
English (en)
Inventor
T·T·卡拉斯
M·S·艾塔拉
J·J·海尔斯顿
S·M·莱内
J·T·莱赫蒂宁
T·O·艾拉
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.)
Nvidia Corp
Original Assignee
Nvidia 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
Priority claimed from US17/210,934 external-priority patent/US20210383241A1/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN113762461A publication Critical patent/CN113762461A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/047Probabilistic or stochastic networks
    • 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
    • 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

Abstract

本发明公开了使用可逆增强算子采用有限数据训练神经网络,实施例涉及用于使用有限的数据量来训练神经网络(诸如生成对抗神经网络(GAN))的技术。使用太少的示例数据来训练GAN通常导致鉴别器过度拟合,从而导致训练发散并产生差的结果。使用自适应鉴别器增强机制,该机制显著稳定具有有限数据的训练,从而提供训练高质量GAN的能力。将增强算子应用于用于训练生成器的鉴别器的输入的分布,其表示可逆的变换,以确保不存在到由生成器生成的图像的增强泄漏。减少实现收敛所需的训练数据的量具有显著帮助许多应用的潜力,并且可增加在诸如医学之类的领域中的生成模型的使用。

Description

使用可逆增强算子采用有限数据训练神经网络
要求优先权
本申请要求2020年6月5日提交的名称为“采用有限数据训练生成对抗网络(Training Generative Adversarial Networks with Limited Data)”的美国临时申请No.63/035,448的权益,其全部内容通过引用并入本文。
背景技术
需要大量的训练数据来充分地训练生成对抗神经网络(GAN)以良好地执行,例如,以便生成逼真的图像。使用太少数据训练GAN通常导致鉴别器过度拟合,其中鉴别器的反馈到生成器变得无意义,从而致使训练发散而不是收敛。遗憾的是,可能难以提供大量训练数据。针对对主题类型、图像质量、地理位置、时间段、隐私、版权状态等施加约束的特定应用收集足够大的图像集合可能是有挑战性的。在需要捕获新的、自定义数据集的应用中,这些困难进一步加剧:获取、处理和分布训练现代高质量、高分辨率GAN所需的多达百万或更多的图像是昂贵的任务。
在深度学习的几乎所有领域中,数据集增强提供附加训练数据并且是针对过度拟合的标准解决方案。例如,在旋转、噪声等下训练图像分类器导致对这些语义保留失真(分类器中的高度期望的质量)的恒定性增加。相反,在类似数据集增强下训练的GAN学习以生成增强的分布。通常,增强向生成的图像的这种“泄露”是非常不希望的。例如,噪声增强导致有噪声的结果,即使数据集中不存在噪声。换句话说,生成器学习生成包含增强的图像。需要解决这些问题和/或与现有技术相关联的其他问题。
发明内容
本公开的实施例涉及一种用于使用有限量的数据来训练神经网络(如生成对抗神经网络(GAN))的技术。取决于任务,GAN生成的数据可包括图像、音频、视频、三维(3D)对象、文本等。使用太少的示例数据来训练GAN通常导致鉴别器过度拟合,从而导致训练发散。为了避免训练期间的发散,使用自适应鉴别器增强机制,其在有限的数据制式中显著稳定训练。自适应鉴别器增强机制不需要改变损失函数或网络架构,并且在从头开始训练时和在另一数据集上微调现有GAN时都可应用。应用于到鉴别器的输入的分布的增强算子表示可逆的变换,以确保不存在到由鉴别器训练的生成器生成的图像中的增强泄漏。减少实现收敛所需的训练数据的量具有显著帮助许多应用的潜力。例如,减少需要的训练数据的量可以增加在诸如医学的领域中的生成模型的使用。
公开了一种用于使用有限量的数据来训练神经网络的方法、计算机可读介质和系统。神经网络接收包括输入数据和地面实况输出的训练数据,其中所述输入数据与第一分布相关联。将至少一个增强应用于所述输入数据以产生与第二分布相关联的增强的输入数据,其中对应于从所述第一分布到所述第二分布的变换的增强算子是可逆的并且指定所述至少一个增强。增强的输入数据由神经网络根据参数来处理以产生输出数据,并且这些参数被调整以减小输出数据与地面实况输出之间的差异。
附图说明
以下参照附图详细描述用于自适应增强的本系统和方法,其中:
图1A示出了根据实施例的GAN训练框架的框图。
图1B示出了使用现有技术针对各种量的GAN训练数据的收敛的图。
图1C示出了使用现有技术的GAN训练过程。
图2A示出了适合用于实现本公开的一些实施例的示例增强训练配置的框图。
图2B示出了适合用于实现本公开的一些实施例的示例增强训练配置的框图。
图2C示出了根据实施例的使用不可逆增强算子的变换。
图2D示出根据实施例的使用可逆增强算子的变换。
图2E示出了根据实施例的使用鉴别器增强采用有限数据来训练神经网络的方法的流程图。
图3A示出了根据实施例的在图2A和图2B中所示的增强单元。
图3B示出了根据实施例的不同p值和各种量的GAN训练数据的FID的图。
图3C示出了根据实施例的用于自适应鉴别器增强的不同目标值的FID和各种量的GAN训练数据的图。
图3D示出了根据实施例的使用自适应鉴别器增强来采用有限数据训练神经网络的方法的流程图。
图3E示出了根据实施例的使用自适应鉴别器增强的改进的GAN训练过程。
图4示出了适合用于实现本公开的一些实施例的示例并行处理单元。
图5A为使用图4的PPU实现的处理系统的概念图,其适用于实现本公开的一些实施例。
图5B示出了示例性系统,在该系统中可以实现各种先前实施例的各种架构和/或功能。
图5C示出了在至少一个实施例中可以用于训练和利用机器学习的示例性系统的组件。
图6示出了适合用于实现本公开的一些实施例的示例性流式传输系统。
具体实施方式
公开了涉及使用有限的数据量来训练神经网络(诸如生成对抗网络)的系统和方法。首先,需要更好地理解可用训练数据的数量如何影响GAN训练。然后描述防止增强泄漏的条件的综合分析。然后,可提供不同组的增强,并且自适应控制方案使得能够使用一致的解决方案,而不管训练数据的量、数据集的属性或确切的训练设置(例如,从头开始训练或转移学习)。
具体地,本文描述的技术可以用于训练生成对抗神经网络(GAN)。GAN包括生成器神经网络和鉴别器神经网络。生成器接收潜码(随机数)并且将在训练期间学习的参数应用于潜码以生成输出数据,诸如图像。鉴别器充当在生成器的训练期间使用的自适应损失函数。鉴别器的训练数据包括由生成器产生的输出数据(生成的数据)应与其一致的示例输出数据(真实数据)。鉴别器确定生成的数据是否看起来类似于包括在训练数据中的真实数据。例如,当训练生成器生成人脸的图像时,鉴别器判断生成的人脸是否看起来类似于人脸的示例图像(例如,真实图像)。鉴别器增强技术提供广泛范围的增强以防止鉴别器过度拟合,同时确保增强不会泄漏给生成的数据。
图1A示出了根据实施例的GAN训练框架的框图。GAN 120可以由程序、定制电路或由定制电路和程序的组合实现。例如,GAN 120可使用GPU、CPU或能够执行本文所述操作的任何处理器来实现。而且,本领域普通技术人员将理解,任何执行GAN120操作的系统都在本发明实施例的范围和精神内。
GAN 120包括生成器(神经网络)100、鉴别器(神经网络)110和训练损失单元115。可在训练期间修改生成器100和鉴别器110两者的拓扑结构。GAN 120可以在无监督设置或条件设置中操作。生成器100接收输入并产生输出数据。取决于任务,输出数据可以是图像、音频、视频或其他类型的数据(配置设置)。在一个实施例中,训练模拟“两玩家游戏”,其中生成器100和鉴别器110分别作为第一和第二玩家操作。在一个实施例中,生成器100学习生成数据,该数据由鉴别器110判断为真实的或生成的。换句话说,游戏是使生成器100欺骗鉴别器110认为所生成的数据是真实的。
在实施例中,在一个或更多个迭代上执行训练,其中每次迭代由以交替方式执行的多个阶段组成。在第一阶段,鉴别器110的参数在鉴别器110接收由生成器100产生的生成的输出数据的同时被学习。鉴别器110被训练以指示生成的输出数据是生成的且不是真实的。在第二阶段中,鉴别器110接收示例输出数据(例如,人脸的真实图像),且在鉴别器110被训练为指示示例输出数据是真实的且不是生成的时更新参数。在实施例中,地面实况输出指示示例输出数据是真实的(不是生成的)并且所生成的数据不是真实的。在第三阶段中,调整生成器100的参数(而鉴别器110的参数是固定的),因为生成器100学习生成鉴别器110指示其与示例输出数据一致的输出数据。在实施例中,执行转移学习并且使用已经针对不同任务训练的生成器和鉴别器来开始训练。
如图1A中所示,较早生成的人脸图像可包括一些逼真特性(例如,眼睛、嘴巴、鼻子、头发),但与人脸的真实图像不一致。鉴别器110指示较早生成的图像与用于训练鉴别器110的示例输出数据不一致。稍后在生成器100的训练期间产生的生成的图像与人脸的真实图像更一致。
在一个实施例中,鉴别器110输出指示输出数据与示例输出数据匹配的紧密程度的连续值。例如,在一个实施例中,鉴别器110在输出数据被确定为与示例输出数据匹配时输出第一训练刺激(例如,高值、TRUE(真)、第一状态),且在输出数据被确定为与示例输出数据不匹配时输出第二训练刺激(例如,低值、FALSE(假)、第二状态)。训练损失单元115基于鉴别器110的输出调整生成器和鉴别器120的参数(权重)。在实施例中,训练损失单元115调整参数以减小值与地面实况输出之间的差异。
当针对特定任务(诸如生成人脸的图像)训练生成器100时,当输出数据是人脸的图像时,鉴别器110输出高值。由生成器100生成的输出数据不需要与用于鉴别器110确定输出数据与示例输出数据匹配的示例输出数据完全相同。在以下描述的上下文中,鉴别器110在输出数据与示例输出数据中的任一个类似时确定输出数据与示例输出数据匹配。训练可通过将所生成的输出数据和示例输出数据提供给鉴别器并评估输出值来继续调整鉴别器和/或生成器的参数。
在条件设置中,GAN 120的输入数据可包括其他数据,例如图像、分类标签、分割轮廓和其他(附加)类型的数据(分布、音频等)。在训练之后,附加数据可用作明确方式来控制生成器的输出,例如以生成对应于分类标记的特定选择的图像。除了随机潜码之外还可以指定附加数据,或者附加数据可以完全替换随机潜码。
现在将根据用户的期望,阐述关于可以实现前述框架的各种可选架构和特征的更多说明性信息。应该特别注意的是,出于说明性目的阐述了以下信息,并且不应该被解释为以任何方式进行限制。任选的以下特征可以任选地并入或不排除所描述的其他特征。
图1B示出了使用现有技术针对各种量的GAN训练数据的收敛。图表上的不同曲线对应于用于训练GAN的不同训练数据集大小。竖直轴指示弗雷歇(Fréchet)起始距离(FID)且水平轴对应于示出给鉴别器的训练样本(即,真实图像)的数目。训练数据集被重复地(以随机化的顺序)输入到鉴别器,直到已经处理了固定数量的训练样本。FID测量生成的图像和真实图像之间的差异,其中较低的值与较大的相似性相关联。对于140k的训练数据集大小,FID随着训练的进展而稳定地改进。相反,训练数据集大小30k、10k和2k开始改善并随后随着训练继续而降级。具体地,2k、10k和30k大小的训练数据集分别在点122、124和126处开始降级。训练数据集中的数据越少,FID开始上升越早。相比之下,如本文进一步描述的,当使用鉴别器增强技术来训练GAN时,在整个训练过程中实现稳定的改进——甚至针对减小的训练数据集大小。
图1C示出了使用现有技术的GAN训练过程。用于50k图像训练130的图表示出改进的FID直到进度反转的点128。鉴别器输出135示出了在训练期间响应于输入x而产生的值D(x)。在2M训练样本处,由鉴别器输出的值是指示真实图像与生成的图像的重叠分布132,其中负值指示生成的图像,正值指示真实图像。2M个训练样本处的重叠分布132在以下图表中示出,其中重叠区域以D(x)=0为中心。随着训练继续,在13M训练样本处,分布134偏移分开,与FID开始上升重合。对于超过13M的训练样本,分离继续增加。
真实分布和生成的分布最初重叠,但是随着鉴别器变得越来越置信,偏移越来越远,并且FID开始劣化的点与分布之间的充分重叠的损失一致。这是过度拟合的强指示,进一步通过针对单独的验证集测量的准确度(FID)的降低来证明。鉴别器增强技术采用防止鉴别器变得过度置信的通用增强。
通过定义,作为训练生成器的结果,应用于训练数据集的任何增强将被继承到所生成的图像中。近来,平衡一致性正则化(bCR)被提出作为被推测不向所生成的图像泄漏增强的解决方案。一致性正则化声明应用于同一输入图像的两组增强应产生同一输出。一致性正则化项用于鉴别器损失,且针对真实图像和生成的图像两者实施鉴别器一致性,而在训练生成器时不应用增强或一致性损失项。照此,bCR有效地努力通过使鉴别器盲于CR项中所使用的增强来概括鉴别器。然而,满足此目标打开了泄漏增强的门,因为生成器将自由地产生含有增强的图像而无任何惩罚。实际上,bCR确实遭受泄漏,并且因此不提供用于采用有限数据训练GAN的高质量解决方案。
代替使用单独的CR损失项,随机鉴别器增强技术仅使用增强的图像来评估鉴别器。类似地,当训练生成器时,生成器从鉴别器接收的反馈是基于使用所生成的图像的增强版本来评估鉴别器。只使用增强图像的可能性受到很少的关注,可能是因为乍一看即使其工作也是不明显的:如果鉴别器从未看到训练图像真正看起来像什么,鉴别器是否能够正确地引导生成器是不清楚的。在下文中,确定随机鉴别器增强技术将不向所生成的图像泄漏增强的条件,如结合图2D、图3B和图3C进一步描述的,且可基于所述条件实现完整管线。
图2A示出了适合用于实现本公开的一些实施例的示例增强训练配置的框图。由生成器100生成的输出数据在输入到鉴别器110之前由增强单元200处理。在一个实施例中,在GAN 120内结合鉴别器110执行一个或更多个增强单元200。训练损失单元115基于由训练的鉴别器110输出的值来更新生成器100的参数。在实施例中,由增强单元200实现的增强算子是一个或更多个可逆变换,如本文进一步描述的。在实施例中,经由反向传播来计算更新,并且增强算子是可微分的。
由增强单元200执行的鉴别器增强可以被理解为将失真(可能甚至是破坏性护目镜)放在鉴别器110上,并且要求生成器100产生当通过护目镜观看时不能与示例输出数据(例如,训练数据集)区分开的样本。概念上,增强单元200对应于护目镜。在一个实施例中,增强是随机的。
图2B示出了适用于实现本公开的一些实施例的示例自适应增强训练配置的另一框图。鉴别器110使用由增强单元200处理的示例输出数据以及使用由生成器100产生的也由增强单元200处理的所生成的输出数据来训练。鉴别器110处理增强的示例输出数据和增强的所生成的输出数据以产生值。训练损失单元115基于值以及到鉴别器110的输入是对应于增强的示例输出数据还是增强的生成的输出数据来提供鉴别器参数更新。在实施例中,计算更新以减小值与地面实况输出之间的差异。
在实施例中,由训练损失单元115实现的训练目标是使生成的输出数据的分布x尽可能接近地匹配示例输出数据的分布y。训练生成器100的目标是生成具有分布x=y的输出数据。此外,对于图像生成,当增强单元200将增强算子
Figure BDA0003101258360000081
应用于鉴别器110的所有输入(真实图像和生成的图像两者)时,训练目标驱动增强的生成的图像的分布
Figure BDA0003101258360000082
以匹配增强的真实图像的分布
Figure BDA0003101258360000083
Figure BDA0003101258360000084
当增强算子是可逆的时,仅存在一个分布x,当其被增强时,产生分布
Figure BDA0003101258360000085
换言之,存在
Figure BDA0003101258360000086
的一个分布x。只要破坏过程由数据空间上的概率分布的可逆变换表示,生成器100训练就隐式地撤销由增强单元200引入的破坏,并发现正确的分布。换句话说,
Figure BDA0003101258360000087
将必然暗示如果增强算子是可逆的,则x=y,但如果算子是不可逆的,则暗示不为真。在以下描述的上下文中,表示这样的可逆变换的增强算子被称为无泄漏的。可逆增强算子被称为无泄漏,因为增强将不会泄漏到所生成的数据中。当由增强算子表示的变换是可逆的——考虑作为整体的分布,由生成器生成的输出数据的分布收敛为变得更类似于真实图像的分布,x=y。增强算子对应于数据分布,并指定应用于输入数据的各个样本(例如,各个图像)的增强。
增强单元200执行的可逆变换的能力是,关于底层数据集的等同性或不等同性的结论可通过仅观察增强的数据集而无需生成器100和/或鉴别器110看到无增强的数据集来得出。重要的是要理解,这并不意味着对个体图像执行的增强将需要被撤销。例如,与将输入图像设置为90%的时间为零一样极端的增强在概率分布意义上是可逆的:即使对于人类,也容易通过忽略黑色图像直到仅剩余10%的图像来推理原始分布。另一方面,从{0°,90°,180°,270°}中均匀选择的随机旋转是不可逆的:不可能在增强之后辨别方向之间的差异。
图2C示出了根据实施例的使用不可逆增强算子的变换。从{0°,90°,180°,270°}中以均匀概率选择的随机旋转是对应于产生一组增强数据的不可逆变换的增强算子。示例输出数据212包括被增强以产生增强的示例输出数据216的正立脸。将同一组增强应用于错误地仅包括颠倒的脸的生成数据210以产生增强的生成数据214。应训练生成器以产生与示例输出数据212一致的所生成的数据210。然而,因为增强的生成的数据214的分布与增强的示例输出数据216的分布匹配,所以鉴别器将不正确地得出生成的数据210与示例输出数据216一致的结论。具体地,针对四个不同旋转中的每个旋转的25%的均匀概率针对增强的生成数据214和增强的示例输出数据216两者产生25%的均匀分布,而不管原始取向是什么以及它们在所生成的数据210的集合与示例输出数据212的集合之间是否匹配。
图2D示出了根据实施例的使用可逆增强算子的变换。与图2C中所示的不可逆旋转变换相反,可通过将概率从均匀改变为非均匀来使得旋转变换可逆。增强单元200使用可逆旋转变换来处理所生成的数据211和示例输出数据213以分别产生增强的所生成的数据220和增强的示例输出数据222。执行增强的概率被设置为80%,使得对于0°、90°、180°、270°,四个旋转中的每一个分别为20%、20%、20%、20%。因为在20%的概率下没有出现增强,所以旋转0°的所得概率为40%。
当跳过增强时,0°旋转的相对出现增加,并且现在增强的分布可以仅在所生成的数据211具有与示例输出数据213一致的正确取向的情况下匹配。类似地,许多其他随机增强可以被设计成在以非零概率跳过增强的情况下是无泄漏的。例如,此类增强包括几何扭曲、色彩变换、确定性映射(例如,基础变换)、加性噪声、变换群组(例如,图像或色彩空间旋转、翻转和缩放)和投影(例如,剪切)。此外,以固定次序合成无泄漏增强产生总体无泄漏增强。在实施例中,将概率值p作为输入提供给增强单元200以控制增强的应用,其中0<p<1。当p<1时,对应于增强算子的变换将是可逆的。
图2E示出了根据实施例的使用自适应和/或随机鉴别器增强来采用有限数据训练神经网络的方法250的流程图。本文描述的方法250的每个框包括可使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,不同功能可由执行存储在存储器中的指令的处理器执行。方法250还可体现为存储在计算机存储介质上的计算机可用指令。仅举几例,方法250可由独立应用、服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件来提供。此外,通过示例的方式,相对于图1A的GAN 120和/或图2A和/或图2B中所示的训练配置来描述方法250。然而,此方法可另外或替代地由任一系统或系统的任何组合执行,所述系统包括但不限于本文中所描述的系统。例如,方法250可被用于针对诸如分类之类的任务来训练神经网络。此外,本领域普通技术人员将理解,执行方法250的任何系统在本公开的实施例的范围和精神内。
在步骤255,神经网络(例如,鉴别器)接收包括输入数据和地面实况输出的训练数据,其中该输入数据与第一分布相关联。在一个实施例中,神经网络是鉴别器110。在实施例中,输入数据包括图像并且训练数据中的每个图像被增强。在实施例中,基于定义增强强度的值(p),随机地禁用至少一个增强。在实施例中,至少一个增强是可微分的。在实施例中,所述至少一个增强被实现为不同增强的序列。
在步骤260处,对输入数据应用至少一个增强以产生与第二分布相关联的增强的输入数据,其中对应于从第一分布到第二分布的变换的增强算子是可逆的并且指定至少一个增强。在实施例中,输入数据是由生成器100产生的输出数据。在实施例中,第一分布仅是这样的分布,将针对该分部的至少一个增强应用于与第一分布相关联的输入数据导致与第二分布匹配的增强的分布。
在步骤265,增强的输入数据由神经网络根据参数处理以产生输出数据。在步骤270处,调整参数以减小输出数据与地面实况输出之间的差异。在实施例中,输入数据包括所生成的数据的第一子集和真实数据的第二子集,并且所生成的数据的第一子集由生成器神经网络模型基于第二参数产生。在实施例中,调整第二参数以使得第一子集和第二子集的分布更紧密地匹配。
在实施例中,输入数据包括生成的数据的第一子集和真实数据的第二子集,所述输出数据包括指示第一状态或第二状态的值,并且调整所述参数使得针对第一子集产生的输出数据的第一部分更接近地匹配第一状态,并且针对第二子集产生的输出数据的第二部分更接近地匹配第二状态。换句话说,真实的和所产生的输入图像的分布与针对增强的真实的和所产生的输入图像产生的鉴别器分类输出的相应分布匹配。
图3A示出了根据实施例的增强单元200。增强单元200内的增强管线包括一系列变换单元300,变换单元300中的每一个被配置为应用变换以产生增强的数据。在实施例中,增强单元200可包括更少或更多的变换单元300。在实施例中,变换单元300是随机的,即,当针对相同输入执行多次时,它们可产生不同的输出。输入到每个变换单元300的概率值p控制增强强度并确保变换是可逆的。在一个实施例中,增强单元200包括至少一个变换单元300。在一个实施例中,每个变换单元300可被配置为执行N个变换中的任何一个。在另一个实施例中,每个变换单元300被配置为执行N个变换中的特定一个。在一个实施例中,N个变换可以被分组成6个类别:像素位块传输(x翻转、90°旋转、整数平移)、更一般的几何变换、颜色变换、图像空间滤波、加性噪声和剪切块。在一个实施例中,在训练期间,每个图像在由增强单元200以固定次序使用预定义的变换集合处理之后示出给鉴别器110。因为增强也在训练生成器100时使用,所以当计算生成器参数更新时,增强对于反向传播应该是可微分的。
增强的强度由标量p∈[0,1]控制,使得每个变换单元300应用具有概率p的变换或者跳过具有概率1-p的变换。在实施例中,总是对输入到变换单元300的数据执行变换单元300,并且p用于根据概率p选择性地输出增强的数据或输入到变换单元300的数据。在实施例中,相同的p值被输入到每个变换单元300。在一个实施例中,针对小批(minibatch)中的每一增强和每一图像单独地执行根据p的随机化。假定在增强管线中存在多个变换单元300,则即使p的值相当小,鉴别器也不太可能看到干净的图像。尽管如此,只要p保持低于实际安全极限,就引导生成器100仅产生干净的图像。
不出乎意料地,使用p=1可能导致增强泄漏到生成器100的输出图像。更具体地,实验证实,在最佳地训练生成器100的时间的至少一部分中,应该跳过90°的随机倍数的上述旋转。当p太高时,生成器100不能知道所生成的图像应该面向哪种方式并且最终随机地拾取可能性之一。如可以预期的,该问题不是排他性地发生在p=1的限制情况下。实际上,由于有限的采样、网络的有限的表示功率、电感偏置和训练动态,训练设置对于附近的值也是条件不佳的。基于具有若干不同种类的增强的实验,当p保持低于约0.85时,所生成的图像总是正确的,即,不存在泄漏。
随机鉴别器增强的有效性是通过针对不同增强类别和数据集大小对P执行详尽扫描来评估的。最佳的增强强度很大程度上取决于训练数据的量。因此,依赖于任何固定的p可能不是对不同大小的数据集的最佳选择。而且,训练改进可针对不同增强类别而变化。
图3B示出了根据实施例的针对不同p值和各种GAN训练数据量的FID的图。对于2k训练集,可使用强增强来获得最佳结果。具体地,p=0.4的值对应于点315处的最低FID。曲线还指示当p接近值1时增强中的一些变得泄漏。在10k和50K训练集的情况下,p的较高值不太有用,并且p=0.2的值分别对应于点305和310处的最低FID。使用140k训练集(未示出),情况显著不同:所有增强都是有害的,因此p=0提供最佳结果。实际上,对数据集大小的敏感度要求昂贵的网格搜索来确定针对每个数据集大小的最佳p值。
优选地,将避免手动调整增强强度,而是应当基于过度拟合的程度在训练期间动态地控制增强强度。量化过度拟合的一种方式是使用单独的验证集并观察其相对于训练集的行为。对于有限大小的训练数据集,当验证集开始表现得越来越像所生成的图像时,过度拟合开始。这是可量化的效果,尽管具有在训练数据可能已经缺乏供应时需要单独的验证集的缺点。如图1C中所示,当过度拟合变差时,用于真实的和所生成的图像的鉴别器110输出值对称地围绕零发散。可以在没有单独的验证集的情况下量化散度。
鉴别器输出值分别表示为针对训练集、验证集和生成的图像的Dtrain、Dvalidation和Dgenerated,并且它们在N个连续小批上通过E[·]取平均。在一个实施例中,N=4,其对应于4x64=256个图像。可以定义两个合理的过度拟合启发式(heuristic):
Figure BDA0003101258360000121
对于两种启发式,r=0意味着没有过度拟合,并且r=1指示完全过度拟合,并且目标是调整增强概率p,使得所选择的启发式匹配合适的目标值。第一启发式算法rv表示相对于训练集和生成的图像针对验证集的鉴别器的输出。因为第一启发式假设存在单独的验证集,所以它主要用作比较来评估第二启发式。第二启发式rt估计针对其由鉴别器110输出正值的训练集的部分。rv和rt两者在防止过度拟合方面是有效的,并且它们两者改进超过使用网格搜索找到的最佳固定p(参见图3B)的结果。在一个实施例中,第二启发式比直接查看
Figure BDA0003101258360000131
的明显替代方案对所选择的超参数更不敏感。
可以如下控制增强强度p。在实施例中,p被初始化为零并且基于所选择的过度拟合启发式每N个小批调整一次。如果启发式指示过多/很少的过度拟合,则可以通过以固定调整大小(即,预定量)递增/递减来调整p。在一个实施例中,该确定是基于将该启发式的值与预定义的目标值进行比较。如果启发式的值高于目标值,则确定存在太多过度拟合,反之亦然。在实施例中,调整大小被设置为使得p可以足够快速地从0升高到1,例如,在500k图像中。p的值可被钳位为0,这意味着在递减之后它不会变为负。动态地控制增强强度可称为自适应鉴别器增强(ADA)。ADA机制不需要改变损失函数或网络架构,并且在从头开始训练时和在另一数据集上微调现有GAN时都可应用。
图3C示出了根据实施例的使用自适应鉴别器增强的rt启发式和各种量的GAN训练数据的不同目标值(x轴)的FID的图。在实施例中,所选择的目标值是0.6,并且基于rt启发式来调整增强强度。虚线示出了来自图3B的每个训练数据集的最佳固定值p。当ADA用于2k训练集时,在目标值为0.5的点320处获得最佳结果。在10k和50K训练集的情况下,目标值0.5和0.6分别对应于点322和324处的最低FID。使用140k训练集,0.6提供最佳结果。
图3D示出了根据实施例的使用自适应鉴别器增强来采用有限数据训练神经网络的方法330的流程图。本文描述的方法330的每个框包括可使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,不同功能可由执行存储在存储器中的指令的处理器执行。方法330还可体现为存储在计算机存储介质上的计算机可用指令。仅举几例,方法330可由独立应用、服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件来提供。此外,通过示例的方式,相对于图1A的GAN 120和/或图2A和/或图2B中所示的训练配置来描述方法330。然而,此方法可另外或替代地由任一系统或系统的任何组合执行,所述系统包括但不限于本文中所描述的系统。例如,方法330可被用于针对诸如分类之类的任务来训练神经网络。此外,本领域普通技术人员将理解,执行方法330的任何系统在本公开的实施例的范围和精神内。
在步骤335处,通过将p设定为值(例如,零)来初始化增强强度。在步骤340,针对N个小批来训练神经网络模型,其中N是正整数。在步骤345,如果正被训练的神经网络模型正在过度拟合,则方法330前进到步骤350。否则,方法330前进到步骤352,并且在前进到步骤355之前减小增强强度。在步骤350处,增强单元200在前进到步骤355之前增加增强强度。在实施例中,用于增大或减小增强强度的调整大小被应用于p。在实施例中,增强单元200基于由神经网络模型针对N个小批(例如,Dtrain)产生的输出数据来递增或递减p。在实施例中,将由神经网络模型针对N个小批(例如,rt)产生的输出数据与参考(例如,目标值0.6)进行比较,并且基于比较的结果来调整p。
在步骤355,训练损失单元115确定训练是否应继续,并且如果是,则返回到步骤340。否则,训练完成。在实施例中,当由训练损失单元115计算的损失低于阈值时,训练完成。在一个实施例中,当整个训练数据集已经被应用到神经网络模型M次时,训练完成,其中M是预定义的常数。在一个实施例中,当预定数量的小批已经完成时,训练完成。在一个实施例中,神经网络模型包括生成器100和鉴别器110中的至少一个。
图3E示出了根据实施例的使用自适应鉴别器增强的改进的GAN训练过程。类似于图1C中所示的用于50k图像训练130的曲线图,在没有任何增强的情况下执行用于20k图像训练的曲线图365,并且FID改进,直到进度开始反转的点362。类似于图1C中所示的鉴别器输出135,鉴别器输出370示出在训练期间产生的值D(x)。在点362之前,由鉴别器输出的值对于真实数据与所产生的数据具有重叠分布。随着训练在点362之后继续,鉴别器输出值分离。
相比之下,当ADA用于20k图像训练375时,FID在训练的整个过程中稳定地改进并且达到比非增强训练365在任何点处所达到的值更低的值。类似地,鉴别器输出380在整个训练期间具有针对真实数据与所产生的数据的重叠分布。因此,当在训练期间使用随机鉴别器增强或ADA时,尤其是当使用大小减小的训练数据集时,可避免在常规训练期间发生的过度拟合。
数据驱动生成建模意味着学习纯粹基于示例来生成复杂数据的计算配方。除了在机器学习中起根本性作用之外,生成模型在应用的机器学习研究内具有作为先验器、正则器等的若干用途。生成模型推进了用于分析和合成逼真图像的计算机视觉和图形算法的能力。随机鉴别器增强(SDA)和ADA可靠地稳定训练且在训练数据有限时极大地改进生成模型的训练结果。SDA和ADA可用于使用比现有方法所需的显著更少的数据来训练高质量的生成模型。特别地,当使用ADA时,无论训练集大小如何,生成器输出在整个训练中稳定地改进,并且不会发生过度拟合。在没有增强的情况下,生成器从鉴别器接收的梯度随着时间变得非常简单——鉴别器开始仅关注少数特征,并且生成器自由地以其他方式创建无意义的图像。
SDA和ADA使得用定制的数据集来训练高质量生成模型更容易,从而显著地降低了在许多应用的研究领域中应用GAN型模型的障碍。例如,对生物样品(组织、肿瘤等)的可能外观的空间进行建模是似乎长期遭受有限的高质量数据的不断增长的研究领域。总的来说,生成模型有希望在许多现实世界现象中增加对复杂且难以精确确定的关系的理解。
并行处理架构
图4示出了根据一个实施例的并行处理单元(PPU)400。PPU 400可用于实现GAN120。PPU 400可用于实现图1A、图2A、图2B和图3A中所示的生成器100、鉴别器110、增强单元200和训练损失单元220中的一个或更多个。PPU 400可被配置为执行方法150和/或250。
在实施例中,PPU 400是在一个或更多个集成电路设备上实现的多线程处理器。PPU 400是设计用于并行处理许多线程的延迟隐藏体系架构。线程(例如,执行线程)是被配置成由PPU 400执行的指令集的实例。在一个实施例中,PPU 400是图形处理单元(GPU),其被配置为实现用于处理三维(3D)图形数据的图形渲染管线,以便生成用于在显示设备上显示的二维(2D)图像数据。在其他实施例中,PPU 400可以用于执行通用计算。尽管为了说明的目的本文提供了一个示例性并行处理器,但应特别指出的是,该处理器仅出于说明目的进行阐述,并且可使用任何处理器来补充和/或替代该处理器。
一个或更多个PPU 400可以被配置为加速数千个高性能计算(HPC)、数据中心、云计算和机器学习应用。PPU 400可以被配置为加速众多深度学习系统和应用,用于自主车辆、模拟、计算图形(如光线或路径跟踪)、深度学习、高精度语音、图像和文本识别系统、智能视频分析、分子模拟、药物研发、疾病诊断、天气预报、大数据分析、天文学、分子动力学模拟、金融建模、机器人技术、工厂自动化、实时语言翻译、在线搜索优化和个性化用户推荐,等等。
如图4所示,PPU 400包括输入/输出(I/O)单元405、前端单元415、调度器单元420、工作分配单元425、集线器430、交叉开关(Xbar)470、一个或更多个通用处理集群(GPC)450以及一个或更多个存储器分区单元480。PPU 400可以经由一个或更多个高速NVLink 410互连连接至主机处理器或其他PPU 400。PPU 400可以经由互连402连接到主机处理器或其他外围设备。PPU 400还可连接到包括多个存储器设备的本地存储器404。在一个实施例中,本地存储器可以包括多个动态随机存取存储器(DRAM)设备。DRAM设备可以被配置为高带宽存储器(HBM)子系统,其中多个DRAM裸晶(die)堆叠在每个设备内。
NVLink 410互连使系统能够扩展并包括与一个或更多个CPU结合的一个或更多个PPU 400,支持PPU 400和CPU之间的高速缓存一致性,以及CPU主控。数据和/或命令可以由NVLink 410通过集线器430发送到PPU 400的其他单元或从其发送,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。结合图5B更详细地描述NVLink 410。
I/O单元405被配置为通过互连402从主机处理器(未示出)发送和接收通信(例如,命令、数据等)。I/O单元405可直接经由互连402直接与主机处理器通信,或通过一个或更多个中间设备(诸如内存桥)与主机处理器通信。在一个实施例中,I/O单元405可以经由互连402与一个或更多个其他处理器(如一个或更多个PPU 400)进行通信。在一个实施例中,I/O单元405实现外围组件互连高速(PCIe)接口,用于通过PCIe总线进行通信,并且互连402是PCIe总线。在替代的实施例中,I/O单元405可以实现其他类型的已知接口,用于与外部设备进行通信。
I/O单元405对经由互连402接收的分组进行解码。在一个实施例中,数据包表示被配置为使PPU 400执行不同操作的命令。I/O单元405按照命令指定将解码的命令发送到PPU400的各种其他单元。例如,一些命令可以被发送到前端单元415。其他命令可以被发送到集线器430或PPU 400的其他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。换言之,I/O单元405被配置为在PPU 400的各种逻辑单元之间和之中路由通信。
在一个实施例中,由主机处理器执行的程序在缓冲区中对命令流进行编码,该缓冲区向PPU 400提供工作量用于处理。工作量可以包括要由那些指令处理的许多指令和数据。缓冲区是存储器中可由主机处理器和PPU 400两者访问(例如,读/写)的区域。例如,I/O单元405可以被配置为经由通过互连402传输的存储器请求来访问连接到互连402的系统存储器中的缓冲区。在一个实施例中,主机处理器将命令流写入缓冲区,然后向PPU 400发送指向命令流开始的指针。前端单元415接收指向一个或更多个命令流的指针。前端单元415管理一个或更多个流,从流读取命令并将命令转发到PPU 400的各个单元。
前端单元415耦合到调度器单元420,其配置各种GPC 450以处理由一个或更多个流定义的任务。调度器单元420被配置为跟踪与由调度器单元420管理的各种任务有关的状态信息。该状态可指示任务被指派给哪个GPC 450、该任务是活动的还是不活动的、与该任务相关联的优先级等等。调度器单元420管理一个或更多个GPC 450上的多个任务的执行。
调度器单元420耦合到工作分配单元425,其配置为分派任务以在GPC450上执行。工作分配单元425可跟踪从调度器单元420接收到的若干调度的任务。在一个实施例中,工作分配单元425为每个GPC 450管理待处理任务池和活动任务池。当GPC 450完成任务的执行时,该任务从GPC 450的活动任务池中逐出,并且来自待处理任务池的其他任务之一被选择和调度以在GPC 450上执行。如果GPC 450上的活动任务已经空闲,例如在等待数据依赖性被解决时,那么活动任务可以从GPC 450中逐出并返回到待处理任务池,而待处理任务池中的另一个任务被选择并调度以在GPC 450上执行。
在一个实施例中,主机处理器执行实现应用程序编程接口(API)的驱动程序内核,其使得能够在主机处理器上执行一个或更多个应用程序以调度操作用于在PPU 400上执行。在一个实施例中,多个计算应用由PPU 400同时执行,并且PPU 400为多个计算应用程序提供隔离、服务质量(QoS)和独立地址空间。应用程序可以生成指令(例如,API调用),其使得驱动程序内核生成一个或更多个任务以由PPU 400执行。驱动程序内核将任务输出到正在由PPU 400处理的一个或更多个流。每个任务可以包括一个或更多个相关线程组,本文称为线程束(warp)。在一个实施例中,线程束包括可以并行执行的32个相关线程。协作线程可以指代包括执行任务的指令并且可以通过共享存储器交换数据的多个线程。任务可被分配到GPC 450内的一个或更多个处理单元,并且指令被调度用于由至少一个线程束来执行。
工作分配单元425经由XBar 470与一个或更多个GPC 450通信。XBar 470是将PPU400的单元中的许多单元耦合到PPU 400的其他单元的互连网络。例如,XBar 470可被配置为将工作分配单元425耦接至特定的GPC 450。尽管未明确示出,PPU 400的一个或更多个其他单元也可以经由集线器430连接到XBar 470。
任务由调度单元420管理并且由工作分配单元425分派给GPC 450。GPC 450被配置为处理任务并且生成结果。结果可以由GPC 450内的其他任务消耗,经由XBar 470路由到不同的GPC 450或者存储在存储器404中。结果可经由存储器分区单元480写入到存储器404,存储器分区单元480实现用于将数据写入到存储器404和将数据从存储器404读出的存储器接口。可以经由NVlink 410将结果传输至另一个PPU 400或CPU。在一个实施例中,PPU 400包括数目U的存储器分区单元480,其等于耦合到PPU 400的存储器404的单独且不同的存储器设备的数目。每个GPC 450可以包括存储器管理单元以提供虚拟地址到物理地址的转换、存储器保护和存储器请求的仲裁。在一个实施例中,存储器管理单元提供用于执行虚拟地址到存储器404中的物理地址的转换的一个或更多个转换后备缓冲区(TLB)。
在一个实施例中,存储器接口实现HBM2存储器接口,并且Y等于U的一半。在一个实施例中,HBM2存储器堆叠位于与PPU 400相同的物理封装上,提供与常规GDDR5 SDRAM系统相比显著的功率高和面积节约。在一个实施例中,每个HBM2堆叠包括四个存储器裸晶并且Y等于4,其中每个HBM2堆叠包括每个裸晶两个128位通道,总共8个通道和1024位的数据总线宽度。
在一个实施例中,存储器404支持单错校正双错检测(SECDED)纠错码(ECC)以保护数据。对于对数据损毁敏感的计算应用程序,ECC提供了更高的可靠性。在大型集群计算环境中,PPU 400处理非常大的数据集和/或长时间运行应用程序,可靠性尤其重要。
在一个实施例中,PPU 400实现多级存储器层次。在一个实施例中,存储器分区单元480支持统一存储器以为CPU和PPU 400存储器提供单个统一的虚拟地址空间,使得虚拟存储器系统之间的数据能够共享。在一个实施例中,跟踪PPU 400对位于其他处理器上的存储器的访问频率,以确保存储器页面被移动到更频繁地访问该页面的PPU 400的物理存储器。在一个实施例中,NVLink 410支持地址转换服务,其允许PPU 400直接访问CPU的页表并且提供由PPU 400对CPU存储器的完全访问。
在一个实施例中,复制引擎在多个PPU 400之间或在PPU 400与CPU之间传输数据。复制引擎可以为未映射到页表的地址生成页面错误。然后,存储器分区单元480可以服务页面错误,将地址映射到页表中,之后复制引擎可以执行传输。在常规系统中,针对多个处理器之间的多个复制引擎操作固定存储器(例如,不可分页),其显著减少了可用存储器。由于硬件分页错误,地址可以传递到复制引擎而不用担心存储器页面是否驻留,并且复制过程是否透明。
来自存储器404或其他系统存储器的数据可以由存储器分区单元480取回并存储在L2高速缓存460中,L2高速缓存460位于芯片上并且在各个GPC 450之间共享。如图所示,每个存储器分区单元480包括与对应的存储器404相关联的L2高速缓存的一部分。然后可以在GPC 450内的多个单元中实现较低级高速缓存。例如,每个在GPC 450内的处理单元可以实现一级(L1)高速缓存。L1高速缓存是专用于特定处理单元的专用存储器。L2高速缓存460被耦合到存储器接口470和XBar 370,来自L2高速缓存的数据可以被获取并存储在每个L1高速缓存中进行处理。
在一个实施例中,每个GPC 450内的处理单元实现SIMD(单指令、多数据)架构,其中一组线程(例如,线程束)中的每个线程被配置为基于相同的指令集来处理不同的数据集。该组线程中的所有线程执行相同的指令。在另一个实施例中,处理单元实现SIMT(单指令、多线程)架构,其中一组线程中的每个线程被配置为基于相同的指令集来处理不同的数据集合,但是其中允许一组线程中的各个线程在执行期间发散。在一实施例中,为每个线程束维持程序计数器、调用栈和执行状态,在线程束内的线程发散时使能线程束之间的并发性和线程束内的串行执行。在另一个实施例中,为每个单独的线程维护程序计数器、调用栈和执行状态,使能所有线程之间、线程束内和线程束之间的同等并发性。当针对每个个体线程保持执行状态时,为了最大效率,执行相同指令的线程可以收敛并且并行执行。
协作组是用于组织通信线程组的编程模型,其允许开发者表达线程正在进行通信所采用的粒度,使得能够表达更丰富、更高效的并行分解。协作启动API支持线程块之间的同步性,以执行并行算法。常规的编程模型为同步协作线程提供了单一的简单结构:跨线程块的所有线程的栅栏(barrier)(例如,syncthreads()函数)。然而,程序员通常希望以小于线程块粒度的粒度定义线程组,并在所定义的组内同步,以集体的全组功能接口(collective group-wide function interface)的形式使能更高的性能、设计灵活性和软件重用。
协作组使得程序员能够在子块(例如,像单个线程一样小)和多块粒度处明确定义线程组并且执行集体操作,诸如协作组中的线程上的同步性。编程模型支持跨软件边界的干净组合,以便库和效用函数可以在他们本地环境中安全地同步,而无需对收敛进行假设。协作组图元启用合作并行的新模式,包括生产者-消费者并行、机会主义并行以及跨整个线程块网格的全局同步。
处理单元包括大量(例如128个等)不同的处理核心(例如功能单元),其可以是完全管线化的、单精度、双精度和/或混合精度并且包括浮点运算逻辑单元和整数运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的IEEE 754-2008标准。在一个实施例中,核心包括64个单精度(32位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张量核心(tensor core)。
张量核心被配置为执行矩阵运算。具体地,张量核心被配置为执行深度学习矩阵运算,诸如在神经网络训练和推理期间的用于卷积运算的GEMM(矩阵与矩阵相乘)。在一个实施例中,每个张量核心在4×4矩阵上运算并且执行矩阵乘法和累加运算D=A×B+C,其中A、B、C和D是4×4矩阵。
在一个实施例中,矩阵乘法输入A和B可以是整数、定点或浮点矩阵,而累加矩阵C和D可以是位宽相等或更高的整数、定点或浮点矩阵。在一个实施例中,张量核心采用32位整数累加在1、4或8位整数输入数据上运算。8位整数矩阵乘法需要1024个运算并且导致全精度乘积,然后使用32位整数加法将其与8x8x16矩阵乘法的其他中间乘积进行累加。在一个实施例中,张量核心采用32位浮点累加在16位浮点输入数据上运算。16位浮点乘法需要64次运算,产生全精度的积,然后使用32位浮点加法与4×4×4矩阵乘法的其他中间积进行累加。在实践中,张量核心用于执行由这些较小的元素建立的更大的二维或更高维的矩阵运算。API(诸如CUDA 9C++API)公开了专门的矩阵加载、矩阵乘法和累加以及矩阵存储运算,以便有效地使用来自CUDA-C++程序的张量核心。在CUDA层面,线程束级接口假定16×16尺寸矩阵跨越线程束的所有32个线程。
每个处理单元还可以包括执行特殊函数(例如,属性评估、倒数平方根等)的M个特殊函数单元(SFU)。在一个实施例中,SFU可以包括树遍历单元,其被配置为遍历分层树数据结构。在一个实施例中,SFU可以包括被配置为执行纹理图过滤操作的纹理单元。在一个实施例中,纹理单元被配置为从存储器404加载纹理图(例如,纹理像素的2D阵列)并且对纹理图进行采样以产生经采样的纹理值,用于在由处理单元执行的着色器程序中使用。在一个实施例中,纹理图被存储在共享存储器中其可以包括或包括L1高速缓存。纹理单元实现纹理操作,诸如使用mip图(即,不同细节层次的纹理图)的过滤操作。在一个实施例中,每个处理单元包括两个纹理单元。
每个处理单元还包括N个加载存储单元(LSU),其实现共享存储器和寄存器文件之间的加载和存储操作。每个处理单元包括将每个核心连接到寄存器文件以及将LSU连接到寄存器文件、共享存储器的互连网络。在一个实施例中,互连网络是交叉开关,其可以被配置为将任何核心连接到寄存器文件中的任何寄存器,以及将LSU连接到寄存器文件和共享存储器中的存储器位置。
共享存储器是片上存储器阵列,其允许数据存储和处理单元之间以及处理单元内的线程之间的通信。在一个实施例中,共享存储器包括128KB的存储容量并且在从每个处理单元到存储器分区单元480的路径中。共享存储器可以用于高速缓存读取和写入。共享存储器、L1高速缓存、L2高速缓存和存储器404中的一个或更多个是后备存储。
将数据高速缓存和共享存储器功能组合成单个存储器块为两种类型的存储器访问提供最佳的总体性能。该容量可由程序用作不使用共享存储器的高速缓存。例如,如果将共享存储器配置为使用一半容量,则纹理和加载/存储操作可以使用剩余容量。在共享存储器内的集成使共享存储器起到用于流式传输数据的高吞吐量管线的作用,并且同时提供对频繁重用数据的高带宽和低延迟的访问。
当被配置用于通用并行计算时,与图形处理相比,可以使用更简单的配置。具体地,固定功能图形处理单元被绕过,创建了更简单的编程模型。在通用并行计算配置中,工作分配单元425将线程块直接指派并分配给GPC 450内的处理单元。线程执行相同的程序,使用计算中的唯一线程ID来确保每个线程生成唯一结果,使用一个或更多个处理单元执行程序并执行计算,使用共享存储器以在线程之间通信,以及使用LSU通过共享存储器和存储器分区单元480读取和写入全局存储器。当被配置用于通用并行计算时,处理单元还可以写入调度器单元420可用来在处理单元上启动新工作的命令。
PPU 400可以各自包括和/或被配置为执行以下功能,一个或更多个处理核心和/或其组件,如张量核心(TC)、张量处理单元(TPU)、像素视觉核心(PVC)、光线跟踪(RT)核心、视觉处理单元(VPU)、图形处理集群(GPC)、纹理处理群集(TPC)、流多处理器(SM)、树遍历单元(TTU)、人工智能加速器(AIA)、深度学习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC)、浮点单元(FPU)、输入/输出(I/O)元件、外围组件互连(PCI)或快速外围组件互连(PCIe)元件,和/或类似物。
PPU 400可以被包括在台式计算机、膝上型计算机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数码相机、运载工具、头戴式显示器、手持式电子设备等中。在一个实施例中,PPU 400包括在单个半导体衬底上。在另一个实施例中,PPU 400与一个或更多个其他器件(诸如附加PPU 400、存储器404、精简指令集计算机(RISC)CPU、存储器管理单元(MMU)、数字-模拟转换器(DAC)等)一起被包括在片上系统(SoC)上。
在一个实施例中,PPU 400可以被包括在图形卡上,图形卡包括一个或更多个存储器设备404。图形卡可以被配置为与台式计算机的主板上的PCIe插槽接口。在又一个实施例中,PPU 400可以是包括在主板的芯片集中的集成图形处理单元(iGPU)或并行处理器。在又一实施例中,PPU 400可在可重新配置的硬件中实现。在又一实施例中,PPU 400的部分可在可重新配置的硬件中实现。
示例性计算系统
具有多个GPU和CPU的系统被用于各种行业,因为开发者在应用(诸如人工智能计算)中暴露和利用更多的并行性。在数据中心、研究机构和超级计算机中部署具有数十至数千个计算节点的高性能GPU加速系统,以解决更大的问题。随着高性能系统内处理设备数量的增加,通信和数据传输机制需要扩展以支持该增加带宽。
图5A是根据一个实施例的使用图4的PPU 400实现的处理系统500的概念图。示例性系统500可以被配置为实现图2E中所示的方法250和/或图3D中所示的方法330。处理系统500包括CPU 530、交换机510和多个PPU 400以及相应的存储器404。
NVLink 410提供每个PPU 400之间的高速通信链路。尽管图5B中示出了特定数量的NVLink 410和互连402连接,但是连接到每个PPU 400和CPU 530的连接的数量可以改变。交换机510在互连402和CPU 530之间接口。PPU 400、存储器404和NVLink 410可以位于单个半导体平台上以形成并行处理模块525。在一个实施例中,交换机510支持两个或更多个在各种不同连接和/或链路之间接口的协议。
在另一个实施例(未示出)中,NVLink 410在每个PPU 400和CPU 530之间提供一个或更多个高速通信链路,并且交换机510在互连402和每个PPU 400之间进行接口。PPU 400、存储器404和互连402可以位于单个半导体平台上以形成并行处理模块525。在又一个实施例(未示出)中,互连402在每个PPU 400和CPU 530之间提供一个或更多个通信链路,并且交换机510使用NVLink 410在每个PPU 400之间进行接口,以在PPU 400之间提供一个或更多个高速通信链路。在另一个实施例(未示出)中,NVLink 410在PPU 400和CPU 530之间通过交换机510提供一个或更多个高速通信链路。在又一个实施例(未示出)中,互连402在每个PPU 400之间直接地提供一个或更多个通信链路。可以使用与NVLink 410相同的协议将一个或更多个NVLink 410高速通信链路实现为物理NVLink互连或者片上或裸晶上互连。
在本说明书的上下文中,单个半导体平台可以指在裸晶或芯片上制造的唯一的单一的基于半导体的集成电路。应该注意的是,术语单个半导体平台也可以指具有增加的连接的多芯片模块,其模拟片上操作并通过利用常规总线实现方式进行实质性改进。当然,根据用户的需要,各种电路或器件还可以分开放置或以半导体平台的各种组合来放置。可选地,并行处理模块525可以被实现为电路板衬底,并且PPU 400和/或存储器404中的每一个可以是封装器件。在一个实施例中,CPU 530、交换机510和并行处理模块525位于单个半导体平台上。
在一个实施例中,每个NVLink 410的信令速率是20到25千兆位/秒,并且每个PPU400包括六个NVLink 410接口(如图5A所示,每个PPU 400包括五个NVLink 410接口)。每个NVLink 410在每个方向上提供25千兆位/秒的数据传输速率,其中六条链路提供400千兆位/秒。当CPU 530还包括一个或更多个NVLink 410接口时,NVLink 410可专门用于如图5A所示的PPU到PPU通信,或者PPU到PPU以及PPU到CPU的某种组合。
在一个实施例中,NVLink 410允许从CPU 530到每个PPU 400的存储器404的直接加载/存储/原子访问。在一个实施例中,NVLink 410支持一致性操作,允许从存储器404读取的数据被存储在CPU 530的高速缓存分层结构中,减少了CPU 530的高速缓存访问延迟。在一个实施例中,NVLink 410包括对地址转换服务(ATS)的支持,允许PPU 400直接访问CPU530内的页表。一个或更多个NVLink 410还可以被配置为以低功率模式操作。
图5B示出了示例性系统565,其中可以实现各种先前实施例的各种体系架构和/或功能。示例性系统565可以被配置为实现图2E中所示的方法250和/或图3D中示出的方法330。
如图所示,提供系统565,其包括连接到通信总线575的至少一个中央处理单元530。通信总线575可以直接或间接耦合以下设备中的一个或更多个:主存储器540、网络接口535、一个或更多个CPU 530、一个或更多个显示设备545、一个或更多个输入设备560、交换机510和并行处理系统525。通信总线575可使用任何合适的协议来实现,并且可表示一个或更多个链路或总线,诸如地址总线、数据总线、控制总线或其组合。通信总线575可包括一个或更多个总线或链路类型,诸如工业标准体系结构(ISA)总线、扩展工业标准体系结构(EISA)总线、视频电子标准协会(VESA)总线、外围组件互连(PCI)总线、快速外围组件互连(PCIe)总线、超传输和/或另一类型的总线或链路。在一些实施例中,部件之间存在直接连接。例如,CPU 530可直接连接到主存储器540。进一步,CPU 530可直接连接到并行处理系统525。在组件之间存在直接或点对点连接的情况下,通信总线575可以包括用于执行连接的PCIe链路。在这些示例中,PCI总线不需要被包括在系统565中。
尽管图5C的各个框被示出为经由通信总线575与线路连接,但这不旨在是限制性的并且仅是为了清楚起见。例如,在一些实施例中,诸如显示设备545之类的呈现组件可以被认为是诸如输入设备560之类的I/O组件(例如,如果显示器是触摸屏)。作为另一实例,CPU 530和/或并行处理系统525可包括存储器(例如,主存储器540可表示除了并行处理系统525、CPU 530和/或其他组件之外的存储装置)。换言之,图5C的计算设备仅是说明性的。在如“工作站”、“服务器”、“膝上型计算机”、“台式计算机”、“平板计算机”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他装置或系统类型的此类类别之间不做区分,因为所有都被考虑在图5C的计算设备的范围内。
系统565还包括主存储器540。控制逻辑(软件)和数据被存储在主存储器540中,主存储器540可以采取各种计算机可读介质的形式。计算机可读介质可以是可由系统565访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质,以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
计算机存储介质可以包括以用于存储信息(如计算机可读指令、数据结构、程序模块和/或其他数据类型)的任何方法或技术实现的易失性和非易失性介质和/或可移除和不可移除介质两者。例如,主存储器540可存储计算机可读指令(例如,其表示程序和/或程序元素,例如操作系统)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字通用盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储装置或其他磁存储装置,或可用于存储所需信息且可由系统565访问的任何其他介质。如本文所使用的,计算机存储介质不包括信号本身。
计算机存储介质可以将计算机可读指令、数据结构、程序模块、和/或其他数据类型具体化为调制数据信号(如载波或其他传输机制)并且包括任何信息递送介质。术语“调制数据信号”可以指代以编码信号中的信息的方式设置或改变其一个或更多个特性的信号。作为示例而非限制,计算机存储介质可包括有线介质(诸如有线网络或直接有线连接)和无线介质(诸如声学、RF、红外和其他无线介质)。以上任何内容的组合也应包括在计算机可读介质的范围内。
计算机程序当被执行时使系统565能够执行不同功能。CPU 530可被配置为执行计算机可读指令中的至少一些以控制系统565的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。CPU 530可以各自包括能够同时处理多个软件线程的一个或更多个核心(例如,一个、两个、四个、八个、二十八个、七十二个等)。CPU 530可包括任何类型的处理器,且可取决于所实现的系统565的类型而包括不同类型的处理器(例如,用于移动设备的具有较少核心的处理器和用于服务器的具有较多核心的处理器)。例如,取决于系统565的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或补充协处理器(诸如数学协处理器)之外,系统565还可以包括一个或更多个CPU 530。
除了CPU 530之外或替代CPU 530,并行处理模块525可以被配置成执行计算机可读指令中的至少一些计算机可读指令以控制系统565的一个或更多个部件执行本文描述的方法和/或过程中的一个或更多个。并行处理模块525可由系统565用来渲染图形(例如,3D图形)或执行通用计算。例如,并行处理模块525可用于GPU上的通用计算(GPGPU)。在实施例中,一个或更多个CPU 530和/或并行处理模块525可以离散地或联合地执行方法、过程和/或其部分的任何组合。
系统565还包括一个或更多个输入设备560、并行处理系统525、一个或更多个显示设备545。显示设备545可包括显示器(例如,监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或其组合)、扬声器和/或其他呈现组件。显示设备545可从其他组件(例如,并行处理系统525、CPU 530等)接收数据,且输出该数据(例如,作为图像、视频、声音等)。
网络接口535可以使系统565能够逻辑地耦合至其他设备,包括输入设备560、一个或更多个显示设备545和/或其他组件,其中一些可以内置到(例如,集成在)系统565中。说明性输入设备560包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等。输入设备560可提供处理空中姿势、语音或由用户生成的其他生理输入的自然用户界面(NUI)。在一些情况下,可将输入发送到适当的网络元件以供进一步处理。NUI可实现与系统565的显示相关联的语音识别、指示笔识别、面部识别、生物特征识别、屏幕上和屏幕附近的姿势识别、空中姿势、头部和眼睛跟踪、以及触摸识别(如以下更详细描述的)的任何组合。系统565可以包括用于手势检测和识别的深度相机,诸如立体相机系统、红外相机系统、RGB相机系统、触摸屏技术和这些的组合。另外,系统565可以包括使得能够检测运动的加速度计或陀螺仪(例如,作为惯性测量单元(IMU)的一部分)。在一些示例中,系统565可以使用加速度计或陀螺仪的输出来渲染沉浸式增强现实或虚拟现实。
进一步地,系统565可以通过网络接口535耦合至网络(例如,电信网络、局域网(LAN)、无线网络、广域网(WAN)(如互联网)、对等网络、电缆网络等)以用于通信目的。系统565可以包括在分布式网络和/或云计算环境内。
网络接口535可以包括一个或更多个接收器、发射器和/或收发器,该一个或更多个接收器、发射器和/或收发器使系统565能够经由电子通信网络(包括有线和/或无线通信)与其他计算设备通信。网络接口535可包括用以实现经由若干不同网络中的任一者的通信的组件和功能性,所述网络例如无线网络(例如,Wi-Fi、Z-波、蓝牙、蓝牙LE、ZigBee等)、有线网络(例如,经由以太网或无限带宽通信)、低功率广域网(例如,LoRaWAN、SigFox等)和/或互联网。
系统565还可以包括辅助存储装置(未示出)。辅助存储装置包括例如硬盘驱动器和/或可移除存储驱动器,表示软盘驱动器、磁带驱动器、压缩盘驱动器、数字通用盘(DVD)驱动器、记录设备、通用串行总线(USB)闪存。可移除存储驱动器以公知的方式从可移除存储单元读取和/或向可移除存储单元写入。系统565还可包括硬接线电源、电池电源或其组合(未示出)。电源可以向系统565提供功率以使得系统565的组件能够操作。
前述模块和/或设备中的每一个甚至可以位于单个半导体平台上以形成系统565。或者,不同模块还可根据用户的需要单独地或在半导体平台的不同组合中定位。虽然上面已经描述了不同实施例,但是应当理解,这些实施例仅作为示例而非限制来呈现。因此,优选实施例的宽度和范围不应受任何上述示例性实施例的限制,而应仅根据所附权利要求及其等同物来限定。
示例网络环境
适合用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附加存储(NAS)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图5A的处理系统500和/或图5B的示例性系统565的一个或更多个实例上实现——例如,每个设备可以包括处理系统500和/或示例性系统565的类似组件、特征和/或功能。
网络环境的组件可以经由一个或更多个网络彼此通信,所述网络可以是有线的、无线的或两者。网络可以包括多个网络或多个网络中的一个网络。例如,网络可包括一个或更多个广域网(WAN)、一个或更多个局域网(LAN)、一个或更多个公共网络诸如互联网和/或公共交换电话网(PSTN)和/或一个或更多个私有网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或者甚至接入点(以及其他组件)的组件可以提供无线连接。
兼容的网络环境可以包括一个或更多个对等网络环境(在这种情况下,服务器可以不包括在网络环境中)和一个或更多个客户端-服务器网络环境(在这种情况下,一个或更多个服务器可以包括在网络环境中)。在对等网络环境中,本文相对于服务器所描述的功能可在任何数量的客户端设备上实现。
在至少一个实施例中,网络环境可以包括一个或更多个基于云的网络环境、分布式计算环境、其组合等。基于云的网络环境可包括框架层、工作调度器、资源管理器和在一个或更多个服务器上实现的分布式文件系统,所述服务器可包括一个或更多个核心网服务器和/或边缘服务器。框架层可包括支持软件层的软件和/或应用层的一个或更多个应用的框架。所述软件或应用程序可分别包括基于网络的服务软件或应用程序。在实施例中,一个或更多个客户端设备可以使用基于web的服务软件或应用(例如,通过经由一个或更多个应用编程接口(API)访问服务软件和/或应用)。框架层可以是但不限于自由和开源软件web应用框架的类型,诸如可以使用分布式文件系统进行大规模数据处理(例如,“大数据”)。
基于云的网络环境可以提供执行本文描述的计算和/或数据存储功能(或其一个或更多个部分)的任何组合的云计算和/或云存储。这些不同功能中的任何功能可以分布在来自(例如,可以分布在州、地区、国家、地球等上的一个或更多个数据中心的)中央或核心服务器的多个位置上。如果与用户(例如,客户端设备)的连接相对靠近边缘服务器,则核心服务器可以将功能的至少一部分指定给边缘服务器。基于云的网络环境可以是私有的(例如,限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
客户端设备可以包括图5B的示例处理系统500和/或图5C的示例性系统565的组件、特征和功能中的至少一些。作为示例而非限制,客户机设备可被实现为个人计算机(PC)、膝上型计算机、移动设备、智能电话、平板计算机、智能手表、可穿戴计算机、个人数字助理(PDA)、MP3播放器、虚拟现实耳机、全球定位系统(GPS)或装置,视频播放器、摄像机、监视设备或系统、车辆、船、飞船、虚拟机、无人机、机器人、手持式通信设备、医院设备、游戏设备或系统、娱乐系统、车辆计算机系统、嵌入式系统控制器,遥控器、电器、消费电子设备、工作站、边缘设备、这些描绘的设备的任何组合或任何其他合适的设备。
机器学习
在处理器(诸如PPU 400)上开发的深度神经网络(DNN)已经用于各种使用情况:从自驾车到更快药物开发,从在线图像数据库中的自动图像字幕到视频聊天应用中的智能实时语言翻译。深度学习是一种技术,它建模人类大脑的神经学习过程,不断学习,不断变得更聪明,并且随着时间的推移更快地传送更准确的结果。一个孩子最初是由成人教导,以正确识别和分类各种形状,最终能够在没有任何辅导的情况下识别形状。同样,深度学习或神经学习系统需要在物体识别和分类方面进行训练,以便在识别基本物体、遮挡物体等同时还有为物体分配情景时变得更加智能和高效。
在最简单的层面上,人类大脑中的神经元查看接收到的各种输入,将重要性水平分配给这些输入中的每一个,并且将输出传递给其他神经元以进行处理。人造神经元或感知器是神经网络的最基本模型。在一个示例中,感知器可以接收一个或更多个输入,其表示感知器正被训练为识别和分类的对象的各种特征,并且在定义对象形状时,这些特征中的每一个基于该特征的重要性赋予一定的权重。
深度神经网络(DNN)模型包括许多连接节点(例如,感知器、玻尔兹曼机器、径向基函数、卷积层等)的多个层,其可以用大量输入数据来训练以快速高精度地解决复杂问题。在一个示例中,DNN模型的第一层将汽车的输入图像分解为各个部分,并查找基本图案(诸如线条和角)。第二层组装线条以寻找更高水平的图案,诸如轮子、挡风玻璃和镜子。下一层识别运载工具类型,最后几层为输入图像生成标签,识别特定汽车品牌的型号。
一旦DNN被训练,DNN就可以被部署并用于在被称为推理(inference)的过程中识别和分类对象或图案。推理的示例(DNN从给定输入中提取有用信息的过程)包括识别沉积在ATM机中的支票存款上的手写数字、识别照片中朋友的图像、向超过五千万用户提供电影推荐、识别和分类不同类型的汽车、行人和无人驾驶汽车中的道路危险、或实时翻译人类言语。
在训练期间,数据在前向传播阶段流过DNN,直到产生预测为止,其指示对应于输入的标签。如果神经网络没有正确标记输入,则分析正确标签和预测标签之间的误差,并且在后向传播阶段期间针对每个特征调整权重,直到DNN正确标记该输入和训练数据集中的其他输入为止。训练复杂的神经网络需要大量的并行计算性能,包括由PPU 400支持的浮点乘法和加法。与训练相比,推理的计算密集程度比训练更低,是一个延迟敏感过程,其中经训练的神经网络应用于它以前没有见过的新的输入,以进行图像分类、检测情绪、标识推荐、识别和翻译语音,以及通常推理新的信息。
神经网络严重依赖于矩阵数学运算,并且复杂的多层网络需要大量的浮点性能和带宽来提高效率和速度。采用数千个处理核心,针对矩阵数学运算进行了优化,并传送数十到数百TFLOPS的性能,PPU 400是能够传送基于深度神经网络的人工智能和机器学习应用所需性能的计算平台。
此外,应用本文公开的技术中的一项或更多项生成的图像可以用于训练、测试或证明(certify)用于识别现实世界中的对象和环境的DNN。此类图像可包括道路、工厂、建筑物、城市环境、农村环境、人、动物和任何其他物理对象或真实世界环境的场景。此类图像可用于训练、测试或证明在机器或机器人中采用以操纵、处理或修改现实世界中的物理对象的DNN。此外,此类图像可以用于训练、测试或证明在自主车辆中采用的DNN,以便在真实世界中导航和移动交通工具。另外,应用本文公开的一种或更多种技术生成的图像可用于向这种机器、机器人和车辆的用户传达信息。
图5C示出了根据至少一个实施例的可用于训练和利用机器学习的示例系统555的组件。如将要讨论的,可以由可以在单个实体或多个实体的控制下的计算设备和资源的各种组合或单个计算系统来提供各种组件。此外,可以由不同实体触发、发起或请求各方面。在至少一个实施例中,可以由与供应商环境506相关联的供应商来指导对神经网络的训练,而在至少一个实施例中,可以由能够通过客户端设备502或其他此类资源访问供应商环境的顾客或其他用户来请求训练神经网络。在至少一个实施例中,训练数据(或要由经训练的神经网络分析的数据)可以由供应商、用户或第三方内容供应商524等提供。在至少一个实施例中,客户端设备502可以是车辆或对象,其可以代表用户进行导航,例如,该用户可以提交请求和/或接收有助于设备导航的指令。
在至少一个实施例中,能够通过至少一个网络504提交请求以由供应商环境506接收。在至少一个实施例中,客户端设备可以是使用户能够生成和发送这样的请求的任何适当的电子和/或计算设备,例如但不限于,台式计算机、笔记本计算机、计算机服务器、智能手机、平板电脑、游戏机(便携式或其他方式)、计算机处理器、计算逻辑和机顶盒等。一个或更多个网络504可以包括用于发送请求或其他这样的数据的任何适当的网络,例如可以包括因特网、内联网、以太网、蜂窝网络、局域网(LAN)、广域网(WAN)、个域网(PAN)、在对等体之间进行直接无线连接的自组网络等等。
在至少一个实施例中,可以在接口层508处接收请求,在该示例中,该接口层可以将数据转发到训练和推理管理器532。在至少一个实施例中,该训练和推理管理器532可以是包括用于管理与数据或内容相一致的服务和请求的硬件和软件的系统或服务,在至少一个实施例中,训练和推理管理器532可以接收训练神经网络的请求,并且可以将请求的数据提供给训练模块512。在至少一个实施例中,如果请求未指定,则训练模块512可以选择要使用的适当模型或网络,并可以使用相关的训练数据来训练模型。在至少一个实施例中,训练数据可以是从客户端设备502接收的或从第三方供应商524获得的被存储到训练数据存储库514的一批数据。在至少一个实施例中,训练模块512可以负责训练数据。神经网络可以是任何适当的网络,例如循环神经网络(RNN)或卷积神经网络(CNN)等。一旦训练了神经网络并成功评估了神经网络,就可以将经训练的神经网络存储在模型存储库516中,例如,模型存储库可以存储用于用户、应用程序或服务等的不同模型或网络。在至少一个实施例中,针对单个应用程序或实体可能存在多个模型,如可以基于多个不同因素来利用多个模型。
在至少一个实施例中,在随后的时间点,可以从客户端设备502(或另一个这样的设备)接收对至少部分地由经训练的神经网络确定或影响的内容(例如,路径确定)或数据的请求。该请求可以包括例如要使用神经网络处理的输入数据,以获得一个或更多个推理或其他输出值、分类或预测或用于至少一个实施例,尽管也可以使用不同的系统或服务,但是输入数据可以由接口层508接收并且被引导到推理模块518。在至少一个实施例中,如果尚未本地存储到推理模块518,则推理模块518可以从模型存储库516中获得适当的经训练的网络,例如本文所述的经训练的深度神经网络(DNN)。推理模块518可以将数据作为输入提供给经训练的网络,然后其可以生成一个或更多个推理作为输出。例如,这可以包括输入数据的实例的分类。在至少一个实施例中,然后可以将推理发送到客户端设备502以向用户显示或与用户进行其他通信。在至少一个实施例中,用户的上下文数据也可以存储到用户上下文数据存储库522,该存储库可以包括关于用户的数据,该数据可以作为网络输入对于生成推理或确定获得实例后返回给用户的数据是有用的。在至少一个实施例中,可包括输入或推理数据中的至少一些的相关数据也可以被存储到本地数据库534以用于处理将来的请求。在至少一个实施例中,用户可以使用账户信息或其他信息来访问供应商环境的资源或功能。在至少一个实施例中,如果允许和可用,还可以收集用户数据并将其用于进一步训练模型,以便为将来的请求提供更准确的推理。在至少一个实施例中,可以通过用户界面接收对在客户端设备502上执行机器学习应用526的请求,并通过相同的界面显示结果。客户端设备可以包括资源,诸如用于生成请求和处理结果或响应的处理器528和内存562,以及用于存储用于机器学习应用526的数据的至少一个数据存储元件552。
在至少一个实施例中,处理器528(或训练管理器512或推理模块518的处理器)将是中央处理单元(CPU)。但是,如上所述,此类环境中的资源可以利用GPU来处理用于至少某些类型的请求的数据。具有数千个核心的GPU(例如PPU 300)被设计用于处理大量的并行工作负载,因此在用于训练神经网络和生成预测的深度学习中变得很流行。虽然使用GPU进行离线构建可以更快地训练更大、更复杂的模型,但离线生成预测意味着无法使用请求-时间输入特征,或者必须针对所有特征排列生成预测并将其存储在查找表中以服务实时请求。如果深度学习框架支持CPU模式,并且模型足够小且简单以至可以合理的延迟在CPU上执行前馈,则CPU实例上的服务可以托管模型。在这种情况下,可以在GPU上离线地进行训练,并在CPU上实时进行推理。如果CPU方法不是可行的,则服务可以在GPU实例上运行。但是,由于GPU具有与CPU不同的性能和成本特征,因此运行将运行时算法卸载到GPU的服务可能要求将其设计成与基于CPU的服务不同。
在至少一个实施例中,可以从客户端设备502提供视频数据以在供应商环境506中增强。在至少一个实施例中,视频数据可被处理以在客户端设备502上进行增强。在至少一个实施例中,视频数据可以从第三方内容供应商524流式传输并且由第三方内容供应商524、供应商环境506或客户端设备502增强。在至少一个实施例中,视频数据可从客户机设备502提供以在供应商环境506中用作训练数据。
在至少一个实施例中,有监督和/或无监督训练可以由客户端设备502和/或供应商环境506来执行。在至少一个实施例中,可以作为输入提供一组训练数据514(例如,分类的或标记的数据)以用作训练数据。在至少一个实施例中,训练数据可包括神经网络被训练所针对的至少一种类型的对象的实例,以及标识该类型的对象的信息。在至少一个实施例中,训练数据可包括各自包括对象类型的表示的一组图像,其中每个图像还包括标签、元数据、分类或标识在相应图像中表示的对象类型的其他信息或与其相关联。各种其他类型的数据也可被用作训练数据,并且可包括文本数据、音频数据、视频数据等。在至少一个实施例中,训练数据514作为训练输入被提供给训练模块512。在至少一个实施例中,训练模块512可以是包括硬件和软件的系统或服务,诸如用于训练神经网络(或其他模型或算法等)的执行训练应用的一个或更多个计算设备。在至少一个实施例中,训练模块512接收指示要用于训练的模型的类型的指令或请求,在至少一个实施例中,模型可以是用于这样的目的的任何适当的统计模型、网络或算法,如可以包括人工神经网络、深度学习算法、学习分类器、贝叶斯网络等。在至少一个实施例中,训练模块512可以从适当的储存库516中选择初始模型或其他未经训练的模型,并利用训练数据514来训练模型,从而生成可以用于对相似类型的数据进行分类的经训练的模型(例如,经训练的深度神经网络),或者生成其他这样的推理。在其中不使用训练数据的至少一个实施例中,仍然可以选择适当的初始模型用于每个训练模块512对输入数据进行训练。
在至少一个实施例中,可以用多种不同的方式来训练模型,如可以部分地取决于所选择的模型的类型。在至少一个实施例中,机器学习算法可以被提供有训练数据集,其中模型是由训练过程创建的模型伪像。在至少一个实施例中,训练数据的每个实例包括正确的答案(例如,分类),其可以被称为目标或目标属性。在至少一个实施例中,学习算法在训练数据中找到将输入数据属性映射到目标的模式、要预测的答案,并且输出捕获这些模式的机器学习模型。在至少一个实施例中,然后可以使用机器学习模型来获得关于未指定目标的新数据的预测。
在至少一个实施例中,训练和推理管理器532可以从包括二进制分类、多类别分类、生成和回归模型的机器学习模型的集合中进行选择。在至少一个实施例中,要使用的模型的类型可至少部分地取决于要预测的目标的类型。
示例流式传输系统
应用本文公开的技术中的一项或更多项生成的图像可以显示在监视器或其他显示设备上。在一些实施例中,显示设备可直接耦合到生成或渲染图像的系统或处理器。在其他实施例中,显示设备可例如经由网络间接耦合到系统或处理器。此类网络的实例包括互联网、移动电信网络、WIFI网络、以及任何其他有线和/或无线联网系统。当显示设备间接耦合时,由系统或处理器生成的图像可经由网络流式传输到显示设备。这样的流式传输允许例如在服务器上、数据中心或在基于云的计算环境中执行渲染图像的视频游戏或其他应用,并且所渲染的图像将被传输和显示在物理地与服务器或数据中心分开的一个或更多个用户设备(诸如计算机、视频游戏控制台、智能电话、其他移动设备等)上。所以,本文公开的技术可以应用于增强流传输的图像以及增强流传输图像的服务,诸如NVIDIA GeForce Now(GFN)、Google Stadia等。
图6是根据本公开的一些实施例的流式传输系统605的示例系统图。在实施例中,流式传输系统605是游戏流式传输系统。图6包括一个或更多个服务器603(其可以包括与图5A的示例处理系统500和/或图5B的示例性系统565类似的组件、特征和/或功能),一个或更多个客户端设备604(其可以包括与图5A的示例处理系统500和/或图5B的示例性系统565类似的组件、特征和/或功能),以及一个或更多个网络606(其可以类似于本文描述的一个或更多个网络)。在本公开的一些实施例中,系统605可被实现。
在系统605中,对于游戏会话,一个或更多个客户端设备604可以仅响应于对一个或更多个输入设备的输入接收输入数据,将输入数据发送至一个或更多个服务器603,从一个或更多个服务器603接收经编码的显示数据,并且在显示器624上显示该显示数据。如此,将计算上更密集的计算和处理卸载至一个或更多个服务器603(例如,渲染——具体为光线或路径追踪——以供一个或更多个服务器603的一个或更多个GPU执行游戏会话的图形输出)。换言之,游戏会话被从服务器603流传输到客户端设备604,从而降低客户端设备604对图形处理和渲染的要求。
例如,关于游戏会话的实例,客户端设备604可以基于从服务器603接收显示数据在显示器624上显示游戏会话的帧。客户端设备604可以接收到一个或更多个输入设备之一的输入并且作为响应生成输入数据。客户端设备604可以经由通信接口621并且通过一个或更多个网络606(例如,互联网)将输入数据发送到一个或更多个服务器603,并且一个或更多个服务器603可以经由通信接口618接收输入数据。CPU可接收输入数据,处理输入数据,并将数据发送到GPU,其使得GPU生成游戏会话的渲染。例如,输入数据可以表示在游戏中用户的角色的移动、武器开火、重新装载、传球、转动车辆等。渲染组件612可以渲染游戏会话(例如,表示输入数据的结果),并且渲染捕获组件614可以捕获游戏会话的渲染作为显示数据(例如,捕获游戏会话的所渲染的帧的图像数据)。游戏会话的渲染可以包括使用一个或更多个并行处理单元(如GPU)计算的光线或路径追踪的照明和/或阴影效果,该一个或更多个并行处理单元可以进一步采用一个或更多个专用硬件加速器或处理核来执行服务器603的光线或路径追踪技术。编码器616可接着编码显示数据以生成经编码的显示数据,且经编码的显示数据可经由通信接口618通过网络606发送到客户端设备604。客户端设备604可以经由通信接口621接收经编码的显示数据,并且解码器622可以对经编码的显示数据进行解码以生成显示数据。客户端设备604可接着经由显示器624显示显示数据。
应注意的是,本文描述的技术可以被体现在存储在计算机可读介质中的可执行指令中,以供基于处理器的指令执行机器、系统、设备或装置使用或与其结合使用。所属领域的技术人员将了解,对于一些实施例,可包括不同类型的计算机可读介质用于存储数据。如本文中所使用的,“计算机可读介质”包括用于存储计算机程序的可执行指令的任何合适的介质中的一个或更多个,从而使得指令执行机器、系统、装置或设备可以从计算机可读介质读取(或获取)指令并且执行用于实施所描述的实施例的指令。合适的存储格式包括电子、磁、光和电磁格式中的一个或更多个。常规示例性计算机可读介质的非穷举列表包括:便携式计算机盘;随机存取存储器(RAM);只读存储器(ROM);可擦除可编程只读存储器(EPROM);闪存设备;以及光学存储设备,包括便携式压缩盘(CD)、便携式数字视频盘(DVD)等。
应理解的是,附图中所示出的组件的布置是出于说明性目的并且其他布置是可能的。例如,本文中所描述的元件中的一个或更多个可整体或部分地实现为电子硬件组件。其他元件可以软件、硬件或软件和硬件的组合实现。此外,可以组合这些其他元件中的一些或全部,可以完全省略一些元件,并且可以在仍然实现本文所描述的功能的同时添加附加组件。由此,本文描述的主题可以许多不同的变型来体现,并且所有这样的变型都被设想为在权利要求的范围内。
为了便于理解本文描述的主题,按照动作序列描述了许多方面。所属领域的技术人员将认识到,不同动作可由专用电路或电路、由一个或更多个处理器执行的程序指令或由两者的组合来执行。本文中对任何动作序列的描述并不旨在暗示必须遵循所描述的用于执行该序列的特定顺序。除非本文另有指示或上下文明显矛盾,本文所述的所有方法都可以任何合适的顺序进行。
术语“一个/一种(a)”和“该(the)”以及在描述该主题的上下文中(特别是在以下权利要求的上下文中)的类似参考的使用应被解释为覆盖单数和复数两者,除非本文另外指明或与上下文明显矛盾。跟随有一个或更多个项目的列表的术语“至少一个”的使用(例如,“A和B中的至少一个”)应被解释为意指选自所列出的项目(A或B)的一个项目或所列出的项目(A和B)中的两个或更多个的任何组合,除非本文另有说明或与上下文明显矛盾。此外,前面的描述仅用于说明的目的,而不是用于限制的目的,因为所寻求的保护范围由所阐述的权利要求及其任何等同物限定。本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地说明该主题,并且不对该主题的范围造成限制,除非另外声明。在权利要求书和书面说明书中使用术语“基于”和指示引起结果的条件的其他类似短语并不旨在排除引起该结果的任何其他条件。说明书中的语言不应被解释为指示任何未要求保护的元素对于如所要求保护的本发明的实践是必不可少的。

Claims (20)

1.一种计算机实现的方法,包括:
接收包括输入数据和地面实况输出的训练数据,其中所述输入数据与第一分布相关联;
将至少一个增强应用于所述输入数据以产生与第二分布相关联的增强的输入数据,其中对应于从所述第一分布到所述第二分布的变换的增强算子是可逆的并且指定所述至少一个增强;
由神经网络模型根据参数处理所述增强的输入数据以产生输出数据;以及
调整所述参数以减小所述输出数据与所述地面实况输出之间的差异。
2.根据权利要求1所述的计算机实现的方法,其中所述第一分布仅是这样的分布,针对所述分布的所述增强算子将所述第一分布变换成与所述第二分布匹配的增强的分布。
3.根据权利要求1所述的计算机实现的方法,其中所述输入数据包括生成的数据的第一子集和真实数据的第二子集,所述输出数据包括指示第一状态或第二状态的值,并且调整所述参数使得针对所述第一子集产生的所述输出数据的第一部分更接近地匹配所述第一状态,并且针对所述第二子集产生的所述输出数据的第二部分更接近地匹配所述第二状态。
4.根据权利要求1所述的计算机实现的方法,其中所述输入数据包括图像,并且所述至少一个增强针对所述训练数据中的至少一个图像被禁用。
5.根据权利要求1所述的计算机实现的方法,其中所述应用进一步包括:基于值随机地禁用针对所述输入数据的部分的所述至少一个增强的应用。
6.根据权利要求5所述的计算机实现的方法,在重复应用和处理的过程中动态地调整所述值。
7.根据权利要求6所述的计算机实现的方法,其中基于所述输出数据的至少部分增大或减小所述值。
8.根据权利要求6所述的计算机实现的方法,其中将所述输出数据的至少部分与参考进行比较以产生结果,并且基于所述结果来调整所述值。
9.根据权利要求1所述的计算机实现的方法,其中所述至少一个增强是可微分的。
10.根据权利要求1所述的计算机实现的方法,其中所述至少一个增强被实现为不同增强的序列。
11.根据权利要求1所述的计算机实现的方法,其中所述输入数据包括生成的数据的第一子集和真实数据的第二子集,并且所述第一子集由生成器神经网络模型基于第二参数来产生。
12.根据权利要求11所述的计算机实现的方法,还包括:在调整所述参数之后,调整所述第二参数以使得所述第一子集和所述第二子集的分布更紧密地匹配。
13.根据权利要求1所述的计算机实现的方法,其中所述应用、处理和调整的步骤在云计算环境内执行。
14.根据权利要求1所述的计算机实现的方法,其中所述应用、处理和调整的步骤在服务器上或在数据中心中执行,并且将所述输出数据和所述参数中的至少一个流式传输至用户设备。
15.根据权利要求1所述的计算机实现的方法,其中所述神经网络模型用于训练、测试或认证在机器、机器人或自主车辆中采用的另一神经网络模型。
16.根据权利要求1所述的计算机实现的方法,其中所述应用、处理和调整的步骤在包括图形处理单元的部分的虚拟机上执行。
17.一种系统,包括:
处理器,被配置为:
接收包括输入数据和地面实况输出的训练数据,其中所述输入数据与第一分布相关联;
将至少一个增强应用于所述输入数据以产生与第二分布相关联的增强的输入数据,其中对应于从所述第一分布到所述第二分布的变换的增强算子是可逆的并且指定所述至少一个增强;
由神经网络模型根据参数处理所述增强的输入数据以产生输出数据;以及
调整所述参数以减小所述输出数据与所述地面实况输出之间的差异。
18.根据权利要求17所述的系统,其中所述第一分布仅是这样的分布,将针对所述分布的所述至少一个增强应用于所述第一分布导致与所述第二分布匹配的增强的分布。
19.一种非暂时性计算机可读介质,其存储计算机指令,所述计算机指令在由一个或更多个处理器执行时,致使所述一个或更多个处理器执行以下步骤:
接收包括输入数据和地面实况输出的训练数据,其中所述输入数据与第一分布相关联;
将至少一个增强应用于所述输入数据以产生与第二分布相关联的增强的输入数据,其中对应于从所述第一分布到所述第二分布的变换的增强算子是可逆的并且指定所述至少一个增强;
由神经网络模型根据参数处理所述增强的输入数据以产生输出数据;以及
调整所述参数以减小所述输出数据与所述地面实况输出之间的差异。
20.一种计算机实现的方法,包括:
接收包括输入数据和地面实况输出的训练数据,其中所述输入数据与第一分布相关联;
识别与从所述第一分布到第二分布的变换相对应的可逆增强算子;
选择由所述增强算子指定的至少一个增强;
使用所述至少一个增强来增强所述输入数据以产生与所述第二分布相关联的增强的输入数据;
由神经网络模型根据参数处理所述增强的输入数据以产生输出数据;以及
调整所述参数以减小所述输出数据与所述地面实况输出之间的差异。
CN202110623844.1A 2020-06-05 2021-06-04 使用可逆增强算子采用有限数据训练神经网络 Pending CN113762461A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063035448P 2020-06-05 2020-06-05
US63/035,448 2020-06-05
US17/210,934 US20210383241A1 (en) 2020-06-05 2021-03-24 Training neural networks with limited data using invertible augmentation operators
US17/210,934 2021-03-24

Publications (1)

Publication Number Publication Date
CN113762461A true CN113762461A (zh) 2021-12-07

Family

ID=78605367

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110623844.1A Pending CN113762461A (zh) 2020-06-05 2021-06-04 使用可逆增强算子采用有限数据训练神经网络

Country Status (2)

Country Link
CN (1) CN113762461A (zh)
DE (1) DE102021205690A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114338385A (zh) * 2021-12-31 2022-04-12 上海商汤智能科技有限公司 网络配置方法及系统、电子设备和存储介质
CN116248412A (zh) * 2023-04-27 2023-06-09 中国人民解放军总医院 共享数据资源异常检测方法、系统、设备、存储器及产品
CN116664566A (zh) * 2023-07-28 2023-08-29 成都数智创新精益科技有限公司 一种oled面板丝印质量控制方法及系统及装置及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2016159017A1 (ja) * 2015-03-31 2018-02-01 国立大学法人東北大学 磁気抵抗効果素子、磁気メモリ装置、製造方法、動作方法、及び集積回路
US20180101784A1 (en) * 2016-10-05 2018-04-12 D-Wave Systems Inc. Discrete variational auto-encoder systems and methods for machine learning using adiabatic quantum computers
CN109313724A (zh) * 2016-06-01 2019-02-05 科磊股份有限公司 针对半导体应用并入神经网络及前向物理模型的系统及方法
CN110800062A (zh) * 2017-10-16 2020-02-14 因美纳有限公司 用于变体分类的深度卷积神经网络
CN110892417A (zh) * 2017-06-05 2020-03-17 D5Ai有限责任公司 具有学习教练的异步代理以及在不降低性能的情况下在结构上修改深度神经网络
CN111145106A (zh) * 2019-12-06 2020-05-12 深圳市雄帝科技股份有限公司 一种图像增强方法、装置、介质及设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2016159017A1 (ja) * 2015-03-31 2018-02-01 国立大学法人東北大学 磁気抵抗効果素子、磁気メモリ装置、製造方法、動作方法、及び集積回路
CN109313724A (zh) * 2016-06-01 2019-02-05 科磊股份有限公司 针对半导体应用并入神经网络及前向物理模型的系统及方法
US20180101784A1 (en) * 2016-10-05 2018-04-12 D-Wave Systems Inc. Discrete variational auto-encoder systems and methods for machine learning using adiabatic quantum computers
CN110892417A (zh) * 2017-06-05 2020-03-17 D5Ai有限责任公司 具有学习教练的异步代理以及在不降低性能的情况下在结构上修改深度神经网络
CN110800062A (zh) * 2017-10-16 2020-02-14 因美纳有限公司 用于变体分类的深度卷积神经网络
CN111145106A (zh) * 2019-12-06 2020-05-12 深圳市雄帝科技股份有限公司 一种图像增强方法、装置、介质及设备

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114338385A (zh) * 2021-12-31 2022-04-12 上海商汤智能科技有限公司 网络配置方法及系统、电子设备和存储介质
CN116248412A (zh) * 2023-04-27 2023-06-09 中国人民解放军总医院 共享数据资源异常检测方法、系统、设备、存储器及产品
CN116248412B (zh) * 2023-04-27 2023-08-22 中国人民解放军总医院 共享数据资源异常检测方法、系统、设备、存储器及产品
CN116664566A (zh) * 2023-07-28 2023-08-29 成都数智创新精益科技有限公司 一种oled面板丝印质量控制方法及系统及装置及介质
CN116664566B (zh) * 2023-07-28 2023-09-26 成都数智创新精益科技有限公司 一种oled面板丝印质量控制方法及系统及装置及介质

Also Published As

Publication number Publication date
DE102021205690A1 (de) 2021-12-09

Similar Documents

Publication Publication Date Title
US11620521B2 (en) Smoothing regularization for a generative neural network
US20210383241A1 (en) Training neural networks with limited data using invertible augmentation operators
CN113762461A (zh) 使用可逆增强算子采用有限数据训练神经网络
CN113496271A (zh) 神经网络控制变量
US20220198622A1 (en) High dynamic range support for legacy applications
US11522565B2 (en) Packed error correction code (ECC) for compressed data protection
US11610370B2 (en) Joint shape and appearance optimization through topology sampling
US20230052645A1 (en) Multiresolution hash encoding for neural networks
US20220222832A1 (en) Machine learning framework applied in a semi-supervised setting to perform instance tracking in a sequence of image frames
US20220391781A1 (en) Architecture-agnostic federated learning system
CN114647527A (zh) 在基于云的流式应用程序中测量和检测空闲处理时段并确定其根本原因
US11282258B1 (en) Adaptive sampling at a target sampling rate
US20230298243A1 (en) 3d digital avatar generation from a single or few portrait images
US20230237342A1 (en) Adaptive lookahead for planning and learning
US20230252692A1 (en) Learning dense correspondences for images
US20220398283A1 (en) Method for fast and better tree search for reinforcement learning
US20230062503A1 (en) Pruning and accelerating neural networks with hierarchical fine-grained structured sparsity
US20230289509A1 (en) Parallel mask rule checking on evolving mask shapes in optical proximity correction flows
US11830145B2 (en) Generation of differentiable, manifold meshes of arbitrary genus
US11605001B2 (en) Weight demodulation for a generative neural network
CN113408694A (zh) 用于生成式神经网络的权重解调
US20240127067A1 (en) Sharpness-aware minimization for robustness in sparse neural networks
US11689750B2 (en) Workload-based dynamic throttling of video processing functions using machine learning
US20240112308A1 (en) Joint neural denoising of surfaces and volumes
US20230111375A1 (en) Augmenting and dynamically configuring a neural network model for real-time systems

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