内置预处理器

Twinkle 提供了一系列内置预处理器,用于常见的数据集格式。每个预处理器将原始数据转换为标准化的 Trajectory 对象。

LLM 预处理器

CompetitionMathProcessor

转换包含 problemsolution 字段的竞赛数学数据集。

dataset.map('CompetitionMathProcessor')
# 输入: {'problem': '...', 'solution': '...'}
# 输出: 包含用户消息(问题)和助手消息(解答)的 Trajectory

CompetitionMathGRPOProcessor

类似于 CompetitionMathProcessor,但将解答存储在 user_data 中,用于 GRPO 奖励计算的真实答案。

dataset.map('CompetitionMathGRPOProcessor')

SelfCognitionProcessor

将模板占位符替换为模型身份信息,用于自我认知训练。

dataset.map('SelfCognitionProcessor', model_name='MyModel', model_author='MyOrg')

AlpacaProcessor

转换 Alpaca 格式数据集,包含 instructioninputoutput 字段。

dataset.map('AlpacaProcessor')
# 输入: {'instruction': '...', 'input': '...', 'output': '...'}

CountdownProcessor

生成倒计时算术问题,用于推理训练。

dataset.map('CountdownProcessor')

GSM8KProcessor

预处理 GSM8K 数学数据集,从 #### answer 格式中提取真实答案。

dataset.map('GSM8KProcessor')
# 从 '#### 42' 格式提取答案并存储在 user_data 中

DPO 预处理器

EmojiDPOProcessor

将基于 emoji 的偏好数据集转换为 DPO 训练所需的正/负轨迹对。

dataset.map('EmojiDPOProcessor')
# 输入: {'prompt': '...', 'chosen': '...', 'rejected': '...'}
# 输出: 交替排列的 chosen 和 rejected Trajectory 对

多模态预处理器

CLEVRProcessor

预处理 CLEVR 视觉推理数据集,支持图像处理。

dataset.map('CLEVRProcessor')
# 输入: {'question': '...', 'answer': '...', 'image': PIL.Image}
# 输出: 包含多模态内容(图像 + 文本)的 Trajectory

OlympiadBenchProcessor

预处理 OlympiadBench 多模态数学/物理问题,支持图像收集和元数据存储。

dataset.map('OlympiadBenchProcessor')
# 处理每个问题的多张图像,将真实答案和元数据存储在 user_data 中

所有预处理器遵循相同的接口: __call__(rows) -> List[Trajectory]。你可以按照相同的模式注册自定义预处理器(参见 预处理器)。