--- license: apache-2.0 base_model: stabilityai/stable-diffusion-3.5-medium library_name: peft pipeline_tag: text-to-image tags: - stable-diffusion - stable-diffusion-3 - lora - diffusionnft - reinforcement-learning --- # NFT-OR scratch LoRA (SD3.5-Medium) From-scratch DiffusionNFT LoRA checkpoints for [HaC-RL](https://huggingface.co/HaC-RL) / NFT-OR. Base model: [`stabilityai/stable-diffusion-3.5-medium`](https://huggingface.co/stabilityai/stable-diffusion-3.5-medium). LoRA: rank 32, alpha 64, attention projections only. ## What is uploaded Inference adapters only (`adapter_config.json` + `adapter_model.safetensors`). Optimizer / scaler states are not included. | Path | Run | Epochs | Adapter | | --- | --- | ---: | --- | | `scratch-nft/checkpoint-180/` | scratch DiffusionNFT, job `219145` | 200 (last save is 180) | EMA stored in `lora/` (legacy save) | | `scratch-nft-or/checkpoint-180/` | scratch NFT-OR `or_mix`, job `219585` | 180 | EMA (`lora_ema/`) | | `scratch-nft-or/checkpoint-200/` | same run | 200 | EMA (`lora_ema/`) | The NFT 200-epoch job only checkpointed at epoch starts (`save_freq=20`), so its last file is **checkpoint-180**, not 200. Training recipe (both): Pick-a-Pic, PickScore+CLIP+HPSv2, 512², 40 sample steps, β=0.1, 4×A800, seed 42. ## DrawBench (1024², 40 steps, EMA) | Checkpoint | ImageReward | CLIP | Aesthetic | PickScore | HPSv2 | avg | | --- | ---: | ---: | ---: | ---: | ---: | ---: | | scratch-nft ckpt-180 | 1.194 | 0.280 | 5.888 | 0.895 | 0.316 | 8.573 | | scratch-nft-or ckpt-180 | 1.292 | 0.285 | 5.938 | 0.897 | 0.321 | 8.733 | | scratch-nft-or ckpt-200 | 1.306 | 0.286 | 5.951 | 0.896 | 0.319 | 8.757 | The NFT-OR run used collinear `implicit_positive` OR (`α=0.05`), which saturates after epoch 0. Do not treat the score gap as causal evidence that OR is active. ## Load ```python from diffusers import StableDiffusion3Pipeline import torch pipe = StableDiffusion3Pipeline.from_pretrained( "stabilityai/stable-diffusion-3.5-medium", torch_dtype=torch.bfloat16, ) pipe.load_lora_weights("HaC-RL/NFT-OR", subfolder="scratch-nft-or/checkpoint-200") ``` For the matched DrawBench row, use `subfolder="scratch-nft/checkpoint-180"` or `scratch-nft-or/checkpoint-180`.