Flow-OPD: On-Policy Distillation for Flow Matching Models
Paper • 2605.08063 • Published • 98
How to use CostaliyA/Flow-OPD with PEFT:
Task type is invalid.
Configuration Parsing Warning:In adapter_config.json: "peft.base_model_name_or_path" must be a string
Configuration Parsing Warning:In adapter_config.json: "peft.task_type" must be a string
Flow-OPD: On-Policy Distillation for Flow Matching Models — Evaluated on SD-3.5-Medium, Flow-OPD achieves +18pt average improvement over vanilla GRPO.
import torch
from diffusers import StableDiffusion3Pipeline
from peft import PeftModel
model_id = "stabilityai/stable-diffusion-3.5-medium"
lora_ckpt_path = "CostaliyA/Flow-OPD"#dev ckpt
device = "cuda"
pipe = StableDiffusion3Pipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe.transformer = PeftModel.from_pretrained(pipe.transformer, lora_ckpt_path)
pipe.transformer = pipe.transformer.merge_and_unload()
pipe = pipe.to(device)
prompt = "a photo of a black kite and a green bear"
image = pipe(prompt, height=512, width=512, num_inference_steps=40, guidance_scale=4.5, negative_prompt="").images[0]
image.save("flow_opd.png")
| Model | GenEval | OCR | DeQA | PickScore | Average |
|---|---|---|---|---|---|
| SD-3.5-M (base) | 0.63 | 0.59 | 4.07 | 21.64 | 0.72 |
| GRPO-Mix | 0.73 | 0.83 | 4.33 | 21.84 | 0.82 |
| Flow-OPD | 0.92 | 0.94 | 4.35 | 23.08 | 0.90 |
@article{fang2026flow,
title={Flow-OPD: On-Policy Distillation for Flow Matching Models},
author={Fang, Zhen and Huang, Wenxuan and Zeng, Yu and Zhao, Yiming and Chen, Shuang and Feng, Kaituo and Lin, Yunlong and Chen, Lin and Chen, Zehui and Cao, Shaosheng and others},
journal={arXiv preprint arXiv:2605.08063},
year={2026}
}
Base model
stabilityai/stable-diffusion-3.5-medium