# 内置预处理器 Twinkle 提供了一系列内置预处理器,用于常见的数据集格式。每个预处理器将原始数据转换为标准化的 `Trajectory` 对象。 ## LLM 预处理器 ### CompetitionMathProcessor 转换包含 `problem` 和 `solution` 字段的竞赛数学数据集。 ```python dataset.map('CompetitionMathProcessor') # 输入: {'problem': '...', 'solution': '...'} # 输出: 包含用户消息(问题)和助手消息(解答)的 Trajectory ``` ### CompetitionMathGRPOProcessor 类似于 CompetitionMathProcessor,但将解答存储在 `user_data` 中,用于 GRPO 奖励计算的真实答案。 ```python dataset.map('CompetitionMathGRPOProcessor') ``` ### SelfCognitionProcessor 将模板占位符替换为模型身份信息,用于自我认知训练。 ```python dataset.map('SelfCognitionProcessor', model_name='MyModel', model_author='MyOrg') ``` ### AlpacaProcessor 转换 Alpaca 格式数据集,包含 `instruction`、`input` 和 `output` 字段。 ```python dataset.map('AlpacaProcessor') # 输入: {'instruction': '...', 'input': '...', 'output': '...'} ``` ### CountdownProcessor 生成倒计时算术问题,用于推理训练。 ```python dataset.map('CountdownProcessor') ``` ### GSM8KProcessor 预处理 GSM8K 数学数据集,从 `#### answer` 格式中提取真实答案。 ```python dataset.map('GSM8KProcessor') # 从 '#### 42' 格式提取答案并存储在 user_data 中 ``` ## DPO 预处理器 ### EmojiDPOProcessor 将基于 emoji 的偏好数据集转换为 DPO 训练所需的正/负轨迹对。 ```python dataset.map('EmojiDPOProcessor') # 输入: {'prompt': '...', 'chosen': '...', 'rejected': '...'} # 输出: 交替排列的 chosen 和 rejected Trajectory 对 ``` ## 多模态预处理器 ### CLEVRProcessor 预处理 CLEVR 视觉推理数据集,支持图像处理。 ```python dataset.map('CLEVRProcessor') # 输入: {'question': '...', 'answer': '...', 'image': PIL.Image} # 输出: 包含多模态内容(图像 + 文本)的 Trajectory ``` ### OlympiadBenchProcessor 预处理 OlympiadBench 多模态数学/物理问题,支持图像收集和元数据存储。 ```python dataset.map('OlympiadBenchProcessor') # 处理每个问题的多张图像,将真实答案和元数据存储在 user_data 中 ``` > 所有预处理器遵循相同的接口: `__call__(rows) -> List[Trajectory]`。你可以按照相同的模式注册自定义预处理器(参见 [预处理器](Preprocessor.md))。