Appearance
学习日志
进度总览
- 初始化学习站点
- 完成架构概览主题
- 完成引擎核心主题
- 完成调度系统主题
- 完成 KV 缓存与 PagedAttention 主题
- 完成执行器与 Worker 主题
- 完成模型库与算子层主题
- 完成量化系统主题
- 完成推测解码主题
- 完成多模态处理主题
- 完成分布式计算主题
- 完成 API 服务与部署主题
Day 1 — 架构概览
日期: 状态:
今日摘要
困惑与突破
- 困惑:
- 突破:
Day 2 — 引擎核心
日期: 状态:
今日摘要
困惑与突破
- 困惑:
- 突破:
Day 3 — 调度系统
日期: 状态:
今日摘要
困惑与突破
- 困惑:
- 突破:
Day 4 — KV 缓存与 PagedAttention
日期: 状态:
今日摘要
困惑与突破
- 困惑:
- 突破:
Day 5 — 执行器与 Worker
日期: 状态:
今日摘要
困惑与突破
- 困惑:
- 突破:
Day 6 — 模型库与算子层
日期: 状态:
今日摘要
困惑与突破
- 困惑:
- 突破:
Day 7 — 量化系统
日期: 状态:
今日摘要
困惑与突破
- 困惑:
- 突破:
Day 8 — 推测解码
日期: 状态:
今日摘要
困惑与突破
- 困惑:
- 突破:
Day 9 — 多模态处理
日期: 状态:
今日摘要
困惑与突破
- 困惑:
- 突破:
Day 10 — 分布式计算
日期: 状态:
今日摘要
困惑与突破
- 困惑:
- 突破:
Day 11 — API 服务与部署
日期: 状态:
今日摘要
困惑与突破
- 困惑:
- 突破:
上游同步 — 2025-05-26
vllm 子模块:ff712f644 → d5cf7b4a2(247 commits)
主要变更
- Offline API 拆分:
LLM类重构为 Mixin 组合架构(OfflineInferenceMixin+BeamSearchOfflineMixin+PoolingOfflineMixin) - Rust Frontend 集成:
RustFrontendProcessManager管理vllm-rs二进制前端 - DP Supervisor:多端口数据并行管理器,为每个 DP rank 生成独立 server
- MooncakeStore 多组支持:支持混合注意力模型的多组 KV 缓存(如 DeepSeek V4 的 MLA + SWA)
- 文件系统分层:新增
FileSystemTierManager,纯 Python 磁盘后端 KV 缓存 - Elastic EP:弹性专家并行,在线扩展/缩减 EP 大小
- MoE Oracle 框架:统一后端选择(Triton、CUTLASS、FlashInfer B12x 等)
- Mamba 推测解码融合内核:消除 CPU-GPU 同步瓶颈
- GDN 子系统:Gated DeltaNet 注意力层(Kimi、OLMo、Qwen)
- DeepSeek V4 模型隔离:移出主仓库到
vllm/models/deepseek_v4/ - NVFP4 混合精度:新增 W4A16_NVFP4 量化模式
- Compressed Tensors 稀疏性移除:2:4 稀疏性支持已弃用
更新的笔记章节
- topics/architecture/concepts — 前端模式、源码结构
- topics/serving/concepts — Rust Frontend、DP Supervisor、Mixin 架构
- topics/serving/code-walkthrough — LLM 类重构、前端管理
- topics/kv-cache/concepts — 文件系统分层、MooncakeStore 多组
- topics/scheduling/concepts — 异步抢占多帧丢弃、KV connector 延迟释放
- topics/model-layers/concepts — Elastic EP、MoE 后端矩阵、GDN、模型隔离
- topics/distributed/concepts — Elastic EP 生命周期、NIXL EP 重构
- topics/speculative-decoding/concepts — Mamba 融合内核、EAGLE-3 后规范
- topics/quantization/concepts — NVFP4、AWQ oracle 统一、稀疏性移除
- topics/executor-worker/concepts — CuMemAllocator 解耦
- topics/multimodal/concepts — OpenVLA、编码器 CUDA Graph
- kv-cache-offloading — 文件系统分层、MooncakeStore
- moe — Oracle 框架、Elastic EP
上游同步 — 2026-06-24
vllm 子模块:d5cf7b4a2 → 4ed8eaafb(1036 commits,跨越 v0.22.0 → v0.22.1 → v0.23.0)
主要变更
- Model Runner V2 (MRV2) 默认启用:v1(约 7400 行)与 MRV2(约 1600 行)双轨并存,由
use_v2_model_runner按架构白名单(Llama/Mistral/Qwen3/DeepseekV2/Qwen2Moe/GraniteMoe)选择;把注意力元数据/多模态预处理/采样拆到gpu/{model_states,sample,spec_decode,mm,pool}/子包,引入RequestState/ModelState两层状态管理 - MoE 层控制反转重构:
FusedMoE拆为FusedMoERouter+RoutedExperts+MoERunner三件套,后端下沉到experts/(30 个文件),oracle 按精度分散为oracle/{fp8,int_wna16,nvfp4,...}.py - 渲染与解析层:入口层与引擎层之间新增
vllm/renderers/(OnlineRenderer/OnlineDerenderer)与vllm/parser/(流式解析器引擎),OpenAI/Anthropic/Responses 三套 API 共用;新增/render、/derender支持 PD 分离 - Anthropic Messages API 成熟:
/v1/messages支持effort、thinking内容块、count_tokens、cache usage - Strict Tool Calling:
tools[].strict+VLLM_ENFORCE_STRICT_TOOL_CALLING,通过 xgrammar structural-tag 在生成阶段约束参数(Rust 前端也集成) - NIXL 连接器 Pull/Push 双模式:
NixlPullConnector(READ)与NixlPushConnector(WRITE 直写 D 端显存);kv_both角色弃用 - 多级 KV 卸载编排器:
TieringOffloadingManager以 CPU 为 gateway,下挂磁盘/对象存储 secondary tier;AsyncLookupManager后台批量 lookup;自描述 KV 事件 - WideEP + DeepEP V2:decode 用
do_expand=False(cudagraph 安全)、prefill 用do_expand=True;NIXL EP 解除与 DBO 的互斥 - 异步 EPLB 默认:
use_async=True,新增NixlEplbCommunicator零拷贝通信器,支持 DSv4 Mega MoE;EPLB 后端枚举化 - 推测解码扩展:统一
BaseSpeculator/AutoRegressiveSpeculator抽象;新增 DFlash(掩码并行起草)、Dynamic SD(按并发调 K)、Gemma4 MTP(Q-only 跨模型 KV 共享);MTP 方法族扩展到近 20 种变体 - 量化目录重组:新增
online/、inc/、turboquant/、humming.py子包;WNA16 oracle 统一;ModelOpt mixed 扩展到 Ampere/Turing;GGUF 迁移为 plugin - 调度增强:KV cache
watermark、DPprefill_schedule_interval、Marconi 式混合缓存准入、partial prefix cache 原语、sliding-window/Mamba 稀疏保留间隔 - 多模态:
VideoLoaderRegistry按 processor 自动选后端;Gemma4 Unified(encoder-free);多模态项处理 O(n)→O(log n);ASR CPU 预处理 2.5x RTFx;WhisperModelState 泛化为 EncoderDecoderModelState - Worker 优化:warmup 后
freeze_gc_heap()冻结 GC 堆;cumem/sleep 可用性统一经 Platform 接口门控;不再内部设置CUDA_VISIBLE_DEVICES(改用device_ids)
更新的笔记章节
- topics/architecture/concepts — 渲染与解析层、Anthropic API、MRV2 双轨、Renderer 层
- topics/serving/concepts — 渲染/解析管线、Anthropic Messages API、Strict Tool Calling、/render /derender、路由组织、Rust 前端对齐
- topics/engine-core/concepts — MRV2 架构、RequestState/ModelState、模块化采样/推测解码、异步输出处理
- topics/executor-worker/concepts — MRV2 接入、freeze_gc_heap、CuMemAllocator 平台门控、device_ids、gpu/ 子包结构
- topics/kv-cache/concepts — TieringOffloadingManager、对象存储 tier、AsyncLookupManager、NIXL Pull/Push、自描述 KV 事件、每请求卸载
- topics/scheduling/concepts — watermark、prefill_schedule_interval、Marconi 准入、partial prefix cache、稀疏保留间隔
- topics/distributed/concepts — 异步 EPLB、WideEP+DeepEP V2、DBO、NIXL EP 三态、KV 传输连接器
- topics/model-layers/concepts — MoE 控制反转重构、experts/ 后端矩阵、线性注意力子系统、MLA/DSv4 sparse、MiniMax-M3、CuTe DSL 上移
- topics/quantization/concepts — 目录重组、NVFP4 SwiGLU clamp、WNA16 oracle、GGUF plugin、ModelOpt Ampere/Turing
- topics/speculative-decoding/concepts — Speculator 架构、DFlash、Dynamic SD、Gemma4 MTP、Mamba MTP align
- topics/multimodal/concepts — VideoLoaderRegistry、Gemma4 Unified、O(log n) 优化、ASR RTFx、prompt_embeds、token 计量
- moe — MoE 三件套重构、EPLB 异步默认、DeepEP V2
- kv-cache — v1 路径修正(kv_cache_manager/block_pool/kv_cache_coordinator)
- kv-cache-offloading — v1 路径修正、TieringOffloadingManager、NIXL Push/Pull、对象存储 tier
上游同步 — 2026-06-28
vllm 子模块:4ed8eaafb → 09841ae70(177 commits,约 4 天,工作版本 v0.23.1rc0)
主要变更
- DeepSeek V3.2 / GLM-5(DSA 稀疏注意力):新增
vllm/models/deepseek_v32/,同一套 DSA(DeepSeek Sparse Attention)代码服务 V3.2 与 GLM-5.2。DSA 在标准 MLA 之上叠加 lightning indexer,每若干层对所有已缓存 KV token 打分选出 top-k,后续 decode 只对这 top-k 槽位做注意力,把全上下文 O(N) 降为 O(k)。配套fused_indexer_q_rope_quantTriton 内核与dsv3_router_gemmCUDA kernel。 - Sparse MLA 后端:为 DSA 的 top-k 选择新增 decode-only 后端 ——
FLASH_ATTN_MLA_SPARSE(Hopper)、FLASHINFER_MLA_SPARSE_SM120(Blackwell),另有 FlashMLA / ROCm AITER / XPU 变体。 - DCP(Decode Context Parallelism):把 TP 组切成 DCP 子组、每子组持 KV 一份切片以支持更长上下文;MLA decode 路径现已支持 FP8 KV cache(移除旧硬断言),
a2a通信后端把每层 MLA 的 NCCL 调用从 3 次降到 2 次。 - 混合模型 block size 放宽:移除 Mamba+Attention 混合模型在 FP32 缓存下仅
[16,32,64]的 FlashAttention block size 限制,统一为MultipleOf(16)。 - /render 端点扩展:新增
return_assistant_tokens_mask(借助{% generation %}产出 assistant token 掩码,支持 SFT/RLHF/草稿模型训练数据生成)与return_token_offsets(字符级偏移,便于归因/高亮)。 - Rust 前端统一解析器:把分离的 reasoning / tool parser 合并为
UnifiedParser接口,单parse_into()增量产出Text/Reasoning/ToolCall三类事件并保留交错顺序(ToolParserOutput→Vec<ToolParserEvent>);Gemma4 原生实现,Qwen3 等走CombinedParser适配;seed_oss(Harmony)作为 Qwen3 子类接入流式解析引擎。 - MoE 后端扩展:新增 Tencent HPC-Ops 融合 MoE 后端(
--moe-backend hpc,SM90+/FP8);Oracle 以MoEKernelOracle抽象基类标准化六项选择契约;共享专家融合(FSE)把 shared expert 并入分组 GEMM。 - MRV2 成熟:realtime embeddings(流式 ASR 持续注入音频嵌入)、EVS(高效视频采样,喂入 LLM 前丢冗余帧)、DFlash 全层 K/V/RMSNorm 融合 + 后端可选、
use_local_argmax_reduction(贪心草稿采样 TP 通信从 O(词表) 降到 O(2·tp))。 - KV 卸载重构:
OffloadingHandler→OffloadingWorker(显式 worker 进程语义);lookup 返回LookupResult枚举(HIT/MISS/HIT_PENDING/RETRY)替代bool|None;CPU pinned memory 注册移到后台CPUTensorPinThread;Mooncake 用VLLM_MOONCAKE_LOAD_RECV_THREADS多线程并行接收;NIXL 支持 Mamba1/Mamba2/GDN 卷积状态分离,NixlPushConnector双向模式默认关闭。 - INT4 per-token-head KV cache 量化:
KVQuantMode.INT4_PER_TOKEN_HEAD,打包 + Randomized Hadamard Transform + 统一 Triton 注意力读取内核,相比 FP16 翻倍容量。 - 量化扩展:Humming 支持 2/3/5/6/7-bit pack-quantized 仅权重量化(亦可用作 MoE 后端);NVFP4 无原生硬件时由 Triton
EmulationNvFp4LinearKernel软件模拟(融合反量化)。 - 多模态 GPU 显存准入(VRAM Semaphore):
MultiModalGPUMemoryPool在前端进程以字节信号量门控硬件解码缓冲,引擎侧按--mm-ipc-gpu-memory-gb从 KV cache 预留,避免解码挤爆引擎显存。
更新的笔记章节
- topics/model-layers/concepts — DSA / 稀疏 MLA、sparse MLA 后端矩阵、混合模型 block size 放宽、HPC-Ops 后端、MoEKernelOracle ABC、共享专家融合
- topics/serving/concepts — /render 训练数据掩码与 token offset、统一解析器、api_server 迁移到 examples
- topics/engine-core/concepts — MRV2 realtime embeddings、EVS、DFlash 融合与后端、use_local_argmax_reduction
- topics/kv-cache/concepts — OffloadingWorker、LookupResult、后台 pin 线程、Mooncake 接收池、NIXL Mamba1 分离、INT4 KV 量化
- topics/distributed/concepts — DCP + FP8 KV cache in MLA decode
- topics/quantization/concepts — Humming 多位宽、NVFP4 Triton 模拟
- topics/speculative-decoding/concepts — DFlash rmsnorm 融合、Eagle3 norm 配置、use_local_argmax_reduction
- topics/multimodal/concepts — EVS、realtime ASR、VRAM Semaphore、双路径 ViT CUDA graph
- topics/executor-worker/concepts — 多模态 IPC 显存预留
- moe — HPC-Ops 后端、MoEKernelOracle ABC、共享专家融合
- kv-cache-offloading — OffloadingWorker、LookupResult、Mooncake 接收池、NIXL Mamba1
上游同步 — 2026-06-29
vllm 子模块:09841ae70 → 36bbecd64(33 commits,约 1 天,工作版本 v0.24.0)
主要变更
- GLM-5 / DSv3.2 算子融合大手术(PR #46876):NVIDIA 路径(新增
models/deepseek_v32/nvidia/kernels.py,823 行)把每解码层约 10 个独立 kernel 融成 3 个 Triton 内核 + 1 个 FlashInfer 融合:fused_norm_rope(Q/KV LoRA RMSNorm + RoPE + KV/indexer cache 写入 + FP8 量化 + top-k buffer 填哨兵,四路 program 并行)、fused_q(q_pe/ql_nope RoPE+量化打包成 FlashInfer sparse 期望的单段连续 FP8 query)、fused_eh_norm(MTP 草稿层置零+双 RMSNorm+拼接)、fused_allreduce_rms_norm(FlashInfer TRT-LLM fast path,all-reduce+残差+RMSNorm 三合一)。关键设计是延迟 all-reduce:o_proj与 MoE runner 设reduce_results=False、新增skip_final_all_reduce,把本层 all-reduce 推到下层 norm 里融合。 - GLM-5.2 序列并行 MoE(PR #46635):
use_sequence_parallel_moe把 MoE 输出聚合从「切块→本地 MoE→all-gather」改为「全 hidden→MoE→reduce-scatter」,每 rank 只传hidden_dim/tp_size、通信量减半,端到端吞吐 +3.1~3.2%。 - KV Offload 后台 pin 线程回退(PR #46958,勘误):上次记录的
CPUTensorPinThread后台异步 pinning(#45850)因引入竞态(传输在 pin 完成前就开始)仅 5 天即被完全回退,当前为同步 pinning(mmap 区域经pin_mmap_region()、其余张量经 PyTorchpin_memory=True)。 - Humming MoE 标准化为一等后端(PR #43373):专家继承
FusedMoEExpertsModular、标准apply()签名、显式SUPPORTED_W_A(16 种组合)、按QuantKey经 oracle 协商;所有 schema→QuantKey 转换抽取到quantization/utils/humming_utils.py,与 Triton/CUTLASS/FlashInfer/HPC 走同一套 kernel/oracle/quant 选择链。 - CPU INT8 W8A8 MoE(PR #42920):compressed-tensors INT8 W8A8 MoE 支持 CPU,权重经 Intel VNNI 预打包,由
CPUExpertsInt8+fused_experts_cpu(is_vnni=True)执行,oracle 在 CPU 平台优先Int8MoeBackend.CPU。 - OCP MX 模拟回归(PR #46629):把
Mxfp4MoeBackend.EMULATION重新加回 GPT-OSS MXFP4 的优先级列表,无原生 MX 支持的 GPU 自动回退到 Triton 模拟,无需手动--moe-backend emulation。 - Helion 内核框架(PR #44010,[1/N]):Red Hat(Humming 同团队)的 GPU kernel 编写+自动调优框架(
vllm/kernels/helion/,Python DSL + JSON 调优配置),首个 kernelfused_qk_norm_rope把注意力前的 Q/K RMSNorm 与 RoPE 融合为单次 in-place 操作,附 H100/B200 预调优配置。 - MLA decode logits workspace 预分配(PR #46819):Triton MLA split-KV 的 logits 缓冲(
(B, q_heads, num_kv_splits, kv_lora_rank+1))改为__init__时从共享 workspace 按最坏情况一次性预预留,消除每步torch.empty分配,warmup 后锁定、与 CUDA graph 兼容。 - ROCm AITER FlashAttention MLA prefill 后端(PR #45033):
ROCM_AITER_FA直接调aiter.flash_attn_varlen_func,原生支持 MLA 不对称的 Q/K(192) vs V(128) head_dim 而无需 padding,ROCm 平台优先级最高。 - Rust 前端 Harmony Renderer(GPT-OSS)(PR #46800):
HarmonyChatRenderer用openai-harmonycrate 把对话直接渲染成 token id、完全绕过 HF tokenizer,处理 Harmony 通道协议(final/analysis/commentary)、tool-call 接收方(functions.{name}+<|constrain|>json)与 preamble,成为继 HF/DSV3.2/DSV4 后第 4 种 renderer;与既有 Harmony 输出解析器共享 encoding 单例。Rust tool 参数解析也修了 string 类型保留字面量"null"(PR #46827)。 - Scale-out 端点整合(PR #44512):
render/derender/token_in_token_out(原 disagg)统一收到entrypoints/scale_out/包,由scale_out/factories.py集中初始化,derender提升为正式ServingDerender类。 - Gemma3 Encoder CUDA Graph(PR #43591):
Gemma3ForConditionalGeneration实现SupportsEncoderCudaGraph,单路径 image-only 图(vision_tower → projector → flatten),加入 DeepSeek-OCR/GLM-4.1V/InternVL/Kimi-VL/Qwen-VL 等支持编码器 CUDA graph 的 VLM 列表。 - EPLB padding 掩码(PR #38128):MoE expert load 记录现掩掉 padding token(每 ubatch 一次
num_unpadded_tokens张量,CUDA graph 安全),避免空 token 虚高负载触发无谓迁移;EPLB 扩展到推测解码草稿模型(DraftModelSpeculator.set_eplb_state())。 - Mooncake DCP>1 lookup 修复(PR #46855):DCP>1 时 lookup key prefix 必须显式枚举
(tp_rank, pcp_rank, dcp_rank, pp_rank)全组合(DCP 复用 TP worker、KV-head 去重不再适用),否则漏掉 DCP rank 1+ 的块导致 cache miss。
其它小修:DSv3.2 indexer weights 在 index-cache-skipped 层跳过加载(#46600)、deepseek_v2 backbone 末层 aux hidden state 捕获(#46973)、CPU fused MoE 用原生 SiLU(#45961)、transformers 后端 tied-embedding lm_head.bias 与 M-RoPE mm_token_type_ids 重算(#46835/#46552)、推测解码草稿 prefill 跳过冗余 hidden states gather(#46968)。
更新的笔记章节
- topics/model-layers/concepts — GLM-5 算子融合、序列并行 MoE、MLA workspace 预分配、ROCm AITER MLA prefill、Humming 标准化、Helion 框架、CPU INT8 后端
- topics/kv-cache/concepts — 勘误 CPUTensorPinThread 回退(改同步 pinning)、Mooncake DCP 命名空间枚举
- topics/quantization/concepts — OCP MX emulation 回归、CPU INT8 W8A8 MoE、CPU SiLU 修复
- topics/serving/concepts — Scale-out 端点整合、Rust Harmony Renderer(GPT-OSS)、tool "null" 字符串修复
- topics/distributed/concepts — 序列并行 MoE(reduce-scatter)、EPLB padding 掩码、Mooncake DCP 交叉引用
- topics/speculative-decoding/concepts — 草稿前向冗余 gather 优化、fused_eh_norm
- topics/multimodal/concepts — Gemma3 Encoder CUDA Graph
- moe — Humming 标准化、CPU INT8、EPLB padding 掩码
- kv-cache-offloading — 勘误 后台 pin 线程回退(改同步 pinning)
上游同步 — 2026-07-29
vllm 子模块:36bbecd64 → 6fbbcf215(1075 commits,约 1 个月,工作版本 v0.26.1rc0)
主要变更
- KV 卸载新增 P2P 层级(PD 分离 / 对称 P2P)(PR #42285 + #48021,
vllm/v1/kv_offload/tiering/p2p/,本月最大新子系统)。作为新的SecondaryTierManager(类型"p2p"),让 PD 分离的 decoder 经 RDMA 直接从 prefiller 的 CPU 缓存拉 KV 块。控制面与数据面解耦:ZMQ(ZmqTransport,VLLM_P2P_SIDE_CHANNEL_HOST:PORT默认localhost:5710,端口按 DP rank 偏移)做 peer 发现/握手/lookup 协调;NIXL RDMA(NixlTransport,backends默认["UCX"])做实际块传输。每个 remote peer 持一个双向P2PSession(ClientRole+ServerRole)。两种角色:经典 PD(remote_prefiller,lookup 立即 HIT →FetchMsg→ NIXL WRITE);对称 P2P(remote_kv_source,先 RETRY 再步末批量LookupMsg探测 peer 持有哪些块)。握手强制PYTHONHASHSEED一致 + SHA-256config_fingerprint拒不兼容 peer;新增ParentManagerABC 供 secondary tier 反查主层级。该层叠在OffloadingWorker之上而非取代它。 - 容错框架(DP+EP 外部 LB 部署)(PR #44428 + #43637)。
enable_fault_tolerance+engine_recovery_timeout_sec(默认 120s)。run_busy_loop被@fault_tolerant_wrapper包裹——EngineCore 出错时EngineCoreSentinel.on_fault()中止所有请求(FINISHED_ABORTED)、置 UNHEALTHY,在超时窗口内等外部经FT_UTILITY_METHOD(handle_fault_tolerance)下发的retry;retry 用 stateless 进程组 API 重建 DP group、WorkerSentinel(经collective_rpc)清空 worker/buffer、重建 all2all buffer(仅deepep_low_latency/nixl_ep后端支持)。控制端点POST /fault_tolerance/apply。配套query_active_mask()/query_fault()让 runner 检测对端 rank 掉线、丢弃被污染 batch;device communicator 新增 process-checkpoint 生命周期钩子(首见 FlashInfer)。 - MRV2 成为稠密模型默认(PR #44443)。
use_v2_model_runner依次按VLLM_USE_V2_MODEL_RUNNER、强制 V2 项(PCP / dspark / 混合 DFlash 草稿 / 扩散)、_is_default_v2_model_runner_model()(核心判定not is_moe)解析,无 Triton 或含未支持特性时回退 V1。MRV2 的可扩展性根基是model_states/interface.py的ModelStateABC(新架构实现一个 state 即接入),新增EncoderOnlyModelState(BERT/RoBERTa,无 KV cache,#49331),并补齐了多模态 encoder cache 的显存 profiling(原仅 V1,#47985)。PCP 现由 MRV2 的gpu/pcp_manager.py以 virtual-batch 实现(仅 MLA,#46570)并强制 V2。 - JIT 预热基础设施(VllmJitKernel)(PR #46182/#47451/#49903,
vllm/model_executor/warmup/)。把 Triton/CuTeDSL 内核 JIT 编译从「首请求触发」挪到启动 warmup,避免冷启动延迟。VllmJitKernelABC 三段式(dispatch→编译 key→compile),AST 追踪把WarmupIntRange/zip_inputs展开成 key 网格预编译;FA4 MLA prefill(CuTeDSL)、sparse MLA indexer、KVBlockZeroer 等已接入。FlashAttention 4 SM100 后端新增 headdim-256 与 FP8 KV cache 支持(#42669/#42569)。 - 推测解码三连:
- 异构词表 TLI(PR #38174,
use_heterogeneous_vocab):允许 draft/target 词表不同,归一化 token 串求交集,采样前constrain_draft_logits置-inf、采样后map_draft_to_target_ids翻译 ID(新文件v1/spec_decode/vocab_mapping.py),贪心解码无损。 - Bailing 混合模型 MTP(PR #44880):线性注意力+MLA+MoE 混合模型支持 MTP,难点在带状态线性注意力的回滚——新增融合内核
_bailing_linear_attn_decode_spec_step_kernel在 GPU 端按num_accepted_tokens选状态槽位(免 CPU 同步)。 - Block verification(PR #46781):
rejection_sample_method='block'(Sun et al. 2024),维护联合前缀比p_i整块判定接受长度,仅 MRV2 sampler 实现。另有speculative_config.kv_cache_dtype可单独指定草稿 KV 精度(#48787)。
- 异构词表 TLI(PR #38174,
- 安全加固集群(资源耗尽 DoS 防护)。一组
fix(security)提交,统一模式「昂责处理前先校验/设上限 + 可调环境变量」:VLLM_MAX_IMAGE_PIXELS(图像/视频解压炸弹 #47010)、VLLM_REGEX_COMPILATION_TIMEOUT_S(ReDoS #47595)、超长 prompt 字符预裁剪(#47007)、VLLM_MAX_COMPLETION_PROMPTS(completions 扇出 #47845)、请求级 GPU video backend 守卫(#47259)、derender 资源上限(#47260)。 - EngineCore 弹性与 RL 训练集成。(a)ZMQ 输出缓冲复用 bugfix(#50053):复用首帧改用
_send_msg_tracking_payload()单独 track,客户端删除手动pending_messages,零拷贝帧由 ZMQ memoryview→owner 链保活。(b)Elastic EP 扩缩容改两阶段(#47288):prepare_elastic_ep重配置但不路由、commit_elastic_epfinalize,VLLM_ENGINE_READY_TIMEOUT_S等新 engine。(c)RL 集成:权重版本号_weight_version(#49040)+ 有状态TrainerWeightTransferEngine/WeightSourceABC(#48042 [1/N],trainer_init绑定 source 后无参send_weights()重放)。 - 注意力 / KV-cache 布局。(a)按 KV-cache group 选后端
AttentionConfig.backend_per_kind(#48012,get_attn_spec_kind()推导层组 kind)。(b)KV-cache 内存布局跨后端标准化(#44455/#44456):K/V 按 content dim 统一打包、Mamba cache 标准化、移除get_transfer_cache_regions。 - 其它:
kv_cache_interface.py的AttentionSpec.page_size_bytes拆为unpadded + padding(#48411)修正 per-token-head 量化下卸载页传输宽度;Rust 前端新增 profiler 控制路由与 gRPC server 持续对齐 Python;stream_interval升格为请求级采样参数(#49754);KV events replay 补 topic frame(#45177)。
更新的笔记章节
- topics/kv-cache/concepts — P2P 层级(控制/数据面解耦、PD vs 对称 P2P、ParentManager)
- topics/speculative-decoding/concepts — 异构词表 TLI、block verification、Bailing 混合 MTP
- topics/executor-worker/concepts — MRV2 成为稠密默认、
ModelStateABC、EncoderOnlyModelState、encoder cache profiling、PCP 强制 V2 - topics/engine-core/concepts — MRV2 默认、ZMQ 缓冲复用 bugfix、容错框架、Elastic EP 两阶段、RL 权重版本号与 Trainer-Send
- topics/distributed/concepts — 容错框架状态机(EngineCoreSentinel/WorkerSentinel)、all2all 对端故障检测
- topics/model-layers/concepts — 按 KV-cache group 选后端、KV-cache 布局统一、JIT 预热(VllmJitKernel)、FA4 SM100
- topics/serving/concepts — DoS 加固集群(6 项)、Rust profiler/gRPC、
stream_interval请求级参数 - glossary/speculative-decoding — 修正 rejection_sampler 路径(区分 V1 vs MRV2 版本)、新增配置表(
rejection_sample_method/use_heterogeneous_vocab/kv_cache_dtype) - kv-cache-offloading — P2P tier 源码路径(ZMQ/NIXL)、
page_size_bytes拆分
回归审计 — 2026-07-29
对全站笔记做了一次整体回归(对齐 HEAD 6fbbcf215 的代码事实 + 完整性扫描)。
勘误(14 处陈旧/错误,已修正)
- topics/serving/concepts — 内置限流(
--rate-limit-*/RateLimitMiddleware)已完全移除。 - glossary/chunked-prefill / topics/scheduling/concepts —
chunked_prefill_enabled→enable_chunked_prefill;max_num_seqs/max_num_batched_tokens默认值随上下文/GPU 而异。 - glossary/continuous-batching —
scheduler.step()→scheduler.schedule()。 - glossary/cuda-graph —
enforce_eager在ModelConfig而非CompilationConfig。 - glossary/lora —
LinearWithLoRA→ReplicatedLinearWithLoRA/ColumnParallelLinearWithLoRA/RowParallelLinearWithLoRA。 - glossary/moe —
hpc_moe.py在fused_moe/顶层而非experts/。 - topics/architecture/concepts —
grok2非已注册 renderer;device_ids说法纠正(CUDA_VISIBLE_DEVICES仍内部使用,Worker 经local_rank绑定)。 - topics/quantization/concepts —
QuantizeMethodBase真实抽象方法是create_weights/apply(非create_quantized_linear);CompressedTensors 稀疏是raise(非仅 warn);GGUF 已移出主包。 - topics/multimodal/concepts — EVS 的 mrope 重算实为
recompute_mrope_positions(非_postprocess_video_embeds_evs)。
补全(6 处缺漏章节,新增)
- topics/serving/concepts — OpenAI Responses API(有状态会话/后台/内置工具/命名式 SSE、
ConversationContext、Harmony 分支)、Pooling 服务(embed/classify/score/late-interaction ColBERT MaxSim + flash 路径)、Profiler(kineto 逐层计时,区别于profile_run())。 - topics/engine-core/concepts — 指标与可观测性(
StatLoggerManager扇出、vllm:*指标族、perf.py解析式 MFU 估算、/metrics、ObservabilityConfig)。 - topics/model-layers/concepts / torch-compile — 自定义 Inductor 融合 pass(14 个 fusion pass + piecewise/breakable cudagraph 协同)。
- topics/executor-worker/concepts — Sleep 模式(显存时分复用,level 1/2、
SleepModeBackend抽象、RFC #34303)。
自动化校验:79 个源码路径全部解析(仅 2 处已知伪报:api_server.py 迁移叙述、练习题新建文件);15 个 VLLM_* 环境变量全部存在;VitePress 构建通过。
上游同步 — 2026-09-08
vllm 子模块:6fbbcf215 → 7c2f1ff495(1740 commits,约 6 周,v0.26.1rc0 之后的 main,期间未出新 tag)
主要变更
- MRV2 成为全部模型的默认 runner(PR #53183,8 月底)。删除
DEFAULT_V2_MODEL_RUNNER_ARCHITECTURES架构白名单,VllmConfig.use_v2_model_runner默认 True(pooling 更早,#48290);仅 ROCm 上 DeepseekV32/V4(ROCM_DEFAULT_MRV1_ARCHITECTURES)与无 Triton 场景回退 V1,含_get_v2_model_runner_unsupported_features()清单特性(stock torch.compile、SP+TP>1、ngram、P-Eagle、DBO、elastic EP、自定义 logits processors 等)时告警回退。反向地,V1 拒绝 PCP/dspark/adaptive verification/dflash2/扩散/batch-sharded sampling。两份 unsupported 清单成为 V1/V2 能力边界的单一事实来源。 - KV-Cache Layout Refactor 收官(RFC #42082,#51612/#51704/#51718)。新文件
vllm/v1/kv_cache_layout.py的KVCacheLayout枚举(逻辑形状[L,B,H,N,C]+ stride 置换)取代各 backend 的get_kv_cache_shape()等方法,backend 改经supported_kv_cache_layouts()声明偏好、customize_spec()发布 packing(TurboQuant 等),布局在 engine core 一次性解析(resolve_kv_cache_layout())。kv_cache_utils.py随之支持混合 page size 分组:Qwen3.8-Flash-Next 的贪心分桶 +_approximate_gcd(#53896)、GLM-5Next 的 Mamba/MLA/Kpool tail 混排(#53906)。 - DCP 生态成型。集合通信收敛到
v1/attention/ops/dcp.py的MLADCPManager(#52839,对称内存直连 A2A 优先);DCP × 前缀缓存打通:resolve_dcp_kv_block_size按 dcp_world_size 放大 block 几何、partial hash hit 解除dcp_world_size==1限制(#50493/#53324/#53598,Kimi K3 打通)、MooncakeStore 支持混合 DCP 远端命中(#53324)。 - 有状态层的前缀缓存:Mamba/KDA「内部 prefill checkpoint」在 chunked prefill 中途写状态快照(
MambaSpec.prefill_checkpoint_alignment,#52789/#53614,TTFT +9~25%),并与推测解码兼容;NONE_HASH种子默认确定性(sha256 用固定种子,#51875)使跨进程块哈希复用可行;retention interval 从环境变量升格为CacheConfig.prefix_cache_retention_interval(默认 0,#52216)。 - 前端架构收整:删除 v0 时代的
InputPreprocessor(#53064,prompt 预处理统一走 Renderer);entrypoints「启动器出仓」重组——launchers/api_server/(#52131)、run_batch(#53500)、cli_args/dp_supervisor(#53659)、engine/protocol.py(#54492)移出openai/;输入校验错误全面迁移到VLLMValidationError家族(VLLMError二分 Client/Server,#49665 系列);server 级准入控制(#49445)--max-num-queued-reqs/tokens在 API server 进程判定、超限 HTTP 503。 - Rust 前端长成 RL rollout server 控制面(#51316 等):gRPC control service 12 个 RPC(pause/sleep/权重传输全生命周期)、
RlCapabilities能力协商、LoRA 全生命周期(#52031/#54837)、Mooncake/NIXL connector 指标(#52755)。 - 推测解码扩展:DSpark(
DSparkSpeculator,DFlash 基础上的半自回归并行起草 + 顺序 Markov head,走 DCP 式 attention);自适应验证(按生存概率分配 top-k 验证预算,#47808,#52242 后兼容 logprobs);multi-module MTP(Inkling 类多 MTP 模块轮转,#48892/#50062);每请求接受度指标进 OpenAI 响应(#48915);EAGLE3 扩展到 Sarvam(#53052)。 - 新模型潮(厂商目录模式
vllm/models/<model>/<vendor>/固化):Kimi K3(KDA 线性注意力 + NoPE MLA + latent MoE + 三档 tail 调度)、GLM-5.3-Flash(KDA + MLA + MHC 超连接 + Kpool 索引器)、Qwen3.8-Flash-Next(hyperconnection + QSA 无权重索引器 + PLE 层)、HY-V4(DSA + iHC)、K2 Horizon(MoVA V 专家路由)、Bailing MoE V3、Muse Glimmer、Sarvam MLA、Cohere Compass;KDA 内核成为 K3/GLM-5Next/Bailing 共享底座并可切 FlashInfer(#55364)。 - 量化与内核:ModelOpt 重构为 QuantKey 驱动的单一
ModelOptLinearMethod(#49381)+ Fast Start IPC 权重缓存(#54921);AMD Quark per-block FP8 fused MoE(#52263);NVFP4 W4A4/W4A16 内核优先级修正(#55170);[warmup][DSv4] 四部曲把 DSv4 内核全面迁入 JIT warmup(#50175/#53564/#53565/#50176);PDL 铺开(fusedQKNormRope #55755 等);FlashInfer all-reduce 默认开启(#52998)。 - RL 权重传输成体系:
distributed/weight_transfer/新增 sharded RDT(Ray Direct Transport,trainer 侧 NIXL producer + consumer 侧 BAKE/REPLAY 两阶段按 slice 拉取,约 3000 行)、稀疏坐标 NCCL 更新(#53751)、IPC 引擎(#52497);DP 状态同步自适应(--dp-sync-interval默认 32→16 + wave 首步强制同步,#52957)。 - 多模态简化:MM processor 收敛为纯 token-id 输入(#53093/#53275 系列,text 处理归 Renderer);
video.py拆为video_decoders/包且 PyAV 弃用(#49155/#54231);ECMooncakeConnector 打通 EPD encoder cache 传输(#41567)。 - 其它:确定性解码回放
trace_decode_token_ids(#46701,GPU 侧全实现)、batch-sharded sampling(#50465)、GPU 端 compact sampling masks(#54901)、hybrid 模型 wake_up 崩溃修复(#41602)、renderer warmup 与引擎初始化重叠(#54557)、top-p 小批量 split-row kernel(#54651)。
更新的笔记章节
- topics/executor-worker/concepts / topics/engine-core/concepts — MRV2 全量默认(白名单删除、unsupported 清单)、
PromptEmbedsState、MMEncoderModelRunner、batch-sharded sampling、compact masks、hybrid wake_up 修复、sleep 重构 - topics/kv-cache/concepts — 布局标准化收官、内部 checkpoint、NONE_HASH 确定性、retention 升格、DCP×前缀缓存、ECMooncakeConnector、异步 load、卸载三修复
- topics/distributed/concepts — PCP 专节、DCP 补全(MLADCPManager、前缀命中)、all-reduce 后端演进(FlashInfer 默认/MNNVL/PCIe IPC/PDL)
- topics/speculative-decoding/concepts — DSpark、自适应验证、multi-module MTP、每请求接受度、Mamba checkpoint
- topics/model-layers/concepts — 厂商目录全表、KDA 专节、MLA 后端增量、warmup DSv4 四部曲、布局收官交叉引用
- topics/serving/concepts — 准入控制、VLLMValidationError、InputPreprocessor 删除、entrypoints 重组、Rust RL 控制面、Cohere、trace replay、structured output×min_tokens
- topics/scheduling/concepts — server 级准入背压、调度器修复清单、配置表
- topics/quantization/concepts — ModelOpt QuantKey、Quark per-block FP8、NVFP4 优先级、Fast Start
- topics/multimodal/concepts — processor 纯 token-id 化、video_decoders 拆包
- topics/architecture/code-walkthrough — 目录树更新(launchers/、厂商模型目录、warmup/)
- glossary/kv-cache / glossary/prefix-caching / glossary/kv-cache-offloading / glossary/speculative-decoding / glossary/lora — 布局枚举、NONE_HASH/checkpoint、EC 传输与新修复路径、新配置项、target module matching 双判定
- 路径勘误:
dp_supervisor.py、api_server.py启动器 →entrypoints/launchers/(#53659/#52131,serving concepts/code-walkthrough 与 architecture 目录树)