跳到主要内容

1 篇博文 含有标签「quantization」

查看所有标签

承上启下

在上一章,我们学会了如何通过 Fine-tuning 定制自己的“阿凡达”。 但问题来了:你训练出来的 70B 大模型,可能有 140GB 那么大。你的显卡只有 24GB,怎么办? 这一章,我们不仅要让模型跑得起来(省显存),还要让它跑得快(低延迟)。


1. 显存危机:为什么模型这么大?

首先,我们要会算账。 一个模型占多少显存,取决于参数量精度

  • FP16 (半精度浮点数):这是训练时的标准精度。每个参数占 2 Bytes。
    • 7B 模型 \approx 14GB 显存。
    • 70B 模型 \approx 140GB 显存 (你需要 2 张 A100)。

对于普通开发者来说,这太贵了。我们需要把大象(模型)压缩一下。


2. 量化 (Quantization):有损压缩的艺术

量化的核心思想是:降低精度。 虽然参数是小数(比如 0.123456789),但我们真的需要保留那么多位小数吗? 如果变成 0.12,模型会不会变傻?

2.1 常见量化格式

  1. FP16 (16-bit): 原始大小。
  2. INT8 (8-bit): 体积减半。效果几乎无损。
  3. INT4 (4-bit): 目前的主流。体积变成 1/4!
    • 7B 模型 @ INT4 \approx 4GB 显存 (随便这台笔记本都能跑)。
    • 70B 模型 @ INT4 \approx 35GB 显存 (2 张 3090/4090 就能跑)。

2.2 会变笨吗?

答案是:几乎不会(只要不用太极端的 INT2)。 现在的 GPTQ / AWQ 算法非常聪明,它们知道哪些参数重要(保留高精度),哪些不重要(狠狠压缩)。

🛠️ 工具推荐

  • GGUF 格式:如果你想在 Mac 或 CPU 上跑模型,认准这个后缀。
  • llama.cpp:神奇的库,让普通电脑也能跑大模型。

3. 推理加速:vLLM 与 PagedAttention

解决了装得下的问题,下一步是跑得快。 如果你直接用 PyTorch model.generate(),你会发现随着对话变长,速度越来越慢。

这里有两个关键瓶颈:

3.1 KV Cache (以空间换时间)

Transformer 生成每一个字时,都要回头看之前所有的字。 为了不重复计算,我们会把之前算过的“记忆”(Key 和 Value 矩阵)存下来,这就叫 KV Cache

但这东西非常吃显存。而且随着对话变长,显存占用直线上升。

3.2 vLLM 的魔法 (PagedAttention & Continuous Batching)

加州大学伯克利分校团队发明了 vLLM,它的核心有两把刷子:

  1. PagedAttention:引入了操作系统里的 显存分页 (Paging) 概念。显存利用率接近 100%(不再有碎片浪费)。
  2. Continuous Batching (连续批处理)
    • 传统做法:你要等这一批次里写得最慢的那个人写完,才能一起交卷(Static Batching)。
    • vLLM 做法:谁写完了谁就先走,新的人立马补进来。流水线作业。

这让 vLLM 的并发吞吐量比 HuggingFace Transformers 快了 24 倍

💡 生产环境建议: 别手写 Python 脚本跑推理。 请直接部署 vLLMOllama (本地开发) 作为 API Server。


4. 极致加速:企业级黑科技

如果你对速度有极致要求(比如毫秒级延迟),还有更硬核的技术:

4.1 TensorRT-LLM (NVIDIA 亲儿子)

这是 NVIDIA 官方推出的推理引擎。 它会针对你的具体显卡型号(比如 A100 vs H100)做内核级优化(Kernel fusion)。 虽然配置起来比 vLLM 麻烦,但在 NVIDIA 显卡上,它就是速度的天花板

4.2 Speculative Decoding (投机采样)

这是一个非常聪明的“作弊”方法:居然能一边猜一边写

  • 原理:让一个小模型(比如 1B)先快速猜出后面 5 个词。
  • 验证:让大模型(70B)一次性检查这 5 个词对不对。
    • 如果全对,那就赚了(一次生成了 5 个词,但大模型只跑了一次)。
    • 如果不对,就修正。
  • 效果:在不损失精度的情况下,推理速度提升 2-3 倍。

4.3 Flash Attention

这是底层技术。它优化了 GPU 读写显存的方式(IO Awareness)。 简单说:减少数据在芯片搬运的次数,算得更快。 现在的主流框架(vLLM, PyTorch 2.0)都已经默认内置了它。


5. 部署工具推荐

根据你的场景,选择不同的工具:

场景推荐工具特点
Mac / 笔记本本地Ollama傻瓜式安装,一行命令 ollama run llama3。底层是 llama.cpp。
服务器生产部署vLLM速度最快,吞吐量最高,支持并发。工业界标准。
边缘设备 (树莓派/手机)MLC LLM极致优化,甚至能在 iPhone 上跑 LLM。

5. 总结

  1. 量化 (INT4) 是让大模型进入寻常百姓家的关键。以后看到模型,先除以 4 算算显存够不够。
  2. GGUF / llama.cpp 是端侧推理的神器。
  3. vLLM 是服务器端推理的霸主,核心技术是 PagedAttention

至此,我们的实现层 (Level 2) 攻略完成: 我们学会了如何训练它(2.1),也学会了如何高效运行它(2.2)。

接下来,我们要进入最激动人心,也是变化最快的 【第三层:能力层】。 既然模型跑起来了,它现在到底进化出什么新能力了?什么是 Reasoning Model(推理模型)?为什么 GPT-4o 会说话?


下一章: Reasoning Models 推理模型

ai学习quantizationvllmollamadeployment阅读需 5 分钟