为什么现在的大模型 (LLM) 都在用 Left Padding?

在自然语言处理(NLP)领域,当我们处理长度不一的句子时,必须使用 Padding(填充) 将它们补齐到相同的长度,以便放入矩阵中进行批量计算。

但在大语言模型(如 ChatGPT、LLaMA、DeepSeek)时代,如果你仔细观察源码,会发现它们默认使用的是 Left Padding(左侧填充),这与早些年 BERT 时代的 Right Padding(右侧填充) 截然不同。

为什么会有这种转变?这与模型底层架构(Encoder vs. Decoder)有着必然的联系。


一、 BERT 时代的习惯:Right Padding

在 BERT 时代,我们主要使用的是 Encoder(编码器)架构。这类模型擅长文本理解(如分类、情感分析),而不是生成。

假设模型的最大输入长度是 10,而我们的句子转换成 Token 后只有 6 个数字(例如:5, 7, 6, 2, 9, 1)。

使用 Right Padding(右侧填充):
[5, 7, 6, 2, 9, 1, 0, 0, 0, 0]

在 Encoder 架构中,使用右侧填充非常符合人类的阅读习惯。模型通过 Attention 掩码(Mask)忽略掉后面的 0 即可,一切顺理成章。


二、 现代大模型时代:为什么必须用 Left Padding?

目前的大语言模型(LLM)几乎全部采用了 Decoder-Only(仅解码器)架构,这类模型的核心任务是“自回归生成”(Autoregressive Generation),即根据前面的词,预测下一个词

如果我们在 Decoder 架构中强行使用 Right Padding,会发生什么灾难?

1. 灾难演示:Right Padding 的语义断层

假设我们把刚才补齐的句子喂给模型让它继续生成:
输入:[5, 7, 6, 2, 9, 1, 0, 0, 0, 0]

模型在预测下一个词时,它是接在最后一个 0 后面的!生成的完整句子可能会变成:
输出:[5, 7, 6, 2, 9, 1, 0, 0, 0, 0, 5, 2, 3]

问题在哪里?
直观上来看,原本连贯的语义被一堆无意义的 0 给硬生生打断了。模型在生成 5 的时候,它看到的前一个词是填充符 0,而不是真正的词 1,这会导致严重的语义断层和预测偏移。

2. 正确解法:Left Padding

如果我们使用左侧填充:
输入:[0, 0, 0, 0, 5, 7, 6, 2, 9, 1]

当模型继续生成时,新生成的 Token 直接紧跟在真实文本的最后面:
输出:[0, 0, 0, 0, 5, 7, 6, 2, 9, 1, 5, 2, 3]

核心优势:
采用 Left Padding,可以确保在同一个 Batch 内,所有样本的“最后一个真实 Token”都处于最右侧。这样,模型预测的下一个节点,就是紧挨着真实文本的下一个位置,完全避免了填充符插入导致的语义断层,也极大地简化了批量生成时的代码逻辑。


三、 面试高频考点总结 (Cheat Sheet)

如果在面试中被问到“为什么 LLM 用 Left Padding?”,你可以按照以下逻辑清晰作答:

  1. 架构差异: 以前用 Right Padding 是因为 BERT 等 Encoder 模型主要做理解,符合阅读习惯;现在 LLM 是 Decoder-Only 架构,核心任务是生成。
  2. 位置对齐: 在批量处理(Batching)时,我们需要对齐句子的末尾。使用 Left Padding 可以确保 Batch 中所有序列的最后一个真实 Token 都在末尾对齐
  3. 防止语义断层: 自回归生成依赖于前一个词预测下一个词。如果用 Right Padding,新生成的词会被无意义的 Padding 隔开,导致模型迷惑;Left Padding 能保证生成的序列是连续且完整的。

一句话总结: Left Padding 是 Decoder-Only 架构在批量生成时,为了保证最后一个真实 Token 能够正确衔接下一个生成词的必然工程选择。
在这里插入图片描述


一文读懂大模型 MoE 架构:它是如何工作的?Router 怎么实现?

随着大模型参数量向万亿级别迈进,传统的“稠密(Dense)”模型在算力和显存上面临着巨大的瓶颈。为了解决这个问题,MoE(Mixture of Experts,混合专家模型) 架构成为了当前顶尖大模型(如 GPT-4、DeepSeek 等)的标配。

今天,我们就来扒一扒 MoE 的底层逻辑:它到底长什么样?它的核心“路由器(Router)”又是如何用代码和公式实现的?


一、 什么是 MoE 网络?它的核心结构是什么?

MoE 是一种基于 Transformer 架构的模型创新 。你可以把它想象成一个“外包公司”:以前遇到问题,公司里所有人(所有参数)都要放下手头工作一起来想办法(Dense 模型);现在公司划分了不同的专家组,遇到特定问题,只派最擅长的专家去解决(MoE 模型)。

具体来说,MoE 模型主要由两个关键部分组成:

  • 稀疏 MoE 层 (Sparse MoE Layer):

  • 在传统的 Transformer 中,前馈神经网络(FFN)层是统一的 。

  • MoE 架构直接用“稀疏 MoE 层”替换掉了这个 FFN 层 。

  • 这个层里面包含了若干个“专家”(比如 8 个) 。

  • 每个专家本身就是一个独立的神经网络(通常也是 FFN,但也可以是更复杂的网络,甚至是嵌套的 MoE) 。

  • 门控网络 / 路由器 (Gating Network / Router):

  • 它是 MoE 的“前台调度员”,负责决定把当前输入的 Token 发送给哪几个专家处理 。

  • 例如,输入 Token “Parameters” 可能被发送给专家 1,而 “More” 可能被发送给专家 2 。

  • 有时候,为了兼顾效果,一个 Token 甚至会被发送给多个专家同时处理 。

  • 面试考点: 路由器的调度规则不是人工写的,它内部包含可学习的参数,是在预训练阶段与网络其他部分一起训练出来的 。


二、 核心解密:Router(路由器)是怎么实现的?

在面试中,面试官大概率会让你写出 Router 的计算公式。其实它的本质非常简单:一个输出维度等于专家数量的分类神经网络

Router 通常采用 Softmax 函数来决定输入的分配 。假设我们有 NNN 个专家,Router 会输出一个概率分布,代表当前 Token 分配给各个专家的概率 。

核心公式如下:

P(ei∣x)=exp⁡(Wi⋅x+bi)∑j=1Nexp⁡(Wj⋅x+bj)P(e_{i}|x) = \frac{\exp(W_{i}\cdot x + b_{i})}{\sum_{j=1}^{N}\exp(W_{j}\cdot x + b_{j})}P(eix)=j=1Nexp(Wjx+bj)exp(Wix+bi)

公式参数解析:

  • xxx:当前输入的 Token 向量 。

  • WiW_{i}Wibib_{i}bi:分别是第 iii 个专家的权重矩阵和偏置项(这就是 Router 需要学习的参数) 。

  • P(ei∣x)P(e_{i}|x)P(eix):最终计算出的结果,即输入 xxx 被分配给第 iii 个专家的概率 。

💡 通俗理解: Router 就是拿着输入 xxx,跟每个专家的“简历(Wi,biW_i, b_iWi,bi)”做个内积打分,最后通过 Softmax 把分数转换成概率,谁的概率高,就把 Token 派给谁。


三、 面试通关:MoE 相比 Dense 模型有什么优缺点?

理解了原理,我们还需要掌握 MoE 在工程落地上的价值与痛点,这是展现你 Senior 视角的关键。

在 Dense Model 中,所有的参数在每次前向传播时都会被激活并参与计算 。而 MoE 则是按需激活特定的 Expert 参与计算 。

1. MoE 的绝对优势

  • 大规模参数扩展: MoE 可以在不显著增加计算资源的情况下,大幅度增加模型的参数容量(例如达到万亿参数) 。实际参与计算的参数仅仅是一小部分 。

  • 极致的计算效率: 因为推理时只有部分专家被激活,所以与参数量相同的 Dense 模型相比,MoE 的前向传播计算量大大减少,推理速度更快 。

2. MoE 的痛点与局限(高频考点)

  • 通用能力挑战: MoE 让不同专家专注于不同领域的细粒度知识,所以在特定垂类领域表现极佳 。但是,如果是需要处理广泛语言现象的“通用大模型”,专家之间的分工可能就没那么清晰了,此时 MoE 相对 Dense 模型的优势可能会减弱 。

  • 微调(Fine-tuning)困难: 由于 MoE 包含稀疏激活机制,在下游任务进行微调时,往往不如 Dense 模型那样简单直接 。它需要更复杂的调参技巧和训练策略(例如防止某些专家“旱的旱死,涝的涝死”的负载均衡问题) 。


给面试者的准备建议:
熟练掌握本文中的 Transformer 结构对比、Softmax 路由公式,并能清晰条理地讲出“参数容量与计算量解耦”的核心思想,足以应对绝大多数关于 MoE 架构的考察。

print('hello world')
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐