查看原文
其他

十年千倍,英伟达是怎么做到的,黄氏定律的秘方是什么

未尽研究 未尽研究
2024-08-23


英伟达赢麻了。在过去的10年里,用于人工智能加速计算的GPU的性能提高了千倍,企业市值超过了万亿美元,最新的H100一卡难求。

英伟达是如何做到十年千倍的?其首席科学家比尔·戴利(Bill Dally)上周在硅谷举行的IEEE Hot Chips 2023研讨会上的主题演讲中,用一张幻灯片总结了一切。摩尔定律在英伟达的魔法中作用甚微,而新的数字格式则占了很大的比重。

将所有这些因素综合在一起,戴利称之为黄氏定律(以Nvidia首席执行官黄仁勋的名字命名)。

数字表示:16倍

英伟达通过使用较低精度的数字表示法(如FP16)来进行计算,仍然能够获得足够的精确度。这是英伟达的一个重要优势,因为较低精度的数字需要更少的存储空间和计算资源,从而可以加快计算速度和效率。这对于深度学习等需要大规模计算的应用来说尤其重要,因为它可以加速训练和推理过程,同时降低了硬件要求和能源消耗。

戴利告诉工程师们,“总的来说,我们获得的最大收益来自更好的数字表示(number representation)。”这些数字代表了神经网络的关键参数。其中一个参数是权重,即模型中神经元之间连接的强度;另一个是激活,在神经网络的每个神经元中,输入信号的加权总和将经过激活函数,生成一个输出值,表示神经元是否应该被激活(发送信号到下一层神经元),这个输出值通常在0到1之间,越接近1表示神经元更活跃,越接近0表示神经元不活跃。在P100之前,英伟达的GPU使用单精度浮点数表示这些权重。根据IEEE 754标准,这些数字长度为32位,其中23是尾数位,8是指数位,还有一位是符号位。

但是,机器学习研究人员很快就发现,在许多计算中,他们的数字可以不必有那么高的精度,而他们的神经网络仍然可以给出准确的答案。这样做的明显优势在于,执行机器学习的关键计算(乘法和累加)的逻辑可以更快、更小、更高效地完成,如果需要处理更少的位数。(如戴利所解释的,乘法所需的能量与位数的平方成正比。)因此,使用FP16,英伟达将该数字减少了一半。Google甚至推出了自己的版本,称为Bfloat16。(两者的区别在于分数位的相对数量,这影响精度,以及指数位的相对数量,这影响范围。Bfloat16与FP32具有相同数量的范围位,因此更容易在这两种格式之间切换。)

如今,英伟达领先的GPU,即H100,可以使用8位数字执行大规模transformer神经网络的某些部分,例如ChatGPT和其他大型语言模型。然而,英伟达发现这并不是一种大小适合所有情况的解决方案。例如,英伟达的Hopper GPU架构实际上使用两种不同的FP8格式进行计算,一种具有更高的精度,另一种具有更大的范围。英伟达的特殊之处在于知道何时使用哪种格式。

戴利及其团队有各种有趣的想法,可以在更少的位数中提取更多的人工智能。而且很明显,浮点系统并不理想。其中一个主要问题是,无论数字大小如何,浮点精度都相当一致。但是,神经网络的参数不使用大数字,它们都集中在零附近。因此,英伟达的研发重点是寻找有效的方法来表示数字,使其在接近零时更准确。

(编者注:与更常见的单精度浮点(32位)和双精度浮点(64位)相比,FP16 具有较低的精度,但它的主要优点是更节省存储空间和更快的计算速度。因此,它通常用于需要在计算性能和存储效率之间取得平衡的应用中,例如深度学习神经网络的训练和推理,其中速度和内存占用都是重要考虑因素。虽然精度较低,但在许多实际应用中,FP16 仍然能够提供足够的精确度。)

复杂指令:12.5倍

通过对图形处理器(GPU)进行架构设计,使其能够在单个指令中执行大规模计算,而不是一系列指令序列,英伟达成功地减少了这种计算资源的额外开销,从而提高了计算效率。

戴利说:“获取和解码指令的资源开销往往是进行简单算术运算的开销的多倍。”他举例说,某种类型的乘法的开销消耗了执行数学运算本身所需的1.5皮焦的20倍。通过将其GPU设计成执行单个指令而不是一系列指令来进行大规模计算,英伟达取得了巨大的收益。戴利指出,使用复杂指令,可以把开销分摊到更多的数学运算上。例如,复杂指令整数矩阵乘法累积(IMMA)的开销仅占数学运算开销的16%。

(注:1皮焦耳等于一万亿分之一焦耳,或者可以表示为10的负12次方焦耳(1 pJ = 10^-12 J)。

摩尔定律:2.5倍

维持摩尔定律的进展是数十亿美元的投资、一些非常复杂的工程和一些国际折腾的主题,但它仅占英伟达GPU增长的一小部分。公司一直在使用最先进的制造技术;H100是使用台积电的N5(5纳米)工艺制造的,而该芯片工厂直到2022年底才开始初步生产其下一代N3。

稀疏性:2倍

在训练后,神经网络中有许多神经元实际上可以不必存在。对于某些网络,“你可以剪掉一半或更多的神经元,而不会失去准确性,”戴利说。它们的权重值为零,或者非常接近零;因此,将它们包括在计算中是浪费时间和能量。

将这些网络“稀疏化”以减少计算负载是一项棘手的任务。但是,Nvidia在其H100的前身A100中引入了所谓的结构化稀疏性。这种硬件可以在每四次可能的剪枝事件中实现两次,从而导致新的较小矩阵计算。

戴利表示:“我们在稀疏性方面还没有完成。我们需要在激活中采取一些措施,也可以在权重中实现更大的稀疏性。”

(编者:16*12.5*2.5*2=1000倍 )


参考:

https://spectrum.ieee.org/nvidia-gpu


点击关注“未尽研究”


继续滑动看下一个
未尽研究
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存