推测解码加速

推测解码2026:加速2-3倍

自回归生成的根本瓶颈 LLM的自回归生成是一个严格串行的过程——每个token依赖前一个token的输出。在A100 GPU上,生成一个token的延迟约为15-30ms,其中计算只占一小部分,大部分时间花在权重加载上。这就是内存带宽限制:每生成一个token都要将整个模型权重从HBM读到计算单元,但只产生一个token的输出。 推测解码(Speculative Decoding)通过打破这一串行约束,实现了2-3倍的推理加速。 核心思想:Draft-Verify范式 推测解码的核心思想异常简洁: Draft阶段:用一个小而快的Draft模型快速生成一段候选序列 Verify阶段:用大模型一次性并行验证这整段候选序列 接受/拒绝:根据大模型的概率分布决定接受多少个候选token 关键洞察在于:大模型并行处理N个token的速度(一次前向传播)远快于串行生成N个token(N次前向传播)。即使候选序列有部分错误,只要平均接受率足够高,就能获得净加速。 数学基础:拒绝采样 推测解码使用拒绝采样确保输出分布与纯大模型生成完全一致。给定Draft模型的概率 q(x) 和大模型的概率 p(x): 接受概率 = min(1, p(x) / q(x)) 如果 p(x) ≥ q(x):总是接受(Draft模型低估了这个token的概率) 如果 p(x) < q(x):以 p(x)/q(x) 的概率接受,否则拒绝并从调整后的分布中重新采样 def speculative_decoding_step(draft_model, target_model, prefix, n_draft=4): # 1. Draft模型自回归生成n_draft个token draft_tokens = [] draft_probs = [] for _ in range(n_draft): logits = draft_model(prefix + draft_tokens) prob = softmax(logits[-1]) token = sample(prob) draft_tokens.append(token) draft_probs.append(prob[token]) # 2. 大模型并行验证 target_logits = target_model(prefix + draft_tokens) target_probs = [softmax(target_logits[i]) for i in range(len(draft_tokens))] # 3. 接受/拒绝 accepted = [] for i, (token, d_prob, t_prob) in enumerate(zip(draft_tokens, draft_probs, target_probs)): if random() < min(1, t_prob[token] / d_prob): accepted.append(token) else: # 从调整后的分布重新采样 adjusted_prob = relu(t_prob - d_prob) adjusted_prob /= adjusted_prob.sum() accepted.append(sample(adjusted_prob)) break # 一旦拒绝,后续候选全部丢弃 return accepted 这个算法保证了输出分布与纯大模型采样的分布完全一致——无损加速。 ...

2026-07-02 · 2 min · 313 words · 硅基 AGI 探索者
Flash Attention 3

Flash Attention 3原理解析

注意力计算的性能瓶颈 标准注意力计算的核心瓶颈不在于计算量,而在于显存访问。注意力矩阵 QK^T 的形状为 [n, n],对于 n=8192 的序列,仅这个矩阵就需要256MB显存(FP32)。GPU的计算速度远超显存带宽——A100的计算能力为312 TFLOPS,而HBM带宽仅2TB/s。 这就是经典的"内存墙"问题:注意力计算大部分时间不是在算,而是在等数据搬运。 Flash Attention V1:分块计算的突破 Tri Dao在2022年提出的Flash Attention V1核心思想是:通过分块计算避免实例化完整的注意力矩阵。 在线Softmax Flash Attention的关键创新是在线Softmax算法。标准Softmax需要先遍历一次数据求最大值,再遍历一次计算指数和归一化。在线Softmax通过维护一个运行最大值和运行和,在单次遍历中完成Softmax计算: def online_softmax(blocks): """在线Softmax:逐块更新""" m = float('-inf') # 运行最大值 l = 0.0 # 运行和 result = None for block in blocks: block_max = block.max() # 更新全局最大值 new_m = max(m, block_max) # 修正之前的累积值 alpha = math.exp(m - new_m) beta = math.exp(block_max - new_m) l = alpha * l + beta * block.sum() if result is None: result = beta * block else: result = alpha * result + beta * block m = new_m return result / l 分块策略 将Q、K、V分别切分为块,每次只加载一小块到SRAM(GPU片上高速缓存)中计算。外层循环遍历K/V块,内层循环遍历Q块: for each K_j, V_j block: load K_j, V_j to SRAM for each Q_i block: load Q_i to SRAM compute S = Q_i @ K_j^T update online softmax statistics compute partial O = P @ V_j write O_i back to HBM 这种策略使得HBM访问量从O(n²)降低到O(n²d/M),其中M是SRAM大小。对于典型配置,这相当于减少了10-20倍的显存访问。 Flash Attention V2:效率的进一步提升 V2在V1基础上做了几个关键优化: 减少非矩阵乘法运算 GPU上矩阵乘法(GEMM)的效率远高于其他运算(如rescale、softmax)。V2重新组织了计算顺序,将rescale操作推迟到最后,减少了中间的rescale次数。 并行化改进 V1主要沿序列维度并行化,V2增加了批次和头维度的并行化,使得在长序列场景下能更好地利用GPU的并行能力。 前向和后向的分配优化 V2重新分配了前向和后向传播中的工作负载,减少了线程块之间的同步开销。 Flash Attention V3:FP8与异步流水线 2024年发布的Flash Attention V3针对H100 GPU的FP8张量核心和异步执行特性进行了深度优化。 ...

2026-07-02 · 2 min · 366 words · 硅基 AGI 探索者
视觉模型选型

视觉模型选型2026:从图像理解到多模态推理

引言 视觉语言模型(VLM)在2026年取得了突破性进展。从简单的图像描述到复杂的视觉推理,从单图理解到视频时序分析,视觉模型的能力边界正在快速扩展。本文将从实际应用场景出发,提供系统化的视觉模型选型指南。 主流视觉模型概览 闭源商业模型 GPT-5 Vision (OpenAI) — 综合视觉能力最强 Claude 4 Vision (Anthropic) — 文档和图表理解最佳 Gemini 2.5 Ultra (Google) — 视频和多图理解领先 GPT-5o (OpenAI) — 实时视觉对话专用 开源模型 Qwen 3 VL 72B (阿里) — 开源视觉模型之王 InternVL 3 78B (上海AI Lab) — 中文视觉理解强 Llama 4 Vision 90B (Meta) — 英文视觉通用 GLM-5V 32B (智谱AI) — 中文OCR和文档理解优秀 核心能力对比 图像理解 (VQAv2) 模型 得分 特点 GPT-5 Vision 92.3% 综合最佳,细粒度理解强 Gemini 2.5 Ultra 91.1% 多图对比能力强 Claude 4 Vision 89.7% 文档和图表最佳 Qwen 3 VL 72B 87.5% 开源最佳 InternVL 3 78B 86.2% 中文视觉强 Llama 4 Vision 90B 84.8% 通用能力均衡 GLM-5V 32B 83.5% OCR能力突出 OCR与文档理解 在OCR-Bench和DocVQA上: ...

2026-07-02 · 2 min · 309 words · 硅基 AGI 探索者
KV Cache优化

KV Cache优化技术全景

为什么KV Cache如此重要? 在自回归生成中,每生成一个新token都需要计算它与之前所有token的注意力。如果不缓存,生成第N个token需要重新计算前N-1个token的K和V,复杂度为O(N²)。KV Cache将已计算的K/V存储起来,使每步生成只需O(N)的计算。 但缓存本身带来了巨大的显存压力。以Llama-3-70B为例,FP16精度下单个token的KV Cache占用约320KB。在32K上下文、batch_size=32的场景下,KV Cache总量达到约320GB——远超模型本身的140GB。 KV Cache的显存构成 单个token的KV Cache大小为: cache_per_token = 2 (K和V) × n_layers × n_kv_heads × head_dim × 2 (FP16字节) 以Llama-3-70B为例: n_layers = 80 n_kv_heads = 8 (GQA) head_dim = 128 FP16 = 2字节 cache_per_token = 2 × 80 × 8 × 128 × 2 = 327,680 bytes ≈ 320KB 理解这个公式是所有优化方案的出发点。 PagedAttention:分页式KV管理 vLLM团队提出的PagedAttention借鉴了操作系统的虚拟内存管理。核心思想: 块式管理 将KV Cache分为固定大小的块(Block),每个块存储若干token的KV。块不需要在物理上连续,通过块表(Block Table)映射逻辑位置到物理位置。 class PagedKVCache: def __init__(self, n_blocks, block_size, n_layers, n_kv_heads, head_dim): self.block_size = block_size # 每块的token数 self.n_blocks = n_blocks # 预分配所有块的存储 self.k_blocks = torch.zeros(n_blocks, n_layers, block_size, n_kv_heads, head_dim) self.v_blocks = torch.zeros(n_blocks, n_layers, block_size, n_kv_heads, head_dim) self.free_blocks = list(range(n_blocks)) self.block_tables = {} # seq_id -> [block_indices] def allocate(self, seq_id, n_tokens): n_blocks_needed = (n_tokens + self.block_size - 1) // self.block_size blocks = [] for _ in range(n_blocks_needed): if not self.free_blocks: raise OOMError("No free KV cache blocks") blocks.append(self.free_blocks.pop()) self.block_tables[seq_id] = blocks def append(self, seq_id, token_idx, k, v): block_idx = token_idx // self.block_size offset = token_idx % self.block_size physical_block = self.block_tables[seq_id][block_idx] self.k_blocks[physical_block, :, offset] = k self.v_blocks[physical_block, :, offset] = v 优势 消除碎片:无需为最大可能长度预分配连续空间 灵活共享:不同序列可以共享相同的块(如系统提示词部分) 按需分配:序列增长时动态分配新块 Prefix Sharing 多个请求共享相同的前缀(如系统提示词)时,PagedAttention可以让这些请求共享同一组物理块。这在对话AI场景中可节省30-50%的显存。 ...

2026-07-02 · 2 min · 322 words · 硅基 AGI 探索者
开源vs商业模型

开源vs商业模型2026决策指南

引言 “用开源还是商业模型?“这是每个AI应用开发者在项目初期都会面临的核心决策。2026年,开源模型与商业模型之间的差距已经大幅缩小,但在某些关键维度上仍有显著差异。本文将提供一个系统化的决策框架,帮助你做出明智选择。 当前格局 商业模型第一梯队 GPT-5 (OpenAI) — 综合能力最强 Claude 4 Opus (Anthropic) — 推理和安全最佳 Gemini 2.5 Ultra (Google) — 多模态和长上下文领先 开源模型第一梯队 DeepSeek-V4 (671B MoE) — 综合能力最强的开源模型 GLM-5 (智谱AI) — 中文能力最佳 Llama 4 405B (Meta) — 生态最成熟 Qwen 3 235B (阿里) — 性价比最高 维度一:能力上限 综合智能 商业模型在综合智能上仍有一定优势。在MMLU-Pro上,GPT-5得分91.3%,而最好的开源模型DeepSeek-V4为85.8%,差距约5个百分点。但在具体任务上,这个差距可能更小。 复杂推理 在GPQA Diamond等高难度推理基准上,Claude 4 Opus的78.4%远超开源最佳的68.5%。对于需要深度科学推理的场景,商业模型仍有明显优势。 代码生成 SWE-Bench Verified上,GPT-5的71.2%对比DeepSeek-V4的58.9%,差距约12个百分点。复杂软件工程任务上商业模型领先较多。 多模态 Gemini 2.5 Ultra在多模态理解上遥遥领先,开源模型在这一领域仍有较大差距。 结论:如果你的任务需要顶级能力(复杂推理、高级编程、多模态理解),商业模型仍是首选。 维度二:成本 API调用成本 以处理100万token为例: 模型类型 输入成本 输出成本 GPT-5 $10 $40 Claude 4 Opus $15 $75 Gemini 2.5 Ultra $7 $21 DeepSeek-V4 (API) $0.27 $1.1 GLM-5 (API) $0.5 $2.0 开源模型的API价格通常是商业模型的1/10到1/50。 ...

2026-07-02 · 1 min · 186 words · 硅基 AGI 探索者
MoE混合专家架构

MoE混合专家架构2026详解

MoE的核心动机:解耦参数量与计算量 传统密集模型的参数量与计算量是线性绑定的——一个70B模型每次前向传播需要计算全部70B参数。MoE(Mixture of Experts)打破了这一绑定:通过路由机制只激活部分专家,使得总参数量可以远大于单次计算量。 DeepSeek-V3以671B总参数量实现了仅37B的激活计算量,在保持顶级性能的同时将推理成本降低了5-10倍。这是MoE在2026年成为超大模型首选架构的直接原因。 稀疏MoE的工作原理 基本结构 一个MoE层由三个核心组件构成: 路由器(Router/Gate):一个小型线性层,输出每个token分配给各专家的概率 专家网络(Experts):多个并行的FFN,每个专家是一个独立的FFN 组合层:根据路由概率加权组合各专家的输出 class MoELayer(nn.Module): def __init__(self, d_model, d_ff, n_experts, top_k=2): super().__init__() self.router = nn.Linear(d_model, n_experts, bias=False) self.experts = nn.ModuleList([ FFN(d_model, d_ff) for _ in range(n_experts) ]) self.top_k = top_k def forward(self, x): batch_size, seq_len, d_model = x.shape x_flat = x.view(-1, d_model) # 路由 router_logits = self.router(x_flat) # [N, n_experts] router_probs = F.softmax(router_logits, dim=-1) # Top-K选择 topk_probs, topk_indices = torch.topk(router_probs, self.top_k, dim=-1) topk_probs = topk_probs / topk_probs.sum(dim=-1, keepdim=True) # 分发到专家 output = torch.zeros_like(x_flat) for i in range(self.top_k): expert_indices = topk_indices[:, i] # [N] expert_weights = topk_probs[:, i] # [N] for expert_id in range(len(self.experts)): mask = (expert_indices == expert_id) if mask.any(): expert_input = x_flat[mask] expert_output = self.experts[expert_id](expert_input) output[mask] += expert_weights[mask].unsqueeze(-1) * expert_output return output.view(batch_size, seq_len, d_model) Top-K路由 每个token只被路由到K个专家(通常K=1或2)。这实现了计算量的稀疏化——在N=256个专家的情况下,每次只激活约0.8%的参数。 负载均衡:MoE的关键难题 如果不加约束,路由器会倾向于将大部分token分配给少数"优秀"专家,导致其他专家得不到训练。这就是负载不均衡问题。 辅助损失(Auxiliary Loss) GShard提出的经典方法,在训练损失中加入一项鼓励均匀分配的惩罚: L_aux = α * N * Σ(f_i * P_i) 其中 f_i 是分配给专家i的token比例,P_i 是路由器对专家i的平均概率。当分配均匀时 L_aux 最小。 ...

2026-07-02 · 2 min · 275 words · 硅基 AGI 探索者
小模型横评

小模型大能力:7B级模型横评2026

引言 在大模型参数规模动辄千亿的时代,7B级别的小模型正在证明一个事实:大不是唯一解。2026年,7B级模型的能力已经达到了两年前70B模型的水平,成为边缘部署、本地推理和成本敏感场景的首选。本文将对当前主流的7B级模型进行全面横评。 参评模型 Llama 4 8B (Meta) — 2026年3月 Qwen 3 7B (阿里通义) — 2026年4月 GLM-5 Air 6B (智谱AI) — 2026年6月 Mistral 7B v0.4 (Mistral AI) — 2026年2月 DeepSeek 7B v3 (深度求索) — 2026年5月 Gemma 3 7B (Google) — 2026年3月 Phi-4 7B (微软) — 2026年1月 基础能力对比 MMLU-Pro 模型 得分 优势领域 Qwen 3 7B 72.3% 工程、数学 Llama 4 8B 70.8% 人文、社科 GLM-5 Air 6B 69.5% 中文、法律 Phi-4 7B 68.1% 数学、逻辑 DeepSeek 7B v3 67.7% 代码、推理 Mistral 7B v0.4 65.2% 欧洲语言 Gemma 3 7B 64.8% 通用知识 Qwen 3 7B在小模型中领先,已经达到了2024年Llama 3 70B的水平。 ...

2026-07-02 · 2 min · 392 words · 硅基 AGI 探索者
RoPE旋转位置编码

RoPE旋转位置编码原理与改进

位置编码的困境 Transformer的自注意力机制本身是排列不变的——它不知道"猫追老鼠"和"老鼠追猫"的区别。位置编码是赋予模型位置感知能力的关键组件。 从绝对位置编码(正弦编码、可学习编码)到相对位置编码(T5 Bias、ALiBi),位置编码经历了多代演进。2021年Jianlin Su提出的RoPE(Rotary Position Embedding)巧妙地统一了绝对和相对位置编码,成为2026年主流大模型(LLaMA、Qwen、Mistral等)的标配。 RoPE的核心数学 基本思想 RoPE的核心思想是:通过对Query和Key施加旋转操作,使得它们的内积自然地编码相对位置信息。 给定位置 m 的Query向量 q 和位置 n 的Key向量 k,RoPE希望满足: <ROPE(q, m), ROPE(k, n)> = g(q, k, m-n) 即旋转后的内积只依赖于相对位置 m-n。 二维情况 在二维空间中,旋转操作有明确的几何意义。对向量 (q₀, q₁) 施加角度为 mθ 的旋转: ┌ q₀' ┐ ┌ cos(mθ) -sin(mθ) ┐ ┌ q₀ ┐ │ │ = │ │ │ │ └ q₁' ┘ └ sin(mθ) cos(mθ) ┘ └ q₁ ┘ 旋转后 Query 和 Key 的内积自然只依赖于角度差 (m-n)θ,即相对位置。 高维推广 将 d 维向量分成 d/2 组二维子空间,每组施加不同频率的旋转: ...

2026-07-02 · 2 min · 377 words · 硅基 AGI 探索者
中文LLM对比

中文LLM对比2026:谁才是中文之王

引言 中文大语言模型在2026年迎来了爆发式发展。从智谱的GLM-5到阿里的Qwen 3,从DeepSeek-V4到百度的文心5.0,国产模型在中文理解、文化感知、专业领域知识等方面都取得了长足进步。本文将从多个维度对主流中文LLM进行深度对比。 参评模型 本次对比选取以下以中文能力见长的大语言模型: GLM-5 (智谱AI) — 2026年6月发布 Qwen 3 235B (阿里通义) — 2026年4月发布 DeepSeek-V4 (深度求索) — 2026年5月发布 文心 5.0 (百度) — 2026年3月发布 Spark 5.0 (讯飞星火) — 2026年5月发布 Baichuan 4 (百川智能) — 2026年4月发布 Moonshot v3 (月之暗面) — 2026年6月发布 中文理解能力 C-Eval 2026 C-Eval 2026是清华大学推出的中文综合评估基准,覆盖52个学科: GLM-5: 92.1% — 在法律、医学、中国历史等学科领先 Qwen 3 235B: 90.8% — 工程和技术类学科表现最佳 DeepSeek-V4: 88.3% — 数学和逻辑推理类突出 文心 5.0: 87.6% — 文学和哲学类表现优秀 Moonshot v3: 86.9% — 长文本理解优势明显 Spark 5.0: 84.2% Baichuan 4: 82.5% CMMLU 2026 CMMLU是另一个重要的中文多任务理解基准: ...

2026-07-02 · 2 min · 290 words · 硅基 AGI 探索者
LLM基准对比

2026年7月LLM基准对比:谁是真正的王者

引言 2026年过半,大语言模型的竞争格局发生了显著变化。从OpenAI的GPT-5系列到Anthropic的Claude 4,从Google的Gemini 2.5到国产的GLM-5、DeepSeek-V4,各家厂商在推理能力、多模态理解、长上下文处理等方面都取得了突破性进展。本文将基于最新公开的基准测试数据,对当前主流LLM进行全面对比。 测试模型清单 本次对比涵盖以下模型: 模型 厂商 版本 参数规模 GPT-5 OpenAI 2026.06 未公开 Claude 4 Opus Anthropic 2026.05 未公开 Gemini 2.5 Ultra Google 2026.04 未公开 GLM-5 智谱AI 2026.06 未公开 DeepSeek-V4 DeepSeek 2026.05 671B(MoE) Llama 4 405B Meta 2026.03 405B Qwen 3 235B 阿里通义 2026.04 235B 核心基准对比 MMLU-Pro 2026 MMLU-Pro作为升级版多任务理解基准,覆盖57个学科领域,考察模型的深层知识理解能力。 GPT-5: 91.3% — 居首位,在哲学、法学等人文领域优势明显 Claude 4 Opus: 89.7% — 在数学和物理上表现出色 Gemini 2.5 Ultra: 88.9% — 跨学科综合能力均衡 GLM-5: 86.2% — 中文相关学科表现突出 DeepSeek-V4: 85.8% — 推理类题目正确率高 Qwen 3 235B: 84.5% — 工程类学科表现亮眼 Llama 4 405B: 82.1% — 开源模型中最佳 GPQA Diamond GPQA Diamond考察研究生级别的科学推理能力,是衡量模型深度推理的重要指标。 ...

2026-07-02 · 2 min · 308 words · 硅基 AGI 探索者
鲁ICP备2026018361号