跳过主要内容
CookLLM logoCookLLM 文档

从 token ids 到 logits

会员专享

理解 Decoder-only Transformer 如何把 token ids 变成 next-token logits

从 token ids 开始

在 词元化 部分,我们已经把文本转成了 token ids。到这里,模型看到的不是字符串,而是一串整数。

接下来的问题是:这些整数进入 Transformer 之后,为什么最后会变成每个位置对整个词表的打分?

先把完整模型记作 fθf_\theta,其中 θ\theta 表示模型的所有可训练参数。对一个 batch 来说,输入是:

x∈ZB×Tx \in \mathbb{Z}^{B \times T}

输出是:

z=fθ(x),z∈RB×T×Vz = f_\theta(x), \quad z \in \mathbb{R}^{B \times T \times V}

这里 BB 是 batch size,TT 是序列长度,VV 是 vocabulary size。也就是说,模型不是直接输出下一个 token id,而是给每个位置都输出一组长度为 VV 的 logits。

logits 是什么、有多大?

logits 是 softmax 之前的原始分数,可正可负、量级不固定;它本身不是概率,只有经过 softmax 之后才是概率分布。

典型规模感:Qwen3.5-0.8B 的 D=1024D = 1024、V=248,320V = 248{,}320;Qwen3.5-9B 的 D=4096D = 4096、V=248,320V = 248{,}320。VV 通常比 DD 大一到两个数量级,LM Head 的 V×DV \times D 矩阵因此能占模型相当一部分:

  • Qwen3.5-0.8B:embedding 与 LM Head 共享权重(weight tying),这一份 V×DV \times D 矩阵约占 32%(~254M)。
  • Qwen3.5-9B:两者不共享,LM Head 单独约 11%(~1.02B),加 embedding 合计约 22%。

模型越小、词表越大,这块比例越夸张(下一章 Embedding 与 LM Head 会展开 weight tying 的取舍)。

登录以继续阅读

这是一篇付费内容,请登录您的账户以访问完整内容。