DPODataGen
独立于 data/benchmark/ 的 DPO 训练数据生成器。
当前版本提供:
40个与 benchmark 场景族隔离的新训练场景train/dev场景级隔离- 生成
episode JSON - 生成
prompt + chosen + rejected的pairs.jsonl chosen_source=rule,rejected_source=constructed- DPO 专用短 prompt:按任务类型裁剪日志,而不是把全量事件直接塞进训练样本
- 数据审计脚本与后续模型出题导出脚本
运行
python -m DPODataGen.run_generate_dpo --split both --overwrite
小样本 smoke:
python -m DPODataGen.run_generate_dpo --split both --max-episodes 20 --overwrite
长度审计:
python DPODataGen/audit_dataset.py --root data
导出给强/弱模型批量生成回答的任务:
python DPODataGen/export_model_tasks.py --split train --output train_tasks.jsonl
python DPODataGen/export_model_tasks.py --split dev --output dev_tasks.jsonl
调用强/弱模型批量作答:
python DPODataGen/collect_api_answers.py --input train_tasks.jsonl --output strong_train_answers.jsonl --model <strong-model> --api-base <base> --api-key <key> --workers 4 --max-tokens 4096
python DPODataGen/collect_api_answers.py --input train_tasks.jsonl --output weak_train_answers.jsonl --model <weak-model> --api-base <base> --api-key <key> --workers 4 --max-tokens 4096 --no_thinking
把模型回答回填成最终 preference pairs:
python DPODataGen/assemble_preference_pairs.py --split train --input-root data_dpo_v2 --strong-answers strong_train_answers.jsonl --weak-answers weak_train_answers.jsonl --output final_train_pairs.jsonl --report final_train_pairs_report.json
输出
data/train_pref_v1/episodes/*.jsondata/train_pref_v1/pairs.jsonldata/train_pref_v1/summary.jsondata/dev_pref_v1/episodes/*.jsondata/dev_pref_v1/pairs.jsonldata/dev_pref_v1/summary.json
注意
- 这版先落地
rule chosen + constructed rejected。 strong-model chosen、actual-model-error rejected、human curated pairs可以在此目录结构上继续增量扩展。