背景篇

Special Token

与 pretrain 的区别

首先,sft 和 pretrain 在训练方式上没有任何区别,主要区别在于数据的组成形式上:

  1. pretrain 的每条数据都是满编 4K / 8K,sft 的每条数据原本多长就是多长
  2. sft 会引入 pretrain 阶段未见过的 special_token,来让它们学习全新的语义;
  3. sft 会让模型见到最重要的 eos_tokenpretrain 模型

数据篇

数据多样性

**重点来了,每一条 sft 训练数据必须要 task_type 类型,**千万别搞大杂烩,否则对后续的 case 分析简直是灾难性的伤害。在实际工作中,双层 task_type 都很常见,比如“逻辑推理 - 常识推理”,“逻辑推理 - cot 多步骤推理” 这种。至于每种 task_type 的数据量,别搞平均主义:难 task_type 酒数据多点,简单 task_type 就数据少点,也要结合自己的 base 模型能力动态调整。

task_type 的划分就是 sft 数据最重要的基建工作,没有之一。