GuidanceNFT: NFT-Based Reward Fine-Tuning of Guided Diffusion Models
Organizations: Tsinghua University · Duke University
Abstract
DiffusionNFT (NFT) fine-tunes diffusion models toward task-specific rewards, but optimizing these rewards does not guarantee fidelity to the full prompt. Although classifier-free guidance (CFG) strengthens prompt alignment, NFT is formulated as a CFG-free method, and applying CFG to the fine-tuned velocity field can reduce the optimized reward. This motivates optimizing rewards over the guided output distribution while seeking to retain its prompt alignment. However, applying standard NFT directly to guided samples can cause reward degradation or training collapse. We trace this failure to a mismatch between the reference velocity used in the NFT loss and the score of the guided sample distribution, which biases the improvement direction. We propose GuidanceNFT, which estimates the matching reference velocity through online flow matching on guided samples and uses it to correct both regression terms. With an exact reference, the corrected objective recovers NFT's intended update. In our experiments, the learned correction sustains reward improvement under both explicit and built-in guidance. On SD3.5-M, GuidanceNFT achieves higher optimized rewards than NFT with and without CFG across GenEval, text-rendering, and multi-reward objectives, together with better overall prompt alignment as measured by off-domain evaluation metrics. Experiments on models with built-in guidance, including Model Guidance and ELF, further demonstrate improved ImageNet generation, a better perplexity-entropy tradeoff on OpenWebText, and higher accuracy on GSM8K.
Figures & tables
| Training objective | Method | Train reward | Held-out evaluation | ||||||
| GenEval | OCR | PickScore | CLIPScore | HPSv2.1 | Aesthetic | ImgRwd | |||
| — | Pretrained w/o CFG | — | 0.283 | 0.113 | 20.69 | 0.232 | 0.199 | 4.990 | -0.594 |
| Pretrained w/ CFG | — | 0.636 | 0.532 | 22.38 | 0.278 | 0.276 | 5.252 | 0.820 | |
| GenEval | NFT w/o CFG | 0.900 | 0.855 | 0.434 | 21.70 | 0.265 | 0.234 | 4.886 | 0.271 |
| NFT w/ CFG | 0.657 | 0.565 | 0.624 | 21.19 | 0.271 | 0.216 | 4.773 | 0.148 | |
| GuidanceNFT | 0.914 | 0.877 | 0.674 | 21.83 | 0.277 | 0.250 | 4.947 | 0.682 | |
| Method | Pass@1 | Pass@2 | Pass@4 | Pass@8 |
|---|---|---|---|---|
| Pretrained | 39.17 1.04 | 49.82 1.15 | 59.20 1.21 | 67.32 1.29 |
| NFT | 41.68 1.08 | 51.53 1.17 | 59.78 1.22 | 67.02 1.30 |
| CEDR | 42.16 1.11 | 51.36 1.19 | 59.40 1.24 | 66.26 1.32 |
| GuidanceNFT | 43.03 1.10 | 52.66 1.16 | 61.24 1.20 | 68.61 1.26 |
Appendix figures & tables17 assets
Supplementary material from the paper’s appendix.
Appendix
| Freeze the rollout policy and baseline prediction . | |
| Generate endpoints with the specified guidance and sampler; evaluate and freeze reward weights . | |
| Draw fresh and construct by Equation 14 . | |
| Refresh with unweighted FM on the endpoint population used by the NFT objective. | |
| Freeze and form the policy displacement . | |
| Form and regress in the two terms of Equation 12 . | |
| Update the policy using the NFT regressions and the regularization penalty (Appendix C ); refresh the rollout policy according to its schedule. |
| Method | Reward | Hit | On-tree |
|---|---|---|---|
| Base | 0.755 | 0.254 | 0.848 |
| CFG | 0.721 | 0.347 | 0.946 |
| NFT | 0.956 | 0.630 | 0.805 |
| NFT + CFG | 0.985 | 0.851 | 0.715 |
| Guided-field NFT | 0.996 | 0.971 | 0.907 |
| Method | Rollouts | Loss reference | Loss prediction |
| SD3.5 and SiT: explicit CFG | |||
| NFT | Conditional output | Conditional output | |
| NFT + pretrained empty branch | Conditional output | Conditional output | |
| NFT (uncorrected) | Conditional output | Conditional output | |
| NFT (analytic correction) | Analytic CFG field | Conditional output | |
| GuidanceNFT | Fitted reference | Conditional output | |
| Setting | Retained NFT candidates | NFT selected | GuidanceNFT reported |
|---|---|---|---|
| SiT / ImageNet | 100–400, every 50 updates | 200 | 400 |
| Model Guidance / ImageNet | 200, 400 | 200 | 400 |
| Qwen / GSM8K | 50–400, every 50 updates | 200 | 500 |
| Metric | Comparator | GuidanceNFT comparator (mean std) |
|---|---|---|
| GenEval dense | NFT, CFG 4 | |
| GenEval dense | NFT, CFG 1 | |
| GenEval dense | NFT + pretrained empty branch, CFG 4 | |
| GenEval task macro | NFT, CFG 4 | |
| GenEval task macro | NFT, CFG 1 | |
| GenEval task macro | NFT + pretrained empty branch, CFG 4 |
| Objective | Method | CFG | Train reward | GenEval | OCR | PickScore | CLIPScore | HPSv2.1 | Aesthetic | ImgRwd |
|---|---|---|---|---|---|---|---|---|---|---|
| GenEval | NFT | 1 | 0.900 0.0024 | 0.855 0.0077 | 0.434 0.0059 | 21.70 0.0021 | 0.265 0.0002 | 0.234 0.0001 | 4.886 0.0132 | 0.271 0.0178 |
| GenEval | NFT | 4 | 0.657 0.0139 | 0.565 0.0003 | 0.624 0.0144 | 21.19 0.0061 | 0.271 0.0014 | 0.216 0.0006 | 4.773 0.0116 | 0.148 0.0224 |
| GenEval | GuidanceNFT | 4 | 0.914 0.0015 | 0.877 0.0013 | 0.674 0.0016 | 21.83 0.0099 | 0.277 0.0004 | 0.250 | 4.947 0.0128 | 0.682 0.0153 |
| OCR | NFT | 1 | 0.971 0.0014 | 0.035 0.0042 | 0.971 0.0008 | 19.61 0.0118 | 0.208 0.0009 | 0.137 0.0006 | 4.208 0.0036 | -1.679 0.0183 |
| OCR | NFT | 4 | 0.192 0.0067 | 0.265 0.0064 | 0.235 0.0070 | 20.21 0.0188 | 0.242 0.0001 | 0.188 0.0008 | 4.596 0.0051 | -0.919 0.0642 |
| OCR | GuidanceNFT | 4 | 0.975 0.0010 | 0.488 0.0099 | 0.974 0.0009 | 21.83 0.0293 | 0.274 0.0003 | 0.256 0.0022 | 5.120 0.0072 | 0.425 0.0426 |
| Task | Prompts | NFT (%) | GuidanceNFT (%) | Difference std |
|---|---|---|---|---|
| color_attr | 100 | 22.25 | 74.25 | |
| colors | 94 | 61.70 | 82.98 | |
| counting | 80 | 58.75 | 92.19 | |
| position | 100 | 56.50 | 87.00 | |
| single_object | 80 | 87.19 | 99.06 | |
| two_object | 99 | 59.34 | 93.43 |
| Task | Method | Rollout/ reward | Reference | Policy | Iteration median [IQR] | Ratio | |
|---|---|---|---|---|---|---|---|
| GenEval | NFT | 193 | 113.6 | 0.0 | 274.3 | 387.9 [387.2, 388.7] | 1.00 |
| GenEval | GuidanceNFT | 184 | 182.2 | 150.6 | 339.7 | 672.4 [671.1, 674.3] | 1.73 |
| Learned3 | NFT | 94 | 92.5 | 0.0 | 274.5 | 367.3 [366.7, 367.8] | 1.00 |
| Learned3 | GuidanceNFT | 96 | 160.5 | 150.5 | 339.2 | 650.2 [649.9, 650.6] | 1.77 |
| Method | SiT, CFG 1 | SiT, CFG 1.5 | Model Guidance |
|---|---|---|---|
| Pretrained | 18.849 0.012 | 19.287 0.015 | 19.239 0.003 |
| NFT | 20.161 0.019 | 20.476 0.025 | 20.010 0.023 |
| GuidanceNFT | 21.465 0.006 | 21.579 0.013 | 21.580 0.018 |
| Method | CFG | 100 | 150 | 200 | 250 | 300 | 350 | 400 |
|---|---|---|---|---|---|---|---|---|
| NFT | 1 | |||||||
| 1.5 | ||||||||
| GuidanceNFT | 1 | |||||||
| 1.5 |
| Update | 50 | 100 | 150 | 200 | 250 | 300 | 350 | 400 | 450 | 500 |
|---|---|---|---|---|---|---|---|---|---|---|
| NFT | — | — | ||||||||
| GuidanceNFT |