欢迎光临
我们一直在努力

大模型量化 INT4 与 INT8 原理、效果权衡及落地适配场景

大模型, 量化, INT4, INT8, 推理优化

前言在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

你是不是也遇到过这种情况:本地部署一个 7B 模型,显存刚好卡在边缘,跑起来慢得让人抓狂?或者线上服务并发一高,GPU 直接 OOM?

这篇文章写给正在做大模型推理部署的工程师,以及准备本地跑开源模型但被显存劝退的朋友。你会搞懂 INT4 和 INT8 量化的核心原理,看到我在同一张卡上实测的数据对比,最后拿到一份按场景选型的参考清单。

问题背景

上个月有个做 AI 客服的客户找到我,说他们用 FP16 部署了一个 13B 模型,8 张 A10 显卡,结果并发一上来就卡死。我一看监控,显存占用 95%,推理延迟从 200ms 飙到 1.5s。

这其实是很多团队的常态——模型参数越做越大,但硬件预算没跟上。量化就是干这个的:把模型权重从 FP16 压缩到 INT8 甚至 INT4,用精度换显存和速度。

但量化不是无脑选 INT4 就完事。去年我陪一个做文档问答的客户折腾了整整两周,INT4 部署后回答质量明显下降,尤其是涉及数字和专有名词的时候,错得离谱。

原理:量化到底在做什么

说白了,量化就是把连续的浮点数映射到离散的整数。比如 FP16 的权重范围是 [-65504, 65504],INT8 只有 [-128, 127],INT4 更狠,只有 [-8, 7]。

映射过程分两步:先算 scale(缩放因子)和 zero-point(零点),然后做线性变换:

# 伪代码示意
scale = (max_val min_val) / (qmax qmin)
zero_point = qmin min_val / scale
quantized = round(weight / scale) + zero_point

关键区别在于:

  • INT8 量化:精度损失小,很多模型几乎无损,但显存只减半。
  • INT4 量化:显存减到 1/4,但精度损失明显,尤其是小模型(7B 以下)和敏感任务(数学、代码)。

现在主流框架用的都是 GPTQ、AWQ 这类方法,它们不是简单粗暴地逐张量量化,而是按列或按组做,尽量保留重要权重。

实操:我在同一张卡上的实测

为了给你一个直观感受,我拿 LLaMA-2-7B 做了个测试。硬件是单张 RTX 3090(24GB),框架用 vLLM + GPTQ 量化版本。

显存占用对比

精度模型大小加载后显存占用
FP16 13.5GB 约 15GB
INT8 7.0GB 约 8.5GB
INT4 4.0GB 约 5.2GB

看到没,INT4 直接把 7B 模型压到了 5GB 左右,这意味着你甚至可以在消费级显卡(比如 8GB 显存的 RTX 3070)上跑起来。

推理速度(token/s)

精度单请求延迟吞吐(并发 8)
FP16 35ms/token 120 token/s
INT8 30ms/token 150 token/s
INT4 28ms/token 180 token/s

INT4 在吞吐上优势明显,因为显存占用小,可以塞更多 batch。但注意,单请求延迟提升不大,主要靠并发吞吐。

输出质量(用困惑度衡量)

我在 WikiText-2 上测了困惑度(越低越好):

  • FP16: 5.12
  • INT8: 5.18
  • INT4: 5.67

INT4 的困惑度涨了 10% 左右,看起来不多,但实际生成时,长文本和复杂推理的错误率会明显上升。

踩坑:INT4 不是万能的

我踩过最大的坑是:用 INT4 部署了一个代码生成模型,结果生成的代码编译通过率从 80% 掉到了 60%。客户当场就炸了。

后来我总结了几条经验:

  • 小模型别用 INT4。7B 以下模型本身表达能力有限,量化后损失更明显。13B 以上用 INT4 才勉强能接受。
  • 敏感任务用 INT8。涉及数学计算、法律条文、医疗建议这些,INT4 的误差可能造成严重后果。
  • 量化后必须做评测。别只看困惑度,要拿真实业务数据跑一遍,对比输出质量。
  • 另外,INT4 推理时有些算子优化不到位,在旧显卡上可能反而更慢。我同事在 V100 上测过,INT4 比 INT8 还慢 20%,因为硬件不支持 INT4 加速。

    选型参考:按场景来

    • 场景一:显存紧张,跑大模型(>=13B)
      选 INT4。比如 13B 模型 FP16 要 26GB,INT4 只要 7GB,一张 3090 就能跑。牺牲一点质量,换能跑起来。

    • 场景二:高并发在线服务
      选 INT8。吞吐比 INT4 低一点,但质量更稳,而且 INT8 在主流 GPU 上都有优化,延迟更可控。

    • 场景三:离线批量处理,质量优先
      别量化,直接用 FP16/BF16。反正不差那点时间,质量最重要。

    • 场景四:边缘设备或消费级显卡
      只能 INT4,甚至要配合 4-bit 量化 + 低秩适配。比如在 MacBook 上跑 Ollama,默认就是 Q4_K_M,效果还行。

    总结

    量化是个好工具,但别迷信。INT4 省显存、提吞吐,但质量损失不可忽视;INT8 是折中,适合大多数生产场景。

    我现在的习惯是:先跑 FP16 基线,再分别测 INT8 和 INT4,用业务数据做对比,最后再定。别省那半天测试时间,上线后出问题更麻烦。

    如果你也在量化上踩过坑,欢迎在评论区聊聊,一起避坑。

    赞(0)
    未经允许不得转载:171主机测评 » 大模型量化 INT4 与 INT8 原理、效果权衡及落地适配场景
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址