📖 概念原子库 24 个 · 按分类 · 点击正文术语可跳转至此
架构
模型处理文字的最小单位,一个字、词或符号切成的编号。
📌 示例:"白日依山尽" → [白日, 依, 山, 尽] 共 4 个 token;中文约 1.5 字符/token
把 token id 映射成 768 维向量(可学习的数值档案),语义相近的词向量相近。
📌 示例:token id=1024 → [0.21, -0.73, 0.05, …] 共 768 个数,即该词的向量档案
把向量幅度压回标准范围的稳定器,防止数值逐层飘大。
📌 示例:向量 [3.0, 0.1]:波动=√((9+0.01)/2)≈2.12 → 除后 [1.41, 0.05],幅度压平
每个 token 按相关度加权融合其他 token 信息的核心机制。
📌 示例:填"欲穷千里__":模型对"千里"注意 55%、"依山" 30%、其余 15% → 加权融合出"楼"
把一串任意分数变成总和为 1 的概率分布,指数放大差距。
📌 示例:分数 [2, 1, 0] → e²:e¹:e⁰ = 7.4:2.7:1 → [0.67, 0.24, 0.09],和为 1
多个 Q 头共享一组 KV,8Q/4KV 时显存省一半、效果几乎不掉。
📌 示例:8 个 Q 头提问,4 名速记员各记 2 头的 K/V——速记量从 8 份减到 4 份
注意力只许看前文:把未来位置的分数置 -inf,softmax 后权重为 0。
📌 示例:生成"尽"时可看 [白,日,依,山];"尽"之后的 token 分数全部 -inf 不可见
按位置角度旋转 Q/K 向量,点积自动编码相对距离。
📌 示例:位置 3 与位置 7 的 Q/K 旋转角差 = 4θ,点积自动感知"相距 4 个位置"
每层中独立加工各 token 的网络,模型大部分世界知识存在这里。
📌 示例:"苹果发布了新手机"——FFN 参数存储"苹果=科技公司"这类世界知识,Attention 只管传递上下文
FFN 的现代形态:silu(gate(x)) ⊙ up(x),门控分支决定放行哪些信息。
📌 示例:gate 输出 [0.9, 0.1]:第 1 维信息放行 90%,第 2 维只放 10%——门控选择性通过
FFN 换成多专家+路由:每 token 只过 1 个专家,总参数大、激活算力小。
📌 示例:输入"1+1=?"路由到数学专家;输入"写首诗"路由到语言专家——每 token 只激活 1/4 参数
MoE 的分诊角色:线性层给各专家打分,softmax 后 top-k 选专家。
📌 示例:某 token 得分 [0.62, 0.21, 0.11, 0.06] → top-1 选中专家 0,权重归一为 1.0
N·Σ(load×score):惩罚'被高频选中且自评分高'的专家,防专家垄断。
📌 示例:专家 0 垄断 48.8% 负载时 aux=1.29;只训 router 150 步 → 25/25/25/25,aux=1.00
生成时缓存已算过的 K/V,新 token 只算自己的,复杂度 O(N²)→O(N)。
📌 示例:生成第 10 个字:前 9 个字的 K/V 直接复用缓存,只算第 10 字的 Q/K/V——省 9 次重复计算
训练
衡量模型对正确答案的'惊讶度':-ln(给正确 token 的概率)。
📌 示例:模型给正确字"楼"分配 0.10 概率 → loss = -ln(0.10) = 2.30;概率升到 0.5 → loss 降到 0.69
用第 1~N-1 位预测第 2~N 位:logits[..., :-1] 对 labels[..., 1:]。
📌 示例:input_ids=[白,日,依,山],labels=[日,依,山,尽]——错开一格对齐,第 i 位预测第 i+1 位
标签为 -100 的位置不计 loss。Pretrain 屏蔽 pad,SFT 屏蔽非 assistant 段。
📌 示例:句子补齐用 pad:[白,日,pad,pad] 的 labels=[日,尽,-100,-100]——后两位不计 loss
连续多个 batch 梯度只加不更新,最后一起更新,等效大 batch。
📌 示例:batch=32 连跑 8 次:梯度只累加不更新,第 8 次末一起 step——等效一次 batch=256
梯度向量长度超阈值时按比例缩短,防单批数据导致训练爆炸。
📌 示例:某批梯度 norm=5.0 超上限 1.0 → 全体分量乘 0.2 缩回——方向不变,长度受限
fp16 下小梯度会下溢变 0:先乘大数放大,更新前再除回。
📌 示例:梯度 0.0001 在 fp16 下溢为 0 → 先 ×1024 变 0.1024(存得住)→ 更新前 ÷1024 还原
16 位浮点数:省一半显存带宽,GPU 上更快,但数值范围窄。
📌 示例:0.0001 用 fp16 存 → 变成 0(下溢丢失);0.1 正常存储。范围窄是省显存的代价
采样与生成
逐个生成 token,每步把输出拼回输入再生成下一个。
📌 示例:输入"白日"→出"依"→拼成"白日依"→出"山"→拼"白日依山"→出"尽"……逐字滚动
采样前 logits 除以 T:低温分布尖(保守稳定),高温分布平(多样易胡说)。
📌 示例:T=0.1:分布尖锐,几乎总选最高分(输出稳定呆板);T=2.0:分布拉平,冷门字也有机会(多样但易错)
只在累计概率达 p(如 0.85)的候选集里抽签,砍掉长尾。
📌 示例:候选 [楼0.60, 河0.25, 天0.10, 人0.05]:累计到 0.95 已超 p=0.85 → 只在 {楼,河,天} 里抽签