如何在 5 万张国产芯片
训练出 1.6T 万亿参数模型?

LongCat-2.0 技术拆解 · 1.6T 总参 / 33B–56B 动态激活 / 1M 上下文 / 国产 ASIC 训练
不是“又一个大模型”,而是一次 国产万亿模型系统工程 跑通。
一套系统同时证明:国产 5 万卡能训1M 长上下文能用MoE 能按 token 动态激活真实应用调用量能打
LongCat-2.0 效果概览
国产算力
5 万+ 卡 1.6T MoE
业界首次在五万张国产卡上完成万亿参数模型全流程训练和推理。
稳态日吞吐 > 1T tokens
长上下文
1M token
原生支持百万上下文,采用 LSA 稀疏注意力,长文本定位更精准。
能“看见”整个项目代码
架构创新
ScMoE + 零计算专家 + MOPD
token 级动态激活,实际只激活 33B–56B 参数;MOPD 融合三组专家。
Agent × Reasoning × Interaction → 编程 / 推理 / 交互兼顾
广泛应用
OpenRouter Top 3
OpenRouter 全球调用量前三;月调用量在 Hermes、Claude Code、OpenClaw 分列全球第一、第二、第三。
Hermes #1 Claude Code #2 OpenClaw #3

架构拆解 Architecture LSA + N-gram + KVP

稀疏注意力如何撑起 1M 上下文
LongCat Sparse Attention 架构图:Query 经过轻量索引器选择 Top-k Key,并保留 Sink tokens 稳定稀疏注意力
图:LSA 在注意力前增加轻量 Indexer,只取少量相关 Key,并保留固定 Sink tokens 稳定分布。
一句话:LSA 不是让 1M token 全互看,而是每个 q_t 先查“索引”,只读 Top-k 相关 key + 少量 sink token,把注意力计算从稠密全扫压到可控稀疏读。
DSA 的瓶颈
Lightning Indexer 给每个 query 挑 top-k key,但打分输出不连续,且评分本身接近二次开销,索引器会反过来拖慢推理。
LSA 的改法
把索引器拆成三类可开关优化:短任务少开,超长上下文全开;Sink tokens 负责在稀疏 attention 下兜住数值稳定性。
SI
流感知索引
把零散 HBM 访问重排成连续顺序读,让 GPU/ASIC 更容易合并搬运。
CLI
跨层索引
相邻层关注 token 高度重合,做到一次打分、多层复用
HI
层级化索引
先粗筛 block,再细选 token,避免在百万上下文里逐 token 盲扫。

为什么换轴: MoE 稀疏度已经做到 97%(每次只激活 ~3% 专家),过了甜点区,再加专家边际收益就掉下来。N-gram Embedding 是另一条路: n-gram size = 5,单这一项就砸进 135B 参数,embedding 表大了约 2 个数量级(×100)。它和 MoE 各走各的稀疏维度,不打架

✓ 为什么选 N-gram
同样 135B 参数,砸到 N-gram 上回报远高于继续堆专家。顺手副作用: 大 batch 解码时显存 I/O 也降了,解码更快。
⚠ 但不能超 50%
N-gram 占总参数比例一旦过半,优势就消失。LongCat-2.0 把它控制在 10% 以内,作为补充而非主力——有甜点区的工具,不是越多越好。
普通 TOKEN EMBED  vs  N-GRAM EMBED · 同样参数预算更多语义槽
输入序列: "美 团 出 品" 普通 token embedding 每个字一个向量, 组合靠上层学 "美" e₁ vec[d_h] "团" e₂ vec[d_h] "出" e₃ vec[d_h] "品" e₄ vec[d_h] 词表 V ≈ 10⁵ · 一字一槽 补一张 N-gram 表 N-gram embedding (n=2~4 示意) 把"连续 N 个字的组合"也直接查表 "美团" e₁₂ 品牌名整体 "团出" e₂₃ 无意义切片 "出品" e₃₄ 动词短语 "美团出品" e₁₂₃₄ 语义整体 词表空间 × ~100, 每槽对应更具体的局部语义
不是堆参数堆出来的稠密,而是把同样的参数放进更细颗粒的局部上下文里。

Decode 阶段「KV-cache Parallelism, KVP」把 KV-cache 按 rank 切分,每个 rank 在本地 shard 上算 partial attention,再合并 partial results。原文:「在显存容量、显存 I/O 带宽与互联带宽都较为受限的条件下,在万亿参数大模型上跑百万上下文推理是一项不小的挑战」——KVP 是直接对症的解。

Naive Decode
整份 KV-cache 单点持有 → HBM 容量爆 / 带宽打满 / 互联拥塞
KVP Decode
KV-cache 按 rank 切片 → 本地算 partial → 合并;prefill–decode 解耦
打个比方:LSA = 先翻索引再读书——Indexer 是图书馆门口的检索卡片,告诉你这一千页里就第 12、87、340 页相关;Sink tokens 是管理员手里那几张"永远要看一眼"的镇馆卡片,保证翻索引不丢全局。KVP 则把这本"百万页大书"按工位切给不同读者各自读一段再汇总——这才让 1.6T 模型在国产 ASIC 上跑通 1M decode。

训练系统 Training Infra 3 痛点 × 3 解法 · +35% 吞吐

国产卡能不能稳?能不能塞下?能不能撑 1M?——三道关一道道过
痛点 ① 可靠性
国产卡生态不如 Nvidia
抖动 / 数值差异频发
自研确定性算子 + 故障自愈——5 万张卡跑月余整段无回滚
痛点 ② 显存
单卡显存 < H800 的 80GB
装不下 1.6T 模型
6D 并行 + 超节点 + ZeRO-1 优化器分片,把模型切到能塞下
痛点 ③ 长上下文
1M token
注意力计算 + 通信带宽双爆炸
LSA 算子 + 512 路 CP + 计算通信重叠
关键设计机制
算子层结果可复现通信与计算路径都做确定性。自研 Embedding / Flash Attention / LSA / MoE 多个确定性算子,同 seed 两次结果完全一致
数值层对齐高精度二叉树分段累加规约减少浮点漂移;真实 LLM 负载与高精度基线比对验证;再叠一层比特翻转检测
故障层无人工接管端到端监控自动识别 / 切流 / 恢复;修复链路必须先过压测才重新接入,防止"带病复工"
关键数字:5 万+ 张国产卡连训月余整段 0 回滚,系统吞吐对比朴素实现 +35%
DETERMINISM STACK · 三层叠加才换得 0 回滚
3-LAYER DETERMINISM STACK 50,000+ DOMESTIC GPUs · MONTH-LONG RUN L1 OPERATOR 算子层 · 同 seed bit-exact Embedding · Flash-Attn · LSA · MoE 自研确定性算子,两次跑完全一致 L2 NUMERICAL 数值层 · 浮点漂移可控 binary-tree reduce · LLM-load vs FP64 二叉树分段累加 + 高精度基线 + 比特翻转检测 L3 FAULT 故障层 · 端到端自愈 detect → drain → recover → stress-pass 压测复检后才重接入(防"带病复工") REPRODUCIBLE → NUMERICALLY EXACT → SELF-HEALING MONTH-LONG TRAINING TIMELINE ↓ naive 朴素实现 5× rollback 回滚 / 重训 vs LongCat 三层栈 ✓ 0 rollback 全程 0 回滚 THROUGHPUT +35% vs 朴素实现 确定性 ≠ 慢 规约重排反而省带宽 结果可复现 · 数值精确 · 故障自愈 ——三层缺一,5 万张国产卡跑月余必回滚一次 单做算子定 seed 还会被浮点漂移咬,单做监控找不到根因只能整段重训
6D PARALLELISM · 把模型切到 6 个维度铺到万卡上
TP 张量切多卡 Tensor Parallel CP 上下文切多卡 Context Parallel EP MoE 专家切多卡 Expert Parallel DP 数据切多卡 Data Parallel PP 按层切流水线 Pipeline Parallel EMBP N-gram 加速 Embedding Parallel 超节点(Super-pod) 每超节点 ≤ 48 台机器,节点内全互联走高带宽自有网络,节点间走 RoCE(以太网 RDMA,"以太网上的远程直读显存") → 同规模实测预训练吞吐 +30%,6 维切片之间的频繁通信不再是瓶颈 把 1.6T 模型切成 6 个维度铺到万卡,超节点让"切碎了"的通信跑得起来
显存优化四件套
ZeRO-1(优化器状态分片)+ 选择性重计算 + 分配器层 OOM 自动卸载 + 填充词元路由到零计算专家
Muon 优化器规模化
Muon(对标 AdamW 的新一代优化器)围绕 TP 并行 / DP 状态去冗余 / 对称矩阵乘核函数做专项工程,万卡稳定收敛
6D PARALLEL · SUPER-POD FABRIC · 把 1.6T 挂在万卡集群上
1.6T MODEL · 6 PARALLEL AXES · SHATTERED ONTO ~10K GPUs 1.6T PARAMS ⚠ H800 80GB 单卡装不下 TP 张量切分 · MatMul 跨卡 all-reduce CP 上下文切分 · 长序列 KV all-gather EP MoE 专家切分 · all-to-all 路由 DP 数据切分 · 梯度 reduce-scatter PP 按层流水线 · 微批 send/recv EMBP N-gram 嵌入并行 · 加速预测头 shatter ~ 10,240 GPUs VRAM OPT · 显存优化四件套 (1) ZeRO-1 优化器状态跨 DP 分片 (2) 选择性重计算 激活按层重算 · 省 activation (3) OOM 自动卸载 分配器层兜底 · 不炸 job (4) 填充 → 零专家 padding token 路由到零计算 Muon TP 并行 · DP 状态去冗余 · 对称矩阵乘核函数 → 万卡稳定收敛 SUPER-POD FABRIC · 节点内全互联 · 节点间走 RoCE 同规模预训练 +30% 吞吐 Super-pod 0 ≤ 48 台机器 节点内 全互联 自有网络 RoCE 以太网 RDMA Super-pod 1 ≤ 48 台机器 节点内 全互联 自有网络 6 轴切碎 · 通信会爆 → 超节点把高带宽域从单机扩到数百卡,6D 切片间通信不再是瓶颈
招式机制 + 收益
自研 LSA 算子配套确定性注意力 + KL loss算子。预热阶段 forward-only,一次前向同时拿到 KL 与梯度——训练成本降一半
512 路 CPall-gather Context Parallel 扩到 ≥ 512 路,直接吃原生 1M 数据;数据预取阶段重新打散均衡切分,防卡先空转
计算通信重叠ScMoE(带通信重叠的 MoE)让 MoE 跨机通信与分支计算并行;LSA 的 top-k 索引与 KV all-gather 完全重叠——通信被算掉而不是等掉
1M CONTEXT TRAINING · 单 step 时间线:朴素实现 vs 三招叠加
1M token · 单训练 step 时间线 注意力 O(N²) 与 KV 跨卡传输同时爆炸 — LSA × CP=512 × ScMoE 三招叠乘才能跑动 ⚠ 朴素 1M 训练 单卡装不下 · 注意力 O(N²) · KV all-gather 阻塞 Attention forward+backward O(N²) N=1M ≈ 单 step 算力 70% KV all-gather 阻塞 卡间空转 FFN cost / step = 1.0× ✓ LongCat 三招叠乘 LSA × CP=512 × ScMoE LSA 注意力 forward-only 同出 KL + grad 预热阶段成本 ×0.5 ScMoE Expert 计算 跨机通信 / KV all-gather 叠在算子下面跑 FFN top-k 索引重叠 CP=512 1M token 切到 512 卡 · 预取阶段重新打散均衡 train cost / step ↓ 50% 1M token / step 真跑得动 ① LSA O(N²) → 线性 ③ ScMoE 通信被算掉 ② CP=512 all-gather CP 优化后 step 长度 LSA 把算力打下来 × CP=512 把 1M 切到 512 卡 × ScMoE 把通信藏进计算 — 三招相乘,1M 训练才真跑得动
① Pretraining >35T tokens · 月余 5万+ ASIC · 0 rollback · +35% ② 1M-context 扩展 hundreds of B tokens + LSA + 512 路 CP ③ MOPD 后训练 → 详见卡 4 Agentic RL millions of accelerator-days 把有效 ctx 撑到 1M token
一句话: 国产卡训前沿模型 = 算子层稳 + 拓扑层切 + 长程层叠三件事——5 万卡月余 0 回滚不是运气,是把这三关都过了。

Agentic RL 配方 Post-training MOPD · Multi-teacher Online Policy Distillation

不做单一 RLHF,搭 3 个专家组 → 在线蒸馏 → 同时回灌主模型
「Agentic RL」= 让模型在真实工具环境里反复做多步任务(查资料、改代码、跑命令),由teacher 示范评分器告诉它哪一步好/不好,把"会规划+会用工具"的能力直接练进权重——不依赖更长的 prompt 或外挂脚手架。
教师 ① · Agent 能力组
教学生"自己动手干活"
把任务从头跑到尾
3 个原子能力:
· 复杂工具调用的参数精准度
· 多轮 API 里准确解析返回值
· 死循环 / 重复调用的自我纠错
教师 ② · 推理能力组
教学生"难题想深"
难度大就多想几步
2 个原子能力:
· 按问题难度自适应分配思考长度
· 多跳知识链路的连贯性
教师 ③ · 交互体验组
教学生"听人话 + 不胡说"
把对齐和安全揉到细节
2 个原子能力:
· 细粒度指令的字面遵循
· 有用性不打折下的安全边界
MOPD = MULTI-TEACHER ONLINE POLICY DISTILLATION · 学生每生成一句, 3 位老师同时纠
学生 主干 LongCat-2.0 每生成 1 句话 → 同步盯 教师 ① Agent 能力组 "如果是我, 会先调 search... 参数应该传 query=..." 教师 ② 推理能力组 "这题难, 多展开几步... 第三步推得不严谨" 教师 ③ 交互体验组 "指令第 2 条没遵循... 这句话越线了" 融合 3 路反馈 3 张"如果是我"小纸条 对照学生答案 实时调整下一步 (online) 学生练的就是它实际会说的话——不被"过期教材"喂偏
离线蒸馏 ✗
老师先把题做完存成数据集,学生再去背。学生越练越偏——自己实战时分布跟教材对不上,这就是 训练-推理 mismatch(学的时候 ≠ 实际用的时候)。
在线蒸馏 ✓
学生一边自己说话,老师在旁边实时纠。学生练的就是它实际会说的话,不存在分布错位
对比项传统 RLHFMOPD
反馈来源1 个奖励模型,信号粗3 位专家教师,各管一条线,信号精细
能力扩展新加一项要重训整条 RL pipeline加一个教师就行,模块化
训练-推理一致性容易飘(reward hacking)实时对齐,不飘
一句话: MOPD = 3 个专家组 × 在线纠错 × 模块化扩展——每位老师管一条线,学生说一句改一句,不被过期教材喂偏。

评测套件 Benchmarks 5 个基准 + 推理参数

官方点名的 5 个评测套件 + 三套采样参数 + 裸模型评测设计
基准定位采样参数
FORTE
Full-cycle Office Real-world Task Evaluation
15 类岗位的真实办公 agent 任务「多步规划 + 工具调用」
RW-Search
美团自建
搜索智能体基准,裸模型评测「仅 basic Search + Browse,不做上下文管理」
IMO-AnswerBench 数学奥赛题集,长链推理 T=1.0 / top_p=0.95
Claude Code 沙盒
8c16g
仓库级修改 / 自动化任务执行(Anthropic agent harness) T=1.0 / top_p=0.95
agent 6h timeout
Claude Code 沙盒
4c8g
更紧的资源约束;problematic tasks corrected T=1.0 / top_p=1
IMO-AnswerBenchT=1.0 / top_p=0.95
Claude Code 8c16gT=1.0 / top_p=0.95 / 6h
Claude Code 4c8gT=1.0 / top_p=1
打个比方:很多搜索 agent 跑分靠外挂工程把上下文管理、query rewrite、re-ranking 全堆在 harness 里——分数高、但本体能力看不清。RW-Search 选了相反路线:只给模型 basic Search + Browse 两件工具,不做任何上下文管理,让裸模型「不依赖外部脚手架的本体能力」直接暴露在评测下。把搜索 agent 能力作为可量化训练目标,目的是约束训练而不是刷榜。
5 个基准官方点名,3 套采样参数公开,对手画像「leading proprietary models」——具体分数与对比模型版本请去 blog 官方动态表查看。

推理优化 Inference PD 分离 · 模型/设备/部署三层

招式机制
absorb 矩阵吸收把一些原本要单独算出来的中间矩阵"吸收"进相邻矩阵乘里。Prefill/Decode 两段通用,少一次显存来回
indexer 与 MLA 并行LSA 的轻量索引器和 MLA(Multi-head Latent Attention)开头部分同时启动,索引器开销被 MLA 计算盖住,不再单独占时间
KVP 切 KV cache把巨大的 KV cache 切到多张卡上协同读写。Decode 阶段的内存压力第一次被横向摊开
ScMoE:让 dense 流和 MoE 流真正同时跑
不只是"计算和通信重叠"——主动把国产卡上的核心数分给 dense 分支和 MoE 分支,两条流真并行,不再轮流占算力。
MODEL-LAYER · 模型层 4 招都在压「等待」
Four model-layer tactics, one target · 都在抢回 forward 里的等待时间1 Absorb · 矩阵吸收naiveAHBMW_midHBMB2 次显存absorbA · W_midB省 1 次中间矩阵吸收进相邻乘法 · Prefill / Decode 两段通用2 Indexer ∥ MLA · 索引器藏在 MLA 阴影里naiveMLA headIndexer串行parallelMLA headIndexer被 MLA 完全覆盖同时启LSA 索引器与 MLA 同时启动 · 索引器开销几乎为零3 KVP · KV cache 横向切到多卡naiveKVfullGPU 0单卡爆decode 瓶颈KVP splitKV/4G0KV/4G1KV/4G2KV/4G3协同读写decode 显存压力第一次被横向摊开 · 长序列不再爆4 ScMoE · 双流真并行(不是算-通轮流占用)naiveall SMsDenseMoE exptDense轮流ScMoESMs splitA▸Dense streamB▸MoE stream同时跑国产卡核心切两堆 · Dense / MoE 各占一份,不是计算-通信交替4 招都在压同一个东西 — 单次 forward 里的「等待时间」
招式机制
Super Kernel图模式已经消掉算子之间的空隙,但算子内部还有"启动开销"。把多个小算子合并成一个大核,总启动次数直接砍掉
Weight Prefetch国产卡显存带宽吃紧但 L2 cache 大。提前一拍把下一个算子要用的权重塞进 L2,I/O 藏进前一个算子的计算里
Scale Up & Out200 Gbps 网卡按 layer-wise 在 Prefill/Decode 节点之间传 KV cache;KV cache store 建在主机 RDMA 上;TP/SP/KVP 全留在高速 scale-up 域
THREE TRICKS FOR DOMESTIC ASIC · 针对国产卡的瓶颈定制算法
① Super Kernel 融合小算子 · 砍启动开销 naive 每个算子各自启动 launch compute fused 合成一个大核 · 一次启动 one Super Kernel −6× launch 示例: MLA decode 路径 RMSNorm + Q/K/V proj + RoPE + Indexer + MLA head → 一个 kernel 全搞定 图模式消算子空隙, 融合消算子启动开销 ② Weight Prefetch 提前一拍 · I/O 藏进计算 HBM 带宽吃紧 L2 cache 国产卡很大 compute lane op N op N+1 op N+2 I/O lane load W(N+1) load W(N+2) ... overlap 藏起来 t 关键 trick 用大 L2 当 staging buffer, 下一算子权重在本算子算时 从 HBM → L2,下一拍直接命中 把"HBM 带宽不够" 换成"L2 容量够用" ③ Scale Up & Out 按通信量分域 · 各走各的路 scale-up domain 高带宽 · 低延迟 Prefill node TP · SP · KVP 域内通信 Decode node TP · SP · KVP 域内通信 200 Gbps · layer-wise KV KV cache store host RDMA · 共享池 分配规则 scale-up: TP / SP / KVP(高频小包) scale-out: KV cache 跨节点搬运 host RDMA: KV store 持久化 高频通信留域内, KV 大块过200G 网卡 ▸ 不是把通用 GPU kernel 移植过来,而是针对国产卡的启动开销 / 显存带宽 / 互联拓扑专门改算法
EPLB · Expert-Parallel Load Balancing 专家并行负载均衡
EP 越大越容易负载不均:热门专家把单卡打满,整批请求被它一个人拖住。EPLB 把统计采集分布计算异步化——一边在线收专家命中频率,一边离线算新的专家放置策略,再热更新到推理节点,不阻塞主路径。这是 EP128 能真正跑满的最后一块拼图。
EPLB · ASYNC EXPERT LOAD BALANCING · EP128 不让单卡热点拖整批
EP128 部署:从「单卡热点」到「全局均衡」 NAIVE EP128 · static placement 128 张卡静态切,热门专家把单卡打满 0 100% Expert 17 · GPU#42 单卡 100% · 整批被它拖住 per-GPU expert load · sample of 128 cards EPLB · async rebalanced 热门专家被复制 / 重排,全局均衡 0 100% ~60% ✓ no straggler · throughput unblocked Expert 17 复制到多卡 · 流量分摊 per-GPU expert load · same 128 cards after rebalance HOW · async rebalance loop · 主推理路径零阻塞 ① ONLINE · inference nodes 在线收专家命中频率 hit_count[expert_id] ++ stats ② OFFLINE · planner 异步算新的专家放置策略 solve placement · 128 GPUs plan ③ HOT UPDATE · 不阻塞主路径 推理节点边跑边切专家映射表 swap routing table · no stall continuous loop · 边收数据 边算策略 边热更新 不是等高峰过了再均衡 — 而是 collect / plan / hot-swap 三件事并行跑,主推理零阻塞
节首那张 Prefill vs Decode 大图就是 §5 的骨架,后面所有招式都是在给这两段补血——模型层动算法、设备层榨硬件、部署层调拓扑
Source · https://longcat.ai/blog/longcat-2.0/