CN113496271A - 神经网络控制变量 - Google Patents
神经网络控制变量 Download PDFInfo
- Publication number
- CN113496271A CN113496271A CN202110303103.5A CN202110303103A CN113496271A CN 113496271 A CN113496271 A CN 113496271A CN 202110303103 A CN202110303103 A CN 202110303103A CN 113496271 A CN113496271 A CN 113496271A
- Authority
- CN
- China
- Prior art keywords
- neural network
- integral
- computer
- implemented method
- parametric
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 138
- 238000000034 method Methods 0.000 claims abstract description 98
- 230000010354 integration Effects 0.000 claims abstract description 43
- 230000005540 biological transmission Effects 0.000 claims abstract description 28
- 238000012545 processing Methods 0.000 claims description 67
- 238000012549 training Methods 0.000 claims description 52
- 238000005070 sampling Methods 0.000 claims description 23
- 238000004422 calculation algorithm Methods 0.000 claims description 20
- 230000003287 optical effect Effects 0.000 claims description 17
- 238000009826 distribution Methods 0.000 claims description 10
- 230000003595 spectral effect Effects 0.000 claims description 7
- 230000004907 flux Effects 0.000 claims description 4
- 238000012360 testing method Methods 0.000 claims description 4
- 230000003767 neural control Effects 0.000 abstract description 13
- 238000004088 simulation Methods 0.000 abstract description 9
- 238000011156 evaluation Methods 0.000 abstract description 5
- 230000002194 synthesizing effect Effects 0.000 abstract 1
- 230000006870 function Effects 0.000 description 60
- 238000004891 communication Methods 0.000 description 28
- 238000003860 storage Methods 0.000 description 26
- 230000001537 neural effect Effects 0.000 description 23
- 230000008569 process Effects 0.000 description 19
- 239000011159 matrix material Substances 0.000 description 18
- 239000000047 product Substances 0.000 description 18
- 238000003062 neural network model Methods 0.000 description 17
- 238000010801 machine learning Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 239000004065 semiconductor Substances 0.000 description 10
- 230000000875 corresponding effect Effects 0.000 description 9
- 238000013135 deep learning Methods 0.000 description 9
- 238000010606 normalization Methods 0.000 description 9
- 230000005855 radiation Effects 0.000 description 9
- 238000012546 transfer Methods 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000007667 floating Methods 0.000 description 6
- 238000005192 partition Methods 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 6
- 230000009467 reduction Effects 0.000 description 6
- 239000000872 buffer Substances 0.000 description 5
- 238000012937 correction Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 230000002787 reinforcement Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000009509 drug development Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 241000282412 Homo Species 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 238000000342 Monte Carlo simulation Methods 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000013477 bayesian statistics method Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 201000010099 disease Diseases 0.000 description 1
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 230000008451 emotion Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000013067 intermediate product Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000000329 molecular dynamics simulation Methods 0.000 description 1
- 238000012900 molecular simulation Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000005658 nuclear physics Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000013179 statistical model Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/27—Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/067—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using optical means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/506—Illumination models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/08—Probabilistic or stochastic CAD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/10—Numerical modelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Pure & Applied Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Analysis (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Algebra (AREA)
- Geometry (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Operations Research (AREA)
- Neurology (AREA)
- Probability & Statistics with Applications (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
本发明公开了神经网络控制变量。蒙特卡洛(Monte Carlo)和准蒙特卡洛(quasi‑Monte Carlo)积分是解决复杂积分问题(例如评估金融衍生工具或通过光传输模拟合成逼真的图像)的简单数值方法。直接应用(准)蒙特卡洛积分的缺点是收敛速率相对较慢,表现为蒙特卡洛估计量的高误差。可以使用神经控制变量来减少参数(准)蒙特卡洛积分的误差‑在更短的时间内提供更准确的解决方案。神经网络系统具有足够的近似能力来估计积分,并且是有效评估。效率源自使用推导控制变量的积分的第一神经网络,并使用归一化流来建模控制变量的形状。
Description
要求优先权
本申请要求于2020年3月20日提交的标题为“使用归一化流的神经控制变量(Neural Control Variates Using Normalizing Flows)”的美国临时申请62/992717的权益,其全部内容通过引用并入本文。
背景技术
蒙特卡洛(Monte Carlo)和准蒙特卡洛(quasi-Monte Carlo)积分是解决复杂积分问题的简单数值方法。复杂的积分问题的示例包括评估金融衍生物或通过光传输模拟合成逼真的图像。当没有积分问题的解析解并且经典的数值算法(例如有限元素)由于维数的诅咒或被积函数(integrand)缺乏平滑性而失败时,(准)蒙特卡洛特别有吸引力。
蒙特卡洛积分的直接应用的主要缺点是相对较慢的收敛速度,其表现为蒙特卡洛估计量的高方差和准蒙特卡洛估计量的高误差。因此,已经开发出方法来提高计算效率。在最常使用的方法中,有一种集中于仔细放置样本的技术,例如对立采样,分层,准随机采样或重要性采样。进一步减少方差的一种补充方法是利用层次积分或控制变量的概念。
通过控制变量减少方差等于利用由近似误差的估计值校正的积分的近似解。估计积分的数值效率取决于缩放的控制变量。由于选择不当的控制变量可能降低效率,早期研究集中在对缩放系数α的有效和准确估计上。尽管已知α的最优方差最小化值,但如果使用与用于实际估计的样本相关的样本进行,数值估计α可能会引入偏差。应用控制变量方法的核心挑战是找到了一种在计算和/或时间方面高效积分的被积函数的良好近似。需要解决这些问题和/或与现有技术相关的其他问题。
发明内容
控制变量的应用已在许多领域中进行了探索,主要是在金融数学和运筹学领域。控制变量可用于减少通过蒙特卡洛或准蒙特卡洛积分产生的估计误差。与传统系统(例如上述系统)相比,神经网络生成的控制变量满足两个属性:它近似被积函数井并且其积分可有效计算。
附图说明
下面参考附图详细描述用于神经网络控制变量的本系统和方法,其中:
图1A示出了根据一个实施例的使用控制变量g(x)来计算函数f(x)的积分F。
图1B示出了根据一个实施例的参考光场,由控制变量神经网络系统预测的光场和差分积分的图像。
图1C示出了根据一个实施例的控制变量神经网络系统的框图。
图2A示出了使用适用于实现本公开的一些实施例的神经网络系统来生成控制变量的方法的流程图。
图2B示出了根据一个实施例的控制变量积分G和由控制变量神经网络系统预测的系数a以及选择概率的图像。
图3A是根据一个实施例的示出将神经控制变量用于光传输模拟的概念图。
图3B示出了根据一个实施例的路径顶点和相应的引起的面积扩展。
图3C示出了根据一个实施例的用于产生3D场景的图像的方法的流程图。
图4示出了适用于实现本公开的一些实施例的示例并行处理单元。
图5A是使用图4的PPU实现的处理系统的概念图,适合用于实现本公开的一些实施例。
图5B示出了其中可以实现各种先前实施例的各种架构和/或功能的示例性系统。
图5C示出了在至少一个实施例中可用于训练和利用机器学习的示例性系统的组件。
具体实施方式
公开了与神经网络控制变量有关的系统和方法。神经控制变量(NCV)是由神经网络系统预测的控制变量,在求解积分方程时,可用于执行参数蒙特卡洛积分中的无偏差方差减小或参数准蒙特卡洛积分中的误差减小。神经网络系统实现归一化流以近似被积函数的形状并推导积分方程的解。
神经网络系统参数化并学习具有大近似力但仍具有有效可计算积分的控制变量。第一神经网络预测的积分与使用一个或更多个第二神经网络实现的参数化归一化流相组合,以参数化控制变量。此外,在一个实施例中,仅使用被积函数的噪声估计来训练第一和第二神经网络。
可以对用于渲染逼真图像的光传输方程(特别是用于通过路径跟踪(跟踪光线穿过场景)的间接照明)的积分进行估计。使用神经网络系统计算的控制变量可提高路径跟踪的效率。常规上,增加被跟踪的路径的数量以减少渲染图像中的噪声。使用神经网络系统计算出的控制变量可在路径数量相同的情况下获得较少的噪声,或者在路径数量较少的情况下获得相同的噪声。
使用控制变量减少方差可利用积分的近似解,该近似解可通过近似误差的估计进行校正。该原理由以下恒等式给出:
不是积分原始函数f以获得解F,而是使用α-缩放近似G。近似G对应于在同一个域D上积分(不同的)函数g(控制变量),即通过将差f(x)-α·g(x)的积分相加,校正近似误差;使方程(1)的右手边等于左手边。
图1A示出了根据一个实施例的使用控制变量102g(x)来计算函数101f(x)的积分F。函数101f(x)的积分F在控制变量102g(x)的帮助下,通过使用已知的或易于计算的积分G加上差104的积分来计算。通过使用α-缩放的控制变量(其中α=Cov(f,g)/Var(g))将差的方差最小化,可以减小总体方差。
相对于估计原始积分,估计方程(1)的右侧的数值效率可以取决于缩放的控制变量103,其使得积分更容易。例如,与不按比例缩放控制变量102的差105相比,差104可能暴露出较少的方差。只要函数或被积函数f(x)与控制变量g(x)不相关,积分的差通常会更平滑。实际上,应该从两个函数的相关性得出控制应用控制变量102的强度的缩放系数α。简而言之,控制变量的成功应用需要使控制变量足够好地近似被积函数,并允许对积分G和缩放α进行有效的估计和计算。在以下描述的上下文中,被积函数f(x)和控制变量g(x)可以分别称为f和g。
如本文进一步所述,可以使用机器学习从f(x)的观察中推断出控制变量g(x)。通常很难对神经网络的输出进行归一化。因此,神经网络的输出用于参数化可用于使函数变形而不改变函数积分的变换。使用变换允许学习通过构造归一化的函数学习。这种模型称为归一化流。
因为学习了控制变量,所以关键挑战变成以(有效地)允许计算其积分的形式表示控制变量。可以通过将控制变量分解为归一化形式(形状)和积分G来避免计算G的困难,使得例如形状和积分可以独立建模。在一个实施例中,使用第一神经网络推理积分G,并且使用另一个神经网络推理系数α。
在一个实施例中,为了计算控制变量的形状采用了归一化流的定制变量。与标准神经网络相反,归一化流能够表示归一化函数。在一个实施例中,使用包括至少一个神经网络的一组神经网络来推理归一化流的参数归一化流是一种用于将任意分布映射到基本分布的技术;例如正态分布。映射是通过链接一系列无穷小变换而正式获得的,因此可以命名为流。
图1B示出了根据一个实施例的参考光场150、神经光场160和误差(差分积分)155的图像。控制变量神经网络系统可以用于预测神经光场160并使用路径跟踪估计误差155。理想情况下,路径的跟踪在打开门的光源处结束,因为这些路径照亮了场景。在场景中四处反弹而没有到达光源的路径会给渲染的图像带来噪声。可以训练控制变量神经网络系统以学习神经光场160,以便跟踪较少的路径,特别是重要的路径,以产生更高质量的图像。使用光传输的示例,误差155是差分积分,并且误差(差分积分)155可以与G(例如,预测的神经光场160)求和以产生F(例如,真实或参考光场150)。误差(差分积分)155是被积函数f(x)与控制变量g(x)之间的差的积分,其中g(x)可以由α缩放。
为了确保预测的光场160是准确的,误差(差分积分)155应当被反弹。挑战在于,误差(差分积分)在分析上未知,因此可以使用路径跟踪进行估计。为了使噪声最小化,差分积分中的控制变量近似用于产生参考光场150的渲染方程的乘积项。学习控制变量,然后积分该控制变量以计算神经光场G,例如非常复杂。因此,如前所述,控制变量表示为其积分G和其形状的乘积。形状总是积分为值1,因此无论形状是什么,将形状乘以G都等于神经光场方程1的两边 概率密度函数(PDFs)是一种非负归一化函数,其可以积分到一,并可以由经训练的神经网络控制的归一化流来表示。
图1C示出了根据一个实施例的控制变量神经网络系统100的框图。应该理解,本文描述的这种布置和其他布置仅作为示例阐述。除了或代替所示的那些,可以使用其他布置和元件(例如,机器,界面,功能,命令,功能的分组等),并且可以完全省略一些元件。此外,本文描述的许多元件是功能实体,其可以被实现为离散或分布式组件或与其他组件结合并且以任何合适的组合和位置来实现。本文描述为由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,可以通过执行存储在存储器中的指令的处理器来执行各种功能。此外,本领域普通技术人员将理解,执行控制变量神经网络系统100的操作的任何系统都在本公开的实施例的范围和精神内。
控制变量神经网络系统100接收输入115并生成积分估计140。控制变量神经网络系统100通过机器学习减少估计参数积分F的方差。在一个实施例中,输入115是参数y。对于图1B的光传输示例,F(y)是反射辐射场,参数y表示反射位置和方向。
F、积分估计140和g(x)、控制变量(省略缩放系数α)之间的关系
是:F(y)=∫f(x,y)dx=∫f(x,y)+g(x,y)-g(x,y)dx,其中g(x,y)-g(x,y)=0。然后,F(y)=∫g(x,y)dx+∫f(x,y)-g(x,y)dx。控制变量的积分为G(y)=∫g(x,y)dx,产生
F(y)=G(y)+∫f(x,y)-g(x,y)dx. 方程(2)
在许多应用中,尤其是在计算机图形学中,函数F(y)和f(x,y)可能具有无限的变化且缺乏平滑度。因此,用于近似函数的模型需要足够的灵活性和高度表现力。在一个实施例中,使用由一组可优化参数θg驱动的一个或更多个神经网络对控制变量建模。
使用公式(2)求解F(y)需要G(y)和g(x,y)。学习控制变量g(x,y)并从g(x,y)计算积分G(y)是困难的和/或不切实际的(可能非常简单的模型除外)。分别学习控制变量g(x,y)和积分G(y)是困难的,因为应该保留G(y)和控制变量的积分之间的相等性。因此,控制变量神经网络模型125学习积分G(y),并且归一化流神经网络模型110学习由形状计算120应用于归一化函数(例如,PDF)的参数以生成归一化流
归一化流是G(y)的归一化形状,具有积分到一的性质,因此G(y)可以计算为:
第一神经网络模型,控制变量神经网络模型125的积分预测G(y)。G(y)恰好是g(x,y)和一组第二神经网络的积分,该第二神经网络包括归一化流神经网络模型110,形状计算120预测形状乘积130计算G(y)和的乘积,该乘积等于控制变量g(x,y)。
控制变量由乘积130计算为G(y)与归一化流的乘积。方程(2)可以由积分函数计算135使用计算出的控制变量(和积分G(y))来评估,以估计积分函数F(y)的解。具体地,将f(x)和g(x,y)之间的差的积分与G(y)求和以产生F(y)。在一个实施例中,控制变量的积分和控制变量的形状通过控制变量神经网络模型125和归一化流神经网络模型110的积分被独立学习。
为了使用方程(1)和(2),控制变量神经网络模型125的积分应允许对控制变量g(x,y;θg)及其积分G(y)=∫g(x,y;θg)dx的有效估计。事实证明这是关键的挑战。使用神经网络建模g可能足够表达,但是计算积分G将需要某种形式的数值积分,这需要多次前向传递(pass)来评估g(x,y;θg);成本太高了。
通过限制已知积分的g为函数,可以避免需要多次传递的积分。在一个实施例中,g被限于积分到一的归一化函数。仍可以通过由(学习的)因子缩放归一化函数来匹配任意被积函数。因此,参数控制变量
被定义为两个分量的乘积:参数归一化函数和参数标量值G(y;θG)。在以下描述的上下文中,和G分别称为控制变量的形状和积分,它们各自由一组参数进行参数化;分解成单独的参数集的优势在于,计算积分G等于一次评估控制变量神经网络模型125的积分,而不是执行需要大量神经网络评估的g(x,y;θg)的昂贵数值积分。
在一个实施例中,可以对由控制变量神经网络模型125的积分输出的积分值G(y;θG)求幂,从而在数值上表现更好的低动态范围内部操作时允许控制变量神经网络模型125的积分输出高动态范围的值。在一个实施例中,始终为正的幂表示与针对控制变量形状的归一化流的组合将控制变量约束为非负函数;负值被设计排除。
现在将根据用户的需求,给出关于可用于实现前述框架的各种可选架构和特征的更多说明性信息。应该特别注意的是,以下信息是出于说明目的而提出的,不应以任何方式解释为限制。下列任何特征都可以视需要并入或不排除所描述的其他特征。
图2A示出了用于使用适用于实现本公开的一些实施例的神经网络系统来生成控制变量的方法200的流程图。本文所述的方法200的每个框包括可以使用硬件、固件和/或软件任何组合来执行的计算过程。例如,各种函数可以由处理器执行存储在存储器中的指令来执行。该方法还可以体现为存储在计算机存储介质上的计算机可用指令。该方法可以由独立应用程序、服务或托管服务(独立或与其他托管服务组合)或另一种产品的插件提供,仅举几例。另外,通过示例的方式,相对于图1C的控制变量神经网络系统100描述了方法200。然而,该方法可以附加地或可替代地由任何一个系统或系统的任何组合来执行,包括但不限于本文所述的那些。此外,本领域普通技术人员将理解,执行方法200的任何系统在本公开的实施例的范围和精神内。
在步骤205,使用第一神经网络基于输入y预测第一函数g(x,y)的第一参数积分G(y)。在一个实施例中,第一参数积分是缩放的参数积分α(y)G(y)。在一个实施例中,第一神经网络是控制变量神经网络模型125的积分。
由于控制变量可能不完全匹配f,因此在一个实施例中,控制变量由控制其贡献的控制变量系数α加权。如前所述,α(y)的最优方差最小化值已知为Cov(f(x,y),g(x,y))/Var(g(x,y))。但是,计算通常随y变化的最佳值在实践中可能会非常昂贵。因此,可以改为使用系数神经网络α(y;θα)对系数进行建模,该系数神经网络被训练以根据参数y输出控制变量的适当贡献。用于优化系数神经网络的损失函数可用于最小化蒙特卡洛估计的方差或准蒙特卡洛估计的误差。
在步骤210,使用积分到一的第二函数近似第一函数的形状,其中第二函数的参数由至少一个神经网络计算。在一个实施例中,至少一个神经网络是归一化流神经网络模型110。归一化流是表示用于变换概率密度的可微的多维复合映射的计算图。该映射包括L个双射翘曲函数因此,它整体上也是双射的。翘曲函数h:根据变量变化公式引起密度变化
可以通过调用链法则来获得由L个这样的翘曲的链引起的密度变化。这得出雅可比行列式的绝对值的以下乘积:
其中x1=x。乘积中的第i项表示第i个翘曲的雅可比行列式相对于第i-1个翘曲的输出的绝对值。
为了获得高建模能力,神经归一化流利用了由神经网络输出驱动的参数翘曲。为了允许跨维度进行建模关联,需要将各个翘曲的输出馈入神经网络,以调节流中后续的翘曲。在概率建模的背景下,两种常规方法是自回归流和耦合流。这两种方法都产生流,该流(i)可逆,(ii)避免了计算致密雅可比矩阵行列式的立方成本,并且(iii)避免了需要通过神经网络进行微分以计算雅可比中的相关项。
为了生成控制变量形状不需要流的有效的可逆性,因为对控制变量形状进行建模仅需要评估一个方向上的流。然而,仍然有可能利用先前提出的自回归公式来确保易处理的雅可比行列式。此外,在学习多个密度(具体而言,控制变量的多个通道)的情况下,可以进一步加速模型,诸如归一化流神经网络模型110。
在一个实施例中,将具有与g相同维度的单位超立方体用作潜空间L。然后将归一化控制变量建模为
在一个实施例中,归一化流中的翘曲假设自回归结构:第i个翘曲的输出xi+1中的维度d仅以输入xi中的先前维度为条件:
其中上标<d表示先前的维度,表示网络参数。这确保了易计算的雅可比行列式,其被计算为h的雅可比矩阵中对角项的乘积。对角线项特定于所使用的变换h。在一个实施例中,在归一化流中使用自回归结构,并且使用独立网络来推理每个维度的翘曲。每个维度具有独立的网络可以简化实现,并且重要的是,在使用多通道控制变量进行预测时,可以促进网络共享。
许多积分问题同时在多个可能相关的通道(例如RGB(红色,绿色,蓝色)通道)上运行。为了最小化每个通道的方差,对每个通道使用单独的控制变量而不是在所有通道上共享一个控制变量是有利的。一种直接的解决方案是为每个通道实例化不同的归一化流。不幸的是,每通道流导致计算成本随着通道数量的增加而线性增加。相反,通过在通道之间共享相应的神经网络可以使成本在很大程度上保持恒定。但是,由于网络共享会引入跨通道的相关性,例如红色尺寸会影响绿色尺寸,必须特别注意正确约束模型。
仅跨每通道流将第k个网络的输入连接起来,并对神经网络进行检测以生成用于在所有n个通道中翘曲维度的参数是有问题的,因为它对应于预测单个归一化(n×D)-维函数。而是可以实现单独归一化的D维函数,例如在为每个通道实例化不同的流以确保控制变量的每个通道分别归一化的情况下。
请注意,由于通道只能在第一子流之后相互影响,因此即使在通道之间共享网络,第一子流也会单独产生归一化函数。通过检查为所有通道中的所有维度构造的nD×nD雅可比矩阵,可以轻松验证这一点。矩阵将具有块对角线结构,其中每个d×d块均对应于通道之一的雅可比矩阵。对角线上的块之外的所有条目将为零。只要仅使用一个子流来建模控制变量形状的每个通道,此观察就可以共享网络。多通道归一化流表示控制变量g的频谱解析的每个通道归一化形式
在步骤220,使用乘积来估计差分积分∫f(x,y)-g(x,y)dx。f(x)与控制变量g(x)之间的差分积分或差的积分是误差。举例来说,如先前结合图1B所描述,将误差155与G(例如,神经光场160)相加以产生F(例如,参考光场150)。在一个实施例中,启发法(heuristic)被用来选择其差分积分被设置为零的输入的子集。换句话说,对于输入的子集,不计算差分积分。在一个实施例中,启发法将选择的阈值和与输入相关联的顶点处的光传输路径的路径微分的精确或近似面积中的至少一个进行比较。在一个实施例中,通过使用蒙特卡洛算法最小化差分积分的估计的方差,来确定第一神经网络和至少一个神经网络的参数或权重。
在步骤225,将差分积分和第一参数积分进行组合以估计第二参数积分F(y)=G(y)+∫f(x,y)-g(x,y)dx的解。在一个实施例中,乘积和第一参数积分均由参数缩放系数α(y)缩放。在一个实施例中,参数缩放系数由第二神经网络计算,并且第二神经网络的权重通过使用蒙特卡洛算法最小化估计差分积分的方差来获得。在一个实施例中,参数缩放系数使用蒙特卡洛算法最小化估计差分积分的方差。
在一个实施例中,与绝对差|f(x,y)-g(x,y)|成比例的x的重要性采样被用于估计差分积分。在一个实施例中,选择一个或更多个PDF的组合以用作采样分布。可以根据学习的概率来组合PDF。例如,为了概率性地在均匀采样和神经重要性采样pNI之间进行选择,可以训练参数概率选择神经网络c(x;θc)以近似pNI的方差最优选择概率。在一个实施例中,将c(x;θc)与控制变量和PDF模型同时优化,以在训练过程中的任何一点上实现均匀和神经重要性采样之间的平衡。最终的PDF可能是:
在一个实施例中,使用由至少一个神经网络参数化的归一化流(诸如归一化流神经网络模型110)来执行重要性采样。在一个实施例中,通过最小化G(y)和F(y)之间的相对L2误差,最小化和f(x,y)/∫f(x,y)dx,之间的Kullback-Leibler(KL)散度,以及最小化|f(x,y)-g(x,y)|/∫|f(x,y)-g(x,y)|dx之间的KL散度和重要性采样分布,来确定第一神经网络和至少一个神经网络的权重。
在步骤230,使用该解来近似线性算子。在一个实施例中,线性算子生成图像;图像代表从视点渲染的3D场景。为了生成图像,神经网络系统100接收从视点追踪到3D场景中的光传输路径的分段的顶点,其中第一神经网络和至少一个神经网络中的至少一个预测光传输路径的顶点处的值。
在一个实施例中,第二参数积分F(y)表示特定输入(y)的光场、辐射率、强度、辐射度、辐照度、通量(fluence)、光谱辐射率、场辐射率和体辐射率中的至少一个的值。在一个实施例中,第一神经网络的输入y是与光传输路径的顶点相关联的命中信息。
在一个实施例中,使用光传输路径来训练第一神经网络和至少一个神经网络。在一个实施例中,使用输入的至少第一值来训练第一神经网络,该输入包括该输入的第一值和至少一个第二值。在一个实施例中,这可以使用诸如在2017年K.Dahm和A.Keller中描述的Q学习强化技术来实现。学习轻型运输的强化方式(Learning Light Transport theReinforced Way)。CoRR abs/1701.07403(2017)。http://arxiv.org/abs/1701.07403。
预测神经控制变量以估计线性算子(例如积分)的技术可以应用于蒙特卡洛和准蒙特卡洛积分。计算控制变量的技术还可用于贝叶斯统计,核物理(费曼积分和粒子传输),强化学习,光传输模拟,医学模拟,5G/6G通信技术,解决任何高维积分。该技术可能与神经重要性采样一起使用。
当应用于光传输模拟时,神经控制变量能够匹配其他无偏差方法的最新性能,同时提供开发更高性能,实用解决方案的手段。基于物理的图像合成依赖于估计散射辐射
其沿方向ω离开表面点x,其中fs是双向散射分布函数(BSDF),Li是从方向ωi到达x的辐射,而γ是缩短角度。
散射辐射Ls(x,ω)对应于参数积分F(y),其中y≡(x,ω),其被称为查询位置。积分域和积分变量分别是单位球体和入射方向,即和x≡ωi,分别参考方程(1)和(2)。目标是通过利用参数控制变量来减小估计方差。积分分量用作散射辐射的近似,即G(x,ω;θG)≈Ls(x,ω),而形状分量近似归一化的被积函数。
所学习的光场近似对于高阶反弹具有足够的质量,因此,在一个实施例中,可以省略误差校正,从而以不明显的可见偏置为代价显著降低噪声。使用光传输的示例,误差是差分积分,并且如前所述,误差与G(例如,预测光场)相加以产生F(例如,真实光场)。误差是f(x)与控制变量g(x)之差的积分。
神经控制变量可用于由第二类的Fredholm积分方程控制的光传输模拟。众所周知,这样的积分方程由于其递归性质而难以有效地求解,常常需要使用例如路径追踪获得的多顶点传输路径形式的高维样本。与仅专注于放置样本的常规技术相比,控制变量具有两个令人着迷的优势。首先,控制变量减少了构造的路径顶点的数量,因为差分积分通常携带的能量少于原始积分。因此,可以使用学习到的散射辐射作为真实散射辐射的近似,更早地终止路径。启发法可用于最小化所产生的偏差。其次,控制变量通过对每个光谱带(例如,颜色通道)使用不同的g来简单地支持光谱解析的路径跟踪。如前所述,为了避免使用潜在的许多控制变量的计算开销,可以实现可以一次表示多个(理想相关的)控制变量的归一化流。因此,在很大程度上仅针对标量分布的重要性采样中典型的频谱噪声得到了抑制。
图2B示出了根据一个实施例的由控制变量神经网络系统100预测的控制变量积分G 235和缩放系数α240以及选择概率245的图像。选择概率可以由概率选择神经网络c(x;θc)预测。图2B中所示的图像提供了在每个像素的主顶点处(第一非增量交互作用)光传输积分方程的可训练控制变量的每个分量的贡献的可视化。控制变量积分非常好地近似散射光场Ls(x,ω)。在控制变量积分或形状不准确的地方,学习的α缩放系数会向下加权控制变量对无偏差估计量的贡献。最后,学习的选择概率在双向散射方向函数(BSDF)采样和残差神经重要性采样(NIS)之间混合,从而使方差最小化。如图2B所示,在选择概率245的虚线边界区域内的光滑表面(例如,窗户和镜子)倾向于支持BSDF采样,而较粗糙的表面通常支持残差NIS。
图3A是示出了根据一个实施例的将神经控制变量用于光传输模拟的概念图。当应用于光传输模拟时,神经控制变量算法学习散射光场的近似G,并通过估计原始积分函数f与相应的学习的控制变量g之间的差来校正近似误差。神经控制变量算法将g和G耦合,使得g始终精确地积分到G。为了进一步减少噪声,可以使用学习的PDF p将重要性采样应用于绝对差分积分。可以通过使用近似G来提供启发法,以尽早终止路径。路径的尽早终止会减少平均路径长度,并消除大部分剩余的噪声。在一个实施例中,给定相同的时间量,将神经重要性采样与神经控制变量一起使用的无偏差技术的平均绝对百分比误差(MAPE)降低了29%,而有偏差算法(采用早期路径终止启发法)将MAPE降低了另外40%。这种误差减少大致相当于效率提高10倍。
当用于光传输时,在一个实施例中,第一神经网络学习从第一表面交点反射的光量以追踪更少的路径。当仅需要跟踪路径的第一段时,该技术非常有效。在其他实施例中,第一神经网络学习在随后的反弹中反射的光量。例如,如果第一顶点是完美的镜子,则将计算沿路径的下一个交点的控制变量。在一个实施例中,在与顶点相对应的第一段处使用重要性采样来确定光传输路径的后续段的方向。
在一个实施例中,训练第一神经网络以使用嘈杂的光路(例如,不是2D图像)来学习3D场景的光场。然后,经训练的第一神经网络可以基于针对主光线(即第一段)或针对随后光线的命中信息(例如3D位置,视图方向,表面法线等)来预测朝向相机的光场的值。
当路径逃离场景或碰到不散射光的黑体辐射器时,将终止对辐射的递归估计。由于控制变量的积分成分在许多情况下很好地近似了散射光场,因此有时路径可能会被提前截断,从而产生有偏差的辐射估计。特别地,神经散射光场G可以在非镜面表面早期终止。但是,太早终止可能会产生具有误差的图像,表现为低频变化和模糊。可以使用标准来忽略校正项,即,通过神经光场G近似Ls。
在一个实施例中,该标准测量路径顶点的随机面积扩展。一旦面积扩展变得足够大,就可以终止路径并且可以代替地使用神经光场G。
图3B示出了根据一个实施例的路径顶点x和相应的引起的面积扩展。在路径顶点x处使用p(Ω│x,ω)对方向ω进行采样,从而引起围绕下一个路径顶点x'的面积扩展为
其中γ'是x'处的入射角。在第n个路径顶点处的累积面积扩展是在所有先前顶点处引起的扩展的卷积。假设各向同性高斯扩展具有方差和平行曲面,则卷积可以通过对连续顶点处的面积扩展的平方根求和并重新平方来近似得出:
将累积的面积扩展与投影到主顶点x1上的像素占用空间(footprint)进行比较。在一个实施例中,如果投影的像素占用空间比路径的累积面积扩展小10,000倍-大致对应于100像素宽的图像空间滤镜,则路径终止为G(x,ωi)。否则,将使用无偏差控制变量来递归地评估下一个路径顶点处的启发法。在其他实施例中,投影像素占用空间面积的不同大小或阈值用于控制终止。启发法路径终止缩短了平均路径长度,并以少量的可见偏差为代价消除了大量的噪声。
图3C示出了根据一个实施例的用于产生3D场景的图像的方法320的流程图。本文描述的方法320的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。该方法还可以体现为存储在计算机存储介质上的计算机可用指令。该方法可以由独立应用程序,服务或托管服务(独立或与另一托管服务组合)或另一产品的插件(仅举几例)提供。另外,通过示例的方式,相对于图1C的控制变量神经网络系统100描述了方法320。然而,该方法可以附加地或可替代地由任何一个系统或系统的任何组合来执行,包括但不限于本文所述的那些。此外,本领域普通技术人员将理解,执行方法320的任何系统都在本公开的实施例的范围和精神内。
在步骤325,第一神经网络基于从相机指向3D场景的光传输路径的顶点的命中数据,预测3D场景的反射光场的近似值。在一个实施例中,控制变量神经网络模型125的积分预测G(例如,图1B的预测神经光场160)。在一个实施例中,反射光场的近似由阿尔法(α)缩放,α由第一神经网络和第二神经网络中的至少一个计算。
在步骤330,通过从对应于命中数据的位置跟踪次级(secondary)路径以产生误差估计,来估计3D场景的反射光场的近似与正确反射光场之间的误差。在一个示例中,如图1B所示,误差155是被积函数f(x)与控制变量g(x)之差的积分,其中g(x)可以由α缩放。近似的反射光场与摄像机的位置(例如,位置和方向)无关,因此可以用于从不同的相机位置生成3D场景的图像。在一个实施例中,与误差估计成比例的重要性采样用于选择跟踪次级路径的方向。
在一个实施例中,使用由至少一个神经网络参数化的归一化流来执行重要性采样。例如,可以通过图1C所示的归一化流神经网络模型110来执行归一化流。在步骤335,将误差估计和近似组合,以产生从相机观看的3D场景的图像。
控制变量神经网络系统100可以在渲染过程中以强化学习的方式进行优化:跟踪路径的顶点用于优化神经网络,同时驱动方差减小。因此,神经网络驱动其自身训练数据和最终图像的方差减小。
与用于高维积分的蒙特卡洛和准蒙特卡洛方法相似,神经网络在高维近似中特别有用。与常规技术相反,可以观察到与地面实况解决方案的误差或偶发偏差。使用控制变量可以校正斑点,对比度降低或高光模糊。具体地,将正确解之间的差的估计添加到该近似中,以恢复误差仅表现为噪声的无偏差结果。当控制变量设计得当时,残差分积分 的能量通常比原始积分少。神经重要性采样能够对包括残差分积分在内的任意被积函数进行重要性采样。控制变量神经网络系统100可以采用多种采样技术来表征每种方法的优势,只要共同优化所有可训练参数即可。
神经控制变量可用于减小参数蒙特卡洛积分中的方差并减小参数准蒙特卡洛积分中的误差。控制变量神经网络系统100具有足够的近似能力,并且评估效率很高。效率产生于使用第一神经网络来推理控制变量的积分,并使用归一化流来建模控制变量的形状。比例系数可以被学习并用于减少噪声。神经重要性采样可用于估计校正项并进一步减小积分误差。参数可训练控制变量可与可训练的重要性采样器(例如神经重要性采样)配合使用,比单独使用每种技术都能产生更好的结果。与传统技术相比,神经控制变量的无偏差应用提供了效率提升,而有偏差算法大大提高了效率。神经控制变量允许将数据驱动的高质量神经近似与精确的基于物理的积分器相结合,可根据需要使用该积分器来纠正误差。
并行处理架构
图4示出了根据一个实施例的并行处理单元(PPU)400。PPU 400可以用于实现控制变量神经网络系统100。
在一个实施例中,PPU 400是在一个或更多个积分电路设备上实现的多线程处理器。PPU 400是在一个或更多个集成电路器件上实现的多线程处理器。PPU 400是设计用于并行处理许多线程的延迟隐藏体系架构。线程(即,执行线程)是被配置为由PPU 400执行的指令集的实例。在一个实施例中,PPU 400是图形处理单元(GPU),其被配置为实现用于处理三维(3D)图形数据的图形渲染管线,以便生成用于在显示装置(诸如液晶显示(LCD)设备)上显示的二维(2D)图像数据。在其他实施例中,PPU400可以用于执行通用计算。尽管为了说明的目的本文提供了一个示例性并行处理器,但应特别指出的是,该处理器仅出于说明目的进行阐述,并且可使用任何处理器来补充和/或替代该处理器。
一个或更多个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通过集线器430430发送到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或PPU400的其他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。换句话说,I/O单元405被配置为在PPU400的各种逻辑单元之间和之中路由通信。
在一个实施例中,由主机处理器执行的程序在缓冲区中对命令流进行编码,该缓冲区向PPU 400提供工作量用于处理。工作量可以包括要由那些指令处理的许多指令和数据。缓冲区是存储器中可由主机处理器和PPU400两者访问(例如,读/写)的区域。例如,I/O单元405可以被配置为经由通过互连402传输的存储器请求访问连接到互连402的系统存储器中的缓冲区。在一个实施例中,主机处理器将命令流写入缓冲区,然后向PPU400发送指向命令流开始的指针。前端单元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通信。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,这可以实现存储器接口用于从存储器404读取数据或向存储器404写入数据。结果可以通过NVLink 410传输到另一个PPU 400或CPU。在一个实施例中,PPU 400包括数量为U的存储器分区单元480,其等于耦合到PPU 400的存储器404的单独的和不同的存储器设备的数量。每个GPC 450可以包括存储器管理单元以提供虚拟地址到物理地址的转换,存储器保护和存储器请求仲裁。在一个实施例中,存储器管理单元提供一个或更多个转换后备缓冲器(TLB),用于执行将虚拟地址转换为存储器404中的物理地址。
在一个实施例中,存储器分区单元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高速缓存的一部分。然后,可以在GPC 450内的各个单元中实现较低级别的高速缓存。例如,GPC 450内的每个处理单元可以实现一级(L1)高速缓存。L1高速缓存是专用于特定处理单元的专用存储器。L2高速缓存460耦合到存储器接口470和XBar 470,并且可以从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)。
张量核心被配置为执行矩阵运算。具体地,张量核心被配置为执行深度学习矩阵运算,诸如用于神经网络训练和推理的卷积运算。在一个实施例中,每个张量核心在4×4矩阵上运算并且执行矩阵乘法和累加运算D=A×B+C,其中A、B、C和D是4×4矩阵。
在一个实施例中,矩阵乘法输入A和B是16位浮点矩阵,而累加矩阵C和D可以是16位浮点或32位浮点矩阵。张量核心在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可包括和/或被配置为执行一个或更多个处理核心和/或其组件的功能,例如,射线追踪(RT)核心,张量核心(TC),张量处理单元(TPU),像素视觉核心(PVC),视觉处理单元(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的概念图。示例性系统565可以被配置为实现图2A中所示的方法200。处理系统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可以被配置为实现图2A中所示的方法200。
如图所示,提供了一种系统565,该系统565包括至少一个连接至通信总线575的中央处理单元530。通信总线575可以直接或间接耦合以下设备中的一个或更多个:主存储器540,网络接口535,一个或更多个CPU 530,一个或更多个显示设备545,一个或更多个输入设备560,交换机510和并行处理系统525。通信总线575可以使用任何合适的协议来实现,并且可以表示一个或更多个链路或总线,例如地址总线,数据总线,控制总线或其组合。通信总线575可以包括一种或更多种总线或链路类型,例如工业标准架构(ISA)总线,扩展工业标准架构(EISA)总线,视频电子标准协会(VESA)总线,外围组件互连(PCI)总线,外围组件互连快速(PCIe)总线,超传输(HyperTransport)和/或另一种类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为示例,CPU 530可以直接连接到主存储器540。此外,一个或更多个CPU 530可以直接连接到并行处理系统525。在组件之间存在直接或点对点连接的情况下,通信总线575可以包括PCIe链路以执行连接。在这些示例中,PCI总线不需要被包括在系统565中。
尽管图5C的各个框被示为经由通信总线575与线连接,但这并不旨在进行限制,仅是为了清楚起见。例如,在一些实施例中,呈现组件,例如一个或更多个显示设备545,可以被认为是I/O组件,例如一个或更多个输入设备560(例如,如果显示器是触摸屏)。作为另一示例,一个或更多个CPU 530和/或并行处理系统525可以包括存储器(例如,除了并行处理系统525,CPU 530和/或其他组件之外,主存储器540可以代表存储设备)。换句话说,图5C的计算设备仅是说明性的。在“工作站”,“服务器”,“笔记本电脑”,“台式机”,“平板电脑”,“客户端设备”,“移动设备”,“手持设备”,“游戏机”,“电子控制单元(ECU)”,“虚拟现实系统”和/或其他设备或系统类型等类别之间未进行区分,均在图5C的计算设备的范围内。
系统565还包括主存储器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之外或可替代地,并行处理模块525可被配置为执行计算机可读指令中的至少一些以控制系统565的一个或更多个组件以执行本文描述的方法和/或过程一个或更多个。系统565可以使用并行处理模块525来渲染图形(例如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可以耦合到网络(例如,电信网络,局域网(LAN),无线网络,诸如互联网的广域网(WAN),对等网络,电缆网络等)通过网络接口535进行通信。系统565可以被包括在分布式网络和/或云计算环境内。
网络接口535可以包括使系统565能够经由包括有线和/或无线通信的电子通信网络与其他计算设备进行通信的一个或更多个接收器,发送器和/或收发器。网络接口535可以包括组件和功能,以使得能够通过诸如多个不同网络中的任何一个进行通信,诸如无线网络(例如,Wi-Fi,Z-Wave,蓝牙,蓝牙LE,ZigBee等),有线网络(例如,通过以太网或InfiniBand进行通信),低功耗广域网(例如LoRaWAN,SigFox等)和/或因特网。
系统565还可包括辅助存储器(未示出)。辅助存储器610包括例如硬盘驱动器和/或可移除存储驱动器,其代表软盘驱动器,磁带驱动器,光盘驱动器,数字多功能盘(DVD)驱动器,记录设备,通用串行总线(USB)闪存。可移除存储驱动器以众所周知的方式读取和/或写入可移除存储单元。系统565还可包括硬连线电源,电池电源或其组合(未示出)。电源可以向系统565提供电力以使系统565的组件能够操作。
前述模块和/或设备中的每一个甚至可以被放置在单个半导体平台上以形成系统565。或者,根据用户的需求,各个模块也可以被独立地放置或以半导体平台的各种组合放置。尽管上面已经描述了各种实施例,但是应该理解,它们仅是示例性的,而非限制性的。因此,优选实施例的广度和范围不应由任何上述示例性实施例限制,而应仅根据所附权利要求及其等同物来限定。
示例网络环境
适用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备,服务器,网络附加存储(NAS),其他后端设备和/或其他设备类型。客户端设备,服务器和/或其他设备类型(例如,每个设备)可以在图5A的处理系统500和/或图5B的示例性系统565的一个或更多个实例上实现-例如,每个设备可以包括类似的组件,处理系统500和/或示例性系统565的特征和/或功能。
网络环境的组件可以经由一种或更多种网络(可以是有线、无线或两者)相互通信。该网络可以包括多个网络或网络的网络。举例来说,该网络可以包括一个或更多个广域网(WAN),一个或更多个局域网(LAN),一个或更多个公共网络,例如因特网和/或公共交换电话网络(PSTN),和/或一个或更多个专用网络。在网络包括无线电信网络的情况下,诸如基站,通信塔,甚至接入点(以及其他组件)之类的组件可以提供无线连接。
兼容的网络环境可以包括一个或更多个对等网络环境-在这种情况下,服务器可能不包含在网络环境中,以及一个或更多个客户端-服务器网络环境,在这种情况下,一个或更多个服务器可能包含在网络环境中。在对等网络环境中,本文关于一个或更多个服务器所描述的功能可以在任意数量的客户端设备上实现。
在至少一个实施例中,网络环境可以包括一个或更多个基于云的网络环境,分布式计算环境,其组合等。基于云的网络环境可以包括框架层,作业调度器,资源管理器以及在一个或更多个服务器上实现的分布式文件系统,该服务器可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可以包括用于支持软件层的软件和/或应用程序层的一个或更多个应用程序的框架。该软件或应用程序可以分别包括基于网络的服务软件或应用程序。在实施例中,一个或更多个客户端设备可以使用基于网络的服务软件或应用程序(例如,通过经由一个或更多个应用程序编程接口(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是能够传送基于深度神经网络的人工智能和机器学习应用所需性能的计算平台。
此外,应用本文公开的一种或更多种技术产生的图像可以用于训练,测试或认证用于识别现实世界中的对象和环境的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中,该模型存储库516可以存储用于用户,应用程序或服务等的不同模型或网络。可以基于多个不同因素来利用单个应用程序或实体的多个模型。
在至少一个实施例中,在随后的时间点,可以从客户端设备502(或另一个这样的设备)接收由经训练的神经网络至少部分地确定或影响的内容(例如,路径确定)或数据的请求。该请求可以包括例如要使用神经网络处理以获得一个或更多个推论或其他输出值,分类或预测的输入数据,或者对于至少一个实施例,可以由接口层508接收输入数据,并且虽然也可以使用不同的系统或服务,但它还是指向推理模块518的。在至少一个实施例中,如果还没有本地存储在推理模块518中,则推理模块518可以从模型存储库516获得合适的训练网络,例如本文所讨论的训练深神经网络(DNN)。推理模块518可以提供数据作为训练网络的输入,然后可以生成一个或更多个推论作为输出。例如,这可以包括输入数据实例的分类。在至少一个实施例中,然后可以将推理发送到客户端设备502,以向用户显示或进行其他通信。在至少一个实施例中,还可以将用于用户的上下文数据存储到用户上下文数据存储库522,该用户上下文数据存储库522可以包括关于用户的数据,该数据可以用作在获取实例后生成推理或确定返回到网络的数据时对网络的输入。在至少一个实施例中,可以包括输入或推理数据中的至少一些的相关数据也可以被存储到本地数据库534中以用于处理将来的请求。在至少一个实施例中,用户可以使用帐户信息或其他信息来访问提供商环境的资源或功能。在至少一个实施例中,如果允许和可用,则还可以收集用户数据并将其用于进一步的训练模型,以便为将来的请求提供更准确的推理。在至少一个实施例中,可以通过用户界面接收对在客户端设备502上执行的机器学习应用程序526的请求,并通过相同的界面显示结果。客户端设备可以包括诸如用于生成请求和处理结果或响应的处理器528和存储器562之类的资源,以及用于存储用于机器学习应用程序526的数据的至少一个数据存储元件552。
在至少一个实施例中,处理器528(或训练模块512或推理模块518的处理器)将是中央处理单元(CPU)。但是,如上所述,此类环境中的资源可以利用GPU来处理至少某些类型的请求的数据。具有数千个内核的GPU(例如PPU 400)被设计为处理大量的并行工作负载,因此,在用于训练神经网络和生成预测的深度学习中变得很流行。尽管使用GPU进行离线构建可以更快地训练更大,更复杂的模型,但离线生成预测意味着无法使用请求时间输入特征,或者必须针对所有特征排列生成预测并将其存储在查找表中才能使用实时请求。如果深度学习框架支持CPU模式,并且模型又小又简单,足以以合理的延迟在CPU上执行前馈,那么CPU实例上的服务就可以托管模型。在这种情况下,可以在GPU上离线进行训练,而在CPU上实时进行推理。如果CPU方法不可行,则服务可以在GPU实例上运行。但是,由于GPU具有与CPU不同的性能和成本特征,因此运行将运行时算法卸载到GPU的服务可能要求其设计与基于CPU的服务不同。
在至少一个实施例中,可以从客户端设备502提供视频数据以在提供商环境506中进行增强。在至少一个实施例中,可以对视频数据进行处理以在客户端设备502上进行增强。在至少一个实施例中,数据可以从第三方内容提供商524进行流传输,并由第三方内容提供商524,提供商环境506或客户端设备502增强。在至少一个实施例中,可以从客户端设备502提供视频数据在提供商环境506中用作培训数据。
在至少一个实施例中,可以由客户端设备502和/或提供商环境506来执行有监督和/或无监督的训练。在至少一个实施例中,一组训练数据514(例如,分类或标记的数据)作为输入提供,以用作训练数据。在一个实施例中,该组训练数据可以用于训练控制变量神经网络系统100内的一个或更多个神经网络。
在至少一个实施例中,训练数据可以包括要为其训练神经网络的至少一种类型的对象的实例,以及标识该类型的对象的信息。在至少一个实施例中,训练数据可以包括一组图像,每个图像包括一种对象的类型的表示,其中每个图像还包括标签,元数据,分类或其他识别对象的信息或或标识相应图像中表示的对象类型的其他信息。各种其他类型的数据也可以用作训练数据,可以包括文本数据,音频数据,视频数据等。在至少一个实施例中,训练数据514被提供作为训练输入到训练模块512。在至少一个实施例中,训练模块512可以是包括硬件和软件的系统或服务,例如执行训练应用程序的一个或更多个计算设备,用于训练神经网络(或其他模型或算法等)。在至少一个实施例中,训练模块512接收指示要用于训练的模型的类型的指令或请求。在至少一个实施例中,模型可以是对于这种目的有用的任何适当的统计模型,网络或算法,可以包括人工神经网络,深度学习算法,学习分类器,贝叶斯网络等。在至少一个实施例中,训练模块512可以从适当的存储库516中选择初始模型或其他未训练的模型,并利用训练数据514来训练模型,从而生成可以经训练的模型(例如,经训练的深度神经网络),其可以用于对相似类型的数据进行分类,或生成其他此类推论。在不使用训练数据的至少一个实施例中,根据训练模块512,仍然可以选择适当的初始模型来对输入数据进行训练。
在至少一个实施例中,可以以多种不同的方式来训练模型,这可以部分地取决于所选择的模型的类型。在至少一个实施例中,可以向机器学习算法提供一组训练数据,其中模型是通过训练过程创建的模型伪像。在至少一个实施例中,训练数据的每个实例包含正确答案(例如,分类),其可以被称为目标或目标属性。在至少一个实施例中,一种学习算法在训练数据中找到将输入数据属性映射到目标的模式,要预测的答案,以及输出捕获这些模式的机器学习模型。在至少一个实施例中,然后可以使用机器学习模型来获得针对未指定目标的新数据的预测。
在至少一个实施例中,训练和推理管理器532可以从包括二进制分类,多分类,生成和回归模型的一组机器学习模型中进行选择。在至少一个实施例中,要使用的模型的类型可以至少部分取决于要预测的目标的类型。
应用本文公开的一种或更多种技术产生的图像可以显示在监视器或其他显示设备上。在一些实施例中,显示设备可以直接耦合到生成或渲染图像的系统或处理器。在其他实施例中,显示设备可以例如经由网络间接地耦合到系统或处理器。此类网络的示例包括因特网,移动电信网络,WIFI网络以及任何其他有线和/或无线联网系统。当显示设备间接耦合时,由系统或处理器生成的图像可以通过网络流传输到显示设备。这种流传输允许例如在服务器,数据中心或基于云的计算环境中执行渲染图像的视频游戏或其他应用程序,并且渲染的图像将在与服务器或数据中心物理上分开的一个或更多个用户设备(例如计算机,视频游戏机,智能手机,其他移动设备等)上传输和显示。因此,本文公开的技术可以应用于增强流传输的图像并增强流传输图像的服务,例如NVIDIA GeForce Now(GFN),GoogleStadia等。
注意,本文描述的技术可以体现在存储在计算机可读介质中的可执行指令中,以供基于处理器的指令执行机器,系统,装置或设备使用或与其结合使用。本领域技术人员将理解,对于一些实施例,可以包括各种类型的计算机可读介质来存储数据。如本文中所使用的,“计算机可读介质”包括用于存储计算机程序的可执行指令的任何合适的介质中的一个或更多个,使得指令执行机器,系统,装置或设备可以从计算机可读介质读取(或获取)指令并执行用于执行所描述的实施例的指令。合适的存储格式包括电子,磁性,光学和电磁格式中的一种或更多种。常规示例性计算机可读介质的非详尽列表包括:便携式计算机软盘;随机存取存储器(RAM);只读存储器(ROM);可擦可编程只读存储器(EPROM);闪存设备;光学存储设备包括便携式光盘(CD),便携式数字视频光盘(DVD)等。
应该理解,附图中示出的组件的布置是出于说明的目的,并且其他布置也是可能的。例如,本文描述的一个或更多个元件可以全部或部分地实现为电子硬件组件。可以以软件,硬件或软件和硬件的组合来实现其他元件。而且,可以组合这些其他元件中的一些或全部,可以完全省略一些其他元件,并且可以添加附加组件,同时仍然实现本文所述的功能。因此,本文描述的主题可以体现为许多不同的变型,并且所有这样的变型都被认为在权利要求的范围内。
为了促进对本文所述主题的理解,根据动作序列描述了许多方面。本领域技术人员将认识到,各种动作可以通过专用电路或电路,通过由一个或更多个处理器执行的程序指令,或通过两者的组合来执行。本文对任何动作序列的描述并不旨在暗示必须遵循为执行该序列而描述的特定顺序。除非本文另外指出或与上下文明显矛盾,否则本文描述的所有方法可以以任何合适的顺序执行。
在描述主题的上下文中(特别是在所附权利要求的上下文中)术语“一”,“一个”和“该”以及类似的引用的使用应解释为涵盖单数形式和单数形式。除非本文另外指出或与上下文明显矛盾,否则为复数形式。术语“至少一个”之后是一个或更多个项目的列表(例如,“A和B中的至少一个”)应理解为是指从所列项目(A或B)中选择的一个项目或两个或更多个所列项目(A和B)的任意组合,除非本文另有说明或与上下文明显矛盾。此外,前述描述仅出于说明的目的,而非出于限制的目的,因为所寻求的保护范围由下文所述的权利要求及其任何等同形式限定。除非另外要求,否则本文提供的任何和所有示例或示例性语言(例如“诸如”)的使用仅旨在更好地说明主题,并且不对主题的范围构成限制。在权利要求书和书面描述中,术语“基于”和其他类似的短语表示产生结果的条件的使用,并不旨在排除产生该结果的任何其他条件。说明书中的任何语言都不应解释为指示任何未要求保护的要素对于实施所要求保护的发明是必不可少的。
Claims (36)
2.根据权利要求1所述的计算机实现的方法,其中所述第二函数是归一化流。
3.根据权利要求1所述的计算机实现的方法,其中所述第二参数积分是F(y)=G(y)+∫f(x,y)-g(x,y)dx。
4.根据权利要求1所述的计算机实现的方法,其中组合所述乘积和所述第一参数积分包括:由参数缩放系数α(y)来缩放所述乘积和所述第一参数积分两者。
5.根据权利要求4所述的计算机实现的方法,其中所述参数缩放系数是由第二神经网络计算的,并且所述第二神经网络的权重是通过使用蒙特卡洛算法最小化估计所述差分积分的方差来获得的。
6.根据权利要求4所述的计算机实现的方法,其中所述参数缩放系数使用蒙特卡洛算法最小化估计所述差分积分的方差。
7.根据权利要求1所述的计算机实现的方法,其中所述第二参数积分F(y)表示特定输入y的光场、辐射率、强度、辐射度、辐照度、通量、光谱辐射率、场辐射率和体辐射率中的至少一个的值。
8.根据权利要求7所述的计算机实现的方法,其中所述第一神经网络的输入y是与光传输路径的顶点相关联的命中信息。
9.根据权利要求8所述的计算机实现的方法,其中:
所述线性算子生成图像;以及
所述图像表示从视点渲染的3D场景,所述方法还包括:
接收从视点到所述3D场景的光传输路径的分段的顶点,
其中所述第一神经网络和所述至少一个神经网络中的至少一个预测在所述光传输路径的顶点处的值,其中所述值用于生成所述图像。
10.根据权利要求8所述的计算机实现的方法,还包括:使用启发法来选择输入的子集,针对所述输入的子集,所述差分积分设置为零。
11.根据权利要求10所述的计算机实现的方法,其中所述启发法将所选择的阈值与在与所述输入相关联的所述顶点处的所述光传输路径的路径微分的精确或近似面积中的至少一个进行比较。
12.根据权利要求8所述的计算机实现的方法,还包括:在与所述顶点相对应的第一段处使用重要性采样来确定所述光传输路径的后续段的方向。
13.根据权利要求7所述的计算机实现的方法,其中使用光传输路径来训练所述第一神经网络和所述至少一个神经网络。
14.根据权利要求1所述的计算机实现的方法,其中使用所述输入的至少第一值来训练所述第一神经网络,所述输入包括所述输入的所述第一值和至少一个第二值。
15.根据权利要求1所述的计算机实现的方法,还包括:使用与绝对差|f(x,y)-g(x,y)|成比例的x的重要性采样来估计所述差分积分。
16.根据权利要求14所述的计算机实现的方法,其中使用由所述至少一个神经网络参数化的归一化流来执行所述重要性采样。
18.根据权利要求1所述的计算机实现的方法,其中通过使用蒙特卡洛算法最小化所述差分积分的估计的方差,来确定所述第一神经网络和所述至少一个神经网络的权重。
19.根据权利要求1所述的计算机实现的方法,其中在云计算环境中执行预测、近似、计算、估计、组合和近似的步骤。
20.根据权利要求1所述的计算机实现的方法,其中在服务器上或在数据中心中执行预测、近似、计算、估计、组合和近似的步骤以生成图像,并且所述图像被流传输给用户设备。
21.根据权利要求1所述的计算机实现的方法,其中执行预测、近似、计算、估计、组合和近似的步骤,以生成用于训练、测试或证明机器、机器人或自主车辆中采用的神经网络的图像。
22.根据权利要求1所述的计算机实现的方法,其中在包括图形处理单元的部分的虚拟机上执行预测、近似、计算、估计、组合和近似的步骤。
24.根据权利要求23所述的系统,其中所述第二函数是归一化流。
25.根据权利要求23所述的系统,其中通过由参数缩放系数α(y)来缩放所述乘积和所述第一参数积分两者,来组合所述乘积和所述第一参数积分。
26.根据权利要求23所述的系统,其中所述第二参数积分F(y)表示特定输入y的光场、辐射率、强度、辐射度、辐照度、通量、光谱辐射率、场辐射率和体辐射率中的至少一个的值。
27.根据权利要求23所述的系统,其中通过使用蒙特卡洛算法最小化所述差分积分的估计的方差,来确定所述第一神经网络和所述至少一个神经网络的权重。
29.根据权利要求28所述的非暂时性计算机可读介质,其中所述第二函数是归一化流。
30.根据权利要求28所述的非暂时性计算机可读介质,其中组合所述乘积和所述第一参数积分包括:由参数缩放系数α(y)来缩放所述乘积和所述第一参数积分两者。
31.根据权利要求28所述的非暂时性计算机可读介质,其中所述第二参数积分F(y)表示特定输入y的光场、辐射率、强度、辐射度、辐照度、通量、光谱辐射率、场辐射率和体辐射率中的至少一个的值。
32.根据权利要求28所述的非暂时性计算机可读介质,其中通过使用蒙特卡洛算法最小化所述差分积分的估计的方差,来确定所述第一神经网络和所述至少一个神经网络的权重。
33.一种计算机实现的方法,包括:
由第一神经网络基于从相机指向三维(3D)场景的光传输路径的顶点的命中数据,预测所述3D场景的反射光场的近似;
通过从对应于所述命中数据的位置追踪次级路径以产生误差估计,来估计针对所述3D场景的反射光场的近似与正确反射光场之间的误差;以及
组合所述误差估计和所述近似,以产生从所述相机观看的所述3D场景的图像。
34.根据权利要求33所述的计算机实现的方法,还包括:通过由所述第一神经网络和第二神经网络中的至少一个计算的α来缩放所述反射光场的所述近似。
35.根据权利要求33所述的计算机实现的方法,其中与所述误差估计成比例的重要性采样被用于选择追踪所述次级路径的方向。
36.根据权利要求35所述的计算机实现的方法,其中使用由至少一个神经网络参数化的归一化流来执行所述重要性采样。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062992717P | 2020-03-20 | 2020-03-20 | |
US62/992,717 | 2020-03-20 | ||
US17/083,787 US11816404B2 (en) | 2020-03-20 | 2020-10-29 | Neural network control variates |
US17/083,787 | 2020-10-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113496271A true CN113496271A (zh) | 2021-10-12 |
Family
ID=77746689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110303103.5A Pending CN113496271A (zh) | 2020-03-20 | 2021-03-22 | 神经网络控制变量 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11816404B2 (zh) |
CN (1) | CN113496271A (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2605155B (en) * | 2021-03-24 | 2023-05-17 | Sony Interactive Entertainment Inc | Image rendering method and apparatus |
GB2605171B (en) * | 2021-03-24 | 2023-05-24 | Sony Interactive Entertainment Inc | Image rendering method and apparatus |
GB2605158B (en) | 2021-03-24 | 2023-05-17 | Sony Interactive Entertainment Inc | Image rendering method and apparatus |
US20230075736A1 (en) * | 2021-08-19 | 2023-03-09 | General Electric Company | Systems and Methods for Self-Adapting Neutralization Against Cyber-Faults |
US20230306675A1 (en) * | 2022-03-28 | 2023-09-28 | Snap Inc. | 3d modeling based on neural light field |
CN115714888B (zh) * | 2022-10-09 | 2023-08-29 | 名之梦(上海)科技有限公司 | 视频生成方法、装置、设备与计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160321523A1 (en) * | 2015-04-30 | 2016-11-03 | The Regents Of The University Of California | Using machine learning to filter monte carlo noise from images |
US20190244060A1 (en) * | 2018-02-02 | 2019-08-08 | Nvidia Corporation | Domain Stylization Using a Neural Network Model |
US20190251397A1 (en) * | 2018-02-14 | 2019-08-15 | Nvidia Corporation | Generation of Synthetic Images For Training a Neural Network Model |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10235601B1 (en) * | 2017-09-07 | 2019-03-19 | 7D Labs, Inc. | Method for image analysis |
US10672109B2 (en) * | 2018-03-29 | 2020-06-02 | Pixar | Multi-scale architecture of denoising monte carlo renderings using neural networks |
-
2020
- 2020-10-29 US US17/083,787 patent/US11816404B2/en active Active
-
2021
- 2021-03-22 CN CN202110303103.5A patent/CN113496271A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160321523A1 (en) * | 2015-04-30 | 2016-11-03 | The Regents Of The University Of California | Using machine learning to filter monte carlo noise from images |
US20190244060A1 (en) * | 2018-02-02 | 2019-08-08 | Nvidia Corporation | Domain Stylization Using a Neural Network Model |
US20190251397A1 (en) * | 2018-02-14 | 2019-08-15 | Nvidia Corporation | Generation of Synthetic Images For Training a Neural Network Model |
Also Published As
Publication number | Publication date |
---|---|
US11816404B2 (en) | 2023-11-14 |
US20210294945A1 (en) | 2021-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190035113A1 (en) | Temporally stable data reconstruction with an external recurrent neural network | |
US11620521B2 (en) | Smoothing regularization for a generative neural network | |
US11816404B2 (en) | Neural network control variates | |
US11734890B2 (en) | Three-dimensional model recovery from two-dimensional images | |
US11450077B2 (en) | Appearance-driven automatic three-dimensional modeling | |
CN114118347A (zh) | 用于神经网络量化的细粒度每向量缩放 | |
US11610360B2 (en) | Real-time neural network radiance caching for path tracing | |
US11610370B2 (en) | Joint shape and appearance optimization through topology sampling | |
US20230052645A1 (en) | Multiresolution hash encoding for neural networks | |
US11935179B2 (en) | Fully-fused neural network execution | |
US20210383241A1 (en) | Training neural networks with limited data using invertible augmentation operators | |
US20230237342A1 (en) | Adaptive lookahead for planning and learning | |
CN113762461A (zh) | 使用可逆增强算子采用有限数据训练神经网络 | |
US20220391781A1 (en) | Architecture-agnostic federated learning system | |
CN116736624A (zh) | 在光学接近度校正流中对演进掩模形状的并行掩模规则检查 | |
US11282258B1 (en) | Adaptive sampling at a target sampling rate | |
US20220398283A1 (en) | Method for fast and better tree search for reinforcement learning | |
US20230252692A1 (en) | Learning dense correspondences for images | |
US20240020443A1 (en) | Neural network control variates | |
US20240144000A1 (en) | Fairness-based neural network model training using real and generated data | |
US11783532B1 (en) | View synthesis using attribute correspondences and geometric relationship constraints | |
US20240046422A1 (en) | Pseudoinverse guidance for data restoration with diffusion models | |
US20230237308A1 (en) | Optimally clipped tensors and vectors | |
US20240127041A1 (en) | Convolutional structured state space model | |
US20230316631A1 (en) | Noise-free differentiable ray casting |
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 |