# Assistant v3: simple training and the full multiscale recipe
[Contents](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/blob/main/README.md) · [Previous: Longer training](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/blob/main/experiments/longer-training.md) · [Next: Photo-aesthetics with v3](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/blob/main/experiments/photo-aesthetics-v3.md)
Two completed runs test the ends of the earlier experiment series: simple 512px concept training and the combined multiscale, regularisation, REPA, and auto-shift recipe. Both use the frozen [v3 assistant](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-training-assistant-v3) during training and disable it for every displayed concept sample.
V3 was trained from scratch at rank/alpha 64/64 for 30,000 updates, on 10k synthetic, 10k CC12M and 10k e621 images across 512/1024/1536/2048 base resolutions, with auto shift. The downstream concept adapters here remain rank/alpha 32/32.
## Recipes and evaluation
| Setting | Simple 512px | Full multiscale recipe |
| --- | --- | --- |
| Updates | 2,000 | 10,000 |
| Concept data | 27 Domokun images, caption `🟫` | Same concept data at 512px and 1024px |
| Sampling | Single concept dataset | Probabilistic: 25% each concept/regularisation × 512/1024 backend |
| Synthetic regularisation | None | Base-model prediction targets; both adapters bypassed for the target |
| REPA | Disabled | DINOv2 ViT-g/14, block 8, weight 0.5 |
| Flow schedule | Original fixed shift | Auto shift |
| Hardware | One H100 | One H100 |
Both runs use corrected `adamw_bf16`, LR `1e-4`, global norm clipping 1.0, batch/accumulation 1/1, BF16, seed 42, and the archived concept-adapter initialization. Runtime audits confirmed that v3 stayed frozen, the validation adapter stack contained only the concept adapter, and the full recipe's regularisation target matched an independent bare-base forward. REPA's hidden-state and concept-LoRA gradients were finite and nonzero.
**Image protocol:** CPU-generator seed 42, 40 inference steps, CFG 1, full-frame decoding, concept-adapter strength 1, assistant disabled. **This chapter uses the Details-fixed VAE (madebyollin)**, matching the earlier chapters. V3 checkpoints were re-rendered on a separate H100 using the same pinned Diffusers and VAE revisions; matched v2 images reuse the earlier fixed-VAE renders. Training retained the original VAE, including REPA’s training decode path.
The re-renders are standalone square images, with no comparison gutter, bumper padding, model-label overlay, or bottom caption strip. Base images occupy the first row; checkpoint steps run down the rows. Downloadable images retain their full generated resolution.
## Simple 512px training with v3
In the inspected 2,000-update 1024px scarf re-render, the simple recipe produces a Domokun-like head on a human-shaped body. Character identity and whole-body structure should be judged separately. Columns show the three concept prompts and two unrelated subjects; rows show update count. Separate tables keep output resolution explicit. The 1,000-update checkpoint matches the duration of the earlier simple assisted runs; later checkpoints show the extension to 2,000.
Expand: Simple 512px training — 512px output
| Updates / model | Beach | Red scarf | Bicycle | Fox | Portrait |
| Base |  |  |  |  |  |
| 250 |  |  |  |  |  |
| 500 |  |  |  |  |  |
| 750 |  |  |  |  |  |
| 1,000 |  |  |  |  |  |
| 1,500 |  |  |  |  |  |
| 2,000 |  |  |  |  |  |
Expand: Simple 512px training — 1024px output
| Updates / model | Beach | Red scarf | Bicycle | Fox | Portrait |
| Base |  |  |  |  |  |
| 250 |  |  |  |  |  |
| 500 |  |  |  |  |  |
| 750 |  |  |  |  |  |
| 1,000 |  |  |  |  |  |
| 1,500 |  |  |  |  |  |
| 2,000 |  |  |  |  |  |
## Full recipe with v3
The progression includes 3,500 and 4,000 updates, where the earlier v2 trajectory changed, and continues through 10,000. At 10,000, inspected 1024px beach, scarf and bicycle re-renders depict the whole character, and the fox remains coherent. This differs from the simple recipe in both training settings and duration; it does not isolate which change helped.
Expand: Multiscale + regularisation + REPA + auto shift — 512px output
| Updates / model | Beach | Red scarf | Bicycle | Fox | Portrait |
| Base |  |  |  |  |  |
| 500 |  |  |  |  |  |
| 1,000 |  |  |  |  |  |
| 2,000 |  |  |  |  |  |
| 3,500 |  |  |  |  |  |
| 4,000 |  |  |  |  |  |
| 6,000 |  |  |  |  |  |
| 8,000 |  |  |  |  |  |
| 10,000 |  |  |  |  |  |
Expand: Multiscale + regularisation + REPA + auto shift — 1024px output
| Updates / model | Beach | Red scarf | Bicycle | Fox | Portrait |
| Base |  |  |  |  |  |
| 500 |  |  |  |  |  |
| 1,000 |  |  |  |  |  |
| 2,000 |  |  |  |  |  |
| 3,500 |  |  |  |  |  |
| 4,000 |  |  |  |  |  |
| 6,000 |  |  |  |  |  |
| 8,000 |  |  |  |  |  |
| 10,000 |  |  |  |  |  |
## Matched full recipe: assistant v2 versus v3
The archived full-recipe v2 run provides the closest reference: the same concept initialization, rank, optimizer, learning rate, batch size, multiscale datasets, bare-base regularisation target, REPA settings and auto shift. Each row is an update count; columns identify assistant version and output resolution. This is one training seed per variant, not a repeated-seed estimate. The assistant change includes its rank, training duration, data pool and training schedule; these factors are not individually isolated.
Expand: Beach — matched v2/v3 checkpoints
| Updates / model | v2, 512px | v3, 512px | v2, 1024px | v3, 1024px |
| Base |  |  |  |  |
| 1,000 |  |  |  |  |
| 2,000 |  |  |  |  |
| 3,500 |  |  |  |  |
| 4,000 |  |  |  |  |
| 6,000 |  |  |  |  |
| 8,000 |  |  |  |  |
| 10,000 |  |  |  |  |
Expand: Red scarf — matched v2/v3 checkpoints
| Updates / model | v2, 512px | v3, 512px | v2, 1024px | v3, 1024px |
| Base |  |  |  |  |
| 1,000 |  |  |  |  |
| 2,000 |  |  |  |  |
| 3,500 |  |  |  |  |
| 4,000 |  |  |  |  |
| 6,000 |  |  |  |  |
| 8,000 |  |  |  |  |
| 10,000 |  |  |  |  |
Expand: Bicycle — matched v2/v3 checkpoints
| Updates / model | v2, 512px | v3, 512px | v2, 1024px | v3, 1024px |
| Base |  |  |  |  |
| 1,000 |  |  |  |  |
| 2,000 |  |  |  |  |
| 3,500 |  |  |  |  |
| 4,000 |  |  |  |  |
| 6,000 |  |  |  |  |
| 8,000 |  |  |  |  |
| 10,000 |  |  |  |  |
Expand: Fox — matched v2/v3 checkpoints
| Updates / model | v2, 512px | v3, 512px | v2, 1024px | v3, 1024px |
| Base |  |  |  |  |
| 1,000 |  |  |  |  |
| 2,000 |  |  |  |  |
| 3,500 |  |  |  |  |
| 4,000 |  |  |  |  |
| 6,000 |  |  |  |  |
| 8,000 |  |  |  |  |
| 10,000 |  |  |  |  |
Expand: Portrait — matched v2/v3 checkpoints
| Updates / model | v2, 512px | v3, 512px | v2, 1024px | v3, 1024px |
| Base |  |  |  |  |
| 1,000 |  |  |  |  |
| 2,000 |  |  |  |  |
| 3,500 |  |  |  |  |
| 4,000 |  |  |  |  |
| 6,000 |  |  |  |  |
| 8,000 |  |  |  |  |
| 10,000 |  |  |  |  |
## Checkpoints and reproduction
These are downstream concept adapters, not copies of the assistant. Use them with the assistant disabled for inference. The multiscale export also retains the checkpoint's REPA tensors; inference weights alone are not a complete optimizer/RNG resume state.
### Simple 512px
[Configuration](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/blob/main/recipes/domokun-v3-512/config.json) · [Datasets](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/blob/main/recipes/domokun-v3-512/dataloader.json) · [Prompts](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/blob/main/recipes/domokun-v3-512/prompts.json)
[250](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/resolve/main/checkpoints/domokun-v3-512/step-250/pytorch_lora_weights.safetensors) · [500](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/resolve/main/checkpoints/domokun-v3-512/step-500/pytorch_lora_weights.safetensors) · [750](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/resolve/main/checkpoints/domokun-v3-512/step-750/pytorch_lora_weights.safetensors) · [1,000](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/resolve/main/checkpoints/domokun-v3-512/step-1000/pytorch_lora_weights.safetensors) · [1,500](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/resolve/main/checkpoints/domokun-v3-512/step-1500/pytorch_lora_weights.safetensors) · [2,000](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/resolve/main/checkpoints/domokun-v3-512/step-2000/pytorch_lora_weights.safetensors)
### Full multiscale recipe
[Configuration](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/blob/main/recipes/domokun-v3-multiscale-repa-autoshift/config.json) · [Datasets](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/blob/main/recipes/domokun-v3-multiscale-repa-autoshift/dataloader.json) · [Prompts](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/blob/main/recipes/domokun-v3-multiscale-repa-autoshift/prompts.json)
[500](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/resolve/main/checkpoints/domokun-v3-multiscale-repa-autoshift/step-500/pytorch_lora_weights.safetensors) · [1,000](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/resolve/main/checkpoints/domokun-v3-multiscale-repa-autoshift/step-1000/pytorch_lora_weights.safetensors) · [2,000](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/resolve/main/checkpoints/domokun-v3-multiscale-repa-autoshift/step-2000/pytorch_lora_weights.safetensors) · [3,500](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/resolve/main/checkpoints/domokun-v3-multiscale-repa-autoshift/step-3500/pytorch_lora_weights.safetensors) · [4,000](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/resolve/main/checkpoints/domokun-v3-multiscale-repa-autoshift/step-4000/pytorch_lora_weights.safetensors) · [6,000](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/resolve/main/checkpoints/domokun-v3-multiscale-repa-autoshift/step-6000/pytorch_lora_weights.safetensors) · [8,000](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/resolve/main/checkpoints/domokun-v3-multiscale-repa-autoshift/step-8000/pytorch_lora_weights.safetensors) · [10,000](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/resolve/main/checkpoints/domokun-v3-multiscale-repa-autoshift/step-10000/pytorch_lora_weights.safetensors)
## Scope
Judge character learning, coherence and fine detail separately. The grids include unrelated prompts to inspect broader changes, but character leakage is not the assistant's primary objective. A strong final image alone does not establish that an entire trajectory improved.
The separate v3 photo-aesthetics degradation checks completed 50k updates at 512px and 10k at 1024px. These photo-data checks are published in the next chapter.
[Render provenance](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/blob/main/v3-panels.json) · [Checkpoint hashes](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/blob/main/v3-artifacts.json) · [Contents](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/blob/main/README.md)
[Exact rendering manifest](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/blob/main/v3-render-manifest.json) · [Verified render receipt](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/blob/main/v3-render-receipt.json)
## Completed photo-aesthetics follow-up
The separate **50k / 512px** and **10k / 1024px** runs are now published in [Photo-aesthetics v3](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-photo-aesthetics-v3). At 1MP output, the 50k 512px model shows more fine detail than the 10k 1MP-trained model. See the [next chapter](https://huggingface.co/SimpleTuner/Qwen-Image-2.1-LoRA-experiments/blob/main/experiments/photo-aesthetics-v3.md) for the extended degradation check and links to every fixed-VAE checkpoint progression.