🌓
搜索
 找回密码
 立即注册

大模型和深度学习的硬件设计:NVIDIA首席科学家Bill Dally精彩讲座

admin 2023-11-26 04:13:35 61793

文:城主

【声明:转载本文的公号请在文章开头添加本公众号入口,及原文链接】

这是非常难得的全面探讨大模型训练所依赖硬件的设计发展的讲座。作为NVIDIA高级总裁和首席科学家,Bill Dally对当下GPT等AI大模型依赖的硬件基础给出了深入而精彩的讲解

(部分内容可能相对较深,但有理工科基础的同学能全文看懂。)


惯例有B站传送门:【“深度学习硬件”NVIDIA首席科学家Bill Dally精彩讲座-哔哩哔哩】 https://b23.tv/Cs33aSC


-以下是根据讲座原意重写的天空之城文字版-

欢迎大家参加Hotships 2023的主题演讲二,本次演讲的主题是深度学习硬件。我们有幸邀请到比尔,一位在整个技术堆栈中都有所涉猎的杰出研究科学家。他在并行计算、架构、网络、互连以及路由等领域做出了开创性的贡献。比尔获得了计算机架构领域内几乎所有可能的奖项,包括莫里斯·威尔克斯奖和埃克哈特·莫克利奖。他同时是ACM和IEEE的成员,并为美国总统提供专业咨询。我们都见证了比尔在行业中的巨大影响力,尤其是去年ChatGPT的成功,如果没有比尔的贡献,这些技术成就是不可能实现的。他还是技术转移的典范,与斯坦福大学的学生合作,在流处理器领域的工作使得相关公司在15年内成为全球第六大最有价值的公司。现在,请比尔上台发言。


我相信在座的各位在上个周末都花了很多时间与ChatGPT互动,向它提问,甚至让它为孩子编写故事。当我准备这次演讲时,我尝试在ChatGPT中输入了一些关于深度学习硬件的问题。它给出了一些关于GPU和TPU等方面的非常基础的回答。

我意识到要在ChatGPT中得到有用的信息,关键是提出正确的问题。于是我尝试了一个新的提示:“Bill Daly对深度学习硬件的发展方向有何看法?”结果它给出了一个非常好的概述,这让我印象深刻。如果你思考ChatGPT的工作原理,它实际上是在预测下一个单词,而且做得非常准确。

在这个过程中,它实际上是在进行一种蒸馏过程。我来自田纳西州东部的山区,对蒸馏过程非常熟悉。我们通常将玉米等原料放入蒸馏器,然后得到威士忌。在这里,我们所做的是将大量的原始数据,通常是超过一万亿个单词,分解成Token,通常每个单词有两个标记。我们训练一个通用模型,这就像给孩子一个文科学位,让他们对所有事情都有所了解,因为它是在这个庞大的语料库上训练的,这个语料库包含了互联网上的所有内容。有些内容可能不是我们希望模型学习的,这可能会导致一些不幸的回答。但我们会使这些模型变得有价值,然后根据特定应用程序的特殊数据对它们进行微调,无论是编程、提供医疗建议、教育还是写作。这样,模型在特定任务上就会变得更加精准。我们在这里所做的是提取这些数据,以便在我们进行推理查询时能够得到结果。在这个生态系统中,有很多参与者。

今天我将重点介绍硬件方面,这些硬件用于训练、微调和推理。但数据供应商在这里也非常关键。我认为法律将解决版权问题,如果你用受版权保护的图像训练模型,那么你需要向那些人支付费用。这一切仍在解决中。因此,无论是扩散模型的图像还是语言模型的受版权保护的文本片段,数据供应商将成为非常重要的一部分。当然,还有真正了解客户需求的最终服务提供商,他们定制这些大型语言模型并提供真正解决问题的推理服务。

现在,让我们回到深度学习革命的开始。许多人将AlexNet时刻视为这一事件的起点。在AlexNet之前,已经有很多深度学习应用于重要问题的例子。但AlexNet是一个很好的示例,因为它展示了深度学习的三个关键要素。要使深度学习发挥作用,你需要算法、大量数据和足够快的硬件。大多数算法自20世纪80年代以来就已存在,例如深度神经网络、卷积神经网络以及通过反向传播、随机梯度下降进行训练。大量的数据,如大型标记图像数据集,自2005年以来已经容易获得。但直到有了足够快的硬件,才能在合理的时间内训练合理大小的模型。对于AlexNet,它在两个费米代GPU(GTX 580)上花费了两周时间。从那时起,我们看到了惊人的增长。

随着人们建立更大的模型并使用更多数据进行训练,他们获得了更好的准确性和结果。因此,他们想要构建更大的模型并使用更多数据进行训练。如果我们回顾AlexNet并使用petaflop天作为单位,虽然这是一个很糟糕的单位,但它很容易理解。AlexNet的训练时间约为0.01 petaflop天。GPT-4的很多细节尚未公布,但根据我们掌握的最佳信息,它的训练时间在第10到第6 petaflop天之间。因此,训练这些模型所需的计算能力增加了10到8倍。顺便说一下,第10到第6 petaflop天是zetaflop天,即1000 exaflop天。这种增长,实际上是过去几年的增长,正如杰夫·迪恩昨天在他的主题演讲中所说,对于这些大型语言模型来说,这个数字每年都在以一个数量级的速度增长。这为我们在硬件行业设定了步伐,因为我们觉得我们必须满足这种需求。人们需要更多的计算能力来训练这些更大的模型。

那么到目前为止我们是如何做到这一点的呢?这是一个不错的情节。当我在麻省理工学院时,我为DEC进行了咨询,他们有一条规定,实际上不允许你向副总裁级别以上的任何人展示像我上一个这样的情节,该情节具有logs访问权限,因为他们无法理解。所以你会向他们展示这样的带有线性比例的图表。这是线性规模,深度学习的进步,推理性能,在10年内增长了1000倍,我们称之为黄定律,来自开普勒一代,它确实是这个深度学习时代的第一款GPU。尽管当我们设计开普勒时,我们并没有考虑深度学习。我们正在考虑图形和高性能计算。因此,最佳的数字表示形式是32位浮点(FP32)。当我们开始探索深度学习时,我们意识到并不需要如此高的精度。我们可以首先使用16位浮点(FP16),随后转向8位整数(INT8)和8位浮点(FP8)。采取这种做法,并引入专门的指令后,我们的运算能力从大约4 tera-ops提升至大约4 peta-ops。

现在,让我们来探讨深度学习性能的来源。顺便提一下,总体而言,当你考虑黄氏定律并将其与摩尔定律相比较时,摩尔定律主要与工艺技术相关。在过去十年中性能提升了1000倍,我估计其中大约2.5倍的提升是由工艺技术带来的,因为实际上每一代工艺并没有带来更多的收益。这里的流程节点是用颜色编码的,例如Hopper的黑色代表28纳米,紫色代表5纳米。但是从28纳米到5纳米,我们的性能可能只提高了2.5倍。总的来说,最大的性能提升来自于更优的数字表示形式。我们从Kepler的FP32开始,然后在Hopper上转向FP8,数字宽度减少了四分之一,但由于乘法操作占主导地位,且乘法的成本按平方计算,因此每个运算的能耗降低了16倍。

接下来,我们意识到即使是非常简单的管道,如在GP中所见,我们不进行分支预测,也不进行推测,但获取和解码指令的开销仍然是执行一个简单算术运算的多倍,尤其是在FP8的情况下。因此,我们必须执行复杂的指令来分摊这些获取和解码的开销。从Pascal开始,我们引入了点积指令,然后在Volta及其后续版本中引入了半精度和整数矩阵乘法指令,我们基本上分摊了指令获取和解码的开销,直到它们不再显著。

因此,我们可以像专用加速器一样高效,但自2006年以来,GPU保持了所有的可编程性和丰富的库,例如CUDA已经存在了17年。去掉指令开销后,性能提升了大约12.5倍,加上处理技术的2.5倍提升,再加上从图灵到安培的跳跃,很大程度上是由于引入了结构化稀疏性。

我想指出的是,这是单个GPU的硬件增益,但还有两件非常重要的事情。第一,模型效率也大幅提高。我们已经将单个GPU硬件的效率提高了1000倍,并且从更高效的模型中获得了至少几个数量级的提升。因此,对于给定的任务,性能增益远远超过了1000倍。我们还开始使用多个GPU,这一点我稍后会讨论。即使是最初的AlexNet也使用了两个GPU。现在,为了训练这些大型语言模型,使用数以万计的GPU来训练单个模型并不罕见。

所以,我提到了使用专门的指令来分摊开销。当我们的最大指令执行两个操作时,即HFMA,你进行一次乘法和一次加法,获取和解码指令的成本是执行这些操作的20倍。当我们通过采用产品进行摊销时,我们现在对我们自己的采用产品执行八次操作,现在开销仅为原来的五倍。当我们进行大型矩阵乘法时,在Volta中进行4x4 FP16乘法,在Turing中进行8x8 INT8乘法,我们的效率分别降低到22%和16%,基本上可以忽略不计。顺便说一下,即使是专用加速器也有开销。

所以我们今天的处境是与Hopper一起的。这是一个非常受欢迎的部分。我认为你必须等待大约六个月才能得到一个。TF32的性能为petaflops,但实际上,对于训练大量大型语言模型来说,真正最重要的是两个petaflops,黑色代表密集型FP8,为2 petaflops,而绿色代表稀疏FP8,为4 petaflops。因此,您可以将其视为4 petaflops、每秒900 GB的IO带宽,内存带宽为3.4 TB/秒,功耗为700瓦。这是基本的构建块。

现在,当我们训练这些大型语言模型时,我们利用多个轴上的并行性。很长一段时间,我们尝试进行所谓的数据并行,这是一种简单的利用并行性的方法。这是进入屏幕的轴。我们所做的是,在每个GPU上运行模型的完整副本,然后将你正在执行的批次数据集的不同部分提供给它们,然后它们基本上交换梯度更新,这样它们都可以看到彼此的梯度更新,然后你继续下一批。这是最简单的方法,虽然不一定是最有效的方法,但人们往往先追求简单,后追求效率。

如果您考虑像GPT-4这样的模型,它不适合一个GPU。它有超过一万亿个参数。保存一份模型副本需要大约20个GPU。所以我们必须把模型分解,这里的两个轴统称为模型并行性。我们倾向于以两种方式分解模型。首先,我们所做的是获取模型中的各个矩阵。如果您将KQ和V元素放入这些矩阵中,则采用要相乘的矩阵,你基本上将它水平和垂直分割,并将不同的子矩阵放在不同的GPU上。也就是这个轴。然后我们采用不同的管道阶段,因为我们有这些前馈模型,并将它们放在不同的GPU上。因此,通过这种组合,轻松使用10,000、20,000、30,000个GPU来训练单个模型并不罕见。这是我们满足10到8倍需求增长的另一种方式,我在之前的幻灯片中展示了这一点。

利用这种并行性的第一个层次是在我们的DGX服务器中。这是8个GPU。您可以在板上看到它们和4个NV开关。而且你可以想到这一点,因为在NV链接域上,你可以通过网络进行加载和存储。这就像一个大GPU,但具有带宽锥度,因此当您摆脱各个GPU并必须访问彼此的内存时,它非常NUMA。您可以将其视为32 petaflops的稀疏FP8,功率略高于10千瓦,每秒900 GB。其后面板的带宽实际上与一个GPU的带宽大致相同,因此这是该级别的另一个锥度。

我们采用相同的NV开关并将它们放入披萨盒中,这样你就可以扩展这个NV链接域,我不会详细讨论那里的很多细节。因此,结果是您可以构建一个大型服务器,

我相信实际上马克在他关于光学互连的闪电演讲中提供了更深入的理解。您可以构建一个最多包含256个GPU的大型服务器,这些服务器在NVLink规模上看起来就像一个巨大的GPU。特别是对于模型并行性,这样的服务器可以非常方便地在各自的内存之间加载和存储数据。然后,通过将这些服务器与我们的Mellanox导向器交换机结合,如演示中所示,您可以构建一个包含数以万计GPU的系统。

现在,任何人都可以构建一个矩阵乘法器。我想如果我将这个任务分配给一个研究生,我预计他们最多几天内就能完成。然而,使这些设备对深度学习有用的是软件。

因此,我在2010年左右启动了第一个深度学习软件项目NV Research。这实际上是与斯坦福大学的Andrew Ng合作,将他最初在Google完成的寻找猫的项目从CPU(需要16,000个CPU)移植到GPU(我们在48个GPU上完成)。这促成了一款名为cuDNN的软件,它现在实际上是NVIDIA AI堆栈中非常重要的一部分。但是,多年来,也就是自2010年以来,我们已经在这方面工作了13年,我们建立了一个庞大的软件库,所有这些都在底层工作,确保我们可以暂存数据,使其在正确的时间出现在正确的位置,而无需等待。我们可以在关键的地方将各层融合在一起,一直到最终应用程序,无论是我们的自动驾驶汽车、驱动平台,还是NEMO中的对话系统、电话会议,疫苗,以及Clara的各种医疗应用,还有基于人工智能的模拟模数。因此,我们构建了这个庞大的软件堆栈并对其进行了优化,使其运行得非常出色。

看待这个软件的一种方式是将其视为另一个优势来源。我认为这些是MLPerf基准测试2.1版的结果,实际上是上一代的版本。我想他们现在已经更新到第三版了。但我想展示这个,因为在这个版本中我们刚刚宣布了Hopper数字,但我们展示了Hopper的数字,即大的绿色条形图,然后我们展示了新的Ampere数字。您会看到,在相同的硬件下,从一个MLPerf版本到另一个版本,Ampere的速度提高了两倍半。因此,软件对于发挥性能至关重要。

所以有很多公司尝试制造深度学习硬件,无论是拥有自己专用ASIC的数据中心公司,还是有100多家初创公司在这样做。因此,我希望通过跟踪MLPerf基准测试的工作原理来了解事情是如何解决的。如果你看一下,我认为HPCWire对此有很好的报道。所以我在这里展示了今年六月、今年四月、去年十一月和四月的最后四组头条新闻。基本上我们的数字在每个类别中都名列前茅。有几个公司确实出现了,英特尔和高通都出现了。但在众多声称拥有真正出色的人工智能解决方案的初创公司中,很少有人出现在那里。我认为这实际上是对您是否只有一个矩阵乘法器或是否拥有使该矩阵乘法器有用的软件的考验。

那么我们接下来要去哪里呢?回答这个问题的一种方法是查看电源的去向,在我们最新的一项实验中。这是一个芯片的饼图,稍后我将向您展示,这是我们在NVIDIA Research中作为原型制作的深度学习加速器芯片,在语言模型上每瓦仅实现约100 teraops。您看到的是,到目前为止,大部分的能量仍然用于算术。您知道,这是数据路径加上乘加单元。这基本上是在做数学。下一个重要部分是内存。所以,这就是权重缓冲区、累加器收集器、累积缓冲区。这是内存。然后这里的6%是通信。因此,这为您提供了一些关于我们希望在哪些方面做得更好的指导。

首先,数学涉及很多内容。我们还没有完成数字表示。通过更聪明地了解如何使用这些位来表示数字,我们仍然可以更好地弄清楚如何使用更少的位从模型中获得相同的精度。所以我稍后会讨论其中的一些事情。我们的稀疏性还没有结束。与Ampere的2比1命中确实是一个大打击。自从Song Han在2015年NeurIPS上发表论文以来,我一直在研究稀疏性,他有点重新发现了它,因为有一些关于稀疏性的论文可以追溯到20世纪80年代。但它有点被遗忘了,人们已经有一段时间没有看过它了。但事实证明,神经网络中的大部分权重都是不需要的,并且大多数激活为零或可以为零。因此,通过利用更多的稀疏性,您可以通过更少的工作获得更多的成果。2对1是很好的第一步,但我们可以做得更多。我们需要通过更好的平铺来减少通信,考虑如何暂存数据,以便我们可以从层次结构的不同级别获得更多的重用,如何以不同的方式构建层次结构。

电路的空间很大。我的意思是这里有很多记忆能量。我们可以设计我们的记忆来使用更少的能量吗?我们仍在芯片上进行大部分通信,进行全面的信号传输。我们在ISSCC上发表了论文,展示了如何通过使用减少的摆动信号来做得更好,特别是对于较长的距离。再说一次,我们会稍微脱离流程,但不会太多。

那么让我们继续讨论数字表示。因此,当您学习基础数字设计课程时,您将了解如何表示典型的整数和浮点数。你有一个符号位和一个幅度,对于浮点数,你只需添加一个指数即可。如果你正在考虑建立一个深度学习加速器,你可以比较这些,取决于你有多少误差,它有多准确,以及你拥有的动态范围。这是准确性的两个要素。我可以表示多大的范围,误差有多大?

事实上,这确实是一个数字。将这两个分开。最大误差除以动态范围实际上是一个品质因数,因为您可以缩放任何动态范围以适应任何数字系统。真正重要的是动态范围内的误差。成本实际上有两个组成部分。运算能量,即对这个数字表示进行数学计算所需的成本,和运动能量。并且运动能量与比特数成正比。当您将其存储在RAM中或通过线路移动它时,您并不关心它是浮点、整数、对数还是某种符号表示形式。因此,我们可以在此处的图表上比较其中一些数字系统。

所以如果你看整数,你没有很大的动态范围,你犯了一个很大的错误。红色误差条是真正重要的误差条,因此与其他误差条相比,您的误差非常大。如果使用更多位,您将获得更大的动态范围和更少的误差,这是很好的。我把尖峰放在这里是因为我不断接到这些自称从事神经形态计算的人打来的电话。它具有某种神奇的特质,这正符合大脑工作的方式。

然而,这实际上更类似于尝试通过给飞机装上羽毛并拍打翅膀来制造飞机。以尖峰表示为例,如果你尝试匹配int8的动态范围,你会发现自己消耗了更多的电能,因为平均而言,你需要切换128次才能发出一个8位整数的信号。错误率基本上与int8相当,但可能是int8的32倍。这是因为在int8中,你平均切换两位。所以,实际上,抱歉,是64倍的功率消耗。

这非常有趣。这就是当我把幻灯片转移到别人的笔记本电脑上时发生的情况。因此,在他们把幻灯片转移过来之前,我必须先告诉你幻灯片上的内容。这就是从Mac转到PC的问题。这里有两个峰值,有点像正态分布。这是我和孙涵在2015年撰写的一篇论文中的数据。我们设计了一个加速器芯片,并采用了符号表示法。我们使用了4位符号表示,然后将其解码成16位。再次提醒,如果你回顾一下,还有操作能量和通信能量。我们发现,使用4位符号表示,我们可以获得与使用6位整数相同的精度,因为我们可以将符号放在最有效的位置。因此,如果你有4位,你就有16个采样点。如果你像处理整数那样均匀地执行,你会在这里得到x值。所以你在这里使用了很多符号。请记住,我的发行版就在这里,你看不到的地方。你在没有太多变化的地方放置了许多符号,你在那里浪费了表示权。在分布密集的部分,这里的数量并不多。在我们的论文中,我们展示了你实际上可以学习符号的最佳码本,因为你可以将反向传播应用于任何事物。因此,我们对这些码本应用了反向传播。我们设置了相同的16个点,但我们将它们放在了有很多好处的地方,并且获得了更高的准确性。因此,你需要64个点才能获得与我们这里16个点相同的准确度。

幸运的是,这条曲线出现了。顺便说一下,这个网络之所以具有双峰分布,是因为它是一个经过剪枝的网络。当你有一个剪枝过的网络时,0附近没有值。这些值都已经被剪枝为0。然后其他值形成了这两个正态分布形状的波瓣。如果你不剪枝网络,你通常会得到一个更像这样的分布。我在这里想要表达的真正观点是,一切都以0为中心。大多数权重都非常小,所以小数值的准确性非常重要。然后还有尾部,对吧?尾部在这里有一定的延伸,这两者最终对于后续的讨论都很重要。

因此,事实证明,表示数字的最佳方法之一是对数表示。我们中的一些人,在我们刚开始上学时,计算器太贵了,只有富人才能拥有。所以我们其他人都使用计算尺。计算尺是对数表示的。它的刻度是对数的。所以你可以简单地将1与这里的某个数字对应起来,然后向下读,你基本上是在将这两个数字相乘,然后你就可以读出结果了。

因此,对数有很多优秀的表示方式。人们通常会想到log8表示法。顺便说一下,当你有对数表示时,就像浮点数一样,你可以通过移动除法来权衡动态范围和准确性。在浮点数中,它是指数和尾数之间的除法。在对数中,它是指数的整数部分和指数的小数部分之间的除法。实际上,指数的整数部分与浮点数中的指数完全相同。它决定了数字移动的距离。区别在于,在浮点数中,尾数只是你要移动的数字。在对数表示中,指数的小数部分是2的小数次幂的指数。因此,如果这里有3位,那么它是2的1/8次幂。对于EF来说,它将是2的8次幂,无论1到7之间的值是什么,你都将按整数分量进行移位。如果与整数进行比较,那么对于8位,最坏情况下的精度为4%。动态范围为10的5次方。与整数相比,动态范围好了3个数量级。最坏情况下的准确度提高了8倍。

为什么?所以你可以通过查看我所说的数字系统的值图来看到这一点。这里我们基本上有沿x轴的实际值和沿y轴的最接近的可表示值。你看到的是对数,当你的数字很小时,你就会有小错误。最大误差为9%,因为这里的第一次跳跃是从1到1.18。所以最坏情况下的错误是在跳跃的中间,这最终会给你带来9%的错误。但事实证明,在每一次跳跃中,最坏情况下的误差都是9%。到处都是9%,这就是对数的伟大之处,它会给你一个在数字系统范围内恒定的错误。对于整数,误差的大小(而不是误差的百分比)在数字系统中是恒定的。所以你的第一次跳跃是从1到2,对吧?最坏情况下的误差为1.15,误差为1.15中的0.5,因此是三分之一。

很多人说,是的,这太棒了。你比整数好多了。与浮点数相比如何?因此,思考这个问题的方法是,浮点数是对数,你在小数部分上作弊,而不是将小数部分表示为小数指数,而是将小数部分表示为整数,对吧?所以它有点像最后两张图的混合体。在4位F2-2中,你将有4个完全相同幅度的摆动,然后是下一个幅度的4个摆动,然后是下一个幅度的4个摆动。所以这比整数表示更好,因为至少这4个比这4个小。但它不如浮点数,因为这4个中的第一个和这4个中的最后一个一样大。它们都是0.25,对吧?所以你从1跳到1.25,误差是12.5%,我在这里四舍五入到13%,而这里是从1跳到1.18,误差为9%。所以你不可能得到那么好的结果,但已经很接近了。

因此,当你使用对数数字系统时,确实存在一件事——使用对数数字的一个动机是,除了符号之外,它实际上是一种非常好的表示形式,因为它倾向于将这些数字集中在0附近,而大多数数字都集中在0附近,这也是你希望误差较小的地方。作为一种降低数学运算成本的方法,对数系统显得尤为重要。在这种系统中,乘法运算的成本大幅降低,因为乘法仅仅转化为了加法操作。具体来说,将两个数的对数相加,就能得到这两个数乘积的对数。然而,这里存在一个问题:需要进行加法运算。在对数系统中,传统的加法方法是利用查找表将对数转换为整数,执行加法后再次使用查找表将结果转换回对数形式,这一过程的成本较高。

幸运的是,在深度学习中,我们经常进行大量的乘法运算,随后需要将结果相加,这就是所谓的点积运算。如果操作得当,我们可以将对数运算中的复杂部分摊销,使得每次只需执行一次。

在专利申请中,我们采用了一种方法,即分别处理对数的指数部分和分数部分,利用分数部分来指导指数部分的运算,仅对指数部分执行部分和累加。这种方法涉及移动一定数量的位,并将它们求和。例如,如果有一个三位的分数,或者有八个累加器,其中零分数的累加器仅处理指数的整数部分。这样,每个累加器处理的是指数的整数部分乘以2的相应次方。在执行了大量加法后,乘以一个常数,将成本摊销至零,最终将结果以整数形式相加并转换回对数形式。

在使用对数或浮点数时,我们希望将数字放置在最有效的位置。此外,我想顺便解释为什么符号表示法并不是最佳选择。2015年,我们使用符号表示法构建了一个高效的推理引擎,它在数据存储和移动方面表现出色,因为它使用更少的位来表示数据。然而,为了进行数学运算并准确表示这些符号,需要将其转换为足够高的精度,这使得操作的能源成本变得非常高,从而抵消了通过减少数据移动和存储节省的能源,这是一个令人失望的结果。

因此,在使用对数、整数或浮点数等数字系统时,首先要做的是选择正确的范围。请回想我之前展示的实际分布图,这里有一个简化的版本。

大多数值集中在零附近,很少有值大于0.2或小于-0.2,但是有一些极端值可以达到正负0.8。传统的缩放方法是选择一个比例因子,使得数字系统能够表示从-0.8到0.8的范围。然而,这种方法并不理想,因为它会产生大量的量化噪声。量化噪声是指在这些间隙中产生的噪声。如果采用这种方法,实际上在曲线上有意义的部分只能放置极少数的可表示符号。一个更好的方法是将这些极端值剪裁掉,让它们饱和到最大可表示值,比如0.2和-0.2。通过这样做,我们引入了削波噪声,但是为了减少量化噪声,这是值得的,因为这些值之间的间隔非常小。现在我们在曲线的重要部分放置了更多的符号。

实际上,如果我们考虑优化均方误差,这与神经网络的准确性密切相关,我们可以根据比例因子以封闭形式写下积分。然而,这在实时评估中非常困难。对于激活函数,我们必须实时进行这种操作,因为我们在每一步都在缩放它们,这是一个动态问题。不过,有一种迭代解决方案,只需一次就可以完成激活,效果非常好。在这里,我们可以看到,当我调整比例因子时,例如在第17层权重的情况下,由于没有进行剪裁,我得到了相对较高的均方误差(MSE),这主要是量化误差。当我剪裁到较大幅度时,我得到的主要是剪裁噪声,但由于我已经将量化噪声降低了足够多,所以到这个时候它才开始变得有利。然后量化噪声开始上升,因为我将其削减到几乎不代表任何内容,一切都被压缩在零附近。但找到这个最佳点实际上很容易,如果这样做,精确度几乎会更高。

因此,我们首先要做的是对每层进行最佳剪裁。接下来要做的是意识到,也许我们不想在每一层都这样做,也许我们想对每个向量执行此操作。传统的缩放神经网络的方法是计算网络每一层的最佳缩放因子。如果你这样做,你就会面临一个非常大的分布,从而产生大量的量化噪声。

但如果我决定对每个向量(例如64个元素)使用一个比例因子,那么在执行矩阵乘法时,我将采用这64个元素和那64个元素。现在我的子分布更小了,因此即使在应用最佳限幅之前,我也能获得更小的量化噪声。再次,通过这样做,我有效地获得了另一点精确度。

我们试图提高效率的另一种方法是通过稀疏性。这是我和宋在2014年写的论文中的一个数字,发表于2015年的NeurIPS。我们展示了,这取决于神经网络的类型,但对于多层感知器,通常可以删除90%的权重而不损失准确性。

对于卷积网络,通常可以剪掉一半到三分之二的权重而不会失去准确性。这是一个巨大的胜利。因此,从那时起,我一直在进行许多项目,试图将这一发现转化为实际的价值。这非常困难,因为特别是当你处理4位或8位的值时,任何不规则性都会造成严重的影响。如果你花费大量时间操作指针来找出零在哪里以及不在哪里,那么你的效率就会大打折扣。

在数值计算领域,有一种观点认为,在密度降至0.1%以下之前,不应使用稀疏矩阵包。这是因为用软件来处理这一问题非常昂贵。但在高效推理引擎中,我们证明我们可以在密度大约为50%时获得相当好的效率,因为我们有专用的硬件来执行压缩的稀疏列结构的遍历。然而,这破坏了很多规律性,而这些规律性是进行高效向量计算的关键。

最终解决这个问题的方法是,我在这里有一些参考资料,你可以查看A100白皮书或这份档案文件,意识到如果你强迫稀疏性变得非常结构化,在当前的情况下,我们采用的是4个权重中的2个被置为零的策略。这意味着在每四个权重中,我们会选择最小的两个权重并将它们置为零,随后对网络进行重新训练。通过这种方式,我们能够用一半的数据量来表示这些权重,并使用一个较小的索引来标识这些非零权重的位置。这样,我们可以利用索引来确定哪些输入激活应该被乘以相应的权重,从而实现本质上的密集矩阵乘法。这种方法不仅保持了密集矩阵乘法的效率,而且还实现了2比1的压缩比率。然而,我们对稀疏性的探索并未停止。虽然2比1的比率已经不错,但有些矩阵的稀疏性更高,因此我们希望开发出其他的表示格式。

目前,我们只将这种稀疏性应用于权重,而激活值仍然是密集的。我们只是选择了我们需要的激活值。通过采用稀疏激活,我们可以进一步增加稀疏性。例如,如果使用ReLU激活函数,所有的负数都会变为零,这样我们就不需要进行这些乘法操作。但这也带来了一个更加动态的问题,即计算哪些激活值为零的开销可能会消耗掉我们的节省。

因此,在NVIDIA,我们尝试了不同的数字表示格式以及不同的算术、裁剪和类似操作的方法来构建加速器。这是我们多年来构建的一些加速器的照片库。我提到了高效的推理引擎,我们有这些稀疏矩阵和特殊内存来保存指针结构,这样我们就可以在没有开销的情况下遍历指针结构。NVIDIA和MIT的研究人员Joel Elmer和Vivian C.共同开发了IRIS,它尝试了很多暂存数据和最小化通信的方法,例如行固定、列固定和输出固定格式。

我们在尝试稀疏性时,实际上我不应该说这是我们第一次,因为这也是一种稀疏性,我们在这个过程中可能尝试了三到四种不同的方法。我们将其中一个加速器称为SCNN(稀疏卷积神经网络),我们的方法是将每个权重乘以每个激活,因为无论如何它们最终都会在某个时刻相乘。因此,我们从权重存储器中取出权重,并从激活存储器中取出激活,每个权重乘以每个激活,然后计算这些输出激活应该如何相加,并在输出处执行称为“分散添加”的操作。问题是,分散添加的成本使您在这里节省的任何东西都大幅下降。

多芯片模块的可扩展性是一个很好的例子。所以,如果你考虑这些加速器的作用,这是我们经常思考的事情,这样我们就可以在可编程引擎中获得加速器的优势。它们通过专门化数据类型和操作以及达到所需的精度和表示,然后对于运算,一次执行像矩阵乘法这样的运算,这样我们就可以分摊开销,并且我们在这里获得了很大的效率提升。它们通常具有大规模并行性,我所说的是拥有数千个单元,而不是仅仅16个单元。它们通常优化了小内存,因此我们可以避免内存带宽瓶颈,并且我们可以分摊开销。通常我们必须改变算法。有时我们会从一个算法开始,我们会尝试用加速器来加速它,我们会发现我们得到了2倍的提升,因为该算法确实是针对在CPU上运行进行了优化,事实证明,当您构建加速器时,CPU上原来昂贵的东西现在变得便宜了,反之亦然。

我已经在这个领域工作了一段时间了。自1985年开始使用模拟加速器以来,我一直在构建快速加速器,其中许多经验教训都推广到了深度学习领域。也许最大的一个问题是,CPU在处理具有足够并行性的任务时确实很糟糕,因为它们具有各种经过优化的机制,可以为您提供良好的单线程性能。

昨天我参加了CPU讲座。是的,我们做所有这些事情都是为了预测下一个分支会去哪里。我有点把这比作一家大公司。假设您有一家拥有10,000名员工的制鞋公司。事实证明,地下室里有一个人实际上是在做鞋子,或者他们甚至可能把鞋子卖到亚洲的某家商店。但有人在研究鞋子的制作顺序以及人们喜欢什么颜色等等。这就像分支预测器,检查错误推测,看看是否可以在存储或类似的东西之前提前加载,否则地址会发生冲突。如果您阅读2015年发表的这篇论文,其中包含相对适中的乱序ARM内核(A15),你会看到一个16位整数加法需要32飞焦耳的能量,开销约为10,000倍。这是面积成比例的。这就是添加所需的能量。蓝色部分是所有关于弄清楚你有正确的寄存器并且你的分支没有走错路之类的东西。你负担不起这样的开销。

您必须做的另一件事是在构建加速器时要真正警惕运营成本。你会发现数学运算的成本呈二次方上升。它至少与长度相乘。从8位乘法到32位乘法不是4倍的增加,而是16倍。您还意识到,与执行任何操作相比,仅读取内存的成本就相当昂贵。如果我只是读取一小段8KB的内存,成本是5皮焦耳。这不仅仅是32位浮点加法。因此,往返内存的成本非常高。当你读取大内存时你还需要意识到的事情,那个大内存是由一堆8KB的内存组成的,其他的都是通信能量,大约是每比特毫米100飞焦耳。

这推动了这样一个现实:如果你想提高效率,你确实需要留在本地。世界是不均匀的。您可以尝试使模型中的所有内容看起来均一。这只会让一切都和最糟糕的事情一样昂贵。因此,读取本地SRAM每个字需要5皮焦耳。从其他地方在合理大小的芯片上获取它大约是这个数字的10倍。请记住,读取RAM仍然是5皮焦耳。另外45皮焦耳用于获取RAM的地址并将数据返回到您想要使用的位置。如果你必须离开芯片,事情就非常糟糕了。LPDDR是目前最高效的存储器。实际上,它们的每比特能量与HBM大致相同,约为5皮焦耳。

我们最近做的事情之一是我们实际上编写了一个系统来寻找最佳加速器,因为在设计深度学习加速器时有很多设计选择。您可以使用不同宽度的矢量单位。您可以拥有不同大小的权重和输入缓冲区以及不同级别的内存层次结构。然后你也可以以不同的方式平铺它。因此,我们共同优化了平铺、循环的顺序以及如何拆分循环以将数据存放在内存层次结构中以及调整缓冲区大小和选择向量长度等。通过选择最佳的,这是在2019年,我们发表了这篇文章。8位数学计算达到每瓦约20 teraops,这是我们现在在霍珀上所做的两倍。

但最近,我们决定更进一步。这是去年VLSI研讨会上的一篇论文。这是此处引用的JSSC版本。我们使用了Magnet,这是我们为优化深度学习加速器而编写的程序。我们利用它来对Transformer和大型语言模型进行优化。我们设计了一个多级数据流架构,通过在多个层次上缓存数据,以及在内存中暂存数据,从而最大程度地减少数据移动和内存消耗的能量。在这个架构的最后一个层次,我们设有一个我们称之为“收集器”的组件,这个名称借鉴了我们用来描述SM(流式多处理器)中存储层次的术语。收集器的容量非常小,与数学处理单元相比,它的存储能量消耗极低。实际上,我们采用了非常低精度的数据格式,即INT4。然而,通过之前我提到的两种技术——量化和最优量化——我们基本上是在权衡截断噪声和量化噪声,并通过缩放来调整,这样我们就能够将量化因子应用到向量上,并改变向量的长度。我们发现,最终确定的最佳值是32。我们能够在这些Transformer模型上使用INT4进行推理,而基本上不会损失任何准确性,尽管人们通常会使用INT8或FP8。

在这个过程中,我们最终基本上达到了每瓦特100 teraops的效率,比如96 teraops或类似的水平,这是通过降低电源电压和使用最佳数量的数据格式的组合实现的。此外,我们还设计了一些特殊的功能单元。在深度学习的管道中,有些部分如果没有专门的单元来处理,最终会消耗大量的时间和能量。因此,为这些部分建立特殊的功能单元是值得的。

让我来总结一下。作为一名计算机工程师,这是一个非常激动人心的时期,因为我们就像是推动人工智能领域当前巨大革命的引擎。我认为我们还没有完全意识到这场革命的规模。它将影响我们生活的各个方面。我认为真正的竞争在于应用层面,看我们如何将其应用于医学、教育,以及我们如何通过让我们的大型语言模型编写Verilog代码来提高芯片设计师的生产力。我们只需要告诉它们该怎么做。进步是巨大的。但这是由硬件实现的,在AlexNet时代,我们终于拥有了足够快的硬件,可以在合理的时间内对合理大小的数据集进行模型训练。

从那时起,后续的训练需要的计算量增加了八个数量级,这是由深度学习硬件所主导的。我们的雄心壮志远远超出了我们在一个月内在30,000个节点的系统上进行训练的能力。现在,我们可以在不到两周的时间内训练一些模型,而这曾经需要几个月的时间。因此,我们感到有巨大的压力去继续前进,如果我们能够将单个节点的性能提高1,000倍,并与扩展到数千个节点和更高效的模型相结合,实际上可能超过一百万倍,几乎是10的8次方petaflop天。我们感到有巨大的压力去继续扩展,以便人们能够看到我们将获得的下一个强大功能是什么,当我们可以构建10倍大的模型并使用10倍以上的数据对其进行训练时,顺便说一下,这通常也需要超过100倍的时间,因为它通常也需要更多的迭代。

在过去10年里,我们仅在单个GPU上就获得了1,000倍的性能提升,这得益于多种因素,其中最大的因素就是高效的数字表示。我记得在ISCA,我想可能是2017年,第一篇TPU论文出版时,他们得出结论,他们拥有巨大的优势。当然,他们是在与开普勒进行比较。每个人都将其与开普勒进行比较,因为它是一个容易达到的目标。每个人都出于同样的原因与VAX进行比较。他们说,哦,我们显然比开普勒更快、更高效,因为我们是加速器,而且是可编程的。不,它们比开普勒更快、更高效。几乎全部的优势都可以归因于FP32和TPUv1之间8倍的差异,后者使用的是INT8。

因此,数字表示法是一个巨大的因素。这就是大部分的来源。一旦你有了少量的表示,获取、解码、操作数的获取和存储的开销一开始就很大,而且随着算术部分的缩小而变得更大。所以现在你需要进行复杂的操作。进行单一算术运算,整个风险咒语是个坏主意。开销太大了。你需要提出复杂的运算,例如矩阵乘法,以分摊专门针对当前应用程序的开销。

展望未来,我们可以做很多事情。首先,我认为我们还没有完成数字表示法的工作。我认为我们仍然可以做得更好,我们已经减少到四位了,对吗?并且在大型语言模型中不会损失准确性,但我认为我们可以超越这一点。虽然我们不太可能使用算术编码之类的技术来进行子位表示,但我不认为我们会走到那一步。但我认为数字表示法还有另一个转折点。我对logs数字表示法非常乐观,我认为通过每个向量的最佳裁剪和缩放,我们可以做非常令人兴奋的事情。我也不认为我们已经完成了稀疏性的任务。我认为,我们的权重稀疏度为2比1。我们需要对激活做一些事情,我认为我们可以在权重方面实现更密集、更稀疏的稀疏性。

我想,我和你谈了一些我们的一些加速器,特别是我们称之为磁性BERT的加速器,因为我们是为大型语言模型构建的。这是我们真正验证其有效性的好方法,因为进行纸笔研究甚至Verilog模拟研究太容易了。在您实际构建芯片并演示其运行之前,您不知道您的真实能量将是多少,以及您将获得的真实精度,尤其是这些可能太大而无法在模拟中运行的大型模型。因此,我实际上比计划提前了几分钟,所以我很乐意将其转为问题。

(好的,请排队。注明您的姓名和隶属关系。然而,像往常一样,我们从Slack开始。

好吧,比尔。这个问题其实是高通公司的Manuka Gulati提出的,但是各地的人都排在第二、第三、第五、第15位。我认为问题在于很多人都不是机器学习专家,所以有很多关于稀疏性的问题。)

在每次有关人工智能的硬件讨论中都会重复的一件事是,几乎所有模型都存在大量稀疏性。为什么创建的模型有这么多不必要的信息?您花费大量精力预先训练这些参数,然后丢弃它们。所以我认为总体来说存在混乱。

是的,所以这不是故意的,对吗?人们想出了它。让我回到这一点。当我们在稀疏性方面进行最初的工作时,就像2013年、2014年在斯坦福大学,我们训练这些参数并不是为了丢弃它们。我们采用了当时最好的模型,我认为当时对于图像识别来说就是VGG。所以我们拿起VGG网络并提出了这个问题。我们正在做一些事情,比如查看权重的分布。我们正在玩游戏,试图找出在不损失准确性的情况下可以将权重减少到什么精度。我们注意到的一件事是很多权重都非常小。我们做的第一件事是绘制权重分布图。我们只是问自己一个问题,好吧,如果它们真的很小,没有人会注意到它们是否实际上为零,对吗?所以我们实际上将其中的一些设置为零,并且准确性下降了。接下来,我们考虑了重新训练网络的可能性,即在训练过程中将某些权重保持为零,以便其他权重能够学习并补偿这些为零的权重。实际操作证明,这种方法是行之有效的。事实上,在我们首次尝试时,模型的准确度就有所提升。这种方法不仅优于原始模型,而且还证明是一种极好的正则化手段。虽然从原始模型中也能获得相似的准确度,但那需要采用其他正则化技术。

因此,对于这个问题,这些权重并非刻意设置的。但如果我们深入思考,尤其是对于全连接层,比如EGGNet的最后一层或者任何多层感知器,我们会发现这些层是由巨大的矩阵组成的,对吧?这意味着存在大量的参数。以EGGNet的最后一层为例,它大约是4K乘以4K的规模,因此有大约1600万个参数。这导致了过度参数化,即参数的数量超过了该层实际需要表示的信息量,以学习它试图执行的非线性函数。因此,我认为这是一种确定这些层自然信息容量的方法,并通过强制稀疏性,将各层的参数量压缩至该信息容量。谢谢。

Phil Levis,来自谷歌和斯坦福大学的教授。关于稀疏性,你提到了50%的比例。我们能够实现多大程度的稀疏性?我们希望达到多少?我们是否想要10%,或者说4%?这与彩票假设有何关联,即存在某种重要的稀疏或密度特定结构?

是的,这是一个很好的问题。我认为这与网络的过度参数化有很大的关系。我们观察到,对于卷积网络,通常可以实现50%的稀疏性而不损失任何性能,这也是为什么2到4倍的稀疏性对于卷积网络来说是有益的。而且,通过一些努力,我们可以实现30%的稀疏性,同时保持准确度。对于卷积神经网络,如果稀疏度远低于这个水平,性能损失会很大。对于全连接层和Transformer中的注意力矩阵等,可能需要更高的稀疏度。通常可以将稀疏度降至接近10%,然后才会观察到准确度的任何损失。因此,这里有很大的改进空间。

现在,关于彩票假设,我需要考虑一下,但我认为它们之间确实存在某种联系,我只需要思考一下具体是什么联系。

戴利教授。托德·贝斯尼克,来自全能公司。你之前的一个幻灯片中提到了摩尔定律,然后你提到了王氏定律。那是什么?

是的,我可以把幻灯片放上来吗?它与最终幻灯片的左上角非常相似。好的,我这里有一张幻灯片。同时,我会解释一下它是什么。摩尔定律原本是关于晶体管成本的,它是一条经济规律,指出晶体管的成本每年减半,后来摩尔将其修改为每两年一次。而摩尔定律流行的版本是指CPU的性能每年翻倍。王氏定律则指出,GPU在深度学习上的性能每年都会翻倍,这在十年内使我们的性能提高了1000倍,这正是我们从开普勒到霍珀所看到的。我的演讲的一部分是向您介绍我们是如何通过数字表示、复杂的指令和稀疏性来实现这一点的。

你好,埃里克·阮(Eric Nguyen),来自高通公司。我在你的演讲中听到了一些似乎相矛盾的事情。你提出了一个观点,即这些数字应该大致正常分布。你想要最高精度的地方是在零附近,对吧?但如果你强制稀疏性,就会消除这些数字,对吧?你正在将它们从零拉开。另一方面,你提到了对数格式,而对数格式在零附近有一个很大的量化跳跃,因为你没有低于正常值的数字。那么你能解释一下这些矛盾之处吗?

是的,这确实是一个好问题。首先,关于稀疏性,事实证明,当你强制稀疏时,你会得到不同的分布。我有一张幻灯片展示了这一点,但不知何故,当我将幻灯片从Mac转移到PC时,它就消失了。但我鼓励你查看我们的论文,我认为是2016年关于深度压缩的ICLR论文,我们展示了当你修剪网络然后重新训练它时,你强制某些数字为零。结果,所有其他数字都远离零,并且权重分布非常低,接近零。相反,你会得到两个峰值。它就像一个正态分布,中间被切掉了,几乎是一个逆正态分布。这种现象是自然发生的,因此在修剪时不需要将这些值表示在零附近。

现在,关于对数格式的问题,这确实是一个很好的问题。所以事实证明,所有这些数字表示形式,除非你有某种方法来执行d范数,否则都会在零处发生很大的跳跃。这似乎并没有影响准确性,我不太清楚为什么。因此,最坏情况下的准确性,如果您采用误差除以您所代表的数字的公式,对于所有这些格式都是100%,从零到开始四舍五入到一的位置,或者第一个可表示的数字。因为基本上,你的错误就是你的数字,直到你到达那一点。所以你不能比较数字系统,因为所有数字系统都是相同的。您可以比较它们的最小可表示值,我认为对数并不比浮点数差。谢谢。

大家好,我是加州大学伯克利分校的Reza Salajiani。我不知道你是否看到了昨天的一些演讲,但昨天他们谈到了如何剪掉动态范围,剪掉那些异常值,这确实会影响一些大型语言模型。所以问题是,您认为保留这些异常值对于模型的准确性有多重要?剪掉那些最左边和最右边的值有哪些权衡?

是的,这是一个很好的问题。那么我来谈谈两件作品,其中一件我包含在这里,另一件我没有提及。所以我们在磁性BERT的工作中发现,当我们应用Octave(这是最佳裁剪算法)时,是通过进行最佳裁剪,保持精度恒定,我们提高了大型语言模型的准确性,因为我们通过削减这些异常值而损失了一些东西,量化误差的降低远远超过了补偿。话虽如此,我们最近做了一些工作,我们发现在大型语言模型中,权重数量很少,这有点像《动物农场》,其中某些权重比其他权重更相等。因此,有一小部分权重,例如个位数百分比,实际上需要比其他权重更高的精度。因此,如果你真的愿意的话,你需要采取其中的一些措施,这是我认为我们能夜进行更多数字表示的另一种方式,如果你采取其中一些权重并且非常积极地量化那些不太重要的权重,然后保留一些高精度并对真正重要的权重进行混合精度计算,你可以做得更好。。

健力先生,来自FutureWeight技术公司。首先,我要感谢您对深度学习硬件改进方面的深入见解。我的问题主要集中在软件层面,尤其是软件生态系统。人们常说,硬件公司的成功最终取决于软件。以CUDA为例,它无疑是一个成功的案例。但是,展望未来,您如何看待AMD的努力?毕竟,他们同时在开发CPU和GPU。RISC-V的情况又如何呢?许多公司和初创企业都在围绕它开发加速器和CPU。或许,考虑到内存容量和数据传输对深度学习的重要性,我们也应该考虑在内存中进行处理。谢谢您。

是的,问题有点多,我已经忘记了第一个问题是什么了。但没关系,我记得提到了RISC-V。我们非常看好RISC-V,实际上我们是RISC-V联盟的成员。在我们的系统中,RISC-V被广泛用于那些小型嵌入式处理器。至于其他问题,比如在内存中进行计算,我想请您一次提一个问题。

我是查理·德梅里詹,来自Sony Accurate。NVIDIA最初是生产消费级GPU的,后来推出了专业的计算卡驱动程序,然后开始在硬件上烧断保险丝,将硬件分为消费级和专业级。专业线路或多或少已经成为我们现在所说的人工智能。您认为未来的专业线路或人工智能领域会被分成不同的部分吗?或者说,不同类型的人工智能会被划分为不同的垂直领域?

您问的部分问题涉及营销,而我不是营销专家,因此无法回答这个问题。我认为我们试图提供满足特定市场需求的产品。我们已经有了两条完全不同的产品线。我们有数据中心GPU系列,比如H100,它们被用于数据中心,用于人工智能计算。然后我们有Tegra系列的嵌入式产品,比如Orin和Thor,它们用于自动驾驶汽车和机器人等功率有限的设备,这些设备不在数据中心内,必须独立运行。因此,它们在同一芯片上集成了相机视频处理功能和其他所有功能。我认为我们会持续关注市场的发展。如果我们发现这两个市场在需求上有截然不同的发展方向,那么我们可能会推出不同的产品来解决这些问题。但目前,Hopper提供的功能满足了整个AI市场的需求,从简单的MLP(用于决定网络浏览器中显示的广告)到大型语言模型如GPT-4,再到运行ConvNet或视觉Transformer以实现最佳图像识别。

我是迈克尔·洛瑞,来自美国宇航局。我的问题更多是关于计算机视觉,也就是您提到的第二个产品线。首先,逐帧捕获的内容存在巨大的稀疏性,我们应该如何利用这一点?与此相关的是,您提到了减少摆动。如果我们想减少摆动,是否正在考虑亚阈值甚至恢复模拟技术?

很抱歉,这里有两个问题。

我来回答第一个问题。如果您正在处理视频,我们现在的处理方式确实是一个很好的观点,我认为这里有一个巨大的机会。我们实际上是将其视为一系列静态图像,并对其应用我们为静态图像开发的深度网络。这是一种巨大的浪费,因为我们应该从前一帧中获取大量信息,并将其应用于下一帧。但我们的处理方式就好像我们之前从未见过它一样。因此,我认为这里有一个巨大的机会。我们还没有利用这一点,但我相信一旦我们开始利用,视频理解将会有更大的进步。顺便说一下,这正是自动驾驶汽车所处理的问题,它们通常也是这样处理的。它们可能会同时观察几个帧,但不会将整个视频放在上下文中。

关于减少摆动的问题,我们得到了一个结果,大约在2013年左右的ISSCC上,称为电荷回收信号或类似的东西。我们所做的就是分割电源。因此,如果您有0.8伏的电源,我们会发出0.4伏的信号,并且我们会有两个电源轨。我们会在0到0.4伏以及0.4到0.8伏之间发送信号。结果是效率提高了四倍,因为能量是按CV平方计算的。在阈值以下,你往往会在多个方面失去更多。你最终会得到某种连续电流——大多数亚阈值逻辑系列最终都会消耗连续电流。你无法像CMOS那样真正地开关它们。这就像回到了设计NMOS的旧时代。因为它一直在消耗电流,所以你最终会失败。最终你失去的比你节省的还要多。因此,通常当您选择最佳工作电压时,它会略高于阈值电压。对于我们正在运行的东西,如果您想降低工作电压,0.5伏左右是一个相当不错的电压。

我一直对类似的事物感兴趣。我整个夏天都在招聘实习生,我说,我知道我们可以进行模拟工作,因为进行乘法、加法和模拟几乎不需要花费任何成本。但问题是这不是整个系统。因此,您通常必须在某处进行数据转换来存储数字或将其移动到其他地方。一旦你这样做了,你就输了。一旦做到这一点,每瓦的功率不会比5太瓦更好。这无法与数字化每瓦100太瓦的功率相媲美。因此,我还没有看到一种模拟方法能够与数字方法完全竞争。我不断雇用实习生,让他们自由发挥,并认为其中一个人会提出一个好主意并解决问题。谢谢。


扫一扫

112628.jpg
随机推荐

最新主题

439 回复

沙发!沙发!
真是 收益 匪浅
踟苣
2023-11-25 20:38:50
好帖,来顶下
贝典雅
2023-11-25 20:47:13
不错不错,楼主您辛苦了。。。
帮你顶下哈!!
回复支持是对作者的最有力的支持
篓草迳
2023-11-25 21:47:04
真的很不错
干香洁
2023-11-25 21:51:08
不错,支持下楼主
鲁馨兰
2023-11-25 22:03:43
不错,支持下楼主
hathgoyq
2023-11-25 22:47:06
不错不错,很好哦
前排支持下,谢谢分享
blzxtq774
2023-11-25 22:55:00
好帖,来顶下
tsrelcec
2023-11-25 22:57:19
学习了,不错
bpzqoreil
2023-11-25 23:12:37
我抢、我抢、我抢沙发~
Btldiwzi
2023-11-25 23:44:22
来看看
插虺
2023-11-25 23:52:57
找到好贴不容易,我顶你了,谢了
觔卷奭
2023-11-26 00:06:16
好帖,来顶下
路过,支持一下啦
pl6a3m1q
2023-11-26 00:24:34
好好 学习了 确实不错
谢谢发帖!
遭琊撞
2023-11-26 00:50:42
来看看
戈子帆
2023-11-26 00:54:54
回复支持是对作者的最有力的支持
capsnsv13
2023-11-26 01:03:20
好帖,来顶下
艺剑
2023-11-26 01:19:55
真是 收益 匪浅
好好 学习了 确实不错
回复支持是对作者的最有力的支持
兮壶
2023-11-26 02:00:19
没看完~~~~~~ 先顶,好同志
好帖,来顶下
遁阂铋
2023-11-26 03:02:28
不错不错,很好哦
支持一下
LZ真是人才
崎儒
2023-11-26 03:21:15
路过,支持一下啦
狰掬湍
2023-11-26 03:23:37
回复让大家看到!
mCshw458
2023-11-26 03:25:56
沙发!沙发!
很好的贴子!
顺路回复赚点积分
leclairaj
2023-11-26 04:13:35
帮助顶上去!
高级模式
游客
返回顶部