mixture of experts internals

MoE 内部机制:专家路由、负载均衡与容量因子

1. MoE 的核心思想 Mixture-of-Experts(MoE)的核心:条件计算。不是让所有参数都参与每个 Token 的计算,而是为每个 Token 选择少量"专家"子网络来处理。 以 Mixtral 8×7B 为例:总参数 46.7B,但每个 Token 只激活 12.9B。用接近 13B 模型的计算量获得接近 47B 模型的性能。 2. MoE 架构 2.1 基本结构 MoE 替换 Transformer FFN 层: 标准 FFN: x → W2·σ(W1·x) → output MoE FFN: x → Router(x) → 选择 Top-K 专家 → 分别计算 → 加权求和 → output 2.2 路由器(Router/Gate) 路由器是一个小型线性层 + softmax: $$ G(x) = \text{softmax}(W_g x) $$ 其中 $W_g \in \mathbb{R}^{N \times d}$,$N$ 是专家数量。 ...

2026-06-25 · 4 min · 739 words · 硅基 AGI 探索者
mixture of experts deep dive

混合专家模型深入剖析:从 GShard 到 DeepSeek V4

MoE 核心原理 混合专家(Mixture of Experts, MoE)的核心思想:用路由器选择性地激活部分参数,实现参数总量大但计算量小。 给定输入 $x \in \mathbb{R}^d$,MoE 层的计算为: $$y = \sum_{i=1}^{N} g_i(x) \cdot E_i(x)$$ 其中 $g_i(x)$ 为门控函数(路由器),$E_i$ 为第 $i$ 个专家。稀疏激活的关键是 $g_i(x)$ 只对 Top-k 个专家非零: $$g_i(x) = \begin{cases} \text{softmax}(W_g x)_i & \text{if } i \in \text{Top-k}(W_g x) \ 0 & \text{otherwise} \end{cases}$$ class MoELayer(nn.Module): def __init__(self, d_model, num_experts=8, top_k=2): super().__init__() self.gate = nn.Linear(d_model, num_experts, bias=False) self.experts = nn.ModuleList([ FeedForward(d_model) for _ in range(num_experts) ]) self.top_k = top_k self.num_experts = num_experts def forward(self, x): # x: (B, L, d) logits = self.gate(x) # (B, L, num_experts) topk_logits, topk_idx = logits.topk(self.top_k, dim=-1) topk_weights = F.softmax(topk_logits, dim=-1) output = torch.zeros_like(x) for i in range(self.top_k): expert_idx = topk_idx[..., i] # (B, L) weight = topk_weights[..., i:i+1] # (B, L, 1) for j in range(self.num_experts): mask = (expert_idx == j) if mask.any(): expert_input = x[mask] expert_output = self.experts[j](expert_input) output[mask] += weight[mask] * expert_output return output 路由算法演进 1. Top-k 路由(标准方案) 最常用的路由策略。每个 token 选择得分最高的 k 个专家。问题:容易出现"赢者通吃"——少数专家被过度使用。 ...

2026-06-25 · 3 min · 523 words · 硅基 AGI 探索者
deepseek technical analysis

DeepSeek 技术解析:开源大模型的性价比之王

DeepSeek:搅动市场的鲶鱼 DeepSeek 用 1/10 的训练成本做出了匹敌 GPT-4 的模型,直接把大模型价格打了下来。它不是靠魔法,而是靠极致的工程优化。 模型谱系 模型 参数量 激活参数 上下文 优势 DeepSeek-V3 671B 37B 128K 通用能力强 DeepSeek-V3-Lite 16B 2.8B 64K 端侧部署 DeepSeek-Coder-V3 671B 37B 128K 代码专精 DeepSeek-R1 671B 37B 128K 推理强化 核心技术创新 1. MoE 架构:稀疏激活 # 传统 Dense 模型 # 每次推理使用全部参数 output = MLP(input) # 671B 参数全参与 # DeepSeek MoE # 每次推理只激活 37B/671B = 5.5% 的参数 output = MoE(input) # 只激活 256 个专家中的 8 个 # 效果: # 模型容量:671B(知识量大) # 推理成本:37B(速度快) # 最佳平衡点 2. MLA(Multi-Head Latent Attention) # 标准 MHA:KV Cache = 2 * L * H * D * S * B * 2 # MLA:将 K, V 压缩到低维潜空间 class MultiHeadLatentAttention: def __init__(self, dim, kv_lora_rank=512, q_lora_rank=1536): # KV 压缩到 512 维(而非完整维度) self.kv_compress = nn.Linear(dim, kv_lora_rank) self.kv_decompress = nn.Linear(kv_lora_rank, dim) def forward(self, x): # 压缩 KV → 存储压缩版 → 推理时解压 kv_latent = self.kv_compress(x) # 存储 this kv = self.kv_decompress(kv_latent) # KV Cache 减少 93.75%(从 16384 → 512) return attention(x, kv) # KV Cache 对比: # MHA: 16,384 维 per token # GQA: 4,096 维 per token # MLA: 512 维 per token ← DeepSeek 3. 多 Token 预测(MTP) # 传统:每次生成 1 个 Token # MTP:每次生成 2+ 个 Token # 原理: # Token 1: 正常自回归生成 # Token 2: 用额外的 MTP 头并行预测 # 训练时:同时优化 2 个 Token 的损失 # 效果: # 推理速度:1.8x # 质量损失:<1% # 训练数据利用率:+15%(每个样本学到更多) 4. FP8 训练 # 大部分模型用 FP16/BF16 训练 # DeepSeek 用 FP8 训练,显存和计算减半 # FP8 训练的关键: # 1. 敏感层保持 FP32(LayerNorm、Softmax) # 2. 权重和梯度用 FP8 # 3. 动态缩放因子 # 效果: # 训练成本:$5.5M(GPT-4 估计 $63M) # GPU 小时:2.79M H800 hours # 模型质量:与 FP16 训练相当 训练策略 数据策略 # DeepSeek 的数据配比 data_mix = { "web_text": 0.45, # 通用网页 "code": 0.20, # 代码(含注释) "math": 0.15, # 数学 "academic": 0.10, # 学术论文 "reasoning": 0.05, # 推理数据 "safety": 0.05, # 安全对齐 } # 总数据量:14.8T tokens # 特点:代码和数学比例高 → 推理能力强 RLHF 策略 # DeepSeek-R1 的训练流程 training_pipeline = [ "Step 1: SFT", # 监督微调 "Step 2: RL (Reasoning)", # 推理能力强化学习 "Step 3: SFT (拒绝采样)", # 用 RL 模型生成数据再 SFT "Step 4: RL (Safety)", # 安全对齐 RL ] # 创新点:Step 2 中不使用 SFT 模板,让模型自主探索推理路径 # 结果:模型发展出 "aha moment" 能力(自我反思) 性能对比 通用能力 基准 DeepSeek-V3 GPT-4o Claude-4 Qwen3-Max MMLU 88.5 88.7 89.2 87.3 MATH 61.6 56.4 60.1 58.3 HumanEval 82.6 80.1 85.1 79.8 BBH 87.5 85.1 86.8 84.2 API 价格 模型 输入 ($/1M tok) 输出 ($/1M tok) 上下文 DeepSeek-V3 $0.27 $1.10 128K GPT-4o $2.50 $10.00 128K Claude-4 $3.00 $15.00 200K Qwen3-Max $0.80 $2.40 128K # 性价比计算 cost_performance = { "DeepSeek-V3": 88.5 / 0.27, # 328 "GPT-4o": 88.7 / 2.50, # 35 "Claude-4": 89.2 / 3.00, # 30 "Qwen3-Max": 87.3 / 0.80, # 109 } # DeepSeek 性价比是 GPT-4o 的 9.4 倍 部署方案 本地部署 # 使用 vLLM 部署 DeepSeek-V3 python -m vllm.entrypoints.openai.api_server \ --model deepseek-ai/DeepSeek-V3 \ --tensor-parallel-size 8 \ --max-model-len 65536 \ --gpu-memory-utilization 0.9 \ --trust-remote-code \ --port 8000 # 硬件要求: # 8x H100 80G 或 8x H800 80G # 或 4x H100 + INT4 量化 API 调用 from openai import OpenAI # DeepSeek 官方 API client = OpenAI( base_url="https://api.deepseek.com/v1", api_key="sk-xxx" ) response = client.chat.completions.create( model="deepseek-chat", messages=[{"role": "user", "content": "你好"}], ) 适用场景 ✅ 推荐使用 场景 推荐模型 理由 大规模推理任务 DeepSeek-V3 成本低 10x 代码生成 DeepSeek-Coder-V3 代码能力领先 数学推理 DeepSeek-R1 MATH 得分最高 知识问答 DeepSeek-V3 通用能力足够 ❌ 不推荐 场景 原因 替代方案 多模态任务 V3 纯文本 GPT-4o / Gemini 长文档分析 128K 上下文够用但非最优 Claude-4 (200K) 实时对话 首 Token 延迟偏高 GPT-4o DeepSeek 的启示 工程优化 > 算力堆砌——用 1/10 成本做出同等水平模型 MoE 是大模型的未来——671B 参数但只激活 5.5% MLA 是 KV Cache 革命——减少 93% 缓存显存 代码和数学数据是关键——提升推理能力的最有效途径 FP8 训练可行——训练成本可以减半而不损失质量 结论 DeepSeek 证明了:大模型不需要花几十亿美金训练,极致的工程优化能以 1/10 的成本达到同等水平。这对行业的影响是深远的——大模型不再是少数巨头的专利,工程能力强的团队都能做出好模型。 ...

2026-06-24 · 3 min · 592 words · 硅基 AGI 探索者
deepseek v4 完整版发布 开源模型的新巅峰

DeepSeek V4 完整版发布:开源模型的新巅峰

DeepSeek V4 完整版:开源模型的「GPT-4 时刻」 2026 年 6 月,DeepSeek 正式发布 V4 完整版(此前 Preview 版已流传数月)。这是目前最强的开源权重大模型,在多个维度上逼近甚至超越闭源旗舰。 架构亮点 MoE 规模:V4 采用 236B 总参数,每次激活 39B,16 个专家,路由策略采用「稀疏激活 + 专家冗余」。相比 V3,专家专业化程度更高,代码专家、数学专家、推理专家分工明确。 MLA(Multi-head Latent Attention)升级到 V2:KV Cache 压缩比达到 8:1,意味着同样的显存可以处理 8 倍长的上下文。这是 DeepSeek 在推理效率上的核心竞争优势。 1M 上下文:通过 YaRN + 增量预训练实现,长上下文扩展训练数据达到 100B tokens。在 800K token 内的 Needle-in-haystack 测试通过率 97.2%。 原生多模态:V4 是 DeepSeek 第一个原生多模态版本,支持图像输入(文本输出),视觉编码器采用独立训练的 ViT,通过 cross-attention 与语言模型融合。 基准测试成绩 基准 DeepSeek V4 GPT-5.5 Claude Opus 4.1 MMLU-Pro 89.7 91.2 90.1 GPQA Diamond 72.4 75.8 73.1 SWE-Bench 82.3% 85.7% 84.1% HumanEval+ 91.5% 93.2% 92.8% C-Eval 96.8 88.3 85.7 中文能力是 DeepSeek V4 的最大优势,在 C-Eval 和 CMMLU 上大幅领先所有闭源模型。 ...

2026-06-24 · 1 min · 157 words · 硅基 AGI 探索者
mixture of experts guide

MoE 混合专家模型选型指南:从 Mixtral 到 DeepSeek

MoE:用稀疏激活实现"大模型能力、小模型成本" MoE(Mixture of Experts)的核心思想:模型总参数很大,但每次推理只激活一小部分。 传统 Dense 模型: 70B 参数 → 每次推理全部参与计算 → 70B 计算量 MoE 模型: 400B 总参数,每次激活 12B → 推理只需 12B 计算量 → "拥有 400B 的能力,付出 12B 的成本" MoE 架构原理 基本结构 输入 Token ↓ ┌─────────────┐ │ Router/Gate │ → 决定激活哪几个专家 └──────┬──────┘ │ ┌───┼───┬───┐ ↓ ↓ ↓ ↓ E1 E2 E3 ... E64 (专家网络,每个是一个 FFN) │ │ │ │ └───┴───┴───┘ ↓ 加权合并输出 class MoELayer(nn.Module): def __init__(self, num_experts=8, top_k=2, d_model=4096): super().__init__() self.gate = nn.Linear(d_model, num_experts) self.experts = nn.ModuleList([ FFN(d_model) for _ in range(num_experts) ]) self.top_k = top_k def forward(self, x): # Gate 计算每个专家的权重 gate_logits = self.gate(x) # [batch, seq, num_experts] weights, indices = torch.topk( F.softmax(gate_logits, dim=-1), self.top_k ) # 只激活 top-k 个专家 output = torch.zeros_like(x) for i in range(self.top_k): expert_idx = indices[..., i] weight = weights[..., i] for b in range(x.size(0)): for s in range(x.size(1)): expert = self.experts[expert_idx[b, s]] output[b, s] += weight[b, s] * expert(x[b, s]) return output 关键设计决策 决策 选项 影响 专家数量 8 / 16 / 64 / 256 更多专家 = 更大容量 + 更高显存 Top-K 1 / 2 / 4 更高 K = 更好质量 + 更多计算 专家粒度 粗(整个FFN) / 细(注意力头) 细粒度 = 更灵活路由 共享专家 有 / 无 共享专家处理通用知识 主流 MoE 模型对比 模型 总参数 激活参数 专家数 Top-K 上下文 许可证 Mixtral 8x7B 47B 13B 8 2 32K Apache 2.0 Mixtral 8x22B 141B 39B 8 2 64K Apache 2.0 DeepSeek-V3 671B 37B 256 8 128K MIT Qwen3-MoE-A14B 57B 14B 49 4 128K Apache 2.0 Grok-2 314B 86B 32 4 128K 闭源 GPT-5(推测) ~1T ~100B 128 8 256K 闭源 DeepSeek-V3 深度分析 DeepSeek-V3 是 2026 年开源 MoE 的标杆: ...

2026-06-23 · 3 min · 606 words · 硅基 AGI 探索者
鲁ICP备2026018361号