最新博主在系统学习量化,之前都是以工程实践为主,缺少系统性的学习,最近找了一篇量化综述,学习了一下,收获颇丰
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 ...
SGLang Mamba Radix Cache
概述
背景
Qwen3-Next 等混合架构模型同时包含 Linear Attention (Mamba) 和 Softmax
Attention。对于 Linear Attention 的前缀匹配,需要缓存 SSM 状态和 Conv
状态。SGLang 实现了 Mamba Radix Cache 来支持这一功能。
相关 Commit 和 PR
PR
Commit
提交时间
描述
#11214
a55cf5304
2025-10-13
[Feature] Support mamba radix cache v0 - Mamba
Radix Cache 的初始实现,建立了基础的 no_buffer 模式
#14792
e61dabf5e
2025-12-14
[Qwen3-next] support mamba radix cache for overlap
scheduler - 引入 extra_buffer 模式,支持 overlap
scheduler 和 Ping-Pong 缓冲机制
...
SGLang Tool Call Parser
深度解析
为什么需要 Tool Call Parser?
在 LLM 应用开发中,工具调用(Function Calling / Tool
Calling)是一个核心能力。
然而,不同模型厂商训练的时候,工具调用的输出格式完全是各玩各的:
GLM 系列输出的是这种 XML 风格:
1234get_weather
city北京
date2024-06-27
(实际使用的是
<?>、<?>、<?>、<?>
这类特殊标签)
Qwen 系列用的是特殊 token 包 JSON:
1<tool_call>{"name": "get_weather", "arguments": {...}}
DeepSeek 直接输出 JSON:
1{"name": "get_weather", "arguments": {...}}
应用层需要适配多种格式 -
每接入一个新模型就要写一套解析逻辑
解决思路
核心思想:将模型特定的输出格式转换为统一的 OpenAI
兼容格式。
所以 --too ...
测试报告
下面以测试2.7B模型,上下文长度512,分别测试forward,forward+backward,train为例
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918 ...
Transformer
语言模型训练细节详解
本文档详细介绍 CS336 Assignment 1
中训练流程的核心细节,包括数据批处理、模型前向传播、损失函数、梯度裁剪和困惑度计算。
1. 训练流程总览
训练循环位于 train.py:545-593,核心逻辑如下:
1234567891011121314151617181920212223242526for step in range(start_step, config.total_steps):
# 1. 获取当前学习率 (余弦退火 + warmup)
lr = run_get_lr_cosine_schedule(step, learning_rate, min_lr, warmup_steps, total_steps)
# 2. 更新优化器学习率
for param_group in optimizer.param_groups:
param_group["lr"] = lr
# 3. 获取一个 batch 的数据
x, y = run_ge ...









