Lucent's Blog

当时明月在 曾照彩云归

人生不相见,动如参与商。

6LCi5Y2O5qKFLOaIkeaDs+S9oOS6hg==


模型量化

模型量化(quantization)指的是用更少的bit表示模型参数,从而减少模型的大小,加速推理过程的技术。

模型量化是把模型的参数从FP32映射到nbit位的过程, 简单来说就是在定点数浮点数等数据之间建立一种数据映射关系, 使得以较小的精度损失代价获得了较好的收益。 例如FP32-->INT8可以实现4倍的参数压缩,在压缩内存的同时可以实现更快速的计算,从而有效地提高模型的性能; 最极端的二值量化理论上甚至可以实现32倍的压缩,但是过度的压缩会导致模型的精度快速下降, 所以更多量化的时候需要做好精度和性能的权衡.

工业界一般使用int8量化, 在模型推理前需要把FP32映射为int8进行计算, 然后在输出的时候做一个去量化操作, 把计算的int8结果映射回FP32.

模型量化过程

关于量化的3个问题:

  • 为什么不直接训练一个低精度的网络? 一般训练使用的是梯度下降法, 直接用 定点数做参数训练很容易导致梯度消失, 训练的模型会欠拟合, 所以训练阶段我们还是要用 浮点数 来做参数.

  • 为什么可以做量化? 神经网络模型一般有较好的抗干扰能力对噪声不敏感,量化相当于对原输入加入了大量的噪声, 对模型的精度一般不会造成太大影响.

  • 为什么用低精度数量化后性能可以提升? 首先我们要知道一点就是: 模型的性能主要由模型的参数量计算量来决定的. 参数量的大小直接决定模型的大小,也影响推断时对内存的占用量以及内存的访问次数. 很多时候模型计算需要内存和CPU共同协作, 同一个计算量下, 模型越大内存占用就越大内存访问次数也就越多, 而我们知道CPU和内存的速度根本就不在一个数量级, 所以模型的参数量大小一般决定了模型性能的下限.

计算量越大的模型, 性能一般越差, 我们知道CPU或者GPU的FLOPS(每秒浮点计算量)是相对固定的, 模型的计算量大小是决定了模型性能的上限.

模型量化作用

  • 减少内存带宽和存储空间

  • 提高系统吞吐量(throughput),降低系统延时(latency)

  • 易于在线升级,模型更小意味着更加容易传输

  • 减少设备功耗,内存耗用少了推理速度快了自然减少了设备功耗

  • 支持微处理器,有些微处理器属于8位的,低功耗运行浮点运算速度慢,需要进行8bit量化

上一篇

RAG 全称 Retrieval-Augmented Generation,翻译成中文是检索增强生成。检索指的是检索外部知识库,增强生成指的是将检索到的知识送给大语言模型以此来优化大模型的生成结果,使得大模型在生成更精确、更贴合上下文答案的同时,也能有效减少产生误导性信息的可能。 为什么需要RAG?…

阅读
下一篇

大模型蒸馏(Large Model Distillation),简单来说,就是将一个复杂的大模型(教师模型)的知识迁移到一个较小的模型(学生模型)中。就像老师把自己渊博的知识传授给学生,让学生能够在资源有限的情况下,尽可能地表现出和老师相似的能力。 大模型蒸馏的原理 大模型蒸馏借鉴了教育领域的“知识…

阅读