原文地址 第7章 SmolLM3
7. SmolLM3
SmolLM3 的知名度或许远不及本文介绍的其他大语言模型,但我认为它依然是一款值得纳入分析的典型模型。如下图所示,这款 30 亿参数的模型体量小巧、部署灵活,实际性能表现却十分亮眼,参数量规模介于 Qwen3 的 1.7B 与 4B 版本之间。
此外,与 OLMo 系列类似,该模型也公开了详尽的训练细节 —— 这种做法在行业内并不常见,始终具备很高的参考价值。

图 20:SmolLM3 官方发布博文(https://huggingface.co/blog/smollm3)中的标注示意图,对比了 SmolLM3 与 Qwen3 1.7B、Qwen3 4B、Llama 3 3B 及 Gemma 3 4B 的模型胜率表现
从下方的架构对比图中可见,SmolLM3 的整体架构设计较为常规。不过,它采用的 NoPE(无位置嵌入)方案,是其架构中最具特点的设计。

图 21:Qwen3 4B 与 SmolLM3 3B 架构并排对比图
7.1 无位置嵌入(NoPE)
在大语言模型领域,NoPE 并非全新概念,其思路最早可追溯至 2023 年的论文《位置编码对 Transformer 长度泛化能力的影响》。该方法的核心是移除模型中显式的位置信息注入机制 —— 比如早期 GPT 架构中经典的绝对位置嵌入层,或是如今主流的旋转位置编码(RoPE)。
在基于 Transformer 的大语言模型中,位置编码通常是不可或缺的组件,因为自注意力机制本身会独立处理每个 token,不感知序列的先后顺序。绝对位置嵌入通过新增一层嵌入层,为每个 token 的嵌入向量叠加位置信息,以此解决顺序感知问题。

图 22:出自我的著作《从零构建大语言模型》(https://www.amazon.com/Build-Large-Language-Model-Scratch/dp/1633437167)的修改示意图,阐释绝对位置嵌入的原理
而旋转位置编码(RoPE)则通过另一种思路实现:根据 token 所在的序列位置,对查询向量和键向量进行旋转变换,以此融入位置信息。
但在 NoPE 层中,完全不会添加任何形式的位置信号:既没有固定位置编码,也没有可学习位置嵌入,更没有相对位置编码,不引入任何位置相关的额外信息。
尽管没有显式的位置嵌入,模型依然能够识别 token 的先后顺序,这要归功于因果注意力掩码。该掩码会限制每个 token 只能关注到它之前的 token,无法获取未来位置的信息。如此一来,位置 t 处的 token 只能看到位置≤t 的所有 token,从结构上保留了自回归的序列顺序。
因此,虽然没有显式添加位置信息,但模型的结构本身已经内置了隐式的方向约束;在常规的梯度下降训练过程中,只要对优化目标有帮助,大语言模型就能自主学习并利用这种隐式顺序特性。(更多理论推导可查阅 NoPE 原论文中的定理证明)
整体而言,NoPE 相关论文不仅证实了无需显式注入位置信息模型也能正常工作,还发现 NoPE 具备更优的长度泛化能力 —— 也就是说,随着输入序列长度增加,大语言模型的回答性能下降幅度更小,具体效果如下图所示。

图 23:NoPE 原论文(https://arxiv.org/abs/2305.19466)中的标注示意图,展示了 NoPE 更优异的长度泛化表现
需要注意的是,上述实验是基于参数量约 1 亿的小规模 GPT 风格模型、在较短上下文长度下完成的。这些结论能否直接迁移到如今的大规模大语言模型上,目前尚无定论。
也正因此,SmolLM3 团队大概率选择了仅在每 4 层中应用一次 NoPE(或者说移除 RoPE)的折中方案。