【免费下载链接】SDPOReinforcement Learning via Self-Distillation (SDPO)项目地址https://gitcode.com/gh_mirrors/sdp/SDPO点击查看免费下载SDPOReinforcement Learning via Self-Distillation基于自蒸馏的强化学习的数据准备是许多新手上手时的第一道门槛。本文面向新手用一条清晰的流水线讲透 SDPO 数据准备指南如何获取 SciKnowEval 与 LiveCodeBench 数据集、如何划分训练集/测试集以及最后一步如何把 JSON 数据转成训练所需的 Parquet 格式全程只需 3 类命令、不到 10 分钟。上图SDPO 的训练循环。SDPO 会把环境返回的富反馈如代码报错、测试失败信息与高分轨迹一起喂回模型做自蒸馏因此它对数据的格式要求比普通 RL 更严格——这正是本文预处理流程存在的原因。一、先搞懂 SDPO 需要什么样的数据在动手之前先明确仓库里涉及哪三类数据避免后面找错文件数据集用途仓库位置奖励类型SciKnowEvalBiology / Chemistry / Material / Physics泛化能力实验datasets/sciknoweval/mcq选择题tooluse工具调用泛化能力实验datasets/tooluse/train.json已自带直接用LiveCodeBench v6富反馈代码实验data/utils/livecodebench.pycode单元测试三类数据最终都会变成同一个目录结构一个文件夹里放train.json和test.json再被转换成train.parquet和test.parquet。训练脚本如 experiments/generalization/run_sdpo_all.sh 中的DATA_PATHS只认这种 Parquet 目录所以获取 → 划分 → 预处理三步缺一不可。完整的数据说明写在 data/README.md建议配合本文对照阅读。二、第一步获取数据集统一为 JSON2.1 前置准备设置 PYTHONPATH所有数据脚本都依赖仓库根目录作为模块路径先执行export PYTHONPATH/path/to/your/SDPO:$PYTHONPATH2.2 一条命令下载并格式化数据集核心工具是 data/load_dataset.py。它从 Hugging Face 拉取原始数据并统一成 SDPO 需要的 JSON 字段# SciKnowEval 化学四个领域只需换 dataset_name python data/load_dataset.py --dataset_name Chemistry --output_path datasets/sciknoweval/chemistry.json # LiveCodeBench v6 python data/load_dataset.py --dataset_name livecodebench/code_generation_lite-v6 --output_path datasets/lcb_v6.json常用参数速查--dataset_name支持Biology、Chemistry、Material、Physics、livecodebench/code_generation_lite-v6、open-r1/codeforces、Qwen/CodeElo、evalplus/humanevalplus等--output_path输出 JSON 路径--start_idx/--num_el截取数据片段适合先小规模试跑--category可选的类别过滤各数据集的格式转换逻辑分别实现在 data/format/sciknoweval.py 和 data/format/code.py 中。以 SciKnowEval 为例加载时会只保留 L3 难度的 4 选 1 / 2 选 1 题目并注入一个规范输出格式的 system prompt要求模型用reasoning.../reasoninganswerA/answer结构作答。2.3 统一 JSON 长什么样转换后的每条记录都包含以下字段理解它们是读懂后续步骤的关键字段含义prompt完整题目已含题目模板system系统提示词可选answer参考答案代码题中存放测试用例tests单元测试 JSON 字符串非代码题为-kind奖励类型mcq/code等dataset数据来源名决定后续用哪个 reward 函数description题目描述末尾自动拼接评测环境说明elo难度评分idx全局唯一编号 提示仓库已经预置了 SciKnowEval 四个领域和 tooluse 的划分好的 JSONdatasets/sciknoweval/、datasets/tooluse/如果你直接复现实验可以跳过本节直接进入第四节的预处理。上图使用本文流程准备好的 SciKnowEval Chemistry 数据SDPO 相比 GRPO 基线的训练准确率对比Olmo3-7B-Instruct16 次采样均值。三、第二步划分训练集与测试集划分有两种截然不同的思路这是 SDPO 数据准备中最容易混淆的地方3.1 SciKnowEval按题目划分用 data/split_tasks.py 把题目本身按比例切开默认 9:1python data/split_tasks.py \ --json_path datasets/sciknoweval/chemistry.json \ --output_dir datasets/sciknoweval/chemistry \ --test_ratio 0.1 \ --seed 42四个领域只需替换路径依次执行输出即为datasets/sciknoweval/{biology,chemistry,material,physics}/train.json test.json。3.2 LiveCodeBench按单元测试划分代码题的思路完全不同——题目全部保留切的是测试用例见 data/split_tests.pypython data/split_tests.py \ --json_path datasets/lcb_v6.json \ --output_dir datasets/lcb_v6规则是test.json保留全部单元测试用于评测上限train.json随机保留约50%的测试PERCENTAGE_TO_KEEP 0.5随机种子固定为 0这样训练时模型看不到一半测试既降低了过拟合测试用例的风险也节省了运行单测的开销。3.3 多轮基线的一键准备脚本如果你要做第 5 章的多轮交互基线Test-Time Training仓库提供了 data/prepare_data_splits.sh 一键完成划分 预处理 逐题拆包export MY_DATA_SPLITS_DIRlcb_v6 export MY_DATA_SINGLES_DIRlcb_v6_singles bash data/prepare_data_splits.sh datasets/lcb_v6.json它会自动生成my_data_singles/q_00、q_01…… 等每道题一个独立目录的结构供 baseline_multiturn/multiturn.py 按题号调用。四、第三步Parquet 预处理通往训练的最后一站SDPO 基于 verl 框架训练只读取Parquet 格式。这一步由 data/preprocess.py 完成python data/preprocess.py --data_source datasets/sciknoweval/chemistry--data_source指向的目录必须同时包含train.json和test.json脚本会在同目录下生成train.parquet和test.parquet。它会做两件新手容易忽略的事字段重塑把prompt/answer/tests等重组为 verl 标准结构——data_source决定奖励函数、promptsystem user 消息列表、reward_model含ground_truth、extra_infoproblem、elo、index等。对 LiveCodeBench 还会自动把函数签名里的(self,清洗掉。规避 32 位溢出代码文本动辄超长脚本会把字符串统一转为LargeString类型并按每 32 行一个 row group 写入 Parquet配合 zstd 压缩避免 Arrow 的 32 位偏移溢出报错——这是大文本数据集转 Parquet 的经典坑SDPO 已经帮你处理好了。五、完整流程与验证把三步串起来就是 SDPO 数据准备的完整闭环load_dataset.py split_tasks.py / split_tests.py preprocess.py (HF 原始数据) ────────▶ (JSON: train/test) ────────▶ (Parquet: train/test) 获取 划分 预处理以 LiveCodeBench v6 为例的完整命令链python data/load_dataset.py --dataset_name livecodebench/code_generation_lite-v6 --output_path datasets/lcb_v6.json python data/split_tests.py --json_path datasets/lcb_v6.json --output_dir datasets/lcb_v6 python data/preprocess.py --data_source datasets/lcb_v6完成后只需把目录路径填进训练脚本的DATA_PATHS富反馈实验见 experiments/rich_feedback/run_sdpo.sh泛化实验见 experiments/generalization/run_sdpo_all.sh最终由 training/verl_training.sh 拉起训练。上图用上述流程准备好的 LiveCodeBench v6 数据上SDPO 借助富反馈实现更快收敛、准确率持续领先 GRPO。六、常见问题速查FAQ问题原因与解决ModuleNotFoundError: data未设置PYTHONPATH回到 2.1 节dataset not supported--dataset_name不在支持列表内参考 2.2 节支持清单预处理报 Arrow 溢出相关错误确认使用的是仓库自带preprocess.py它已内置 LargeString 转换目录里只有train.json没有test.jsonSciKnowEval 必须跑split_tasks.py两个文件才会同时生成想先小规模验证用load_dataset.py的--num_el 100截断数据走通全流程再放开小结SDPO 数据准备只有三步load_dataset.py获取并统一格式 →split_tasks.py/split_tests.py按题目或单测划分 →preprocess.py转 Parquet。记住 SciKnowEval 切题目、LiveCodeBench 切测试这条主线你就能轻松为任何新数据集复刻这套流程。准备好 Parquet 后剩下的就是修改DATA_PATHS跑起来看模型在富反馈下自我进化的训练曲线了 赞分享【免费下载链接】SDPOReinforcement Learning via Self-Distillation (SDPO)项目地址https://gitcode.com/gh_mirrors/sdp/SDPO点击查看免费下载相关推荐PaddleNLP 预训练数据准备指南CLUECorpus2020 中文 200GB 语料的申请获取与全流程处理PaddleNLP 预训练数据准备指南CLUECorpus2020 中文 200GB 语料的申请获取与全流程处理 CLUECorpus2020 是由 CLUE人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLPLogic-RL项目数据准备指南Parquet格式训练数据预处理Logic RL项目数据准备指南Parquet格式训练数据预处理 前言 在强化学习模型训练过程中数据预处理是至关重要的一环。Logic RL项目采用Parq人工智能大模型强化学习微调MuseTalk训练数据准备指南HDTF数据集预处理全流程MuseTalk训练数据准备指南HDTF数据集预处理全流程 想要训练出高质量的MuseTalk唇形同步模型数据准备是至关重要的第一步。本文将为你详细解析HD人工智能大模型计算机视觉语音媒体生成数字人预训练创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?