模型输出 Logits(词表得分)
→ 步骤1:应用 Temperature 缩放 Logits(核心:调整整体随机性)
→ 步骤2:应用重复惩罚/No Repeat N-gram 等(可选:过滤/调整 Logits)
→ 步骤3:筛选 Top-K/Top-P 候选池(过滤低概率 Token)
→ 步骤4:候选池内概率归一化(确保总和为1)
→ 步骤5:按归一化后的概率分布 随机采样(核心:多样性来源)
→ 输出最终 Token
- 输入 Prompt:用户输入原始文本指令或上下文信息
- 预处理 Prompt:清洗无效字符、统一编码格式,标准化输入文本
- 文本分词:分词器将预处理后的文本拆分为模型可识别的 Token 语义单元
- Token 映射 ID:Token 按模型固定词表映射为唯一对应的离散整数 Token ID
- 添加特殊 Token:补充序列开始(<s>)、结束(</s>)等模型约定的特殊标记
- 序列对齐:截断过长序列或用填充 Token(<pad>)补全过短序列,适配模型最大长度
- 张量转换:将对齐后的 Token ID 序列转换为模型可处理的整数输入张量(支持批量)
- 输出 Logits:模型通过前向传播,输出序列最后一个有效位置的词表原始得分(Logits)
- Temperature 缩放:按比例缩放 Logits,调整概率分布平滑度(控制随机性)
- 重复惩罚:压低已出现 Token 的 Logits,减少单个 Token 重复出现
- No Repeat N-gram 过滤:过滤会导致重复短语(N-gram)的 Token,避免文本冗余
- 典型性采样(可选):筛选 “不太平凡也不太异常” 的典型 Token,平衡连贯与多样
- Top-K 筛选:保留概率最高的 K 个 Token,形成候选池,排除低概率无意义 Token
- Top-P 筛选:在 Top-K 候选池中,保留累积概率达 P 的 Token,自适应调整候选池大小
- 概率归一化:对候选池内 Token 的概率重新归一化,确保总和为 1
- 随机采样:按归一化后的概率分布随机选择,生成当前 Token(核心多样性来源)
- 结束判断:检查是否生成结束 Token(</s>)或序列达最大长度
- 迭代生成:未结束则将当前 Token 加入序列,返回张量转换步骤循环
- 解码输出:已结束则将所有生成的 Token 解码为自然语言文本,输出最终结果
