nanochat 后半程 · 第 4 章 对话格式与模板


nanochat 后半程 · 第 4 章 对话格式与模板

章节摘要:对话模型与基座之间隔着一层"序列化协议"——chat template。4.1 节把这层协议讲透:messages 列表怎么被 special tokens 包裹成 token 序列(nanochat 采用 Harmony 风格的消息边界标记,如 <|beginmessage|>/<|messageassistant|>/<|endoftext|>),模板为什么必须训练与推理逐字节一致,附渲染代码。4.2 节讲协议之上的最后一层手感来源:采样参数——温度、top-p、重复惩罚对"聊天手感"的影响矩阵(发散/复读/死板的症状对应哪个旋钮),给出从 0.7/0.9 起步的默认组合。4.3 节集中清算全流水线最贵的一类 bug:模板不一致与训练推理错位——三种典型错位(换了模板没重训、推理少拼起始标记、终止符没被正确处理)的复现、诊断与预防纪律。本章焊死第 3 章训练与第 6 章部署之间的接缝。

学习目标

阅读完本章,你应当能够:

  1. 画出"messages → special tokens → token 序列"的渲染流程,手写渲染代码。
  2. 解释 special tokens 为何必须进词表、<|endoftext|> 为何既是文本也是控制信号。
  3. 按症状矩阵调温度/top-p/重复惩罚,而不是玄学乱试。
  4. 诊断三种模板错位,建立"一份模板、三处消费"的一致性纪律。
  5. 把模板一致性校验写进推理服务的启动自检。

核心概念速览

(文字流程图) B ──训练侧:3.1 掩码──▶ SFT 训练 B ──推理侧:add_generation_prompt──▶ 采样生成·4.2 温度/top-p SFT 训练 ──逐字节一致──▶ 采样生成·4.2 温度/top-p 采样生成·4.2 温度/top-p ──第 6 章 llama.cpp<br/>同款模板──▶ 部署服务

一句话金句:模板是模型与外界签的合同——训练时签的哪一版,推理时就必须一字不差地履约。

子章节导航

4.1 chat-template:对话的序列化协议

模板即协议;Harmony 风格 special tokens 家族与进词表三要点;渲染代码与"推理提示必须是训练序列字节前缀"的回环校验。

4.2 采样参数与对话体验

温度/top-p/重复惩罚的手感影响矩阵(发散/复读/死板/胡编四诊法);默认参数组与十分钟调参纪律;手感病的分流决策树。

4.3 常见坑:模板不一致与训练推理错位

三种典型错位的复现与诊断三板斧;"一份模板三处消费"纪律;全书四层故障排查地图的收拢。

子章节之间的逻辑关系

4.1 协议本身(序列怎么拼、标记怎么画) │ ▼ 4.2 协议之上的手感(拼对之后,声音调多好听) │ ▼ 4.3 协议的裂缝(错位的 N 种死法与预防)──► 第 6 章 llama.cpp 部署的模板对齐

前置知识与后续延伸

前置知识:第 2 章的 messages 契约(模板的输入);3.1 的掩码构造(训练侧消费模板的方式,本章解释其另一半);1.2 的词表概念(special tokens 追加进词表意味着什么)。

为后续奠定基础:4.1 的模板是第 6 章 llama.cpp 部署(GGUF 转换要携带同款模板)与第 8 章中文改造(中文模板重设计)的直接前置;4.2 的采样参数是第 5 章评测(不同采样下的表现差异)与第 7 章语音界面(实时性 vs 手感的权衡)的调参基础;4.3 的纪律贯穿此后所有章节——模板错位是部署与改造阶段复现率最高的故障。


作者与出处
原作者: 灏天文库
整理: 灏天文库整理
本站整理收录,版权归原作者/开源协议所有;欢迎通过原文链接访问源仓库。
发布者: 作者: 灏天文库 转发
评论区 (0)
U