
一、问题定义显存带宽瓶颈与精度冗余的共存大语言模型推理的性能困境归根结底是一个数据搬运问题。以 Llama-2-70B 在 H100 上的 decoding 阶段为例。这一阶段每次只处理单个 token计算量约 140 GFLOPs但需要从 HBM 搬运约 140 GB 的参数数据每个参数 2 bytesFP16。H100 的 HBM 带宽约 3.35 TB/s因此Tdata_transfer140 GB3.35 TB/s≈42 msTdata_transfer3.35 TB/s140 GB≈42 msTcompute140 GFLOPs989 TFLOPS≈0.14 msTcompute989 TFLOPS140 GFLOPs≈0.14 ms数据搬运时间是计算时间的约 300 倍。GPU 中成千上万的 Tensor Core 在绝大部分时间里处于空闲状态等待数据从 HBM 抵达寄存器。这就是 memory-bound 困境的具象化算力不是瓶颈带宽是。解决的思路只有两个方向减少需要搬运的数据量或增加搬运的带宽。后者受制于物理定律——HBM 带宽的年增速约为 20-30%而模型规模的增长速度是其 3-5 倍。前者在一段时间内只能靠更激进的并行策略tensor parallelism但通信开销同样受带宽约束。但这里存在一个隐含的矛盾我们真的需要每个参数都用 16 bits 来表示吗训练阶段高精度FP32 或 BF16是必要的——反向传播的梯度累积跨越数千步微小的精度误差在漫长训练中会被放大。但推理阶段是单次前向传播没有梯度累积没有参数更新。这种场景下16-bit 精度是否为过度的冗余大量实证研究给出了肯定的答案。以 Llama-2-70B 在标准基准上的表现为例精度Perplexity (WikiText-2)参数显存相对 FP16 的吞吐FP165.12140 GB1.0×INT8 (SmoothQuant)5.15 (0.06%)70 GB1.6-1.8×FP85.13 (0.02%)70 GB1.8-2.0×INT4 (GPTQ)5.30 (3.5%)35 GB2.5-3.0×用 0.02% 的 perplexity 损失换取 2 倍的吞吐提升——这就是量化技术存在的根本理由。模型参数中承载的精度不是全部有用。那些微小到对人类阅读和推理结果无影响的低位信息占据了不成比例的显存带宽和显存空间。量化的本质是将这些冗余精度识别出来并移除把释放出的带宽和显存转化为实际吞吐。二、数值表示浮点与整数的代价差理解量化的工作原理需要理解不同数值格式在硬件上的成本差异。2.1 浮点格式高动态范围高带宽成本FP32单精度浮点1 bit 符号 8 bits 指数 23 bits 尾数 32 bits。动态范围约 ±3.4×10³⁸精度约 7 位有效十进制数字。训练的标准格式。FP16半精度浮点1 bit 符号 5 bits 指数 10 bits 尾数 16 bits。动态范围 ±65,504精度约 3-4 位有效十进制数字。推理的主流格式自 V100 起有原生硬件支持。BF16Brain Float 161 bit 符号 8 bits 指数 7 bits 尾数 16 bits。动态范围与 FP32 相同同样是 8 位指数精度低于 FP16。Google TPU 和 A100 起引入的原生支持格式。在训练和推理中逐渐替代 FP16因为它避免了 FP16 的梯度下溢问题——对于 LLM 中大量集中在 [-1, 1] 范围内的参数和激活值BF16 的动态范围比精度重要得多8 位指数的设计决策被证明是对的。FP8Hopper 架构H100引入的两种变体——E4M34 位指数3 位尾数和 E5M25 位指数2 位尾数。前者精度更高适合表示权重和激活后者动态范围更大适合梯度训练场景。FP8 的关键创新不是减少了多少位而是得益于 H100 的FP8 Tensor Core——FP8 矩阵乘法的吞吐是 FP16 的 2 倍因为每个 Tensor Core 每个周期可以处理两倍的 FP8 元素。2.2 整数格式低带宽窄动态范围INT88 位有符号整数范围 [-128, 127]可表示 256 个离散值。没有指数位没有分数精度——相邻值之间总是相差 1。因此 INT8 量化必须引入**缩放因子scale factor**来将浮点值的数值范围映射到 [-128, 127] 的离散整数范围。INT44 位整数范围 [-8, 7] 或 [0, 15]仅 16 个离散值。INT4 量化的压缩比是 FP16 的 4 倍但其表达能力极弱——将 70B 模型的某个权重矩阵压缩到每个参数只有 16 种可能的取值这需要在量化算法上做大量精巧的设计。2.3 核心公式量化与反量化量化的数学本质是将连续值映射到离散格点量化浮点 → 整数xintround(xfloats)zxintround(sxfloat)z反量化整数 → 浮点x^float(xint−z)×sx^float(xint−z)×s其中sscale决定映射的步长zzero-point用于处理非对称分布——当原始数据不关于零点对称时zero-point 允许格点覆盖更合适的数值范围。对于没有z的对称量化假设 zero-point 0信息损失集中在round()操作上。缩放因子s通常是整个 tensorper-tensor或每个通道per-channel独立确定的选择s使得量化误差最小化是各种量化算法的核心优化目标。三、量化方案的分类型谱在深入具体算法之前理解量化方案的分类维度是必要的。这四组分类维度相互交叉形成了一张多维设计空间。3.1 训练后量化PTQvs 量化感知训练QATPTQPost-Training Quantization在模型训练完成后仅用少量校准数据通常是几百到几千个样本来确定量化参数。不需要重新训练模型不需要访问训练代码或完整训练数据。PTQ 是推理部署中最主流的方案——GPTQ、AWQ、SmoothQuant、FP8 均属此类。优点是部署成本低几分钟到几小时缺点是量化误差可以被累积放大。QATQuantization-Aware Training在训练或微调过程中模拟量化效果——前向传播使用模拟的量化和反量化反向传播正常使用 FP32 梯度更新权重。模型在训练过程中学会适应量化误差。优点是精度损失极低通常 0.1%缺点是需要完整的训练基础设施、数据和计算资源。QAT 在边缘设备手机、IoT和极致精度要求的场景中更常见。3.2 Weight-only 量化 vs Weight Activation 量化Weight-only Quantization仅量化模型权重激活值保持 FP16/BF16。每次推理时的矩阵乘法流程是从显存加载 INT4 权重 → 反量化回 FP16 → 与 FP16 激活值做矩阵乘法。这节省了权重在显存中的存储空间4× 压缩比但计算仍在 FP16 精度下进行——因此减少的是内存带宽压力而非计算时间。适用于 batch size 较小、memory-bound 的 decoding 阶段。Weight Activation Quantization同时量化权重和激活值。真正的收益在于——矩阵乘法的两个操作数都是低精度整数时可以直接使用 INT8 Tensor Core 进行整数矩阵乘法无需在运行时反量化。这不仅节省了 2× 的显存带宽权重 激活还获得了 INT8 Tensor Core 2× 的计算吞吐提升。但代价是激活值的量化远比权重量化困难——激活值的分布随输入而变化且存在极端的 outlier 问题见 SmoothQuant 一节。3.3 对称量化 vs 非对称量化对称量化s max(|x|) / max_intzero-point 0。量化格点关于零对称。实现简单对分布对称的数据如大部分层的权重经过 LayerNorm 后的激活效果好。非对称量化s (max(x) - min(x)) / 255INT8z round(-min(x) / s)。量化格点覆盖[min(x), max(x)]的完整范围。对于分布在正区间如 ReLU 后的激活或偏向一侧的数据非对称量化可以避免对称量化浪费一半的格点。3.4 量化粒度Per-tensor整个参数矩阵共享一个s和一个z。最简单但一个异常值outlier会拉大整个 tensor 的s导致其他 99.9% 的数值被映射到极窄的离散值范围内精度损失严重。Per-channel或 per-row/per-column矩阵的每一行或列有独立的s。这是权重量化的标准粒度——不同输出通道的权重值分布可能有数量级的差异per-channel 量化能很好地适应这种差异。对于 4096×4096 的权重矩阵per-channel 量化需要 4096 个 scale 值额外的 16 KB 开销可忽略。Per-token激活量化每个 token 位置的激活向量有独立的s。这在 decode 阶段batch size 通常很小每个 batch 条目就是一个 token与 per-tensor 相同但在 prefill 阶段一个请求可能包含数千 tokenper-token 量化能更好地处理不同 token 位置的激活值差异。Group-wise将矩阵的列或行以固定大小分组如 group_size128每组有独立的s。这是 INT4 权重量化的标准粒度——GPTQ 和 AWQ 都依赖 group-wise 量化来补偿 INT4 极低的表达能力。group_size128 意味着每 128 个参数共享一个 16-bit scale 和可选 16-bit zero-point相当于每个参数的有效位宽 4 32/128 4.25 bits——精度提升显著而额外存储极小。四、GPTQ逐列贪心补偿的 INT4 权重量化4.1 问题的棘手性将模型权重以极低精度如 INT4表示最朴素的方法是逐层直接量化——对于每一层的权重矩阵 W找到一组量化参数使||W - Ŵ||L2 或 Frobenius 范数最小化。对于 per-column 对称 INT4 量化每一列的最优 scale 可以通过最小化该列的量化误差直接得到。但这里有一个关键问题逐层独立量化的误差假设是每层对量化误差的容忍度可以通过该层的权重矩阵本身来评估但实际影响模型输出的是该层量化误差在后续层中的传播。且更重要的是对于 transformer 的每一层权重矩阵的不同行的敏感度差异巨大。GPTQGenerative Pre-trained Transformer Quantization的核心洞察是量化可以逐列进行列与列之间的误差可以通过在后续列的量化中补偿来抵消而不需要重新量化已处理过的列。4.2 算法核心逐列量化 Hessian 引导的误差补偿GPTQ 的算法流程如下输入: FP16 权重矩阵 W ∈ R^{d_out × d_in} 少量校准数据用于计算 Hessian 矩阵 H 1. 计算输入特征 X 的 Hessian: H 2·X^T·X来自校准数据 对其求逆: H_inv这只需要计算一次存储在 CPU 上即可 2. 对权重矩阵的每一列 i 1 .. d_in: a. 将 W[:, i] 量化为 INT4: Ŵ[:, i] quantize(W[:, i]) 量化误差 Δw W[:, i] - Ŵ[:, i] b. 计算本次量化的平方误差: E_i (Δw^T · H_inv · Δw) 这个误差衡量了如果直接量化这一列对最终输出的影响 c. [误差补偿] 对剩下的列 j i1 .. d_in 进行补偿: W[:, j] - Δw · H_inv[i, j] / H_inv[i, i] 补偿的目的是: 通过微调未量化的列抵消已量化列的误差 输出: INT4 权重矩阵 Ŵ per-group scale/zero-point步骤 2c 是 GPTQ 的精髓。它的数学原理是通过 Hessian 矩阵的逆来解一个二次规划问题——在已量化的列误差不可修改的约束下如何调整剩余列使得整体输出的 L2 误差最小化。这是最优脑外科Optimal Brain Surgeon, OBS剪枝框架在量化问题上的直接应用。4.3 为什么有效以及为什么需要校准数据GPTQ 的误差补偿依赖于 Hessian 矩阵而 Hessian 矩阵是从校准数据计算得到的。校准数据的质量直接影响 Hessian 对真实推理分布的近似程度。校准数据不需要是训练数据也不需要标注。通常使用从目标应用的典型输入分布中抽取的128-256 个序列样本每个约 2048 token。Hessian 矩阵逐层计算——对每一层截取校准数据流经该层时的输入特征 X计算H 2·X^T·X。这一计算在 GPU 上逐批完成因为 X 的尺寸可能很大最终 H 累积后求逆并转移到 CPU——H 的尺寸是d_in × d_in对于 4096 的 hidden_dim约 67 MBCPU 内存轻松容纳。校准数据的选择会影响量化后的模型精度但这种影响通常很小0.5% perplexity 差异——GPTQ 的误差补偿机制对校准数据的具体分布不敏感只要它大致覆盖了主要的输入模式。4.4 激活顺序与分组2019 年的原始 OBQ 算法按任意顺序量化权重GPTQ 论文的实验表明量化顺序对精度影响很小——因为误差补偿的数学保证是顺序无关的。但在 GPTQ 中列按自然顺序处理主要是工程实现的便利性考虑H_inv 的 Cholesky 分解适合列序处理。分组group_size是另一个重要参数。当 group_size 128 时每 128 列独立计算一个 scale。分组越小量化的拟合精度越高因为每组的 scale 可以更精确地匹配该组的权重分布但额外存储的 scale/zero-point 参数越多。group_size 128 在实践中是一个优秀的平衡点——精度损失约比 per-columngroup_size d_in低 50-80%但额外存储开销仅增加 3.1%。五、AWQ识别和保护的只是 1% 的权重5.1 Activation-aware 的核心洞察AWQActivation-aware Weight Quantization提出的问题比 GPTQ 更进一步不是所有权重对量化误差的贡献相等。模型输出对 1% 的显著性权重salient weights的量化异常敏感而其余 99% 的权重对量化误差的容忍度出乎意料地高。权重的重要性不是孤立属性——它由权重值和对应的激活值共同决定。一个权重值本身很小但如果它对应的输入通道的激活值一直很大即该特征通道持续被激活它实际贡献的信号量就很大量化它造成的误差就显著。反之一个权重值很大但如果对应的激活通道几乎总是零量化它的影响就很小。AWQ 用逐通道权重值 × 逐通道平均激活值来量化每个通道的重要性si∣wi∣⋅∣xi∣βoptional normalizationsioptional normalization∣wi∣⋅∣xi∣β其中 wiwi 是第 i 个输入通道的权重向量xixi 是该通道在校准数据上的平均激活幅值。5.2 通道级缩放在量化的数学等价性中隐藏保护识别出了显著通道后AWQ 使用一个非常巧妙的技巧来保护它们不修改量化算法本身而是通过改变权重和激活的值来让显著通道更耐量化。具体做法对于显著通道 i定义一个缩放因子 si1si1将权重值除以 sisi缩小权重将对应激活乘以 sisi放大激活。这在数学上是等价的——矩阵乘法的结果不变W⋅x(W⋅diag(1/s))⋅(diag(s)⋅x)W⋅x(W⋅diag(1/s))⋅(diag(s)⋅x)但量化的舍入误差是在缩放后的权重上发生的。当显著通道的权重被缩小后它们落在更窄的数值范围内量化格点对它们的覆盖更精细——相对舍入误差更小。非显著通道的权重被放大si1si1 时但这无所谓——它们对误差不敏感。缩放因子通过一个简单的网格搜索找到对每个通道尝试几个候选缩放值计算量化后的输出误差选最小的。这个搜索是 per-channel 的对于 4096 通道的层只需几秒钟。5.3 与 GPTQ 的差异GPTQ 和 AWQ 都是 INT4 weight-only 量化但思路不同GPTQ 是列优先的贪心算法逐列量化 误差补偿。每量化一列将误差分摊到剩余列上。算法复杂度高需要对 Hessian 求逆但补偿机制更系统化。AWQ 是通道级预处理先识别重要的输入通道通过等价的缩放变换保护它们然后直接应用最朴素的 per-channel 量化。算法极简不需要 Hessian不需要贪心但有效性依赖于只有极少数通道是显著的这一经验观察。在实践中两种方法在同一模型上的精度差异通常 1% perplexity——这意味着选择哪个算法更多取决于工程偏好GPTQ 的 GPU 显存需求更高因为 Hessian 在 GPU 上计算AWQ 更轻量校准更快而非精度差距。六、SmoothQuant驯服激活值中的异常通道6.1 激活量化的根本困难Outlier ChannelsWeight-only 量化解决了权重显存占用的问题将 140 GB 压缩到 35 GB但它没有将收益转化为计算速度——因为激活仍是 FP16矩阵乘法仍需在 FP16 Tensor Core 中执行。真正的计算加速来自Weight Activation 同时量化到 INT8利用 INT8 Tensor Core 的 2× 计算吞吐。但激活量化面临一个根本性的困难LLM 的激活值中存在系统性的异常通道outlier channels。经验观察显示在 LLM 的中间层中尤其是 LayerNorm 的输出某些固定的特征通道的激活幅值比其他通道大 10-100 倍。这些通道对应的神经元在几乎所有输入上都输出极大的值而绝大多数通道的输出集中在接近零的范围。如果对整个激活 tensor 使用 per-tensor 对称量化scale 会被这些少数异常通道拉得极大——导致其他 99% 的通道被量化到一个极窄的离散范围如 [-3, 3] 的浮点值映射到 INT8 的 [-127, 127] 却被 [outlier_channel_max] 拉大的 scale 稀释几乎丧失所有精度。Per-token 量化每个 token 位置有独立的 scale可以部分缓解这个问题但无法根除——因为一个 token 位置内的不同通道之间的异常差异仍然存在。6.2 数学等价变换将量化困难从激活迁移到权重SmoothQuant 的解决方案极为优雅通过在数学上等价的变换将每个异常通道的量化难度从激活值平滑迁移到对权重值上。对于权重矩阵 W形状 d_out × d_in和激活向量 x形状 d_inyW⋅x(W⋅diag(s)−1)⋅(diag(s)⋅x)yW⋅x(W⋅diag(s)−1)⋅(diag(s)⋅x)其中 s 是一个逐通道的平滑因子向量形状 d_in。等价变换后W W · diag(s)^(-1)权重矩阵的每一列除以 s_j权重通道 j 被放大x diag(s) · x激活向量的每一行乘以 s_j激活通道 j 被缩小关键选择是 sjsj 的值。对于异常通道activation outlier 所在的通道 j取 sj1sj1将激活值缩小变得更容易量化同时将对应的权重列放大这就是迁移的含义。权重列被放大后量化的难度增加——但权重量化通常使用 per-channel scale对异常的容忍度比激活量化强得多因为权重的一列都是同一通道分布通常更平滑。sjsj 的精确公式sjmax(∣xj∣)α/max(∣W:,j∣)(1−α)sjmax(∣xj∣)α/max(∣W:,j∣)(1−α)其中 α ∈ [0, 1] 是迁移强度参数。α 0.5 时量化难度在权重和激活之间均等分配这在实践中几乎总是最优的。6.3 SmoothQuant 的效果在 OPT-175B 上SmoothQuant INT8 量化在所有评测基准上的精度损失 0.5%同时获得了权重显存减半从 FP16 的 350 GB → INT8 的 175 GB计算吞吐提升约 1.6-1.8×INT8 Tensor Core 的理论 2× 增益扣除反量化开销等并且——SmoothQuant 的数学等价变换前提是该层的计算是线性投影如矩阵乘法。对于 attention 的 QKV 投影和 MLP 的全连接层这个前提精确成立。对于 element-wise 操作如残差加法、激活函数、LayerNorm 和 softmax它们不需要量化。6.4 与 AWQ 的相似性与差异SmoothQuant 和 AWQ 都使用了数学等价的缩放变换来改变量化难度的技巧但方向相反AWQ缩小显著通道的权重si1si1 用于显著通道的权重侧放大对应激活。目的是保护显著权重通道在INT4极端压缩下的精度。SmoothQuant缩小异常通道的激活sj1sj1 用于异常通道的激活侧放大对应权重列。目的是使得激活值可以被INT8量化而不被异常通道压塌精度。前者是把好钢用在刀刃上保护好那 1% 的显著权重后者是把压力从弱者身上移走让受不了量化精度的激活异常通道把负担转嫁给更容错的权重。七、FP8原生硬件支持的几乎免费精度折半7.1 与 INT8 的本质差异FP8 和 INT8 虽然都是 8 bits但在数值表示上有根本性差异INT8固定步长的均匀格点动态范围约 256:1最大值/最小值比。对分布较广的数据需要精心选择 scale 来覆盖且两端的异常值会严重压缩中间区域的表示能力。FP8 (E4M3)1 sign 4 exponent 3 mantissa。动态范围与 FP16 相同得益于共享的指数位宽但精度更低。这使得 FP8 对异常值不敏感——指数位可以覆盖极宽的数值范围而不会像 INT8 那样需要为异常值拉大格点间距。这意味着 FP8 量化不需要 SmoothQuant 那样的激活平滑化——FP8 的动态范围天然能容纳 activation outlier。也意味着 FP8 的量化算法也比 INT8 简单得多——通常只需要 per-tensor 缩放一个 scale 值不需要 per-channel 或 group-wise 的复杂粒度。7.2 FP8 的硬件支持FP8 的核心价值在于H100 的原生 FP8 Tensor Core 支持。H100 的 Tensor Core 在 FP8 模式下每个周期可以执行 2× 的矩阵乘法吞吐相比 FP16因为每个 Tensor Core 寄存器可以容纳 2 倍的 FP8 元素。FP8 推理的矩阵乘法流程权重以 FP8 E4M3 格式存储在显存中带宽减半激活从上一层的输出直接转换为 FP8不需要量化和反量化循环FP8 Tensor Core 执行矩阵乘法中间累加器使用 FP32保证累加不损失精度输出转换回 BF16/FP16这个流程的最大优势是不需要数据校准calibration——FP8 的 scale 可以通过权重的 per-tensormax(|W|)直接计算激活的 scale 可以通过在少数样本上运行的在线统计来确定。整个量化过程比 GPTQ 或 AWQ 的 INT4 校准快几个数量级。7.3 FP8 的局限与适用场景FP8 量化模型的精度损失极低perplexity 增加约 0.02-0.1%但带来的吞吐提升1.8-2.0×显著。然而仅限 Hopper 及之后的架构H100、H200、B100/B200。A100 及之前的 GPU 不支持 FP8 Tensor Core。这是 FP8 最根本的限制——它是硬件的函数而非纯粹的算法选择。显存节省仅 2×而 INT4 weight-only 可以节省 4×。对于需要最大化 batch size 或服务最大可能模型的场景INT4 的 4× 压缩比仍是不可替代的。FP8 训练 FP8 推理才是 FP8 的完整价值主张——训练阶段使用 FP8减少显存和通信开销推理阶段直接复用 FP8 权重跳过量化和校准步骤。在训练-推理一体化的场景中FP8 的综合成本优势是 INT8/INT4 无法比拟的。八、量化方案的工程选择指南不存在最好的量化方案——只有在给定约束下最合适的方案约束条件推荐方案理由硬件为 H100追求低延迟 高吞吐FP8原生硬件支持精度损失可忽略训练推理统一格式硬件为 A100 或更早显存极度紧张INT4 (AWQ/GPTQ) weight-only4× 压缩比模型可放入单卡decode 延迟降低与带宽节省成正比硬件为 A100追求计算加速INT8 SmoothQuant(W8A8)2× 计算吞吐 2× 带宽节省但需处理激活量化延迟不敏感精度要求极严格不量化 / BF16零精度损失但成本最高边缘设备、小模型QAT INT8/INT4训练时适应量化误差精度损失最小微调后的模型需要快速量化部署AWQ校准速度快分钟级不需要 Hessian 计算算法简单稳定需要批量量化多种不同模型GPTQ算法对模型架构的泛化性好成熟的公开实现一个重要的趋势是随着 H100/H200/B200 的普及FP8 正在成为推理场景的默认方案。其几乎免费的精度-性能交换0.02% 精度损失换 2× 加速使得其他方案的适用空间被压缩到显存极端受限或旧硬件的场景中。九、总结量化技术的演进反映了一个更宏大、更底层的工程规律当硬件进步的速度无法匹配算法对资源需求的膨胀速度时解决瓶颈的方法不是期待更好的硬件而是重新审视哪些信息是真正必要的哪些是冗余的。在 FP16 推理中每个权重参数都用 16 bits 表示。但量化后的实验事实表明对于推理阶段的单次前向传播一个 70B 参数模型中承载的信息量远不需要 16 bits/param——FP8 的 8 bits 只损失 0.02% 的 perplexityINT4 的 4 bits 只损失约 3-5%。换句话说推理时的模型参数中至少一半以上的位携带的信息对最终输出几乎没有影响。这些无影响位占据的是实打实的 HBM 带宽、显存空间、以及计算单元的时间。量化的本质就是识别并移除这些位将物理资源释放给真正关键的少数。从系统设计的角度看量化不是一种优化而是一种精度-资源密度的重新平衡训练阶段精度资源的冗余度需要高梯度累积、优化器状态、跨步稳定性推理阶段精度资源的冗余度可以低单次前向无信息累积这种不对称性是量化技术存在的根本原因也是各种量化方案——从 GPTQ 的矩阵逆误差补偿到 AWQ 的显著通道保护从 SmoothQuant 的数学等价平滑到 FP8 的原生硬件映射——共同试图利用的结构性机会。对于正在部署 LLM 服务的团队来说量化的核心决策不是要不要量化答案几乎总是要而是在显存约束、延迟目标、精度底线和硬件平台这四个变量之间找到最适合的量化方案组合。FP8 是当前最简单的最优解如果硬件允许INT4 是最激进的压缩手段如果显存是瓶颈INT8 SmoothQuant 是 A100 平台上的最佳中间地带。本文基于 GPTQ (Frantar et al., 2023)、AWQ (Lin et al., 2024)、SmoothQuant (Xiao et al., 2023)、FP8 (Micikevicius et al., 2022) 等关键论文撰写并结合了 TensorRT-LLM、vLLM、SGLang 等主流推理引擎的量化实现经验。