论文:
Medusa https://arxiv.org/pdf/2401.10774
EAGLE1 https://arxiv.org/pdf/2401.15077
EAGLE2 https://arxiv.org/pdf/2406.16858
EAGLE3 https://arxiv.org/pdf/2503.01840
Medusa
对Medusa架构来说,是在原有的LM
Head单头基础上,增加几个头,预测后面的token
1. 什么是 Medusa 的“多头”?
在传统的 LLM 中,网络的最顶端只有一个 LM
Head(语言模型头)。它的任务很单一:接收最后一层的隐含层特征
,去预测下一个词 。
Medusa 的“多头” (Multiple Heads)
,就是在这个主干网络的最后一层
上,额外并联接出去的多个独立的预测分支(Head 1, Head 2, Head 3…)。
Original LM Head:负责预测第 个 Token。
Medusa Head 1:直接预测第 个 Token。
Medusa Head 2:直接预测第 个 Tok ...
GPTQ
上文提到,OBQ 的致命痛点在于 “行依赖(Row-wise
dependency)”
由于采用了贪心策略,权重矩阵每一行选出的最优量化顺序都不一样,导致
Hessian 逆矩阵
的更新无法在不同输出通道(行)之间共享,复杂度高达 。
GPTQ (Generative Pre-trained Transformer Quantization)
正是为了解决这个工程灾难。它在 OBQ
的数学基础上做了极其巧妙的近似和系统级优化,将复杂度成功降到了 。
GPTQ 主要做了以下四大核心优化
优化一:统一量化顺序
OBQ使用贪心选择量化顺序,实验表明这对LLM带来的收益微乎其微。
GPTQ
团队通过实验和理论发现:如果不去贪心地寻找每次误差最小的权重,而是强行规定对所有行使用相同的、固定的顺序(例如从左到右,按列
依次量化),最终的精度损失几乎可以忽略不计。
这一步为什么是破局的关键?
回顾一下 Hessian 矩阵的定义:。
你会发现,
完全只依赖于输入激活值 ,和权重 没有任何关系!
因此,对于权重矩阵的每一行,初始的 是完全一模一样的。
在 OBQ 中,因 ...
NOTE
因为GPTQ是基于OBQ改进的,所以我们这里先讲OBQ算法
OBQ算法
OBQ (Optimal Brain Quantization) 是在大模型量化领域非常经典的一种
PTQ(训练后量化)方法。它的核心思想源自于神经网络剪枝领域的 OBS (Optimal
Brain Surgeon)。
OBQ
的底层哲学非常直观:当我们把某一个全精度权重压缩成低比特(引入了量化误差)时,我们可以通过调整同一层中其他尚未量化的权重,来“补偿”这个误差,从而使得最终输出的特征图(Feature
Map)尽可能保持不变。
我们从目标函数开始一步步推导。
预备:维度定义
假设我们正在处理一个线性层(比如 o_proj 层),权重矩阵为 ,输入激活值为 ( 是 BatchSize SeqLen)。
行(Row)
输出通道(Output Channel, ):每一行对应一个独立的输出特征。
列(Column) 输入特征(Input Featu ...
拉格朗日乘数法
拉格朗日乘数法(Lagrange Multiplier
Method)是数学优化中处理等式约束极值问题的经典方法。它通过引入“拉格朗日乘子”,巧妙地将一个有约束的问题转化为无约束的问题。
1. 核心思想:几何上的“相切”
对于目标函数 和约束条件
:
直观理解:想象目标函数 的等高线。当你沿着约束曲线
运动时,如果你还能走向更高或更低的等高线,说明还没达到极值。
关键结论:极值点必然出现在目标函数等高线与约束曲线相切的地方。
数学表达:在切点处,两者的梯度向量(垂直于曲线的方向)是平行的。即:
这里的
就是拉格朗日乘子。
2. 计算步骤:四步走
假设要求
在约束
下的极值:
构造拉格朗日函数:
注:减号改加号也可以,不影响最终 的求解。
求偏导并置零: 对所有自变量 和乘子 分别求偏导,令其等于 0: 这一项即原约束
解方程组:算出所有的驻点 。
确定极值:将得到的驻点代入原函数 ,通过比较数值大小或结合实际背景判断最大值或最小值。
3. 经典示例
问题:求 在约束
下的最大值。
构造函数:
求导:
求解: ...
最新博主在系统学习量化,之前都是以工程实践为主,缺少系统性的学习,最近找了一篇量化综述,学习了一下,收获颇丰
refer to: “A Comprehensive Evaluation on Quantization Techniques for
Large Language Models” — arXiv:2507.17417
再结合工程经验,后面也会详细出AWQ,GPTQ,SmoothQuant等量化算法源码学习
量化基础
量化方法
每种量化方法都可以拆解为两步:
预量化变换——在量化前对数据进行预处理,使其更容易量化。这一步处理那些会主导量化范围的异常值。
量化误差缓解——在量化后补偿引入的误差。
SmoothQuant、AWQ、GPTQ、QuaRot、SpinQuant、FlatQuant
都是这两个基本模块的不同组合。
Methods
Pre-quantization Transformation
Quantization Error Mitigation
SmoothQuant
Scaling
RTN
Outlier Suppre ...
层级
包含的核心组件
查看命令示例
可变性 (Mutability)
物理机 (宿主机)
GPU 硬件、NVIDIA 显示驱动 (如
570.xx)
nvidia-smi (看 Driver
Version)
不可变。
容器内无法修改,只能由物理机升级
物理机 (宿主机)
驱动决定 CUDA API 上限 (如
12.8,最高支持nvcc 12.8)
nvidia-smi (看右上角 CUDA
Version)
不可变。
它是驱动的附属只读属性,是一块“天花板”,可以升级物理机驱动改变。
镜像 (Image)
CUDA Toolkit
(nvcc)、cuDNN
nvcc -V (在容器内执行)
镜像本身不可变
容器 (Container)
镜像的nvcc版本,torch版本,cuda-runtime版本
nvcc -V
pip show torch 等
动态可变
IMPORTANT
需要保证一条自下而上的兼容链条:
nvcc ...
SGLang Router PD
分离模式请求转发详解
本文档详细说明 SGLang Router 在 Prefill-Decode (PD)
分离模式下,如何将客户端请求转换并分发到 prefill 和 decode 服务器。
1. 总览
PD 模式下,Router 收到一个请求后会执行 双路分发 (dual
dispatch) :
将请求(附加 bootstrap 字段)同时发给 prefill
server 和 decode server
两者并发执行,prefill 完成 KV cache 预填充,decode 从 prefill 拉取
KV cache 后做增量解码
Router 只将 decode server
的响应返回给客户端,prefill 的响应仅用于合并
logprobs、prompt_tokens_details 等元信息
123Client --> Router ----+----> Prefill Server (做 prefill,存 KV cache)
|
...
DeepSeek-V3.2
部署最佳实践指南
1. 硬件环境
项目
规格
GPU
NVIDIA H200
部署拓扑
2P1D 离线分离部署
Prefill 实例
2 × 单机八卡(共 16 卡)
Decode 实例
2 机 16 卡(跨节点 TP=16)
总 GPU 数
4 台机器,32 张 H200
2. 环境变量配置
所有实例(Prefill 和 Decode)均需设置以下环境变量:
123456789export NVSHMEM_BOOTSTRAP_UID_SOCK_IFNAME=eth0
export NVSHMEM_IB_TRAFFIC_CLASS=98
export NVSHMEM_IB_GID_INDEX=3
export SGLANG_DP_ATTENTION_HANDSHAKE_PORT_DELTA=30
export SGLANG_DISAGGREGATION_WAITING_TIMEOUT=80
export SGLANG_DISAGGREGATION_BOOTSTRAP_TIMEOUT=80
export SGLA ...
SGLang
Mamba Radix Cache 深度解析:extra_buffer 模式的 Ping-Pong
缓冲机制
#14792 | e61dabf5e |
2025-12-14 | [Qwen3-next] support mamba radix cache for overlap
scheduler - 引入 extra_buffer 模式,支持 overlap
scheduler 和 Ping-Pong 缓冲机制 |
#15180 | 36fcf71ff | 2025-12-16 |
[Qwen3-next] Add PD disaggregation support for mamba with
extra_buffer - 为 extra_buffer 添加 Prefill-Decode
disaggregation 支持 |
相关配置参数
参数
默认值
说明
--mamba-scheduler-strategy
auto
调度策略:no_buffer、extra_buffer 或
auto(自动选择)
--mamba-trac ...
SGLang
Mamba Radix Cache 深度解析:no_buffer 模式下的状态管理
no_buffer第一次引入来源于commit a55cf5304 #11214
在这个commit中贴出了对应的实现文档:
https://docs.google.com/document/d/1ZYBsZaz58NIIFmlOuQXqKPruIjv1ZJIUUrIj-sZlT4U/edit?tab=t.0
说明文档
V0 uses LRU list for mamba cache/full attention for eviction like
SWARadixCache. It currently only inserts request mamba cache into radix
tree when do cache_finished_req / cache_unfinished_req.
It can be modified to Marconi or k steps later
cache_finished_req / cache_unfinished_r ...









