Skip to content

5.6 小模型 Scaling 实践

大规模语言模型的 Scaling Law(Kaplan et al., 2020)指出,模型性能主要由参数量、训练数据量和训练计算量三者共同决定,而架构细节的影响几乎可以忽略。然而,当参数预算降至数亿甚至数千万量级时,这一结论不再完全成立——架构设计的每一个选择都会对最终效果产生显著影响。本节围绕小模型场景下的 Scaling 实践,讨论两个核心问题:如何分配深度与宽度,以及如何设定具体的参数配置。


小模型性能雷达图对比

图 5-21:不同参数量小模型在多项基准任务上的性能雷达图对比。更深的模型(相同参数量)在多数任务上表现更优。

5.6.1 「深而窄」vs「矮胖」:深度与宽度的取舍

Transformer 模型的参数规模几乎只取决于两个超参数:隐藏层维度 dmodel 和层数 nlayers。在总参数预算固定的前提下,这两个参数存在天然的此消彼长关系:

  • dmodel 大、nlayers:得到一个「矮胖」模型,每一层的表征能力强,但层数少、抽象层次有限。
  • dmodel 小、nlayers:得到一个「深而窄」模型,层数多、能逐层构建更深的抽象表示,但每一层可用的维度较窄。

传统 Scaling Law 对二者并无明确偏好,但 MobileLLM(Liu et al., 2024)在 125M 和 350M 量级上的系统实验揭示了一个重要发现:在小模型中,深度比宽度更重要。具体而言,当参数量固定在 125M 时,30~42 层的「狭长」模型在常识推理、问答、阅读理解等 8 项基准上均显著优于 12 层左右的「矮胖」模型。这意味着,在小参数预算下,增加层数所带来的多层次抽象能力,比增加单层宽度所带来的表征丰富度更具性价比。

dmodel 的最小阈值

然而,「深而窄」的「窄」存在下限。实践经验表明:

  • dmodel<512,词嵌入维度过低导致的表征坍塌问题非常明显。在采用多头注意力时,每个注意力头分到的维度 dhead=dmodel/nheads 过小,注意力机制无法有效区分不同的语义模式。此时增加层数也难以弥补这一底层瓶颈。

  • dmodel512,词嵌入具备了足够的表征能力,此时适当增加层数能带来稳定的效果提升。

  • dmodel>1536,继续增加宽度的边际收益递减,而增加层数的优先级更高——即在同样的参数增量下,多加几层比拓宽维度更能带来「性价比」更高的效果增益。

综合来看,512 是小模型 dmodel 的实用下限,768 是中等规模小模型的常见选择,而超过 1536 后应优先考虑加深而非加宽。


5.6.2 小模型参数配置经验

以开源项目 MiniMind 为例,该项目从零训练了多个参数量级的小型语言模型(26M~145M),其架构遵循 Llama 风格(RMSNorm + RoPE + SwiGLU),并提供了 Dense 和 MoE 两种变体。下表展示了不同型号的完整参数配置:

模型总参数量词表大小dmodelnlayersKV HeadsQ HeadsdheadFFN 中间维度备注
MiniMind2-Small26M640051282864~1365极小体积基线
MiniMind2104M64007681628962048主力 Dense 模型
MiniMind2-MoE145M640064082880~13651 共享 + 4 路由专家

注:FFN 中间维度按 dmodel×8/364(向上对齐到 64 的倍数)自动计算,以适配 GPU 并行粒度。

从这张表中可以提炼出若干配置经验:

1. 词表大小与「头重脚轻」问题

在大模型中,Embedding 层参数占总参数的比例微乎其微(例如 Llama-3 的 128K 词表仅占总参数的约 3%)。但在小模型中,情况截然不同:若采用 Qwen2 的 15 万词表,仅 Embedding 层就需要 150000×51277M 参数,已经超过了 MiniMind2-Small 的全部参数量。因此,MiniMind 选择了仅 6400 词的自定义分词器,将 Embedding 层参数控制在 6400×512=3.3M,确保绝大部分参数用于 Transformer 核心计算层。

这一策略的代价是分词粒度较粗、编码效率低于 Qwen2 或 ChatGLM 等中文友好型分词器,但在极小参数预算下,保持编码层与计算层的参数比例平衡远比分词效率更重要。

2. GQA(分组查询注意力)的应用

MiniMind2 系列统一采用 2 个 KV Heads、8 个 Q Heads 的 GQA 配置(每 4 个 Query Head 共享 1 组 KV)。相比 MiniMind-V1 的 MHA(每个 Query Head 独立拥有 KV),GQA 在几乎不损失效果的前提下显著降低了 KV Cache 的显存占用,对推理部署非常友好。在小模型中,GQA 还起到了正则化的作用——共享 KV 参数减少了过拟合风险。

3. 权重绑定(Weight Tying)

MiniMind 采用了 Embedding 层与输出投影层(LM Head)共享权重的策略。对于 dmodel=512、词表大小 6400 的配置,这一技巧可节省 6400×512=3.3M 参数,占 26M 模型总参数的约 12.7%。在小模型中,权重绑定不仅节省参数,还能起到隐式正则化的效果——迫使输入表示空间与输出预测空间保持一致,有助于收敛。

4. FFN 中间维度的自动计算

MiniMind 沿用了 Llama 风格的 SwiGLU FFN,其中间维度按 dmodel×8/3 计算后向上对齐到 64 的倍数。以 dmodel=768 为例:768×8/3=2048,恰好是 64 的整数倍,无需额外对齐。对齐到 64 是为了匹配 GPU Tensor Core 的计算粒度(通常要求矩阵维度为 8 或 64 的倍数),从而获得最优的硬件利用率。

MoE 架构的小模型结构示意

图 5-22:MoE 架构在小模型中的应用。共享专家处理通用特征,路由专家处理特定子任务,实现以较低推理成本获得更大模型容量。

5. MoE 的参数效率

MiniMind2-MoE 采用 1 个共享专家 + 4 个路由专家的 DeepSeek 风格 MoE 架构。虽然总参数量达到 145M,但每个 Token 实际激活的参数量远小于此(仅共享专家 + Top-K 路由专家被激活)。这使得 MoE 模型在推理时的计算成本接近于 Dense 小模型,却拥有更大的模型容量。对于算力受限但希望提升效果的场景,MoE 是值得考虑的架构选择。


5.6.3 配置建议速查

结合 MobileLLM 的研究结论与 MiniMind 的实践经验,可以给出以下面向不同参数预算的配置建议:

参数预算推荐 dmodel推荐 nlayers词表策略注意力机制关键注意事项
< 50M5128~12精简词表(< 10K)GQA必须启用权重绑定;词表越小越好
50M~200M640~76812~20精简词表(< 20K)GQA优先加深层数;可考虑 MoE
200M~500M768~102420~30中等词表(< 50K)GQA深度优先原则仍然适用
> 500M1024~204824~48标准词表GQA / MHA逐步过渡到标准 Scaling Law

注意,上表为经验性建议而非严格公式。实际配置应根据具体任务、训练数据量和硬件条件进行调整,但「深度优先、词表精简、启用权重绑定」三条原则在小模型场景下具有较高的普适性。


5.6.4 小结

小模型的 Scaling 实践与大模型存在本质差异。经典 Scaling Law 假设架构影响可忽略,但在参数预算降至数亿以下时,架构选择——尤其是深度与宽度的分配——对性能有决定性影响。核心经验可归纳为三点:

  1. 深度优先:在 dmodel512 的前提下,优先增加层数。30 层以上的「狭长」模型在多项任务上持续优于同参数量的「矮胖」模型。

  2. 守住宽度下限dmodel=512 是实践中的安全下限。低于此值时,注意力头维度不足导致的表征坍塌无法通过增加深度弥补。

  3. 全局参数效率:在小模型中,Embedding 层、LM Head 等「非核心」组件的参数占比远高于大模型。通过精简词表、权重绑定、GQA 等手段压缩这些组件的参数开销,将有限的参数预算集中于 Transformer 核心层,是小模型获得最优性价比的关键策略。