MuonClip
Muon 抛弃 Adam 的二阶矩,用全局 RMS 缩放替代,以牺牲少量稳定性换翻倍的令牌效率和更低的计算开销。
\text{AdamW} \\ m_t = \beta_1 m_{t-1} + (1-\beta_1) g_t \\ v_t = \beta_2 v_{t-1} + (1-\beta_2) g_t^2 \\ \theta_t = \theta_{t-1} - \eta \cdot \frac{m_t / (1-\beta_1^t)}{\sqrt{v_t / (1-\beta_2^t)} + \epsilon} - \lambda \theta_{t-1} \quad \\ \text{} \\ \text{Moun} \\ m_t = \beta_1 m_{t-1} + (1-\beta_1) g_t \\ \text{RMS}(g_t) = \sqrt{\frac{1}{d} \sum_{i=1}^d g_{t,i}^2} \\ \hat{g}_t = g_t \cdot \frac{\text{target-rms}}{\text{RMS}(g_t) + \epsilon} \\ \theta_t = \theta{t-1} - \eta \cdot m_t - \lambda \theta_{t-1}MuonClip 解决 Muon 规模化训练时的Attention Logits 爆炸问题(注意力层的Q K权重Wq Wk快速增长,导致 Q・K^T 的点积失控式增大),适配万亿参数 MoE 模型的规模化训练。
- 前向传播:旧权重 Wq/Wk → 计算 Q/K → logits → loss
- 反向传播:计算所有参数(含 Wq/Wk)的梯度
- Muon 梯度更新:用梯度更新所有参数(得到新的 Wq/Wk)
- (额外步骤)QK-Clip 修正:
a. 用之前得到的每个注意力头的 最大Logits(Smax^h)
b. 若 Smax^h > τ,逐头缩放 Wq/Wk(原文中阈值 τ=100)
Pre Training
知识数据重写:通过精心设计的提示词,引导大型语言模型在保持事实准确性的前提下,以多种风格和视角重述原始文本,增强语言多样性
数学数据重写:参考 SwallowMath 的方法,将高质量数学文档重述为 “学习笔记” 风格;同时,将其他语言的高质量数学材料翻译为英文,增加数据多样性
MoE稀疏度缩放定律
稀疏度(Sparsity)= 激活专家数 / 总专家数
在激活参数总量固定的前提下增大稀疏度增加总专家数,同时保持激活专家数不变,可以持续降低train和valid的损失,提升模型性能。
| 稀疏度 | 激活专家vs总专家数量 | 计算量倍数 |
| 8 | 8 64 | 1.69 |
| 16 | 8 128 | 1.35 |
| 32 | 8 256 | 1.15 |
| 48 | 8 384 | 1 |
| 64 | 8 512 | 近似大于1 |
Attention Head 数量
Deepseek-V3 将注意力头数设置为模型层数的两倍(128个)
文章中进行了验证。序列长度为 128k 时,将注意力首脑数量从 64 增加到 128,同时将专家总数固定在 384,推理 FLOP 数量增加 83%,验证损失改善 0.5% – 1.2%
Post Training
Dataset
构建了覆盖多领域的大规模指令微调数据集,采用 Kimi 1.5 及其他内部领域专家模型生成候选响应,随后使用 LLM 或基于人类的评判进行自动质量评估和筛选。
Agentic Data
自动生成复杂Prompt《WizardLM: EMPOWERING LARGE PRE-TRAINED LANGUAGE MODELS TO FOLLOW COMPLEX INSTRUCTIONS》
目标:能够自主使用陌生工具
阶段 1:工具规格生成(构建基础工具库)
- 真实工具引入:从 GitHub 仓库直接获取 3000+ 真实 MCP(模型上下文协议)工具,复用其高质量工具规格(含接口定义、参数约束、功能描述)。
- 合成工具扩展:通过分层领域生成策略构建 20000+ 合成工具,步骤如下:
- 先确定核心领域类别(如金融交易、软件开发、机器人控制等);
- 从核心类别衍生细分应用领域(如软件开发下的代码调试、自动化测试等);
- 为每个细分领域生成专用工具,明确工具接口、操作语义和输出格式,确保与真实工具功能互补。
- 工具库整合:将真实工具与合成工具合并,确保功能无重复且覆盖主流智能体应用场景。
阶段 2:智能体与任务生成(匹配 “执行者” 与 “目标”)
为工具库中的工具组合分配对应的智能体和任务,确保交互场景的多样性。
- 智能体多样化构建:
- 合成不同系统提示词,定义智能体的专业领域、行为模式;
- 为每个智能体分配工具库中的不同工具组合;
- 最终生成数千个具有独特能力和行为特征的智能体,避免交互模式单一。
- 任务分层设计:
- 针对每个智能体 – 工具组合,生成从简单到复杂的任务;
- 为每个任务附加明确准则:包括成功标准、预期工具使用路径、评估检查点,确保任务可评估。
阶段 3:轨迹生成与质量筛选(产出最终训练数据)
模拟智能体完成任务的完整过程,生成交互轨迹并筛选高质量数据,核心是 “模拟保真 + 真实校准”。
- 多轮轨迹模拟:
- 用户模拟:用 LLM 生成具有独特沟通风格的用户角色,与智能体进行多轮对话(如提出任务需求、补充说明、反馈结果),还原真实交互场景;
- 工具执行环境:通过专用模拟器执行智能体的工具调用,维护任务状态(如记录工具输出结果、环境变化),并引入可控随机性(如工具调用部分失败、返回异常结果),生成多样化轨迹;
- 轨迹记录:完整保存智能体 “理解需求→选择工具→调用工具→接收反馈→调整策略” 的全流程,包括每步的输入、工具调用参数、输出结果和推理过程。
- 真实环境校准:
- 针对编程、软件工程等对真实性要求极高的场景,引入真实执行沙箱;
- 智能体在沙箱中执行真实工具调用,通过客观指标获取反馈,确保数据接地性。
- 质量筛选:
- 由 LLM 担任评估者,根据任务准则判断轨迹是否 “成功完成任务”“工具调用合理”“推理逻辑连贯”;
- 仅保留满足成功标准的轨迹,同时允许任务完成策略的自然多样性,最终形成数万条高质量训练数据。
# Tool Declaration Message
<|im_begin|>
tool_declare
<|im_middle|>
# Tools
{{ tool declaration content (TypeScript Format) }}
<|im_end|>
# Tool Definition in TypeScript
namespace functions {
// Get weather for a location and date
type get_weather = ( _ : {
// City and country e . g . Beijing , China
location : string ,
// Date to query , format in ‘%Y -% m -% d ’
date ?: string
}) = > any ;
// Simple calculator
type Calculator = ( _ : {
// Arithmetic expression in javascript
expr ?: string
}) = > any ;
}
# Model’s Response Messages
<tool_call_section_begin|>
<|tool_call_begin|>
// call_id part
functions.{{tool name}}:{{counter}} #counter是自增计数器
<|tool_arguments_begin|>
{{ json serialized call arguments }}
<|tool_call_end|>
<|tool_call_begin|>
// more tool calls
<|tool_call_end|>
<|tool_call_section_end|>
# Tool Result Message
<|im_begin|>
tool
<|im_middle|>
## Results of {{call_id}}
{{ execution result content }}
<|im_end|>
RL
在K1.5的基础上增加了:
- 预算控制:为不同任务设置最大 token 限制,超过该令牌预算的响应会被截断并施加惩罚,激励模型在规定范围内生成解。实证上,这种方法显著提升了模型的令牌效率,鼓励在所有领域实现简洁而有效的解。
- PTX 损失:由手工挑选的高质量样本组成的数据集,通过辅助 PTX loss将其整合进强化学习目标,防止高质量数据的遗漏,降低了对训练体系中明确存在的有限任务集的过度拟合风险,显著提升了模型在更广泛领域的推广能力。
- 温度衰减:动态调整采样温度,平衡训练前期探索与后期收敛