note

文章目录

  • note
  • 一、背景篇
    • 1. Special Token
    • 2. 耗时问题
    • 3. 与 pretrain 的区别
    • 4. 幻觉问题
  • 二、数据篇
    • 1. 数据多样性
    • 2. 数据生产
      • (1)生产 prompt
      • (2)生产 answer
      • (3)小结
    • 3. 数据飞轮
    • 4. 专项数据
      • (1)RAG
      • (2)Agent / function_call
      • (3)长文本
      • (4)复杂指令
  • 三、训练篇
    • 1. 训练框架
    • 2. 炼丹技巧
    • 3. 拟合问题
      • 1)欠拟合
      • 2)过拟合
      • 3)小结
    • 4. 夹逼准则
      • 1)经验分享
      • 2)实战思路
  • 四、评估篇
    • 1. 评估方式
    • 2. 评估分析
  • 五、总结篇

一、背景篇

作者: ybq,nlp码农,中国科学院大学 信号与信息处理硕士
原文: https://zhuanlan.zhihu/p/809229182

1. Special Token

pretrain 阶段完全没见过的 token,在sft 阶段会被赋予全新的语义。主要用于标注对话的角色:user、assistant、system 这些。

此外,special_token 可以用来“构造知识”,比如"喜欢"这种知识一定是 sft 阶段才会见到的,可以剔除掉 pretrain 先验知识的影响,用来验证 sft 的训练情况,比如会不会过拟合。

我默认大家都知道怎么用 special_token 去拼 prompt,如果不熟悉,看下 tokenizer_config.json 里的"chat_template"这个字段也就懂了。

比如GLM4的tokenizer_config.json文件的相关token如下:

  "added_tokens_decoder": {