1、模型量化:
是什么:大模型量化是一种“压缩”技术,把模型里高精度的数字(比如32位浮点数)简化成低精度的数字(比如8位定点数)。
有什么用:它让模型占的空间更小,跑起来更快,省显卡资源,适合在手机、小设备上用。
原理是啥:通过降低数字的精度(从很精确变粗糙点),减少存储和计算的负担,但尽量保持模型的效果。
开源工具推荐:
BitsAndBytes
为什么推荐:简单易用,特别适合大语言模型(比如LLaMA、Mistral这种),4位和8位量化效果好,社区活跃。
适合谁:想快速上手、不太折腾代码的人,尤其是用Hugging Face模型的。
我的理由:它几乎是“开箱即用”,对显存要求低的设备特别友好,我觉得你试起来会很顺手。
2、模型蒸馏:
是什么:大模型蒸馏是一种“传授”技术,把一个复杂的大模型(老师)的知识“教”给一个简单的小模型(学生)。
有什么用:它让小模型变得更聪明,效果接近大模型,但占空间小、跑得快,适合手机或小设备。
原理是啥:让小模型模仿大模型的输出(比如预测结果或概率),通过训练学会大模型的“精华”,但用更少的参数。
TextBrewer
为什么推荐:专注于NLP模型,配置简单,支持多种蒸馏方法(比如soft label、attention转移),文档清晰。
适合谁:想蒸馏语言模型(比如BERT、RoBERTa)又不想从头写代码的人。
我的理由:它把复杂的蒸馏过程封装得很好,我觉得你用起来不会头疼,结果也不错。
3、TP与PP
3.1 TP(张量并行)
TP 是什么: TP(张量并行)是把大模型单层的大张量分割到多个 GPU 上并行计算的技术。
有什么作用: 减少单 GPU 的内存负担(TP 把参数分到多个 GPU 上)、加速计算(TP 让多个 GPU 同时算)
原理是啥: 把张量拆成小块分给 GPU 计算,再通过通信汇总结果完成整个任务。
3.2 PP(流水线并行)
PP 是什么: 将模型的层按顺序分成几个阶段,每个阶段分配到不同的 GPU 上,数据像流水线一样依次流过这些阶段
有什么作用: 减少单 GPU 的内存负担(单 GPU 的显存需求从“整个模型”减少到“一部分层”)、提高整体吞吐量(流水线让多个 GPU 同时忙起来,单位时间内处理更多数据,整体吞吐量提升)
原理是啥: 把模型按层分成几个阶段,像流水线一样依次处理数据,每个 GPU 只负责一部分层
举个例子
假设有 4 个 GPU,模型有 24 层:
内存:每 GPU 只存 6 层参数,比如 GPU 1 存 1-6 层,GPU 2 存 7-12 层,显存需求降到原来的 1/4。
吞吐量:输入分成 4 个 micro-batch,GPU 1 算完第一个 batch 的 1-6 层后传给 GPU 2,自己马上算第二个 batch,4 个 GPU 同时工作,像流水线一样连续输出结果。
TP和PP的区别:
简单来说,TP 是横向切分,PP 是纵向切分,它们可以单独使用,也可以结合其他并行策略(如数据并行 DP)来加速训练推理
4、大模型推理显存计算
模型参数量 + 推理额外开销
以Qwen 32B(FP16)为例
模型参数量计算:
- 参数量:Qwen 32B 表示模型有 320 亿个参数。
- FP16 精度:在半精度(FP16,浮点数16位,每个参数 2 字节,一个字节8位)下,参数占用显存为:
32B * 2 = 64B = 64GB
推理额外开销计算:
运行大模型时,除了参数本身,还需要额外的显存来存储:
激活值:每层计算时的中间结果。
KV 缓存:Transformer 模型在生成时存储注意力机制的 Key 和 Value
通常推理时显存需求约为参数量的 1.2-2 倍,具体取决于序列长度和批次大小。保守估计为 1.5 倍,所以需要96G显存
5、PD分离
PD分离指的是将推理过程分为两个阶段:Prompt阶段(也叫预填充,处理输入提示)和Decoding阶段(解码,生成输出)
Prompt阶段:模型一次性处理整个输入提示(prompt),计算所有输入token的注意力(attention)和前向传播,生成初始的键值对(KV缓存)。
Decoding阶段:模型逐个生成输出token,每次只处理一个新生成的token,复用Prompt阶段的KV缓存以加速计算。
这种分离的核心目的是优化计算效率,避免重复计算输入提示的注意力。