分类: 未分类

  • SmoothQuant: 让大型语言模型更轻更快更便宜

    大型语言模型(LLM)在各种任务上展现出卓越的性能,但其庞大的体积和巨大的计算量也让它们成为了资源消耗的大户。例如,GPT-3模型拥有1750亿个参数,需要至少350GB的内存来存储和运行,仅推理就需要8台48GB A6000 GPU或5台80GB A100 GPU。巨大的计算和通信开销也导致了推理延迟,这在实际应用中难以接受。

    量化是一种很有前景的降低LLM成本的方法。通过将权重和激活值用低位整数表示,我们可以减少GPU内存需求,并加速计算密集型操作,例如线性层中的通用矩阵乘法(GEMM)和注意力机制中的批量矩阵乘法(BMM)。例如,INT8量化可以将GPU内存使用量减半,并将矩阵乘法的吞吐量提高近一倍。

    然而,与CNN模型或BERT等较小的Transformer模型不同,LLM的激活值难以量化。当LLM的参数量超过67亿时,激活值中会系统性地出现大量值,导致量化误差增大,精度下降。

    SmoothQuant 是一种针对LLM的无训练、精度保持、通用型后训练量化(PTQ)解决方案,它可以实现LLM的8位权重、8位激活值(W8A8)量化。SmoothQuant基于一个关键观察:权重易于量化,而激活值则不然。

    SmoothQuant的原理

    SmoothQuant通过离线迁移量化难度,将激活值中的异常值平滑化,从而使模型更容易被量化。具体来说,SmoothQuant提出了一种数学等效的逐通道缩放变换,可以显著平滑通道间的幅度,使模型更容易被量化。

    SmoothQuant的优势

    • 高精度: SmoothQuant能够保持LLM的精度,即使在最激进、最高效的量化设置下,也能与FP16模型的性能相媲美。
    • 高效率: SmoothQuant可以显著加速推理速度,并减少内存使用量,例如,在OPT-175B模型上,SmoothQuant可以实现1.56倍的加速和2倍的内存节省。
    • 易于实现: SmoothQuant易于集成到各种框架中,例如PyTorch和FasterTransformer。
    • 可扩展性: SmoothQuant可以应用于各种LLM架构,包括OPT、BLOOM、GLM、MT-NLG、Llama-1/2、Falcon、Mistral和Mixtral模型。

    SmoothQuant的应用

    SmoothQuant可以将大型模型(如OPT-175B)的推理所需GPU数量减半,同时还能提升推理速度,甚至可以将530B的模型部署到单个8-GPU节点上。

    总结

    SmoothQuant为降低LLM的部署成本提供了便捷的解决方案,它可以显著提高LLM的效率,并推动LLM在更多领域的应用。

    参考文献


    GitHub – mit-han-lab/smoothquant: [ICML 2023] SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models


  • 巨型语言模型的 8 位量化:LLM.int8()

    大型语言模型(LLM)在自然语言处理领域取得了巨大成功,但其推理过程需要大量的 GPU 内存。本文将介绍一种针对 Transformer 架构中前馈层和注意力投影层的 8 位矩阵乘法方法,该方法可以将推理所需的内存减半,同时保持与全精度模型相同的性能。

    量化困境:精度与规模的博弈

    传统 8 位量化方法虽然可以减少内存占用,但往往会导致性能下降,并且需要在训练后进行额外的量化调整。这些方法主要针对参数量小于 3.5 亿的模型,对于参数量更大的模型,无损量化一直是一个挑战。

    LLM.int8():突破性能瓶颈

    本文提出的 LLM.int8() 方法是首个能够在不损失性能的情况下对参数量达到 1750 亿的 Transformer 模型进行 8 位量化的方案。该方法通过解决两个关键问题实现了这一突破:

    • 超越 10 亿参数规模的量化精度问题: LLM.int8() 使用了向量级量化,为矩阵乘法中的每个内积分配独立的量化归一化常数,从而提高了量化精度。
    • 系统性大值异常特征的处理: 在参数量超过 67 亿的 Transformer 模型中,会出现一些具有极大值的异常特征,这些特征会破坏量化精度。LLM.int8() 采用了一种混合精度分解方案,将这些异常特征维度分离出来,并使用 16 位矩阵乘法进行计算,而其他 99.9% 的值仍然使用 8 位矩阵乘法。

    异常特征的揭秘:影响深远

    研究表明,这些异常特征在 Transformer 模型中具有高度的系统性。它们虽然只占所有特征维度的 0.1%,但却对注意机制和模型的预测性能至关重要。如果将这些异常特征设置为零,模型的注意力 softmax 概率质量会下降 20% 以上,验证困惑度会增加 600-1000%。

    LLM.int8() 的优势:内存节省、性能提升

    LLM.int8() 方法不仅为大型语言模型的 8 位量化提供了新的思路,还使得一些原本无法在单台服务器上运行的模型,例如 OPT-175B/BLOOM,可以借助消费级 GPU 进行推理。此外,该方法还能够提升大型模型的矩阵乘法速度。

    未来展望:更低精度、更广应用

    尽管 LLM.int8() 方法已经取得了重大突破,但仍有一些局限性,例如:

    • 仅针对 Int8 数据类型: 未来可以研究 8 位浮点 (FP8) 数据类型,以进一步提升精度和性能。
    • 尚未研究 1750 亿参数以上的模型: 未来需要研究更大规模模型的量化方法。
    • 未对注意力机制进行 8 位量化: 未来可以研究针对注意力机制的 8 位量化方法。
    • 尚未研究训练和微调: 未来可以研究 8 位训练和微调方法。

    参考文献


    GitHub – TimDettmers/bitsandbytes: Accessible large language models via k-bit quantization for PyTorch.


人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 借一步网
Page Stats: PV: 9588 | UV: 4362
Last updated: 2025-07-29 13:19:12
沪ICP备2024052574号-1