{"course":{"slug":"ai-images","title":"Image Generation, in Practice","url":"https://addaly.com/learn/ai-images","level":"beginner","track":"create"},"lesson":{"slug":"one-change-at-a-time","title":"Change one thing, or you have learned nothing","url":"https://addaly.com/learn/ai-images/one-change-at-a-time","position":28,"of":69,"minutes":7,"answer":"A comparison is only informative when one variable moves, and the habit of changing prompt, sampler and steps together is why so much accumulated knowledge about image generation turns out to be wrong.","keyIdea":"A comparison is only informative when one variable moves, and the habit of changing prompt, sampler and steps together is why so much accumulated knowledge about image generation turns out to be wrong."},"body":{"format":"markdown","text":"## Where bad advice comes from\n\nSomebody changes their prompt, switches sampler, bumps steps from 20 to 35, and gets a better image. They post that DPM++ 3M SDE is better for portraits. Two thousand people repeat it. Nobody has tested it.\n\nThis is how almost all folklore in this field is produced, and it is why you should test the claims in this course too. The method is not complicated; it is just unglamorous.\n\n## The procedure\n\n1. Fix the seed.\n2. Fix everything else.\n3. Change exactly one thing.\n4. Generate both.\n5. Look at them side by side at 100%.\n\nMost interfaces have a built-in grid tool for this: A1111 and Forge call it X/Y/Z plot, ComfyUI does it with a primitive node in increment mode. It renders every combination on one sheet. A grid of 5 CFG values by 4 samplers is 20 images and answers the question properly in one run.\n\n## Things worth testing once, on your own work\n\nNot endlessly. Once, and then write down the answer and stop revisiting it:\n\n- **CFG**: render 3, 5, 7, 9, 12 at one seed. You are looking for where it starts to burn: over-saturated, hard-edged, crunchy. That is your ceiling. It differs per checkpoint and is usually lower than people run.\n- **Steps**: 15, 25, 40, 60. Find where you stop seeing change. Usually around 25 to 30.\n- **Samplers**: four of them at your settled CFG and steps. The differences will be smaller than you expect, which is itself the useful finding.\n- **Quality tags**: with and against. Usually nothing.\n- **Negative prompt**: your usual boilerplate against an empty one. Often surprisingly little.\n\nThat last one tends to change how people work. Long inherited negative prompts (the strings of \"worst quality, jpeg artifacts, extra limbs, bad anatomy\") were tuned for particular SD 1.5 fine-tunes and frequently do nothing on a modern checkpoint. Some models want an empty negative. You will not find out by reading; you will find out in four minutes with a fixed seed.\n\n## Why people do not do this\n\nBecause it feels slow, and because the exploratory mode (changing several things and seeing what happens) is enjoyable and occasionally productive.\n\nBoth modes are legitimate, and the point is to know which you are in. Playing is fine. Playing and then forming a firm belief about what caused the improvement is not. If a change seems to help, spend four minutes confirming it with a fixed seed before it enters your working practice, because an untested belief will cost you that four minutes every week for a year.\n\n## The limit of single-variable testing\n\nParameters interact. CFG and steps interact. A sampler's quality depends on the step count. A LoRA's right strength depends on the checkpoint. So a one-at-a-time test tells you about that variable *at your current settings*, and the answer can move when something else moves.\n\nThis is not a reason to abandon the method; it is a reason to re-test the two or three things that matter when you change checkpoint, and to prefer a small two-dimensional grid (CFG against steps, say) over two separate one-dimensional runs when you suspect interaction. Five by four is twenty images and perhaps three minutes on a distilled model.\n\nThe honest summary: you are not doing science, and you do not need to. You need enough rigour that your working defaults are true, and that is a handful of grids run once per checkpoint, written in a file next to your notes.\n\n## What the file should say\n\nKeep it short enough that you actually maintain it. One block per checkpoint:\n\n```text\ncheckpoint: realvis-xl-v5  (hash a1b2c3d4)\n  cfg:       5.5   (burns past 8)\n  steps:     26    (no change past 30)\n  sampler:   dpmpp_2m / karras\n  negative:  empty — boilerplate made no difference\n  buckets:   holds to 12:5; duplicates past that\n  notes:     warm bias, grade cooler by ~200K at finish\n  tested:    2026-03-14\n```\n\nThat block took twenty minutes to produce and removes about forty decisions a week. The date matters, because when you update the interface or the checkpoint you need to know the numbers are stale.\n\n## Testing the advice you are given\n\nOne last use for this, including on this course. Everything written here about step counts, CFG ranges, denoise values and negative prompts is a starting point drawn from common behaviour across common models, and your checkpoint may differ.\n\nSo treat every number in this course as a hypothesis with a four-minute test attached. If your model burns at CFG 6 rather than 8, the number in your file is right and the one in the lesson is wrong for you. That is not a failure of the lesson; it is the method working."},"check":{"question":"Why is a fixed seed necessary when testing whether a prompt change helped?","options":[{"text":"Because random seeds produce a wider spread of composition quality, which makes it harder to see small improvements against the natural variation.","correct":false,"tempting":"Describes a variance problem and implies more samples would fix it; the deeper issue is that the change and the noise are confounded in a single pair."},{"text":"Because interfaces cache the previous generation when the seed is unchanged, so the comparison runs faster and stays within one session.","correct":false,"tempting":"Caching is not what happens, and speed has nothing to do with whether the comparison is valid."},{"text":"Because a different seed produces a different image regardless of the prompt, so any difference cannot be attributed to the change.","correct":true},{"text":"Because some seeds are inherently better suited to certain prompts, and testing across seeds mixes prompt quality with an unrelated compatibility effect.","correct":false,"tempting":"There is no compatibility between seeds and prompts; a seed is just a starting noise field with no affinity for particular descriptions."}]},"prev":{"slug":"seed-discipline","title":"Fix the seed or learn nothing","url":"https://addaly.com/learn/ai-images/seed-discipline"},"next":{"slug":"when-the-model-will-not-do-it","title":"Recognising the twenty minutes that will never converge","url":"https://addaly.com/learn/ai-images/when-the-model-will-not-do-it"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'Change one thing, or you have learned nothing', in Image Generation, in Practice. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/ai-images/one-change-at-a-time (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"Change one thing, or you have learned nothing","courseTitle":"Image Generation, in Practice","module":{"index":3,"slug":"first-frames","title":"Getting to a frame worth keeping"},"answer":null,"keyIdea":"A comparison is only informative when one variable moves, and the habit of changing prompt, sampler and steps together is why so much accumulated knowledge about image generation turns out to be wrong.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"where-bad-advice-comes-from","runs":[{"text":"Where bad advice comes from"}]},{"t":"p","runs":[{"text":"Somebody changes their prompt, switches sampler, bumps steps from 20 to 35, and gets a better image. They post that DPM++ 3M SDE is better for portraits. Two thousand people repeat it. Nobody has tested it."}]},{"t":"p","runs":[{"text":"This is how almost all folklore in this field is produced, and it is why you should test the claims in this course too. The method is not complicated; it is just unglamorous."}]},{"t":"h2","id":"the-procedure","runs":[{"text":"The procedure"}]},{"t":"ol","start":1,"items":[[{"text":"Fix the seed."}],[{"text":"Fix everything else."}],[{"text":"Change exactly one thing."}],[{"text":"Generate both."}],[{"text":"Look at them side by side at 100%."}]]},{"t":"p","runs":[{"text":"Most interfaces have a built-in grid tool for this: A1111 and Forge call it X/Y/Z plot, ComfyUI does it with a primitive node in increment mode. It renders every combination on one sheet. A grid of 5 CFG values by 4 samplers is 20 images and answers the question properly in one run."}]},{"t":"h2","id":"things-worth-testing-once-on-your-own-work","runs":[{"text":"Things worth testing once, on your own work"}]},{"t":"p","runs":[{"text":"Not endlessly. Once, and then write down the answer and stop revisiting it:"}]},{"t":"ul","items":[[{"text":"CFG","b":true},{"text":": render 3, 5, 7, 9, 12 at one seed. You are looking for where it starts to burn: over-saturated, hard-edged, crunchy. That is your ceiling. It differs per checkpoint and is usually lower than people run."}],[{"text":"Steps","b":true},{"text":": 15, 25, 40, 60. Find where you stop seeing change. Usually around 25 to 30."}],[{"text":"Samplers","b":true},{"text":": four of them at your settled CFG and steps. The differences will be smaller than you expect, which is itself the useful finding."}],[{"text":"Quality tags","b":true},{"text":": with and against. Usually nothing."}],[{"text":"Negative prompt","b":true},{"text":": your usual boilerplate against an empty one. Often surprisingly little."}]]},{"t":"p","runs":[{"text":"That last one tends to change how people work. Long inherited negative prompts (the strings of “worst quality, jpeg artifacts, extra limbs, bad anatomy”) were tuned for particular SD 1.5 fine-tunes and frequently do nothing on a modern checkpoint. Some models want an empty negative. You will not find out by reading; you will find out in four minutes with a fixed seed."}]},{"t":"h2","id":"why-people-do-not-do-this","runs":[{"text":"Why people do not do this"}]},{"t":"p","runs":[{"text":"Because it feels slow, and because the exploratory mode (changing several things and seeing what happens) is enjoyable and occasionally productive."}]},{"t":"p","runs":[{"text":"Both modes are legitimate, and the point is to know which you are in. Playing is fine. Playing and then forming a firm belief about what caused the improvement is not. If a change seems to help, spend four minutes confirming it with a fixed seed before it enters your working practice, because an untested belief will cost you that four minutes every week for a year."}]},{"t":"h2","id":"the-limit-of-single-variable-testing","runs":[{"text":"The limit of single-variable testing"}],"role":"limit"},{"t":"p","runs":[{"text":"Parameters interact. CFG and steps interact. A sampler’s quality depends on the step count. A LoRA’s right strength depends on the checkpoint. So a one-at-a-time test tells you about that variable "},{"text":"at your current settings","i":true},{"text":", and the answer can move when something else moves."}]},{"t":"p","runs":[{"text":"This is not a reason to abandon the method; it is a reason to re-test the two or three things that matter when you change checkpoint, and to prefer a small two-dimensional grid (CFG against steps, say) over two separate one-dimensional runs when you suspect interaction. Five by four is twenty images and perhaps three minutes on a distilled model."}]},{"t":"p","runs":[{"text":"The honest summary: you are not doing science, and you do not need to. You need enough rigour that your working defaults are true, and that is a handful of grids run once per checkpoint, written in a file next to your notes."}]},{"t":"h2","id":"what-the-file-should-say","runs":[{"text":"What the file should say"}]},{"t":"p","runs":[{"text":"Keep it short enough that you actually maintain it. One block per checkpoint:"}]},{"t":"code","lang":"text","label":"Text","text":"checkpoint: realvis-xl-v5  (hash a1b2c3d4)\n  cfg:       5.5   (burns past 8)\n  steps:     26    (no change past 30)\n  sampler:   dpmpp_2m / karras\n  negative:  empty — boilerplate made no difference\n  buckets:   holds to 12:5; duplicates past that\n  notes:     warm bias, grade cooler by ~200K at finish\n  tested:    2026-03-14"},{"t":"p","runs":[{"text":"That block took twenty minutes to produce and removes about forty decisions a week. The date matters, because when you update the interface or the checkpoint you need to know the numbers are stale."}]},{"t":"h2","id":"testing-the-advice-you-are-given","runs":[{"text":"Testing the advice you are given"}]},{"t":"p","runs":[{"text":"One last use for this, including on this course. Everything written here about step counts, CFG ranges, denoise values and negative prompts is a starting point drawn from common behaviour across common models, and your checkpoint may differ."}]},{"t":"p","runs":[{"text":"So treat every number in this course as a hypothesis with a four-minute test attached. If your model burns at CFG 6 rather than 8, the number in your file is right and the one in the lesson is wrong for you. That is not a failure of the lesson; it is the method working."}]}],"check":{"question":[{"text":"Why is a fixed seed necessary when testing whether a prompt change helped?"}],"options":[{"text":[{"text":"Because random seeds produce a wider spread of composition quality, which makes it harder to see small improvements against the natural variation."}],"correct":false,"tempting":[{"text":"Describes a variance problem and implies more samples would fix it; the deeper issue is that the change and the noise are confounded in a single pair."}]},{"text":[{"text":"Because interfaces cache the previous generation when the seed is unchanged, so the comparison runs faster and stays within one session."}],"correct":false,"tempting":[{"text":"Caching is not what happens, and speed has nothing to do with whether the comparison is valid."}]},{"text":[{"text":"Because a different seed produces a different image regardless of the prompt, so any difference cannot be attributed to the change."}],"correct":true,"tempting":null},{"text":[{"text":"Because some seeds are inherently better suited to certain prompts, and testing across seeds mixes prompt quality with an unrelated compatibility effect."}],"correct":false,"tempting":[{"text":"There is no compatibility between seeds and prompts; a seed is just a starting noise field with no affinity for particular descriptions."}]}],"order":[1,3,0,2],"why":null},"prev":{"slug":"seed-discipline","title":"Fix the seed or learn nothing","minutes":7},"next":{"slug":"when-the-model-will-not-do-it","title":"Recognising the twenty minutes that will never converge","minutes":7}}}