{"course":{"slug":"running-models-yourself","title":"Running Models Yourself","url":"https://addaly.com/learn/running-models-yourself","level":"intermediate","track":"deep"},"lesson":{"slug":"reading-the-loss-curve","title":"Generalisation, memorisation and forgetting","url":"https://addaly.com/learn/running-models-yourself/reading-the-loss-curve","position":79,"of":82,"minutes":9,"answer":"Only evaluation loss on held-out data carries information, and neither loss curve detects catastrophic forgetting, so keep a twenty-item general-capability set from before the run, compare outputs side by side afterwards.","keyIdea":"Only evaluation loss on held-out data carries information, and neither loss curve detects catastrophic forgetting, so keep a twenty-item general-capability set from before the run, compare outputs side by side afterwards, and raise human review after a fine-tune because errors now arrive in a register reviewers trust."},"body":{"format":"markdown","text":"## Training loss proves almost nothing\n\nTraining loss falling means the model has fitted the examples in front of it. A sufficiently large adapter on a few hundred examples can drive it near zero by memorising them, and that model will be worse than the base on anything it has not seen.\n\nThe only curve that carries information is evaluation loss on data the model has not trained on. Watch the two together, because the relationship between them is what tells you what happened.\n\n## The four shapes\n\n**Both falling.** The run is working. Continue until evaluation loss stops improving.\n\n**Training falling, evaluation rising.** Overfitting, and the point where evaluation turned is where the useful learning stopped. Take the checkpoint from that step rather than the final one. Then fix the cause: fewer epochs, more data, a lower rank, or more dropout, in that order of effectiveness.\n\n> Figure: Only one of these two curves carries information. Line chart of Loss against Training steps: Training loss (0, 1.8) (50, 1.2) (100, 0.95) (150, 0.78) (200, 0.62) (250, 0.48) (300, 0.35); Evaluation loss, held-out data (0, 1.75) (50, 1.25) (100, 1.05) (150, 0.98) (200, 1.02) (250, 1.12) (300, 1.28). Training loss falling means the examples in front of it have been fitted, which a large adapter can do by memorising them. The useful learning stopped where the evaluation curve turned, so take that checkpoint rather than the final one. Neither curve detects catastrophic forgetting, because the evaluation set is drawn from the same narrow distribution as the training set.\n\n**Both flat.** Either the learning rate is too low, the adapter is not actually attached, or the model already does this task and there is nothing to learn. All three are common, and the third is worth taking seriously before spending another week.\n\n**Spikes.** A learning rate that is too high, or a small number of pathological examples: a single enormous document, a corrupted record. Find them by logging per-example loss and looking at the worst ten. It is usually the data.\n\nOne caution about the numbers themselves: loss values are not comparable across runs that differ in masking, sequence packing or tokenisation. A run with prompt masking has a higher loss than one without, and neither is better. Compare a run to itself over time, and compare models to each other on a task evaluation.\n\n## The check that everyone skips\n\nA model can get better at your task and worse at everything else. This is catastrophic forgetting, and with LoRA it is milder than with full fine-tuning (the base is frozen), but it is entirely real, particularly at high rank, over many epochs, or on a narrow dataset.\n\nIt does not appear in your evaluation loss, because your evaluation set is drawn from the same narrow distribution as your training set. Both numbers improve while the model loses the ability to answer a general question, follow an unrelated instruction, or respond in another language.\n\nBuild a general-capability set of perhaps twenty items before you train, and run it before and after:\n\n- Three general knowledge questions the base answers correctly.\n- Three instruction-following items unrelated to your task, such as \"reply in exactly two sentences\".\n- Two items in each other language your users actually use.\n- Two items that should be refused.\n- Two short reasoning or arithmetic items.\n- A handful of your own task's items, for contrast.\n\nRun them at temperature 0 against the base and against the adapter, and read the outputs side by side. It takes twenty minutes and it is the only thing standing between you and shipping a model that is excellent at one job and broken at the rest.\n\n## Evaluation loss is still a proxy\n\nLower evaluation loss means the model assigns higher probability to the reference answers. It does not mean the outputs are better for your purpose, and the two can diverge: most visibly when the reference answers have a stylistic quirk the model is learning to reproduce.\n\nSo finish with the task evaluation from the previous module: the actual inputs, the actual scoring, the actual pass criterion. Run it on the base, on each checkpoint, and on the final adapter. A checkpoint from the middle of the run is often the best model, and you would never know from the final numbers alone.\n\n## The failure that fluency hides\n\nHere is what makes a tuned model dangerous in a way a base model is not. Tuning makes the output look like your house style: your formatting, your vocabulary, your level of confidence. Errors arrive in exactly the register your reviewers have learned to trust, and the surface cues they were unconsciously using to catch mistakes are gone.\n\nThe correct response is counter-intuitive: increase human review immediately after a fine-tune rather than reducing it. Sample fifty real outputs and read them properly in the first week. What you are checking for is not fluency, which is guaranteed, but whether the content is right.\n\n> A tuned model does not sound less sure when it is wrong. That is what you trained out of it."},"check":{"question":"After fine-tuning, both training and evaluation loss fall steadily and the task evaluation improves. A week later, users report the model has stopped handling unrelated requests it used to manage. Why did the curves not show this?","options":[{"text":"Evaluation loss lags behind behavioural change, so the degradation would have appeared in the curves had training continued longer.","correct":false,"tempting":"Treats a distribution problem as a timing one; the held-out set would never contain the degraded behaviour however long the run continued."},{"text":"The evaluation set shares the training set’s narrow distribution, so it cannot measure anything outside it.","correct":true},{"text":"Loss values are not comparable across runs with different masking, so the reported figures were misleading.","correct":false,"tempting":"A genuine caution about comparing runs, but here a single run is being compared with itself, where the values are consistent."},{"text":"LoRA freezes the base weights, so any degradation must come from the serving configuration rather than from training.","correct":false,"tempting":"Freezing the base reduces forgetting but does not prevent it, because the adapter's update applies to every input the model sees, not only to task inputs."}]},"prev":{"slug":"running-the-training-run","title":"Running the training run","url":"https://addaly.com/learn/running-models-yourself/running-the-training-run"},"next":{"slug":"serving-and-merging-adapters","title":"Serving what you made, merged or not","url":"https://addaly.com/learn/running-models-yourself/serving-and-merging-adapters"},"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) 'Generalisation, memorisation and forgetting', in Running Models Yourself. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/running-models-yourself/reading-the-loss-curve (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":"Generalisation, memorisation and forgetting","courseTitle":"Running Models Yourself","module":{"index":9,"slug":"making-it-yours","title":"Making it yours: adapters and training"},"answer":null,"keyIdea":"Only evaluation loss on held-out data carries information, and neither loss curve detects catastrophic forgetting, so keep a twenty-item general-capability set from before the run, compare outputs side by side afterwards, and raise human review after a fine-tune because errors now arrive in a register reviewers trust.","hero":{"kind":"figure","figure":{"t":"figure","label":"Figure","figure":{"type":"line","title":"Only one of these two curves carries information","series":[{"label":"Training loss","points":[[0,1.8],[50,1.2],[100,0.95],[150,0.78],[200,0.62],[250,0.48],[300,0.35]]},{"label":"Evaluation loss, held-out data","points":[[0,1.75],[50,1.25],[100,1.05],[150,0.98],[200,1.02],[250,1.12],[300,1.28]]}],"xLabel":"Training steps","yLabel":"Loss","caption":"Training loss falling means the examples in front of it have been fitted, which a large adapter can do by memorising them. The useful learning stopped where the evaluation curve turned, so take that checkpoint rather than the final one. Neither curve detects catastrophic forgetting, because the evaluation set is drawn from the same narrow distribution as the training set."},"alt":"Figure: Only one of these two curves carries information. Line chart of Loss against Training steps: Training loss (0, 1.8) (50, 1.2) (100, 0.95) (150, 0.78) (200, 0.62) (250, 0.48) (300, 0.35); Evaluation loss, held-out data (0, 1.75) (50, 1.25) (100, 1.05) (150, 0.98) (200, 1.02) (250, 1.12) (300, 1.28). Training loss falling means the examples in front of it have been fitted, which a large adapter can do by memorising them. The useful learning stopped where the evaluation curve turned, so take that checkpoint rather than the final one. Neither curve detects catastrophic forgetting, because the evaluation set is drawn from the same narrow distribution as the training set."}},"blocks":[{"t":"h2","id":"training-loss-proves-almost-nothing","runs":[{"text":"Training loss proves almost nothing"}]},{"t":"p","runs":[{"text":"Training loss falling means the model has fitted the examples in front of it. A sufficiently large adapter on a few hundred examples can drive it near zero by memorising them, and that model will be worse than the base on anything it has not seen."}]},{"t":"p","runs":[{"text":"The only curve that carries information is evaluation loss on data the model has not trained on. Watch the two together, because the relationship between them is what tells you what happened."}]},{"t":"h2","id":"the-four-shapes","runs":[{"text":"The four shapes"}]},{"t":"p","runs":[{"text":"Both falling.","b":true},{"text":" The run is working. Continue until evaluation loss stops improving."}]},{"t":"p","runs":[{"text":"Training falling, evaluation rising.","b":true},{"text":" Overfitting, and the point where evaluation turned is where the useful learning stopped. Take the checkpoint from that step rather than the final one. Then fix the cause: fewer epochs, more data, a lower rank, or more dropout, in that order of effectiveness."}]},{"t":"p","runs":[{"text":"Both flat.","b":true},{"text":" Either the learning rate is too low, the adapter is not actually attached, or the model already does this task and there is nothing to learn. All three are common, and the third is worth taking seriously before spending another week."}]},{"t":"p","runs":[{"text":"Spikes.","b":true},{"text":" A learning rate that is too high, or a small number of pathological examples: a single enormous document, a corrupted record. Find them by logging per-example loss and looking at the worst ten. It is usually the data."}]},{"t":"p","runs":[{"text":"One caution about the numbers themselves: loss values are not comparable across runs that differ in masking, sequence packing or tokenisation. A run with prompt masking has a higher loss than one without, and neither is better. Compare a run to itself over time, and compare models to each other on a task evaluation."}]},{"t":"h2","id":"the-check-that-everyone-skips","runs":[{"text":"The check that everyone skips"}]},{"t":"p","runs":[{"text":"A model can get better at your task and worse at everything else. This is catastrophic forgetting, and with LoRA it is milder than with full fine-tuning (the base is frozen), but it is entirely real, particularly at high rank, over many epochs, or on a narrow dataset."}]},{"t":"p","runs":[{"text":"It does not appear in your evaluation loss, because your evaluation set is drawn from the same narrow distribution as your training set. Both numbers improve while the model loses the ability to answer a general question, follow an unrelated instruction, or respond in another language."}]},{"t":"p","runs":[{"text":"Build a general-capability set of perhaps twenty items before you train, and run it before and after:"}]},{"t":"ul","items":[[{"text":"Three general knowledge questions the base answers correctly."}],[{"text":"Three instruction-following items unrelated to your task, such as “reply in exactly two sentences”."}],[{"text":"Two items in each other language your users actually use."}],[{"text":"Two items that should be refused."}],[{"text":"Two short reasoning or arithmetic items."}],[{"text":"A handful of your own task’s items, for contrast."}]]},{"t":"p","runs":[{"text":"Run them at temperature 0 against the base and against the adapter, and read the outputs side by side. It takes twenty minutes and it is the only thing standing between you and shipping a model that is excellent at one job and broken at the rest."}]},{"t":"h2","id":"evaluation-loss-is-still-a-proxy","runs":[{"text":"Evaluation loss is still a proxy"}]},{"t":"p","runs":[{"text":"Lower evaluation loss means the model assigns higher probability to the reference answers. It does not mean the outputs are better for your purpose, and the two can diverge: most visibly when the reference answers have a stylistic quirk the model is learning to reproduce."}]},{"t":"p","runs":[{"text":"So finish with the task evaluation from the previous module: the actual inputs, the actual scoring, the actual pass criterion. Run it on the base, on each checkpoint, and on the final adapter. A checkpoint from the middle of the run is often the best model, and you would never know from the final numbers alone."}]},{"t":"h2","id":"the-failure-that-fluency-hides","runs":[{"text":"The failure that fluency hides"}]},{"t":"p","runs":[{"text":"Here is what makes a tuned model dangerous in a way a base model is not. Tuning makes the output look like your house style: your formatting, your vocabulary, your level of confidence. Errors arrive in exactly the register your reviewers have learned to trust, and the surface cues they were unconsciously using to catch mistakes are gone."}]},{"t":"p","runs":[{"text":"The correct response is counter-intuitive: increase human review immediately after a fine-tune rather than reducing it. Sample fifty real outputs and read them properly in the first week. What you are checking for is not fluency, which is guaranteed, but whether the content is right."}]},{"t":"quote","runs":[{"text":"A tuned model does not sound less sure when it is wrong. That is what you trained out of it."}]}],"check":{"question":[{"text":"After fine-tuning, both training and evaluation loss fall steadily and the task evaluation improves. A week later, users report the model has stopped handling unrelated requests it used to manage. Why did the curves not show this?"}],"options":[{"text":[{"text":"Evaluation loss lags behind behavioural change, so the degradation would have appeared in the curves had training continued longer."}],"correct":false,"tempting":[{"text":"Treats a distribution problem as a timing one; the held-out set would never contain the degraded behaviour however long the run continued."}]},{"text":[{"text":"The evaluation set shares the training set’s narrow distribution, so it cannot measure anything outside it."}],"correct":true,"tempting":null},{"text":[{"text":"Loss values are not comparable across runs with different masking, so the reported figures were misleading."}],"correct":false,"tempting":[{"text":"A genuine caution about comparing runs, but here a single run is being compared with itself, where the values are consistent."}]},{"text":[{"text":"LoRA freezes the base weights, so any degradation must come from the serving configuration rather than from training."}],"correct":false,"tempting":[{"text":"Freezing the base reduces forgetting but does not prevent it, because the adapter’s update applies to every input the model sees, not only to task inputs."}]}],"order":[2,0,3,1],"why":null},"prev":{"slug":"running-the-training-run","title":"Running the training run","minutes":9},"next":{"slug":"serving-and-merging-adapters","title":"Serving what you made, merged or not","minutes":8}}}