本文由半导体产业纵横(ID:ICVIEWS)编译自semiengineering
硬件方面的进步已经解决了一些问题。接下来的进展可能取决于算法。
在训练大语言模型(LLMs)时,需要处理的数据量越来越大,而数据在内存和处理器之间来回传输的速度却不够快,这种日益加剧的不平衡状况,引发了全球范围内对更优、更节能且更具成本效益解决方案的大规模探索。
这在很多数据中都有明显体现。预计到2029年,图形处理器(GPU)市场规模将达到1900亿美元,是通用中央处理器(CPU)市场规模的两倍。GPU与英伟达的CUDA等并行计算平台相结合,是高度可扩展的矩阵乘法引擎。这与人工智能训练非常契合,因为大语言模型的性能与它们包含的参数数量以及所需的计算资源量直接相关。商业大语言模型通常涉及数十亿甚至数万亿个参数。
但如今,对于在哪里进行处理最为理想、使用何种处理元件,以及需要传输多少数据,这些问题尚不明晰。GPU并非最节能的处理器,而且在一组GPU中进行所有计算所需的数据传输量,超出了内存和互连设备能够高效处理的范围。因此,各国政府、企业和私人投资者正共同投入数千亿美元,用于研究新架构、新算法和新的计算方法。
训练一个大语言模型是一项受计算能力限制的任务,涉及许多矩阵乘法运算。通常情况下,训练数据(B)会与权重矩阵(A)相乘,并加上当前网络层(C’),从而得出下一层(C)。
在12月举行的IEEE(电气和电子工程师协会)电子器件会议(IEDM)的一次短期课程上,美光公司的技术资深员工Emanuele Confalonieri 指出,训练一个大型模型可能需要耗费数百 “GPU年” 的计算量,以及超过十几太字节的内存。因此,这对设备的可靠性提出了极高的要求。由于整个模型是并行训练的,哪怕只有一个GPU出现故障,都可能需要重新启动整个训练任务。一个无法纠正的动态随机存取存储器(DRAM)错误,就可能影响到数千个GPU。(最近发布的模型声称能大幅缩短训练时间,但这一说法尚未得到独立验证。)
实际上,使用大语言模型(即 “推理” 阶段)时,对于用户的每一个查询,都需要分两步来处理。用户的请求包含一个特定的提示词,以及用户提供的任何上下文信息。例如,可能是 “总结这篇文章” 这样的提示,再加上文章的文本内容。系统首先会将这些输入转换为一系列的标记。然后,它会将权重矩阵(A)与标记向量(x)相乘,并加上当前层的响应向量(y’),从而生成一个新的响应向量(y)。
前馈网络会多次重复这一步骤,以生成对用户查询的实际回复。据SK海力士的Haerang Choi及其同事在IEEE电子器件会议上的展示,矩阵向量乘法占回复阶段工作量的90%。Confalonieri解释说,由于每字节所需的操作数不到一次,矩阵向量乘法是一项受内存限制的任务。
不幸的是,如此巨大的计算需求也带来了同样巨大的能源和散热需求。每次对ChatGPT的查询所消耗的能源,是一次简单网页搜索的五倍多。因此,公用事业公司正面临着数据中心客户的需求与其他商业和住宅用户的需求之间的冲突。
在传统的系统架构中,受内存限制的处理过程所消耗的大量能源,很大一部分是由于将数据移入处理器的工作内存,然后再写入结果所产生的开销。减少大语言模型对大型数据矩阵的依赖,这是开发机器学习算法的研究人员的任务,而非集成电路制造商的任务。不过,英伟达的Brucek Khailany表示,性能更好的硅芯片可以降低内存写入/读取操作所消耗的功率,可以增加内存与计算单元之间的带宽,还可以支持将计算功能更靠近内存单元的替代架构。
性能更好的硅芯片还可以整合其他替代内存技术。虽然新兴内存技术尚未在普遍应用中站稳脚跟,但它们在速度和数据持久性之间提供了独特的权衡方案。读写操作的频率和数据的保存期限取决于具体任务。在推理工作负载中,可能会反复使用同一个权重矩阵。
Macronix新兴内存技术研发部总监Hang-Ting Lue及其同事指出,像NOR闪存这类写入速度相对较慢但读取速度较快的技术,很符合这一要求。此外,非易失性存储使得数据可以多次重复使用,而无需额外的写入步骤。他们估计,其设计最多可将芯片的输入/输出(I/O)减少1000倍,这将极大地改变对高带宽内存的需求状况。
相比之下,像流式输入/输出和数据分析这类任务,需要引入大量数据,计算出结果,然后再处理下一个数据块。在这些应用中,快速的读写速度至关重要,而数据持久性则相对没那么重要。
Lue说,像检索增强生成(RAG)这样的新兴机器学习工具进一步增加了复杂性。检索增强生成算法试图通过使用近实时的特定主题搜索,为大语言模型提供更多上下文信息,从而提高准确性。检索并对这些额外数据进行标记化处理的需求,又引入了另一个内存瓶颈。
需求差异巨大,这就解释了为什么有许多不同的架构都属于内存内计算的范畴。瑞士苏黎世联邦理工学院的onur Mutlu及其同事区分了利用内存进行计算和在内存附近进行计算这两种方式。一种近内存架构可能会在包含权重矩阵的非易失性内存组附近设置计算单元,同时共享对包含提示向量的动态内存块的访问权限。Choi及其同事用他们的 “内存中的加速器” 处理器展示了这种方法(见图1)。这种方法的优势在于灵活性:模型权重到内存组的具体映射是由程序控制的。
图1:内存模块中的加速器。每个动态随机存取存储器(DRAM)存储体旁的处理单元可访问一个共享缓冲区。资料来源:电气和电子工程师协会(IEEE)及参考文献5。
需求差异巨大,这就解释了为何有许多不同的架构都属于内存内计算的范畴。瑞士苏黎世联邦理工学院的计算机科学教授onur Mutlu及其同事区分了利用内存进行计算和在内存附近进行计算这两种方式。一种近内存架构可能会在包含权重矩阵的非易失性内存组附近设置计算单元,同时共享对包含提示向量的动态内存块的访问权限。这种方法具有灵活性方面的优势,因为在程序控制下,模型权重到内存组的具体映射是可调整的。
相比之下,利用内存进行计算则是利用内存阵列的特性,直接对单个比特进行操作。例如,一组模拟阻变随机存取存储器(RRAM)或相变存储器(PCM)元件可能会利用欧姆定律与输入向量相乘,并利用基尔霍夫定律对结果求和。这种方法极大地减少了数据传输量,但相对缺乏灵活性。作为一种替代方案,苏黎世联邦理工学院的团队展示了一种多指令多数据(MIMD)模型,该模型将不同的指令映射到不同的动态随机存取存储器(DRAM)子阵列。他们的MIMDRAM系统无需一次性处理整个DRAM存储体,而是以现代编译器常用的相同粒度进行操作。
推理虽然高性能计算中高带宽内存的标准正开始出现,但针对低功耗应用的类似标准尚未形成。便携式和可穿戴设备可能会使用机器学习模型来进行语音识别、翻译、导航等功能。出于性能和隐私方面的考虑,在设备本地执行推理任务更为可取。使用低精度权重可以降低对内存的需求,但边缘设备仍然面临着在性能、带宽和功耗之间艰难平衡的问题。
不过,即便取得了所有这些进展,根本性的挑战依然存在。内存墙问题并未消失。内存内计算阵列仍然需要从某个地方获取数据,而且单个芯片上的内存容量始终是有限的。模型与底层硬件之间的智能映射能够最大限度地利用可用的硅芯片资源。但归根结底,机器学习模型的发展速度正超过硅芯片的改进速度。未来的突破很可能需要更好的算法,而非更好的硅芯片。
*声明:本文系原作者创作。文章内容系其个人观点,我方转载仅为分享与讨论,不代表我方赞成或认同,如有异议,请联系后台。