Finding the optimal guidance × steps × LoRA scale × film stock combination • March 2026
We've been using guidance 3.5, steps 35, LoRA scale 0.9 — but these were settled on with small sample sizes. Guidance and steps interact — guidance 3.0 at 50 steps produces a completely different image than guidance 4.0 at 30 steps. The only way to find the true optimum is a controlled sweep across all three variables, with enough samples to trust the result.
The Question: Is there a single best combo, or does it depend on the LoRA quality? Do mid/weak LoRAs need different settings than strong ones?
| Variable | Range | Why It Matters |
|---|---|---|
| Guidance | 2.0, 2.5, 3.0, 3.5, 4.0, 4.5 | How strictly the model follows the prompt. Too low = random. Too high = plastic/saturated. |
| Steps | 25, 30, 35, 40, 45, 50 | Refinement passes. Too few = soft. Too many = no gain but 2× cost. |
| LoRA Scale | 0.80, 0.85, 0.90, 0.95 | How much the LoRA influences the output. Too low = generic face. Too high = over-fits. |
| Film Stock | Portra 400, Portra 800, Fuji 400H, Ektar | Colour grading layer. Affects skin tones and overall mood. |
Tests all 20 parameter combinations on Scott and Sarah with Studio Dramatic and Smart Casual. Enough to see clear winners and eliminate the bottom half.
Output: Ranked table of all 20 combos. Top 6 automatically saved for Stage 2.
Takes the top 6 combos from Stage 1 and tests them across all 5 strong LoRA subjects (Scott, Sarah, Mike, Emily, Chloe 2) and all 4 styles. This is the definitive test — if a combo wins here, it's the real deal.
| Subject | Gender | Known Avg | Session ID |
|---|---|---|---|
| Scott | Male | 82% | scott-tolbert-mm5jr5vd |
| Sarah | Female | 89% | neil-test-7-mm5jrqrx |
| Mike | Male | 86% | session-mmbzwxxutdpb |
| Emily | Female | 85% | emily-spence-utting-mmdwzi3o |
| Chloe 2 | Female | 84% | chloe-spence-utting-mmdrm9l7 |
Output: Overall winner + per-subject breakdown + per-style breakdown. Winner saved for Stage 3.
Tests 4 film stocks on the winning guidance/steps/LoRA scale combo. Film stock is likely independent of the other parameters — it's a colour grading layer — so this can be a smaller test.
| Stock | Character |
|---|---|
| Portra 400 | Natural skin tones, soft grain, warm — current default |
| Portra 800 | Slightly grainier, warmer, good in mixed light |
| Fuji 400H | Soft pastels, slightly cool — popular for portraits |
| Ektar 100 | Fine grain, vivid saturated colours — punchy |
Output: Ranked film stocks. Winner applied to final settings.
Tests the winning combo AND the old default (g2.5/s35/l0.90) on 3 mid/weak LoRAs. If the winner also works best for weak LoRAs → one universal setting. If the old default wins for weak LoRAs → we need adaptive settings based on LoRA quality.
| Subject | Gender | Known Avg | Why They're "Mid" |
|---|---|---|---|
| Neil 2 | Male | 39% | Poor selfie quality — weakest LoRA |
| Chloe | Female | 80% | First session — decent but not top tier |
| Emily 2 | Female | 80% | Second session — consistent but not highest |
Output: Winner vs old default on mid LoRAs. Determines if adaptive settings are needed.
| Scenario | Action |
|---|---|
| One combo leads by 3+ points consistently across subjects & styles | Lock it — that's the winner |
| Two combos are within 2 points | Pick the one with fewer steps (cheaper) or lower guidance (more natural) |
| Winner works for mid LoRAs too | One universal setting — simple |
| Different winner for mid LoRAs | Build a quality gate — score a test image first, pick settings based on result |
| Mid LoRAs are bad regardless | Focus on upload quality gates instead — reject bad selfies early |
node generate_photos.js <session-id>test_batches.json and to test_parameter_sweep.js subject arraysBest test: A brand new person the system has never seen gives the most unbiased validation. Take good selfies (well-lit, multiple angles, neutral expression) for a strong LoRA — this isn't about testing with bad photos, it's about confirming the winner works for new subjects.