CN115496197A - 减少混叠的生成神经网络 - Google Patents

减少混叠的生成神经网络 Download PDF

Info

Publication number
CN115496197A
CN115496197A CN202210665806.7A CN202210665806A CN115496197A CN 115496197 A CN115496197 A CN 115496197A CN 202210665806 A CN202210665806 A CN 202210665806A CN 115496197 A CN115496197 A CN 115496197A
Authority
CN
China
Prior art keywords
data
intermediate data
neural network
resolution
upsampling
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
CN202210665806.7A
Other languages
English (en)
Inventor
T·T·卡拉斯
M·S·艾塔拉
S·M·莱内
E·A·海尔克宁
J·J·海尔斯顿
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
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN115496197A publication Critical patent/CN115496197A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4046Scaling of whole images or parts thereof, e.g. expanding or contracting using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4053Scaling of whole images or parts thereof, e.g. expanding or contracting based on super-resolution, i.e. the output image resolution being higher than the sensor resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/20Linear translation of whole images or parts thereof, e.g. panning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/60Rotation of whole images or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/12Indexing scheme for image data processing or generation, in general involving antialiasing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Image Processing (AREA)

Abstract

公开了减少混叠的生成神经网络。公开了改进任何神经网络(特别是图像生成神经网络)的输出质量的系统和方法。在现实世界中,不同尺度的细节倾向于分层次变换。例如,移动一个人的头会导致鼻子移动,这反过来又移动了鼻子上的皮肤毛孔。传统的生成神经网络不会以自然的层次结构方式合成图像:粗糙特征似乎主要控制着更精细的特征的存在,但不能控制更精细的特征的精确位置。相反,许多精细细节似乎都固定在像素坐标上,这是混叠的一种体现。混叠破坏了固体连贯物体在空间中移动的错觉。减少混叠的生成神经网络提供了一种表现出更为自然的变换层次结构的架构,其中每个特征的确切子像素位置继承自底层粗糙特征。

Description

减少混叠的生成神经网络
要求优先权
本申请要求2021年6月17日提交的标题为“无混叠生成对抗网络(Alias-FreeGenerative Adversarial Networks)”的美国临时申请No.63/211,899,以及2021年9月14日提交的标题为“无混叠生成对抗神经网络(Alias-Free Generative AdversarialNeural Networks)”的美国临时申请No.63/244,125的权益,其全部内容均通过引用并入本文。
背景技术
图像合成神经网络,例如生成人脸图像的那些,可用于产生逼真的图像。但是,随着整体图像质量的提高,剩余的视觉伪像变得更加明显,尤其是在引入运动时。例如,当一个人的头相对于相机旋转时,耳朵和眼睛也会旋转,但更细的细节,例如人的牙齿、皱纹、雀斑、胡须等,通常不会像预期的那样随着头或脸部表面旋转。反而,更细的细节或纹理似乎“粘”在图像坐标上,而不是随着生理层次移动。这些粘性的视觉伪像是神经网络的中间特征图中混叠的一种表现。需要解决与现有技术相关的这些问题和/或其他问题。
发明内容
本公开的实施例与减少混叠的生成神经网络有关。公开的系统和方法提高了任何神经网络的输出质量和/或性能,尤其是图像生成神经网络。在现实世界中,不同规模的细节倾向于分层次变换。例如,移动一个人的头会导致鼻子移动,进而将皮肤上的毛孔移动。生成神经网络的结构类似:粗糙、低分辨率的特征通过上采样分层次细化,通过卷积局部混合,并通过非线性运算引入新的细节。尽管层次结构具有表面的相似性,但传统的生成神经网络架构并未以自然的层次结构方式合成图像:粗糙特征似乎主要控制着更精细特征的存在,但不能控制更精细特征的精确位置。反而,由于混叠,许多精细细节似乎固定在像素坐标上,这导致了残留视觉伪像。烦人的“残留(sticking)”破坏了固体连贯物体在空间中移动的错觉。减少混叠的生成神经网络提供了一种表现出更为自然的变换层次结构的架构,其中每个特征的子像素位置继承自底层粗糙特征。
与传统系统(例如上述系统)相反,减少混叠的生成神经网络将输出数据中的详细信息附加到每层中间数据中的特征,而不是将详细信息附加到图像坐标(例如,均匀间距的像素位置)。在实施例中,详细信息专门附加到每层中间数据。混叠减少技术为生成的视频提供了更自然的运动。例如,当一个人旋转其头部时,他的牙齿也会随着运动而平移而不是保持静止。在神经网络的层中执行的特征上采样和非线性运算期间发生混叠。由传统生成神经网络执行的上采样、下采样和逐点非线性运算已被修改以减少混叠性能。
公开了一种用于减少混叠的生成神经网络的方法、计算机可读介质和系统。在一个实施例中,该方法包括神经网络模型接收低分辨率输入数据,其通过一系列阶段(例如层)处理以产生高分辨率输出数据。对于在一系列阶段中执行的将逐点非线性应用于原始分辨率下的中间数据的每个操作,处理包括:上采样所述中间数据以产生分辨率增加的中间数据;将所述逐点非线性应用于所述分辨率增加的中间数据以产生经处理的分辨率增加的中间数据;以及下采样所述经处理的分辨率增加的中间数据以产生经处理的中间数据。在一个实施例中,经处理的中间数据处于原始分辨率或与原始分辨率相比更高的分辨率。
附图说明
下面参考附图详细描述减少混叠的生成神经网络的本系统和方法,其中:
图1A示出了使用传统生成神经网络生成的图像和根据实施例的使用减少混叠的生成神经网络生成的图像。
图1B示出了根据现有技术的使用传统生成神经网络生成的图像的精细细节。
图1C示出了根据实施例的使用减少混叠的生成神经网络生成的图像的精细细节。
图1D示出了可用于实现本公开的某些实施例的减少混叠的生成神经网络以及在不同级别的层次结构的概念特征图。
图1E是示出用于实现本公开的某些实施例的特征图的离散和连续表示的概念图。
图2A示出了用于传统生成神经网络的示例处理层和适用于实现本公开的某些实施例的用于减少混叠的生成神经网络的示例处理层的框图。
图2B示出了根据实施例的用于近似无混叠操作的方法的流程图。
图2C示出了由传统生成神经网络产生的特征图和由根据实施例的减少混叠的生成神经网络产生的特征图。
图3示出了一个示例并行处理单元,适用于实施本公开的某些实施例。
图4A示出了适用于实现本公开的一些实施例的图3的并行处理单元内的示例通用处理集群。
图4B示出了适用于实现本公开的一些实施例的图3的并行处理单元的示例存储器分区单元。
图4C示出了适用于实现本公开的一些实施例的图4A的流式多处理器的示例。
图5A为适用于实现本公开的一些实施例的、使用图4的PPU实现的处理系统的概念图。
图5B示出了其中可以实现各种先前实施例的各种架构和/或功能的示例性系统。
图5C示出了在至少一个实施例中可以用于训练和利用机器学习的示例性系统的组件。
图6示出了适用于实现本公开的一些实施例的示例性流式系统。
具体实施方式
公开了与减少混叠的生成神经网络有关的系统和方法。图像合成用于多种应用,包括图像编辑、域转换和视频生成。生成神经网络也可用于合成三维(3D)卷、音频信号等。减少混叠的生成神经网络提供表现出更为自然的变换层次结构的架构。例如,在实施例中,每个特征的确切子像素位置专门从底层粗糙特征继承。粗糙特征不仅控制着更精细特征的存在,而且还控制了更精细特征在表面上(例如,面,头等)的位置。因此,生成神经网络减少了混叠,包括但不限于残留视觉伪像。
尽管生成神经网络的层次结构卷积性质,但传统生成神经网络的合成过程以不健康的方式取决于绝对像素坐标。依赖关系表现为,例如,细节似乎被粘在图像坐标上,而不是所描绘的对象的表面。传统的生成神经网络通过利用中间层可用的无意位置参考来部分地规避理想的层次结构。通常,神经网络可能非常懒惰,并且在可能的情况下,采用捷径绕过严格的层次结构细化。位置信息的源包括图像边界和每像素的噪声输入。可以去除噪声输入并可以修改边界处理以消除其对此效果的贡献。即使在修改了边界并去除了每像素的噪声输入时,仍然存在残留伪像。其余的残留视觉伪像是神经网络的中间特征图内混叠的表现。
尽管混叠是一个微妙而关键的问题,但在神经网络文献中很少关注。可以确定两个混叠的来源:首先,由于非理想的上采样滤波器(例如,最近的、双线性、有学习内核的权重的跨步卷积)而导致的像素网格的模糊后图像;其次,非线性的逐点应用,例如整流线性激活函数(RELU)。传统的生成神经网络具有放大即使是最轻微的混叠量的手段和动机,并且当在多个尺度上组合时,传统的生成神经网络可以为定义在屏幕坐标中固定的更精细细节的纹理图案建立基础。大多数在深度学习中常用的滤波器引入了混叠,甚至在图像处理中使用的高质量滤波器。通过传统的生成神经网络的处理通常会放大引入的混叠。
图1A示出了使用传统的生成神经网络生成的图像和根据实施例的使用减少混叠的生成神经网络生成的图像。生成的图像105是使用传统生成神经网络从潜在代码合成的,并且生成的图像110是使用减少混叠的生成神经网络从潜在代码合成的。生成的图像105和110似乎都是高质量和逼真的。通过将响应于潜在代码中的小更改(例如,随机的扰动)生成的同一区域的图像平均来说明混叠或“纹理残留”。如果没有混叠,结果应是均匀模糊的,因为精细细节应随表面移动而不是粘在像素坐标上。然而,正如表示由传统生成神经网络产生的几张图像的平均的平均生成的图像115所示,一些精细细节,例如毛皮,粘在相同的像素坐标并且显得清晰且明确。相比之下,表示由减少混叠的生成神经网络产生的几张图像的平均的平均生成的图像120,精细细节看起来均匀模糊。
图1B示出了根据现有技术的使用传统生成神经网络生成的图像121、122和123的精细细节。图像121、122和123(以及未显示的附加图像)经由潜在空间插值随时间顺序合成,以产生随时间平稳过渡的中间图像,从而产生变形效果。从图像121、122和123中的每个图像中的相同位置提取像素的短垂直段,以分别产生像素区域125、126和127。像素区域125、126和127被水平地组织(堆叠),如放大区域128所示。期望的结果是头发在动画中移动,创建一个时间变化场。放大区域128还包括水平堆叠的附加像素区域,其中从图像121和122之间以及图像122和123之间合成的附加图像中提取了附加区域。如从放大区域128中的像素区域125到像素区域126并延伸至像素区域127的水平条纹所示,头发在时间上几乎没有变化。
图1C示出了根据实施例的使用减少混叠的生成神经网络生成的图像131、132和133的精细细节。图像131、132和133(以及未显示的附加图像)经由潜在空间插值随时间顺序合成,以产生随时间平稳过渡的中间图像,从而产生变形效果。从图像131、132和133中每个图像的相同位置提取像素的短垂直段,以分别产生像素区域135、136和137。像素区域135、136和137被水平地组织(堆叠),如放大区域138所示。放大区域138还包括水平堆叠的附加像素区域,其中从图像131和132之间以及图像132和133之间合成的附加图像中提取附加区域。与放大区域128中几乎不变的头发相比,放大区域138中的头发随时间从像素区域135移动到像素区域136,并延伸到像素区域137,从而创建随时间变化的场。
现在,将根据用户的需求来阐明关于可以实现前述框架的各种可选架构和特征的更多说明性信息。应当强烈注意,以下信息是出于说明目的而列出的,不应解释为以任何方式进行限制。在排除或不排除所描述的其他特征的情况下,可以任选地结合以下任何特征。
图1D示出了适合用于实现本公开的某些实施例的减少混叠的生成神经网络100以及处理层次结构的不同级别的概念特征图141、142和143。在一个实施例中,减少混叠的生成神经网络100接收输入特征作为输入,其根据潜在代码被处理以合成输出数据。在实施例中,输出数据是生成的图像140。输出数据可以是一维(1D)信号(例如,音频数据)或更高维的数据(例如3D扫描),无限制。在实施例中,潜在代码包含512个数字。在一个实施例中,潜在代码被映射到中间潜在空间,以产生一个或更多个调制信号,该调制信号提供给生成神经网络100的至少一层。在一个实施例中,一个或更多个调制信号中的每个调制信号都与生成神经网络100的不同层级关联。在一个实施例中,输入特征是学习常数。在实施例中,输入特征是自然地定义连续特征图的傅里叶特征。基于输入特征和潜在代码合成输出数据。
随着每一层生成的特征图由生成神经网络100中的后续层或阶段处理,特征图141、142和143的分辨率增加。在一个或更多个层中,特征图被上采样以增加分辨率。例如,与特征图141和142相比,特征图143的分辨率更高。与特征图141相比,特征图142的分辨率更高。当使用简单的滤波器(例如最近邻)进行上采样时,可能会看到网格图案。即使使用更复杂的滤波器时,也可能看不到网格图案,但是传统的生成神经网络可能会积极尝试提取网格图案。
当特征图以连续形式而不是离散形式(例如,像素化)形式表示时,特征图145、146和147分别替换了特征图141、142和143。处理特征图145、146和147将产生无混叠的输出数据,但是处理需要更高的分辨率,因此每个计算的位宽度是无限的,这是不切实际的。但是,如本文进一步所述,可以执行上采样和其他操作,以更好地接近连续特征图145、146和147。
为了减少或消除混叠,应消除绕过分层细化的信息,从而防止生成神经网络100使用该信息。虽然可以通过简单地对稍大的图像进行操作来减少图像边界引入的信息,但减少或防止混叠更加困难。在经典的Shannon-Nyquist信号处理框架中最自然地处理混叠,并且可以通过将焦点切换到仅由离散样本网格表示的连续域上的带宽限制函数来找到解决方案。在连续域中,成功消除所有位置参考的源意味着,无论像素坐标如何,都可以同样好地生成细节,这继而等同于在生成神经网络100的所有层中强制执行与子像素平移(以及可选的旋转)的连续等变(equivariance)。
在视觉上,与子像素平移的等变意味着水平移位特征图141的一部分应引起每个后续特征图142和143以及输出数据的对应部分的移位,并且没有其他影响。类似地,与旋转的等变意味着旋转特征图141的一部分应旋转每个后续特征图142和143和输出数据的对应部分,并且没有其他影响。分数或子像素的平移和旋转在特征图141、142和143的离散形式中定义不明确,但对于连续形式145、146和147定义明确。
重新考虑传统生成神经网络的信号处理方面,传统的上采样滤波器在抑制混叠方面不够积极,并且可能需要具有超过100dB阻带衰减的极高品质滤波器。通过考虑连续域中的逐点非线性的影响并对结果进行适当的低通滤波,可以找到由逐点非线性引起的混叠的原则性解决方案。此外,将卷积运算约束到1×1内核可能会产生强大的旋转等变的生成神经网络100。一旦混叠被充分抑制以迫使生成神经网络100实施更自然的层次结构细化,生成神经网络100的操作急剧变化:细节正确地附着在底层表面,如图1C所示。
尽管数据可以作为值存储在像素网格中,例如离散特征图141、142和143,但不应假定这些值直接表示由生成神经网络100的层处理的信号。根据Nyquist-Shannon采样定理,定期采样的信号可以表示包含零至采样率的一半之间的频率的任何连续信号。考虑一个二维、离散采样的特征图Z[x],其由不同幅度的Dirac脉冲的规则网格组成,间隔1/s单位,其中s是采样率。这类似于无限的二维值网格。
给定Z[x]和s,Whittaker-Shannon插值公式指出,相应的连续表示z(x)是通过将离散采样的Dirac网格Z[x]与理想的插值滤波器φs进行卷积来获得的,即z(x)=(φs*Z)(x),其中*表示连续卷积,并且φs(x)=sinc(sx0)·sinc(sx1)使用定义sinc(x)=sin(πx)/(πx)的信号处理惯例。φs沿着水平和垂直维度具有s/2的带宽限制,确保所得的连续信号捕获可以用采样率s表示的所有频率。
图1E是示出在实现本公开的某些实施例中使用的特征图的离散和连续表示的概念图。离散特征图150的离散表示Z和连续特征图155的连续表示z通过使用理想的插值滤波器φs(样本滤波器160)的卷积和使用Dirac Comb IIIS(Dirac Comb(狄拉克梳状函数)165)的逐点乘法而相互关联。
从连续特征图155转换为离散特征图150域对应于在Z[x]的采样点处采样连续信号z(x),Z[x]的采样点可被定义为偏移一半的样本间隔以位于被示为圆圈的“像素中心”。连续特征图的采样可以表示为与二维Dirac Comb
Figure BDA0003691612720000071
z(x)中的单位正方形x∈[0,l]2(连续特征图155)可以被指定为感兴趣信号的画布。在离散特征图150Z[x]中,单位正方形中有s2个离散样本,但是与样本滤波器160φs的卷积,意味着单位正方形之外的Z[x]的值也会影响其内的z(x)。因此,存储s×s像素的特征图是不够的;在理论上讲,将需要存储整个无限Z[x]。作为一种实用的解决方案,Z[x]可以存储为二维阵列,该阵列覆盖了比单元正方形略大的区域。例如,将每个特征图141、142和143扩展到每个维度中至少包含一个附加特征值。扩展特征图消除了由边界引起的残留伪像。但是,由离散处理操作产生的混叠仍然存在并且如本文进一步描述的那样可以减少或消除。
建立了在带宽限制的、连续特征图155z(x)和离散采样的特征图150Z[x]之间的对应关系后,可以忽略信号的通常以像素为中心的视图以支持连续信号。在以下描述的上下文中,z(x)被解释为是正在操作的实际信号,而离散采样的特征图150Z[x]只是对连续特征图155z(x)的方便编码。
实用的神经网络在离散采样的特征图上运行,例如离散特征映射150。考虑在离散特征图上运行的操作F(卷积,非线性等):Z'=F(Z)。离散特征图(例如,离散特征图150)具有对应的连续对应物(例如连续特征图155),因此连续域中有一个对应的映射:z'=f(z)。现在,可以看到一个域中指定的操作在另一域中执行相应的操作:
f(z)=φs′*F(IIIs⊙z),F(Z)=IIIs′⊙f(φs*Z), 等式 (1)
其中⊙表示逐点乘法,s和s'是输入和输出采样率。
如果操作f在连续域中与空间变换t对易,则操作f相对于2D平面的空间变换t是等变的:
Figure BDA0003691612720000081
请注意,当输入被带宽限制到s/2时,等变操作不得生成高于s'/2的输出带宽限制的频率内容,否则不存在忠实的离散输出表示。例如,当连续特征图155的频率内容增加时,采样率s可能也需要增加以确保可以在离散域中表示连续域中的细节。未能使用足够的采样率会导致在离散特征图和输出的每个级别中显示为残留伪像的混叠。残留伪像不会相对于输入进行等变平移。根据Nyquist-Shannon采样定理,定期采样的离散特征图可以表示包含零和一半采样率之间的频率的连续特征图。
在旋转等变的情况下,频谱约束有些更严格—旋转图像对应于旋转频谱,并且为了保证在水平和垂直方向上的带宽限制,必须将频谱限制在半径为s’/2的圆盘上。如本文进一步所述,这同时适用于初始网络输入以及用于下采样的带宽限制滤波器。
典型的生成神经网络中的原始操作包括卷积、上采样、下采样和非线性。在不失一般性的情况下,操作被描述为在单个特征图上作用:特征的逐点线性组合对分析没有影响。考虑具有离散内核K的标准卷积。K可以解释为占用与输入特征图相同的网格,带有采样率s。离散域操作仅为Fconv(Z)=K*Z,并且从等式(1)获得对应的连续操作:
fconv(z)=φs*(K*(IIIs⊙z))=K*(φs*(IIIs⊙z))=K*z 等式(2)这是由于卷积的交换性以及被与理想低通滤波器卷积紧跟其后的离散化(两者都具有相同的采样率s)是恒等运算的事实,即φs*(IIIs⊙z)=z。换句话说,卷积是通过在特征图的连续表示上连续滑动离散化的内核来运行的。卷积没有引入新频率,因此满足了平移和旋转等变的带宽限制要求。
卷积还在连续域中与平移对易,因此卷积运算与平移等变。对于旋转等变,离散内核K需要径向对称。在一个实施例中,对称的l×l卷积内核尽管简单,但是是旋转等变生成神经网络的可行选择。
理想的上采样操作不会改变连续的表示,因为上采样的目的是增加输出采样率(s'>s)以增加频谱中的净空,其中生成神经网络100的后续层可能会引入额外内容。平移和旋转等变直接源于上采样是连续域中的恒等运算。在fup(z)=z的情况下,根据等式(1)的离散运算为Fup(Z)=(IIIs′⊙(ψs*Z))._选择具有整数n的s'=ns,离散运算可以通过首先将Z与零交错以提高其采样率,然后将交错的Z与离散化下采样滤波器IIIs′⊙φs卷积来实现。
在下采样中,z是低通滤波以移除高于输出带宽限制的频率,以便可以在更粗的离散化中忠实地表示信号。连续域中的运算是fdown(z)=ψs′*z,其中理想的低通滤波器ψs:=s2·φs仅仅是归一化为单位质量的相应插值滤波器。离散对应为Fdown(Z)=IIIs′⊙(ψs′*(φs*Z))=1/s2·IIIs′⊙(ψs′s*Z)=(s′/s)2·IIIs′⊙(φs′*Z)。后一个等式来自ψss′=ψmin(s,s′)。与上采样类似,整数分数的下采样可以通过离散卷积然后丢弃样本点来实现。平移等变自动遵循fdown(z)与平移的变换性,但是对于旋转等变φs′必须用具有圆盘状频率响应的径向对称滤波器替换。理想的这种滤波器是由
Figure BDA0003691612720000091
给定的,其中J1是第一类的贝塞尔函数。
在离散域中应用逐点非线性σ不会与分数平移或旋转对易。然而,在连续域中,任何逐点函数都与几何变换无关,因此与平移和旋转等变。满足带宽限制约束是另一个挑战——例如,在连续域中应用例如ReLU可能会引入无法在离散输出中表示的任意高频。
逐点非线性的自然解决方案是通过将连续结果与理想低通滤波器ψs进行卷积来消除有害的高频内容。则非线性的连续表示变为fσ(z)=ψs*σ(z)=s2·φs*σ(z),离散对应为Fσ(Z)=s2·IIIs⊙(φs*σ(φs*Z))。不临时进入连续表示,就无法实现离散运算。可以通过对信号进行上采样、在更高分辨率中应用非线性以及随后对结果进行下采样来近似连续表示。即使非线性仍然在离散域中执行,但在一个实施例中,仅2×临时分辨率增加就足以获得高质量的等变。对于旋转等变,径向对称低通滤波器
Figure BDA0003691612720000101
应该用于下采样步骤,如上所述。
注意,非线性是唯一能够在生成神经网络100中产生新频率的操作,并且新频率的范围可以通过在最终离散化运算之前应用具有低于s/2的截止值的重构滤波器来限制。重构滤波器提供了对生成神经网络100的每一层引入多少新信息的精确控制。总之,逐点非线性运算可能会在连续域σ(z)中产生任意高的频率。需要使用φs进行低通滤波,以确保Z'捕获离散域中逐点非线性运算的结果。通过在实践中应用执行卷积、上采样、下采样和逐点非线性运算的理论思想,生成神经网络可以转换为完全等变的,达到所需的精度水平、平移和旋转,从而产生减少混叠的生成神经网络,例如生成神经网络100。
在一个实施例中,生成神经网络100包括映射网络和合成网络G。映射网络将初始的、正态分布的潜在值变换为中间潜在代码w~W。合成网络接收学习的4x4x512常数Z0(即,输入特征)或傅里叶特征,并应用一系列N层——包括卷积、非线性、上采样和(可选)每像素噪声——以生成输出图像ZN=G(Z0;w)。在一个实施例中,中间潜在代码w控制G中卷积内核的调制。在一个实施例中,这些层遵循严格的2×上采样计划,其中每个分辨率执行两层,每次上采样之后特征图的数量减半。在一个实施例中,将离散数据上采样2×近似于连续数据,并且足以显著减少或防止在随后的逐点非线性运算期间引入混叠。在一个实施例中,上采样大于2×以更好地近似于连续数据。
减少或消除混叠使G的每一层都与连续信号等变,以便所有更精细的细节与局部邻域的粗糙特征一起变换。如果成功,整个生成神经网络100变得类似地等变。换句话说,合成网络的连续操作g是与应用于连续输入z0的变换t(平移和旋转)等变的:g(t[z0];w)=t[g(z0;w)]。
图2A示出了用于传统生成神经网络的示例处理层205和适用于实现本公开的一些实施例的用于减少混叠的生成神经网络的示例处理层200的框图。应该理解,本文描述的这些和其他布置仅作为示例阐述。除了所示的那些之外或代替所示的那些,可以使用其他布置和元素(例如,机器、接口、功能、命令、功能分组等),并且可以完全省略一些元素。此外,本文描述的许多元素是功能实体,它们可以实现为离散或分布式组件或与其他组件结合,并以任何合适的组合和位置实现。在此描述为由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。此外,本领域普通技术人员将理解执行生成神经网络100的操作的任何系统都在本公开的实施例的范围和精神内。
传统的生成神经网络和生成神经网络100都包括映射网络和合成网络G。如前所述,映射网络将潜在代码变换为中间潜在代码
Figure BDA0003691612720000111
合成网络接收输入特征Z0并应用一系列N层——包括卷积、非线性和上采样——以产生输出图像ZN=G(Z0;w)。中间潜在代码w控制G中卷积内核的调制。
层205被包括在传统合成网络中并且接收低分辨率输入数据,例如特征图,并且产生混叠处理的中间数据。层205包括卷积算子210,它还从映射网络接收调制控制(未示出)并产生中间数据212。ReLU 215处理中间数据212以产生经处理的中间数据217。经处理的中间数据217被可选地由2x上采样器220处理以产生混叠处理的中间数据(例如,特征图)。混叠可以由ReLU 215和2x上采样器220引入。基于连续分析的技术可以用于减少或去除来自减少混叠的生成神经网络100中的每个操作的混叠。
层200与层205相比被修改并且可以作为一个或更多个阶段被包括在减少混叠的生成神经网络100的合成网络部分中。层200接收低分辨率输入数据,例如特征图,并产生与层205产生的混叠处理中间数据相比具有减少混叠的经处理的中间数据。层200包括卷积算子230,其也接收来自映射网络的调制控制(未示出)并产生中间数据232。在一个实施例中,卷积算子230可以被配置为使用N×N卷积内核,其中N=1用于旋转等变。
上采样器235处理中间数据232以产生分辨率增加的中间数据237(例如,特征图)。在一个实施例中,上采样器235可以被配置为执行2x或4x上采样。分辨率增加的中间数据237由逐点非线性运算240处理以产生经处理的分辨率增加的中间数据242。在一个实施例中,逐点非线性算子240执行ReLU操作。在一个实施例中,对中间数据232上采样在应用逐点非线性期间减少了混叠。
经处理的分辨率增加的中间数据242然后由下采样器245下采样以产生经处理的中间数据。在一个实施例中,下采样器245将经处理的分辨率增加的中间数据242下采样2x以产生在中间数据232的原始分辨率下的经处理的中间数据。在一个实施例中,中间数据232仅包含处于或低于中间数据232的原始分辨率的采样率一半的空间频率。在一个实施例中,上采样率等于下采样率。在一个实施例中,上采样率是下采样率的两倍。在一个实施例中,下采样率是上采样率的两倍。在一个实施例中,卷积算子230、上采样器235、逐点非线性算子240和下采样器245执行与平移和/或旋转等变的操作。
在一个实施例中,卷积算子230、上采样器235、逐点非线性算子240和下采样器245中的至少一个在服务器上或在数据中心中实现,并且高分辨率输出数据被流式传输到用户设备。在一个实施例中,卷积算子230、上采样器235、逐点非线性算子240和下采样器245中的至少一个在云计算环境中实现。在一个实施例中,卷积算子230、上采样器235、逐点非线性算子240和下采样器245中的至少一个被实施用于训练、测试或验证在机器、机器人或自主车辆中使用的神经网络。在一个实施例中,卷积算子230、上采样器235、逐点非线性算子240和下采样器245中的至少一个在包括图形处理单元的一部分的虚拟机上实现。
图2B示出了根据实施例的用于近似无混叠操作的方法250的流程图。本文描述的方法250的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。该方法还可以体现为存储在计算机存储介质上的计算机可用指令。该方法可以由独立应用程序、服务或托管服务(独立或与另一个托管服务组合)或另一个产品的插件提供,仅举几例。此外,作为示例,针对图2A的系统描述了方法250。然而,该方法可以附加地或替代地由任何一个系统或系统的任何组合执行,包括但不限于本文所述的那些。此外,本领域普通技术人员将理解执行方法250的任何系统在本公开的实施例的范围和精神内。
神经网络模型接收由一系列阶段处理的低分辨率输入数据以产生高分辨率输出数据。在一个实施例中,神经网络模型是具有减少混叠的生成神经网络100。在一个实施例中,对于在一系列阶段序列中执行的将逐点非线性应用于原始分辨率下的中间数据的每个操作,处理包括上采样和下采样。在一个实施例中,神经网络模型的一个或更多个层执行方法250。在一个实施例中,一个或更多个层是层200。在一个实施例中,低分辨率输入数据由卷积算子处理以产生中间数据。
在步骤260,中间数据被上采样以产生分辨率增加的中间数据。在步骤265,逐点非线性被应用于分辨率增加的中间数据以产生经处理的分辨率增加的中间数据。在步骤270,经处理的分辨率增加的中间数据被下采样以产生经处理的中间数据。在一个实施例中,经处理的中间数据对应于减少混叠的生成神经网络100的输出数据。在一个实施例中,对经处理的中间数据执行线性变换以产生输出数据。
在一个实施例中,中间数据不包含高于原始分辨率的一半采样率的空间频率。在一个实施例中,上采样率等于下采样率,并且经处理的中间数据处于原始分辨率。在一个实施例中,上采样率是下采样率的两倍,并且经处理的中间数据是原始分辨率的两倍。在一个实施例中,下采样率是上采样率的两倍。在一个实施例中,上采样近似于连续数据并在应用逐点非线性期间减少混叠。在一个实施例中,神经网络模型是生成器并且高分辨率输出数据是图像。
图2C示出了由传统生成神经网络产生的特征图251和252以及根据实施例的由减少混叠的生成神经网络产生的特征图261、262、271和272。特征图是由神经网络的一层产生的经处理的中间数据的内部表示。特征图251和252由传统生成神经网络的层产生,其中特征图251与特征图252相比更粗糙。注意,每对特征图(例如,251和252)都经过处理以生成不同人的图像。即使得到的图像不同,特征图251和252的特点与特征图261、262、271和272相比也有很大不同。特征图251和252似乎对信号幅度进行了编码。
特征图261、262、271和272由减少混叠的生成神经网络的层产生,其中与特征图262和272相比,特征图261和271更粗糙。与特征图251和252相比,特征图261、262、271和272似乎对相位信息进行了编码。生成神经网络需要相位信息来合成表面上的细节,因为生成神经网络不能依赖像素坐标系,而是需要学习坐标系。允许在对象的表面上进行精确定位的坐标系的存在应该在各种应用中证明是有用的,包括高级图像和视频编辑。
与特征图251和252相比,特征图261和262是平移等变的。特征图271和272是平移和旋转等变的。更具体地说,用于生成特征图271和272的卷积运算被限制为N=1,并且径向对称下采样滤波器用于改进旋转等变。相反,用于生成特征图261和262的卷积运算使用N=3。与特征图261和262相比,在特征图271和272中出现的紧急位置编码模式似乎定义得更好。
与传统系统相比,减少混叠的生成神经网络100将输出数据中的细节附加到每层中间数据中的特征,而不是将细节附加到图像坐标(例如,像素)。减少混叠的生成神经网络100为生成视频和动画提供了显著的改进。将减少混叠的生成神经网络100的层200中的所有信号解释为连续的,保证了不需要的信息不会泄漏到分层合成过程中。减少混叠的生成神经网络100的层200即使在子像素尺度上也与平移和旋转等变。与生成神经网络的传统实现相比,层200中的卷积、上采样、下采样和逐点非线性函数为生成神经网络100提供了减少的混叠或无混叠操作。
并行处理架构[wy1]
图4示出了根据一个实施例的并行处理单元(PPU)400。PPU 400可以用于实现方法250。PPU 400可用于实现生成神经网络100和/或层200。在一个实施例中,诸如PPU 400之类的处理器可以被配置为实现神经网络模型。该神经网络模型可以被实现为由处理器执行的软件指令,或在其他实施例中,该处理器可以包括被配置为处理输入(例如表示值的电信号)集以生成输出集的硬件元件矩阵,所述输出可以表示神经网络模型的激活。在其他的实施例中,神经网络模型可以被实现为由硬件元件矩阵执行的处理和软件指令的组合。实现神经网络模型可以包括通过例如神经网络模型的有监督或无监督训练确定用于神经网络模型的参数集,以及或可替换地,使用该参数集执行推理,以处理新输入集。
在一个实施例中,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将解码的命令传输至这些命令可能指定的PPU 400的各种其他单元。例如,一些命令可以被传输至前端单元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,其被配置为分派任务以在GPC 450上执行。工作分配单元425可以跟踪从调度器单元420接收到的若干调度的任务。在一个实施例中,工作分配单元425为每个GPC 450管理待处理(pending)任务池和活动任务池。当GPC450完成任务的执行时,该任务从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通信。XBar470是将PPU 400的许多单元耦合到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)。
在一个实施例中,存储器分区单元480包括光栅操作(ROP)单元、二级(L2)高速缓存和耦合到存储器404的存储器接口。存储器接口可以实现用于高速数据传输的32、64、128、1024位数据总线等。PPU 400可以连接到多达Y个存储器设备,诸如高带宽存储器堆叠或图形双数据速率版本5的同步动态随机存取存储器或其他类型的持久存储器。在一个实施例中,存储器接口实现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高速缓存460的一部分。然后可以在GPC 450内的多个单元中实现较低级高速缓存。例如,GPC 450内的处理单元的每一个可以实现一级(L1)高速缓存。L1高速缓存是专用于特定处理单元的专用存储器。L2高速缓存460耦合到存储器接口470和XBar 470,并且来自L2高速缓存的数据可以被获取并存储在每个L1高速缓存中以进行处理。
在一个实施例中,每个GPC 450内的处理单元实现SIMD(单指令、多数据)体系架构,其中线程组(例如,warp)中的每个线程被配置为基于相同的指令集来处理不同的数据集。线程组中的所有线程都执行相同的指令。在另一个实施例中,处理单元实现SIMT(单指令、多线程)体系架构,其中线程组中的每个线程被配置为基于相同的指令集处理不同的数据集,但是其中线程组中的各个线程在执行期间被允许发散。在一个实施例中,为每个线程束维护程序计数器、调用栈和执行状态,使得当线程束内的线程发散时,线程束和线程束中的串行执行之间的并发成为可能。在另一个实施例中,为每个单独的线程维护程序计数器、调用栈和执行状态,使得在线程束内和线程束之间的所有线程之间相等的并发成为可能。当为每个单独的线程维护执行状态时,执行相同指令的线程可以被收敛并且并行执行以获得最大效率。
协作组是用于组织通信线程组的编程模型,其允许开发者表达线程正在进行通信所采用的粒度,使得能够表达更丰富、更高效的并行分解。协作启动API支持线程块之间的同步性,以执行并行算法。常规的编程模型为同步协作线程提供了单一的简单结构:跨线程块的所有线程的栅栏(barrier)(例如,syncthreads()函数)。然而,程序员通常希望以小于线程块粒度的粒度定义线程组,并在所定义的组内同步,以集体的全组功能接口(collective group-wide function interface)的形式使能更高的性能、设计灵活性和软件重用。
协作组使得程序员能够在子块(例如,像单个线程一样小)和多块粒度处明确定义线程组并且执行集体操作,诸如协作组中的线程上的同步性。编程模型支持跨软件边界的干净组合,以便库和效用函数可以在他们本地环境中安全地同步,而无需对收敛进行假设。协作组图元启用合作并行的新模式,包括生产者-消费者并行、机会主义并行以及跨整个线程块网格的全局同步。
每个处理单元包括大量(例如128个等)不同的处理核心442(例如,功能单元),其可以是完全管线化的、单精度、双精度和/或混合精度并且包括浮点运算逻辑单元和整数运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的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位整数累加的一位、四位或八位整数输入数据进行操作。8位整数矩阵乘法需要1024次运算,并产生一个全精度乘积,然后全精度乘积使用32位整数加法与其他中间乘积进行累加,以实现8x8x16矩阵乘法。在一个实施例中,张量核心在16位浮点输入数据以及32位浮点累加上运算。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可以被包括在图形卡上,图形卡包括一个或更多个存储器设备。图形卡可以被配置为与台式计算机的主板上的PCIe插槽接口。在又一个实施例中,PPU 400可以是被包含在主板的芯片集中的集成图形处理单元(iGPU)或并行处理器。在又一个实施例中,PPU 400可以在可重新配置的硬件中实现。在又一个实施例中,PPU 400的部分可以在可重新配置的硬件中实现。
示例性计算系统
具有多个GPU和CPU的系统被用于各种行业,因为开发者在应用(诸如人工智能计算)中暴露和利用更多的并行性。在数据中心、研究机构和超级计算机中部署具有数十至数千个计算节点的高性能GPU加速系统,以解决更大的问题。随着高性能系统内处理设备数量的增加,通信和数据传输机制需要扩展以支持带宽的增加。
图5A是根据一个实施例的使用图4的PPU 400实现的处理系统500的概念图。示例性系统500可以被配置为实现图2B中所示的方法250。处理系统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可以被配置为实现图2B中所示的方法250。
如图所示,提供了一种系统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中。
尽管利用线条将图5B的不同方框示为经由通信总线575连接,但是这并不预期是限制性的并且只是为了清楚起见。例如,在一些实施例中,诸如显示设备545之类的呈现组件可以被认为是I/O组件,例如输入设备560(例如如果显示器为触摸屏的话)。作为另一个示例,CPU 530和/或并行处理系统525可以包括存储器(例如,主存储器540可以表示除了并行处理系统525、CPU 530之外的存储设备,和/或其他组件)。换言之,图5B的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式电脑”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都预期处于图5B的计算设备的范围内。
系统565也包括主存储器540。控制逻辑(软件)和数据存储在主存储器540中,该主存储器可以采取各种各样的计算机可读介质的形式。计算机可读介质可以是可以被系统565访问的任何可用的介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括以任何方法或技术实现的易失性和非易失性介质和/或可移除和不可移除介质以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息。例如,主存储器540可以存储诸如操作系统之类的计算机可读指令(例如,其表示程序和/或程序元素)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储装置、磁盒、磁带、磁盘存储装置或其他磁性存储设备,或可以用于存储希望的信息以及可以被系统565访问的任何其他介质。当在本文使用时,计算机存储介质不包括信号本身。
计算机存储介质可以在诸如载波或其他传输机制之类的调制数据信号中包含计算机可读指令、数据结构、程序模块或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,计算机存储介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、RF、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包括在计算机可读介质的范围内。
当被执行时,计算机程序使得系统565能够执行各种功能。CPU 530可以被配置为执行所述计算机可读指令中的至少一些以控制系统565的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。CPU 530中的每一个可以包括能够同时处理众多软件线程的一个或更多个核心(例如一个、两个、四个、八个、二十八个、七十二个等等)。取决于实现的系统565的类型,CPU 530可以包括任何类型的处理器,并且可以包括不同类型的处理器(例如,用于移动设备的具有较少核心的处理器,以及用于服务器的具有较多核心的处理器)。例如,取决于系统565的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或诸如数学协处理器之类的补充协处理器之外,系统565可以包括一个或更多个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可以实现为网络接口控制器(NIC),其包括一个或更多个数据处理单元(DPU)以执行诸如(例如但不限于)分组解析和加速网络处理和通信的操作。网络接口535可以包括允许实现通过若干不同网络中的任意网络通信的组件和功能,所述网络例如无线网络(例如Wi-Fi、Z波、蓝牙、蓝牙LE、ZigBee等等)、有线网络(例如通过以太网或InfiniBand的通信)、低功率广域网(例如LoRaWAN、SigFox等等)和/或因特网。
系统565也可以包括辅助存储装置(未示出)。辅助存储装置包括例如硬盘驱动器和/或表示软盘驱动器、磁带驱动器、紧密盘驱动器、数字多功能盘(DVD)驱动器、记录设备、通用串行总线(USB)闪存的可移除存储驱动器。可移除存储驱动器以众所周知的方式从可移除存储单元读和/或写到可移除存储单元。系统565也可以包括硬接线电源、电池电源或其组合(未示出)。该电源可以向系统565供电以使得系统565的组件能够操作。
前述模块和/或设备中的每一个甚至可以位于单个半导体平台上以形成系统565。可替换地,各种不同的模块也可以按照用户的愿望单独地放置或位于半导体平台的各种组合中。尽管上面描述了各个不同的实施例,但是应当理解,它们仅仅通过示例的方式且非限制性地给出。因此,优选实施例的宽度和范围应当不受限于上面描述的任何示例性实施例,而是应当仅仅根据下面的权利要求及其等效物限定。
示例网络环境
适合用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、附接到网络的存储装置(NAS)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如每个设备)可以在图5A的处理系统500和/或图5B的示例性系统565的一个或更多个实例上实现,例如,每个设备可以包括处理系统500和/或示例性系统565的相似的组件、特征和/或功能。
网络环境的组件可以经由网络彼此通信,所述网络可以是有线的、无线的或兼而有之。网络可以包括多个网络或网络的网络。举例而言,网络可以包括一个或更多个广域网(WAN)、一个或更多个局域网(LAN)、一个或更多个公共网络——例如因特网,和/或公共交换电话网络(PSTN),和/或一个或更多个私有网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或甚至接入点之类的组件(以及其他组件)可以提供无线连接性。
兼容的网络环境可以包括一个或更多个对等网络环境——在该情况下,服务器可以不包括在网络环境中,以及一个或更多个客户端-服务器网络环境——在该情况下,一个或更多个服务器可以包括在网络环境中。在对等网络环境中,本文关于服务器描述的功能可以在任意数量的客户端设备上实现。
在至少一个实施例中,网络环境可以包括一个或更多个基于云的网络环境、分布式计算环境、其组合等等。基于云的网络环境可以包括框架层、作业调度器、资源管理器以及在一个或更多个服务器上实现的分布式文件系统,所述服务器可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可以包括支持软件层的软件和/或应用程序层的一个或更多个应用程序的框架。该软件或应用程序可以分别包括基于web的服务软件或应用程序。在实施例中,客户端设备中的一个或更多个可以使用基于web的服务软件或应用程序(例如通过经由一个或更多个应用编程接口(API)访问服务软件和/或应用程序)。框架层可以是但不限于例如可以将分布式文件系统用于大规模数据处理(例如“大数据”)的免费开源软件web应用程序框架类型。
基于云的网络环境可以提供实现本文描述的计算和/或数据存储功能(或其一个或更多个部分)的云计算和/或云存储。这些不同功能中的任何功能可以从中心或核心服务器(例如一个或更多个数据中心的中心或核心服务器,所述数据中心可以跨州、地区、国家、全球等等分布)分布在多个位置。如果到用户(例如客户端设备)的连接相对靠近边缘服务器,那么核心服务器可以将所述功能的至少一部分指派给边缘服务器。基于云的网络环境可以是私有的(例如限于单个组织),可以是公共的(例如对于许多组织可用),和/或其组合(例如混合云环境)。
客户端设备可以包括图5A的示例处理系统500和/或图5B的示例性系统565的组件、特征和功能中的至少一些。举例而言且非限制性地,客户端设备可以实施为个人计算机(PC)、膝上型计算机、移动设备、智能电话、平板计算机、智能手表、可穿戴计算机、个人数字助理(PDA)、MP3播放器、虚拟现实头戴式视图器、全球定位系统(GPS)或设备、视频播放器、视频照相机、监视设备或系统、车辆、船、飞船、虚拟机、无人机、机器人、手持式通信设备、医院设备、游戏设备或系统、娱乐系统、车辆计算机系统、嵌入式系统控制器、遥控器、器具、消费电子设备、工作站、边缘设备、这些划定的设备的任意组合或任何其他适当的设备。
机器学习
诸如PPU 400之类的处理器上开发的深度神经网络(DNN)已经用于从自动驾驶汽车到更快的药物开发,从在线图像数据库中的自动图像配字幕到视频聊天应用中的智能实时语言翻译的多种多样的用例。深度学习是一种对人脑的神经学习过程进行建模的技术,其不断地学习、不断地变得更聪明并且随着时间的推移更快速地输送更精确的结果。小孩最初由成年人教导对各种不同的形状进行正确的标识和分类,最终能够在没有任何指导的情况下标识形状。类似地,深度学习或神经学习系统需要在对象识别和分类中进行训练,以便它在标识基本的对象、被遮挡的对象等等方面变得更聪明和更高效,同时也将上下文赋予对象。
在最简单的水平下,人脑中的神经元观看接收的各种输入,重要性水平被赋予这些输入中的每一个,并且输出传递至其他神经元以做出反应。人工神经元或感知机是神经网络的最基本模型。在一个示例中,感知机可以接收一个或更多个输入,所述输入表示感知机正被训练对其识别和分类的对象的各种特征,并且这些特征中的每一个基于在定义对象的形状中该特征的重要性而被赋予某个权重。
深度神经网络(DNN)模型包括多层许多连接的节点(例如感知机、玻尔兹曼机、径向基函数、卷积层等等),其可以利用巨量的输入数据进行训练以便以高精度快速地解决复杂的问题。在一个示例中,DNN模型的第一层将汽车的输入图像分解为不同的片段并且寻找诸如线条和角之类的基本图案。第二层组装这些线条以便寻找诸如轮子、风挡和镜子之类的更高水平的图案。下一层标识车辆的类型,并且最终几层生成用于输入图像的标记,标识特定汽车品牌的型号。
一旦训练了DNN,DNN就可以被部署且用于在称为推理的过程中对对象或图案进行标识和分类。推理(DNN通过其从给定输入中提取有用信息的过程)的示例包括标识存入ATM机的支票上的手写数字,标识照片中朋友的图像,将电影推荐输送至超过五千万用户,在无人驾驶汽车中对不同类型的汽车、行人和道路危险进行标识和分类,或实时地翻译人类语言。
在训练期间,数据在前向传播阶段中流经DNN,直到产生指示与输入相应的标记的预测。如果神经网络没有正确地标记输入,那么对正确标记与预测的标记之间的误差进行分析,并且在反向传播阶段期间针对每个特征调节所述权重,直到DNN正确地标记所述输入以及训练数据集中的其他输入。训练复杂的神经网络需要大量的并行计算性能,包括PPU400支持的浮点乘法和加法。推理的计算密集程度低于训练,是个延迟敏感过程,其中将训练的神经网络应用到它之前没有见过的新输入以便对图像分类,检测情绪,标识推荐,识别和翻译语言,并且通常推理出新信息。
神经网络严重依赖于矩阵数学运算,并且为了效率和速率二者,复杂的多层网络需要巨量的浮点性能和带宽。利用针对矩阵数学运算优化的且提供数十至数百TFLOPS的性能的数千个处理核心,PPU 400是一种能够提供基于深度神经网络的人工智能和机器学习应用所需的性能的计算平台。
此外,应用本文公开的技术中的一种或更多种生成的图像可以用于训练、测试或认证用于识别真实世界中的对象和环境的DNN。这样的图像可以包括车行道、工厂、建筑物、城市环境、农村环境、人类、动物以及任何其他物理对象或真实世界环境的场景。这样的图像可以用于训练、测试或认证在机器或机器人中被采用于操控、处理或修改真实世界中的物理对象的DNN。此外,这样的图像可以用于训练、测试或认证在自主车辆中被采用于在真实世界中导航和移动车辆的DNN。此外,应用本文公开的技术中的一种或多种生成的图像可以用于将信息传达至这样的机器、机器人和车辆的用户。
图5C示出了根据至少一个实施例的可用于训练和利用机器学习的示例系统555的组件。如将要讨论的,可以由可以在单个实体或多个实体的控制下的单个计算系统或计算设备和资源的各种组合来提供各种组件。此外,可以由不同实体触发、发起或请求各个方面。在至少一个实施例中,可以由与供应商环境506相关联的供应商来指导对神经网络的训练,而在至少一个实施例中,可以由能够通过客户端设备502或其他此类资源访问供应商环境的顾客或其他用户来请求训练。在至少一个实施例中,训练数据(或要由经训练的神经网络分析的数据)可以由供应商、用户或第三方内容供应商524提供。在至少一个实施例中,客户端设备502可以是例如要代表用户被导航的车辆或对象,该用户可以提交请求和/或接收有助于设备导航的指令。
在至少一个实施例中,能够通过至少一个网络504提交请求以便由供应商环境506接收。在至少一个实施例中,客户端设备可以是使得用户能够生成和发送这样的请求的任何适当的电子和/或计算设备,诸如但不限于台式计算机、笔记本计算机、计算机服务器、智能手机、平板电脑、游戏控制台(便携式或其他方式)、计算机处理器、计算逻辑和机顶盒。一个或更多个网络504可以包括用于传输请求或其他这样的数据的任何适当的网络,例如可以包括因特网、内联网、以太网、蜂窝网络、局域网(LAN)、广域网(WAN)、个人区域网络(PAN)、在对等体之间进行直接无线连接的自组织网络等等。
在至少一个实施例中,可以在接口层508接收请求,在该示例中,该接口层可以将数据转发到训练和推理管理器532。训练和推理管理器532可以是包括用于管理与数据或内容相应的服务和请求的硬件和软件的系统或服务。在至少一个实施例中,该训练和推理管理器532可以接收训练神经网络的请求,并且可以将用于请求的数据提供给训练模块512。在至少一个实施例中,如果请求未指定,则训练模块512可以选择要使用的适当模型或神经网络,并可以使用相关的训练数据来训练模型。在至少一个实施例中,训练数据可以是存储在训练数据存储库514中的、从客户端设备502接收的或从第三方供应商524获得的一批数据。在至少一个实施例中,训练模块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来处理用于至少某些类型的请求的数据。诸如PPU 400之类的GPU具有数千个核心,被设计为处理大量的并行工作负载,因此在用于训练神经网络和生成预测的深度学习中变得很流行。虽然使用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可以从适当的储存库中选择初始模型或其他未训练的模型,并且利用训练数据514训练模型,从而生成可以用于对相似类型的数据分类或生成其他这样的推理的训练的模型(例如训练的深度神经网络)。在其中未使用训练数据的至少一个实施例中,仍然可以选择初始模型以便对每个训练模块512的输入数据进行训练。
在至少一个实施例中,可以以若干不同的方式训练模型,其可以部分地取决于选择的模型类型。在至少一个实施例中,可以向机器学习算法提供训练数据集,其中模型是通过训练过程创建的模型工件。在至少一个实施例中,训练数据的每个实例包含可以称为目标或目标属性的正确答案(例如分类)。在至少一个实施例中,学习算法找到将输入数据属性映射到目标——要预测的答案——的训练数据中的模式,并且机器学习模型是捕获这些模式的输出。在至少一个实施例中,机器学习模型于是可以用于获得对未指定目标的新数据的预测。
在至少一个实施例中,训练和推理管理器532可以从包括二元分类、多类分类、生成式和回归模型的机器学习模型集中进行选择。在至少一个实施例中,要使用的模型类型可以至少部分地取决于要预测的目标类型。
应用本文公开的技术中的一种或更多种生成的图像可以在监视器或其他显示设备上显示。在一些实施例中,显示设备可以直接耦合到生成或渲染图像的系统或处理器。在其他实施例中,显示设备可以例如经由网络间接耦合到系统或处理器。这样的网络的示例包括因特网、移动电信网络、WIFI网络以及任何其他有线和/或无线联网系统。当显示设备间接耦合时,系统或处理器生成的图像可以通过网络流式传输至显示设备。这样的流式传输允许例如渲染图像的视频游戏或其他应用程序在服务器、数据中心上或基于云的计算环境中执行,并且渲染的图像被传输和显示于与服务器或数据中心物理上分开的一个或更多个用户设备(例如计算机、视频游戏控制台、智能电话、其他移动设备等等)上。因此,本文公开的技术可以应用于增强被流式传输的图像,并且增强流式传输图像的服务,例如NVIDIAGeForce Now(GFN)、Google Stadia等等。
示例流式系统
图6为根据本公开的一些实施例的流式系统605的示例系统图。图6包括服务器603(其可以包括与图5A的示例处理系统500和/或图5B的示例性系统565相似的组件、特征和/或功能)、客户端604(其可以包括与图5A的示例处理系统500和/或图5B的示例性系统565相似的组件、特征和/或功能)和网络606(其可以与本文描述的网络相似)。在本公开的一些实施例中,系统605可以被实现。
在一个实施例中,流式系统605为游戏流式系统,并且服务器604为游戏服务器。在系统605中,对于游戏会话,客户端设备604可以响应于输入设备626的输入而仅仅接收输入数据,将输入数据发送至服务器603,接收来自服务器603的编码的显示数据,并且在显示器624上显示该显示数据。这样,计算强度更高的计算和处理被卸载到服务器603(例如游戏会话的图形输出的渲染,尤其是光线或路径追踪,由服务器603的GPU 615执行)。换言之,游戏会话从服务器603流式传输至客户端设备604,从而降低客户端设备604对于图形处理和渲染的要求。
例如,关于游戏会话的实例化,客户端设备604可以基于接收到的来自服务器603的显示数据而正在显示器624上显示游戏会话的帧。客户端设备604可以接收输入设备626之一的输入,并且作为响应生成输入数据。客户端设备604可以经由通信接口621且通过网络606(例如因特网)将输入数据发送至服务器603,并且服务器603可以经由通信接口618接收该输入数据。CPU 608可以接收输入数据,处理输入数据,并且将数据发送至GPU 615,该数据使得GPU 615生成游戏会话的渲染。例如,输入数据可以表示游戏中用户角色的运动,发射武器、重新装弹、传球、使车辆转向等等。渲染组件612可以渲染游戏会话(例如表示输入数据的结果),并且渲染捕获组件614可以捕获游戏会话的渲染作为显示数据(例如作为捕获游戏会话的渲染的帧的图像数据)。游戏会话的渲染可以包括使用服务器603的一个或更多个并行处理单元(例如GPU,其可以进一步采用一个或更多个专用硬件加速器或处理核心来执行光线或路径追踪技术)计算的光线或路径追踪的光照和/或阴影效果。然后,编码器616可以对显示数据进行编码以生成编码的显示数据,并且该编码的显示数据可以经由通信接口618通过网络606发送至客户端设备604。客户端设备604可以经由通信接口621接收该编码的显示数据,并且解码器622可以对该编码的显示数据进行解码以生成显示数据。然后,客户端设备604可以经由显示器624显示该显示数据。
应当指出,本文描述的技术可以包含在存储于计算机可读介质中的可执行指令中,所述指令供基于处理器的指令执行机器、系统、装置或设备使用或结合其使用。本领域技术人员将领会,对于一些实施例而言,可以包括各种不同类型的计算机可读介质以用于存储数据。当在本文使用时,“计算机可读介质”包括用于存储计算机程序的可执行指令的任何适当的介质中的一种或更多种,从而指令执行机器、系统、装置或设备可以从计算机可读介质中读取(或获取)指令并且执行这些指令以实现所描述的实施例。适当的存储格式包括电子、磁性、光学和电磁格式中的一种或多种。常规的示例性计算机可读介质的非详尽列表包括:便携式计算机磁盘;随机存取存储器(RAM);只读存储器(ROM);可擦除可编程只读存储器(EPROM);闪存设备;以及光学存储设备,包括便携式紧密盘(CD)、便携式数字视频盘(DVD)等等。
应当理解,附图中所示的组件的布置用于说明性目的,并且其他布置是可能的。例如,本文所描述的元件中的一个或更多个可以全部或部分实现为电子硬件组件。其他元件可以以软件、硬件或软件和硬件的组合实现。而且,这些其他元件中的一些或全部可以进行组合,一些可以完全省略,并且可以添加附加的组件,同时仍然实现本文描述的功能。因此,本文描述的主题可以在许多不同的变型中实施,并且所有这样的变型预期处于权利要求书的范围之内。
为了便于理解本文描述的主题,许多方面是按照动作序列来描述的。本领域技术人员会认识到,各种不同的动作可以通过专用电路或电路系统、通过一个或更多个处理器执行的程序指令或通过二者的组合执行。本文对于任何动作序列的描述并不预期意味着被描述用于执行该序列的特定顺序必须被遵循。本文描述的所有方法都可以以任何适当的顺序执行,除非本文另有指明或以其他方式与上下文明显矛盾。
在描述所述主题的上下文中(尤其是在下面的权利要求书的上下文中)术语“一”、“一个”、“该/这个”以及类似指称的使用应当被解释为覆盖单数和复数二者,除非本文另有指明或与上下文明显矛盾。后接具有一个或更多个项目的列表的术语“至少一个”(例如A和B中的至少一个)的使用应当被解释为表示选自列出的项目的一个项目(A或B),或列出的项目中的两个或更多个的任意组合(A和B),除非本文另有指明或与上下文明显矛盾。此外,前面的描述仅仅用于说明的目的,并不用于限制的目的,因为寻求保护的范围由此后与其等效物一起阐述的权利要求书限定。本文提供的任何和所有示例或示例性语言(例如“诸如”)的使用仅仅预期更好地说明所述主题,并不构成对主题的范围的限制,除非另有声明。权利要求书和书面说明书二者中指示带来结果的条件的“基于”以及其他类似短语的使用并不预期排除带来该结果的任何其他条件。说明书中的语言不应当被解释为指示任何未要求权利保护的元素对于要求保护的本发明的实施是必不可少的。

Claims (20)

1.一种计算机实现的方法,包括:
在神经网络模型处接收低分辨率输入数据,所述数据通过一系列阶段处理以产生中间数据和高分辨率输出数据,其中对于在所述一系列阶段中执行的将逐点非线性应用于原始分辨率下的中间数据的每个操作,所述处理包括:
上采样所述中间数据以产生分辨率增加的中间数据;
将所述逐点非线性应用于所述分辨率增加的中间数据以产生经处理的分辨率增加的中间数据;以及
下采样所述经处理的分辨率增加的中间数据以产生经处理的中间数据。
2.如权利要求1所述的方法,其中所述中间数据仅包含处于或低于所述原始分辨率的采样率一半的空间频率。
3.如权利要求1所述的方法,其中上采样率等于下采样率并且所述经处理的中间数据处于所述原始分辨率。
4.如权利要求1所述的方法,其中上采样率是下采样率的两倍,并且所述经处理的中间数据为所述原始分辨率的两倍。
5.如权利要求1所述的方法,其中所述上采样近似于连续数据,以减少在所述逐点非线性的应用期间的混叠。
6.如权利要求1所述的方法,其中所述神经网络模型是生成器,并且所述高分辨率输出数据是一维信号、二维图像和三维体积中的至少一个。
7.如权利要求1所述的方法,还包括执行卷积运算以产生所述中间数据。
8.如权利要求7所述的方法,其中1×1卷积内核用于所述卷积运算。
9.如权利要求1所述的方法,其中所述上采样、所述应用和所述下采样与平移到所需的准确度水平是等变的。
10.如权利要求1所述的方法,其中所述上采样、所述应用和所述下采样与平移和旋转至所需的准确度水平是等变的。
11.如权利要求1所述的计算机实现的方法,其中在服务器上或数据中心中执行上采样、应用和下采样的步骤中的至少一个,并且所述高分辨率输出数据被流传输到用户设备。
12.如权利要求1所述的计算机实现的方法,其中在云计算环境中执行上采样、应用和下采样的步骤中的至少一个。
13.如权利要求1所述的计算机实现的方法,其中执行上采样、应用和下采样的步骤中的至少一个,以用于训练、测试或验证机器、机器人或自主车辆中使用的神经网络。
14.如权利要求1所述的计算机实现的方法,其中在包含图形处理单元的一部分的虚拟机上执行上采样、应用和下采样的步骤中的至少一个。
15.一种系统,包括:
存储器,其存储低分辨率输入数据;以及
处理器,其连接到所述存储器,其中所述处理器配置为通过以下方式实现神经网络模型:
通过一系列阶段处理所述低分辨率输入数据以产生中间数据和高分辨率输出数据,其中对于所述一系列阶段中执行的将逐点非线性应用于原始分辨率下的中间数据的每个操作,所述处理包括:
上采样所述中间数据以产生分辨率增加的中间数据;
将所述逐点非线性应用于所述分辨率增加的中间数据以产生经处理的分辨率增加的中间数据;以及
下采样所述经处理的分辨率增加的中间数据以产生经处理的中间数据。
16.如权利要求15所述的系统,其中所述中间数据仅包含处于或低于所述原始分辨率的采样率一半的空间频率。
17.如权利要求15所述的系统,其中所述神经网络模型是生成器,并且所述高分辨率输出数据是一维信号、二维图像和三维体积中的至少一个。
18.如权利要求15所述的系统,其中所述上采样、所述应用和所述下采样与平移是等变的。
19.一种非暂时性计算机可读介质,其存储有计算机指令,所述指令在由一个或更多个处理器执行时,使所述一个或更多个处理器执行以下步骤:
在神经网络模型处接收低分辨率输入数据,所述数据由一系列阶段处理以产生中间数据和高分辨率输出数据,其中对于所述一系列阶段中执行的将逐点非线性应用于原始分辨率下的中间数据的每个操作,所述处理包括:
上采样所述中间数据以产生分辨率增加的中间数据;
将所述逐点非线性应用于所述分辨率增加的中间数据以产生经处理的分辨率增加的中间数据;以及
下采样所述经处理的分辨率增加的中间数据以产生经处理的中间数据。
20.如权利要求19所述的非暂时性计算机可读介质,其中所述中间数据仅包含处于或低于所述原始分辨率的采样率一半的空间频率。
CN202210665806.7A 2021-06-17 2022-06-13 减少混叠的生成神经网络 Pending CN115496197A (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US202163211899P 2021-06-17 2021-06-17
US63/211,899 2021-06-17
US202163244125P 2021-09-14 2021-09-14
US63/244,125 2021-09-14
US17/562,494 US20220405880A1 (en) 2021-06-17 2021-12-27 Generative neural networks with reduced aliasing
US17/562,494 2021-12-27

Publications (1)

Publication Number Publication Date
CN115496197A true CN115496197A (zh) 2022-12-20

Family

ID=84283468

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210665806.7A Pending CN115496197A (zh) 2021-06-17 2022-06-13 减少混叠的生成神经网络

Country Status (3)

Country Link
US (1) US20220405880A1 (zh)
CN (1) CN115496197A (zh)
DE (1) DE102022113747A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210321963A1 (en) * 2018-08-21 2021-10-21 The Salk Institute For Biological Studies Systems and methods for enhanced imaging and analysis
CN114096987A (zh) * 2019-07-03 2022-02-25 韩国科学技术院 视频处理方法及装置
JP2022161004A (ja) * 2021-04-07 2022-10-20 キヤノンメディカルシステムズ株式会社 医用データ処理方法、モデル生成方法、医用データ処理装置、および医用データ処理プログラム
US11984218B2 (en) * 2021-06-09 2024-05-14 Canon Medical Systems Corporation Apparatus, method, and non-transitory computer-readable storage medium for enhancing computed tomography image resolution

Also Published As

Publication number Publication date
DE102022113747A1 (de) 2022-12-22
US20220405880A1 (en) 2022-12-22

Similar Documents

Publication Publication Date Title
US20190035113A1 (en) Temporally stable data reconstruction with an external recurrent neural network
US11954830B2 (en) High dynamic range support for legacy applications
US11450077B2 (en) Appearance-driven automatic three-dimensional modeling
US20230052645A1 (en) Multiresolution hash encoding for neural networks
CN114155331A (zh) 从二维图像恢复三维模型
US11967024B2 (en) Extracting triangular 3-D models, materials, and lighting from images
CN113762461A (zh) 使用可逆增强算子采用有限数据训练神经网络
US20230062503A1 (en) Pruning and accelerating neural networks with hierarchical fine-grained structured sparsity
US20220391781A1 (en) Architecture-agnostic federated learning system
US11282258B1 (en) Adaptive sampling at a target sampling rate
US11475549B1 (en) High dynamic range image generation from tone mapped standard dynamic range images
US11522565B2 (en) Packed error correction code (ECC) for compressed data protection
US20220405980A1 (en) Fused processing of a continuous mathematical operator
US20230298243A1 (en) 3d digital avatar generation from a single or few portrait images
US20230252692A1 (en) Learning dense correspondences for images
US11830145B2 (en) Generation of differentiable, manifold meshes of arbitrary genus
US11925860B2 (en) Projective hash maps
US20220189011A1 (en) End-to-end training for a three-dimensional tomography reconstruction pipeline
US20220189100A1 (en) Three-dimensional tomography reconstruction pipeline
US20220405880A1 (en) Generative neural networks with reduced aliasing
US20240046422A1 (en) Pseudoinverse guidance for data restoration with diffusion models
US20240104842A1 (en) Encoder-based approach for inferring a three-dimensional representation from an image
US20240193887A1 (en) Neural vector fields for 3d shape generation
US20240127067A1 (en) Sharpness-aware minimization for robustness in sparse neural networks
US11689750B2 (en) Workload-based dynamic throttling of video processing functions using machine learning

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