LLM 优化技术:内存、计算与推理
本文系统梳理了大型语言模型在训练与推理阶段的优化技术,涵盖显存、计算和推理三大方向,包括 Flash Attention、量化、并行策略等前沿方法,旨在应对模型规模增长带来的挑战。
随着大型语言模型(LLM)的参数规模达到数十亿甚至万亿级别,传统的训练和部署方法在内存、计算和通信方面面临巨大挑战。为了高效地训练和部署这些模型,业界发展出了一系列优化技术。这些技术旨在从多个维度平衡资源开销,是当前大模型工程实践中的核心关注点。

核心内容
优化技术主要围绕内存、计算和推理三个核心方向展开。
在显存优化方面,关键技术包括 Flash Attention,它通过切块计算与重算策略,将注意力机制的内存复杂度从平方级降低,仅保存归一化因子以显著减少内存占用。多查询注意力(MQA)和分组查询注意力(GQA)通过共享或分组键值对来减少内存需求。激活检查点技术则选择性地保存部分激活值,在反向传播时重新计算其余部分,以此缓解显存压力。
计算优化旨在提升处理效率。序列打包通过拼接多条训练序列来消除填充(padding),从而提高 GPU 利用率。高效的 Transformer 变体,如 BigBird 和 Longformer,采用局部与全局注意力相结合的方式,实现对长序列的线性复杂度处理。低秩近似与层级扩张注意力等技术进一步降低了计算量,以支持更大规模的输入。
推理优化侧重于提升生成速度和减少资源消耗。KV 缓存通过缓存历史键值对,避免在生成每个新 token 时进行重复计算。状态缓存利用滚动哈希和 LRU 等算法管理对话历史,支持缓存复用。推测解码先用小模型快速生成候选序列,再由大模型进行验证,据报道可将推理速度提升 2 至 3 倍。量化技术,包括 8 位量化、混合精度以及量化感知训练,能在保证模型精度的前提下,极大地压缩模型体积。
训练优化涉及更广泛的系统级策略。混合精度训练结合 bfloat16 格式和动态损失缩放,兼顾了训练速度与数值稳定性。数据并行与 ZeRO 优化通过分割模型参数、梯度和优化器状态,实现了显存的极限压缩。多种并行策略被用于扩展训练规模:流水线并行(如 GPipe)减少 GPU 空闲时间;张量并行对矩阵乘法进行列切分或行切分;上下文并行将序列长度分割到多个 GPU 上;专家并行(MoE)则引入专家子网络,将不同 token 路由至不同专家,显著扩展模型容量,同时也带来了负载均衡等挑战。
价值与影响
优化大型语言模型是一项复杂的系统工程,需要综合考虑内存、计算和通信开销之间的平衡。本文所汇总的技术涵盖了当前业界应对这些挑战的主流且前沿的思路。深入理解这些优化策略,有助于技术人员把握大模型训练与推理过程中的关键瓶颈及其解决方案。随着模型规模的持续增长,这些优化技术的重要性将日益凸显,是推动大模型高效落地与应用的基础。
来源:黑洞资源笔记





