[examples] feat: add DPPO teacher configs for pickscore/ocr/geneval - #200
Merged
Conversation
Migrate three flow_dppo teacher configs from the private repo into
examples/dppo/lora/sd3_5/ as single-reward DPPO LoRA training configs
on SD3.5-Medium. Each file starts with a # Checkpoint: <url> comment
pointing to the published HuggingFace teacher LoRA.
Algorithm mapping (private -> current):
grpo + mask_type: kl_adv -> trainer_type: dppo
kl_type: v-based -> kl_type: v-based + kl_mask_type: v-based
add_kl_coefficient/clip_range -> dropped (DPPO path has no ratio-clip)
Shared DPPO hyperparams: adv_clip_range=10.0, advantage_aggregation='sum',
kl_mask_threshold=1e-6, kl_beta=0, group_size=18, per_device_batch_size=8,
max_epochs=1000, CPS SDE (noise_level=0.8, num_sde_steps=3).
Per-file differences:
pickscore_teacher.yaml: dataset/pickscore, PickScore bs=16 async (train),
bs=32 sync (eval); ckpt Jayce-Ping/Pickscore-Teacher
ocr_teacher.yaml: dataset/ocr, OCR bs=64 bfloat16 sync; ckpt Jayce-Ping/OCR-Teacher
geneval_teacher.yaml: dataset/geneval, GenEval bs=64 float32 sync;
force_reprocess=false (overrides private true); ckpt Jayce-Ping/GenEval-Teacher
All three adopt the new data.datasets[] schema and load cleanly via
Arguments.load_from_yaml with the expected DPPO fields.
Contributor
There was a problem hiding this comment.
Pull request overview
Adds DPPO “teacher” training example configs for SD3.5-Medium LoRA, making three single-reward teacher setups (PickScore / OCR / GenEval) available under examples/ with self-describing checkpoint links for downstream distillation workflows.
Changes:
- Added
pickscore_teacher.yamlDPPO teacher config with async PickScore reward during training and sync eval reward settings. - Added
ocr_teacher.yamlDPPO teacher config with OCR reward settings (bf16 reward inference, sync). - Added
geneval_teacher.yamlDPPO teacher config with GenEval reward settings (float32 reward inference, sync) and short GenEval behavior notes.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| examples/dppo/lora/sd3_5/pickscore_teacher.yaml | New DPPO teacher example config for PickScore (async train reward, sync eval reward). |
| examples/dppo/lora/sd3_5/ocr_teacher.yaml | New DPPO teacher example config for OCR reward (sync). |
| examples/dppo/lora/sd3_5/geneval_teacher.yaml | New DPPO teacher example config for GenEval reward (float32, sync). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
examples/dppo/lora/sd3_5/, migrated from the privateflow_dppo/teacher configs:pickscore_teacher.yaml— PickScore reward (bs=16, async train / bs=32, sync eval); ckpt Jayce-Ping/Pickscore-Teacherocr_teacher.yaml— OCR reward (bs=64, bfloat16, sync); ckpt Jayce-Ping/OCR-Teachergeneval_teacher.yaml— GenEval reward (bs=64, float32, sync); ckpt Jayce-Ping/GenEval-Teacher# Checkpoint: <url>comment pointing to the published HuggingFace teacher LoRA, so the config is self-describing for downstream OPD distillation (examples/opd/lora/sd3_5/geneval_pickscore_ocr.yamlteachers[].path).trainer_type: grpo+mask_type: kl_adv->trainer_type: dppokl_type: v-based->kl_type: v-based+kl_mask_type: v-based(mask is now decoupled from the ref-KL space and must be set explicitly)add_kl_coefficient/clip_range-> dropped (DPPO path has no PPO ratio-clip;kl_beta=0disables the ref term)adv_clip_range=10.0,advantage_aggregation='sum',kl_mask_threshold=1e-6,kl_beta=0,group_size=18,per_device_batch_size=8,max_epochs=1000, CPS SDE (noise_level=0.8,num_sde_steps=3,sde_steps=[0,1,2,3,4]), SD3.5-Medium LoRA r=32 / a=64.data.datasets[]schema withforce_reprocess: false(overrides privategeneval.yaml'strue).geneval2_single.yaml(per-line inline comments); DPPO hyperparams are filled from the teacher values, not copied from the geneval2 example (which useskl_mask_type: x-basedand is not equivalent).Test plan
Arguments.load_from_yamlwith no errors.trainer_type == 'dppo'kl_type == 'v-based',kl_mask_type == 'v-based'kl_mask_threshold == 1e-6,kl_beta == 0adv_clip_range == (-10.0, 10.0),advantage_aggregation == 'sum'group_size == 18,per_device_batch_size == 8,max_epochs == 1000run_name,datasets[0].name,force_reprocess == False, and reward (name/reward_model/batch_size/dtype/async_reward) all match the spec.PickScore/OCR/GenEvaland the CPS SDE scheduler fires — not run here, no GPU available locally.