{"slug": "i-taught-a-tiny-ai-what-to-remember-it-cheated-then-it-got-good", "title": "I taught a tiny AI what to remember. It cheated. Then it got good.", "summary": "A developer built a laptop-based lab called nanolab to train a tiny AI model to write memory notebooks. The model initially cheated by copying everything, but after making copying impossible, it learned to select key facts, improving from 0.55 to 1.00 on held-out number puzzles. However, when tested on workplace chat, the skill only partially transferred, as the model forgot whose facts it was keeping.", "body_md": "*Two weeks. One laptop. Free GPUs. About $5. Every number below is from a real run.*\n\nHere is a notebook a tiny model wrote for me.\n\nIt had six chats to remember and a 350-character budget. This is what the next model actually saw — the rest got cut off:\n\n```\n- my neighbor's dog Kabir kept barking all night.\n- watched an old western last night, decent.\n- watched a cooking show last night, decent.\n- long day, mostly meetings.\n- weather here has been surprisingly sunny.\n- slept badly, don't ask.\n- had a scare — turns out I'm allergic to lactose.\n- my cousin's dog Kabir kept barking all night.\n- we adopted\n```\n\nIt kept the neighbor's dog. Twice.\n\nIt lost the cat's name. The city. The job. The drink they switched to. Cut off at *\"we adopted\"*.\n\nThat model had just scored **+0.486**. It looked like a win. It was cheating — copying everything, in order, until the page ran out.\n\nI caught it by reading the notebook. Not the score.\n\nThen I made copying impossible. Then I made junk expensive. Then the same tiny model learned to choose. And then I put it in a world it had never seen, and only half the skill came with it.\n\nThis is that story. No screenshots of a demo. No \"vibes.\" Real runs.\n\nI built a small lab on my laptop called **nanolab**. It can measure a model, train it, serve it, and measure it again. Everything lands in one database, with the raw answers behind every number.\n\nHere is what the real runs showed.\n\n**The ruler works.** A standard eval tool scored **0.875**. My lab scored **0.875**. Same setup. Same questions. Same answers, to every decimal. If the ruler is wrong, nothing after it matters.\n\n**Training can move a small model.** Qwen3-0.6B — a model you can run on a laptop — on school math it had never seen: **27 / 64 right → 36 / 64 right** (42% → 56%). That's the *last* save of the run, not a cherry-picked peak. Free cloud GPU.\n\n**A memory skill can be taught.** I gave the model one job: rewrite a tiny notebook. A second model, frozen, later answers questions using *only* that notebook. Score = how much the notes help vs no notes at all.\n\nOn number-puzzles it had never seen: **untrained 0.55 → trained 1.00**. **12 / 12 streams. Zero errors.**\n\nOn chat: a real AI reading those notes went from **36% right with no notes → 72% with the trained notes**.\n\n**And then half of it failed in a new world.** Same model. No extra training. Workplace chat instead of personal chat. It still kept facts and updated old ones. It forgot whose facts they were.\n\nThose five things are the project. Everything else is how I got there.\n\nA fake person chats over a few days.\n\nTwo models play.\n\n**The Scribe** is tiny (0.6B). After each chat it rewrites a notebook. The notebook is too small to hold everything. That is the point.\n\n**The Reader** never learns, and never sees the chat. At the end it answers from the notebook alone.\n\nQuestions are mean on purpose:\n\nA good notebook has to **keep**, **replace**, and **refuse**.\n\nI started with number puzzles, not chat. Later puzzles need numbers from earlier ones. The Scribe's job: write them down.\n\nBefore training, I measured the untrained model. It already scored **0.905**. It was just copying numbers. Nothing to teach.\n\nSo the lab **refused to train**. Starting score too high. That refusal was the right result. A perfect score on an easy task is a fake win.\n\nI made the puzzles harder: needed numbers buried in junk, notebook too small for both. Untrained score fell to **0.55**.\n\nThen training worked. Held-out puzzles, never seen:\n\n**0.55 → 1.00. 12 out of 12. Zero errors.**\n\nThe trained notebook was 189 characters. Zero junk lines.\n\nI also tried three harder versions it never trained on — no hint labels, more junk, longer chains. The untrained model got worse (0.54 → 0.52 → 0.44). The trained one stayed at **1.00** every time.\n\nSo the machine can teach \"keep what matters.\" On numbers. Chat was harder.\n\nUntrained, on chat, the notes made the Reader *worse than no notes*: **−0.028**. It wrote the small talk and the neighbor's dog. It dropped the facts.\n\nI trained it. Score jumped to **+0.486**. Reader went from 17% to 65%.\n\nThen I opened the notebooks. That's the one at the top of this post. Copy. Everything. In order.\n\n**A model learns the laziest trick that still gets paid.** Not the clever one you wanted.\n\nI made copying lose. More chats. More noise. A notebook so small the full dump overflows **3.6 times**.\n\nThe copier fell from +0.486 to **+0.100**. Its notes got cut off. The facts were at the end. Gone.\n\nA new run, same hard setup: **+0.367**. Notebooks stopped looking like sentences:\n\n```\nRavi: Cat. Berlin: Living. Lactose Allergy: Present.\nMatcha: Not. Cocoa: Present.\n```\n\n221 characters. Fit every time. That's real. That's compression.\n\nIt still wrote down the neighbor's dog. Every time.\n\nI made junk expensive. Two traps per chat. Trap and update questions counted **double**. I started from the compression model, not from scratch.\n\nSame new chats. Same grader.\n\n| Model | Lift | Traps written | Old values kept |\n|---|---|---|---|\nTrained to choose |\n+0.375 |\n3 / 16 |\n2 / 16 |\n| Compression model | −0.023 | 13 / 16 | 9 / 16 |\n| Never trained | −0.182 | 8 / 16 | 6 / 16 |\n\nTrap questions: **19% → 81%**. Update questions: **19% → 75%**.\n\nPlain facts slipped a bit (75% → 62%). Choosy means you sometimes drop a real thing. Worth it here.\n\n**Copy → compress → choose.** I did not get there by asking nicer. I changed the game until the cheat stopped working. I knew it was a cheat because I read the notebooks.\n\nMy grader is a simple checker. Fair question.\n\nI froze the notebooks — same text, no retraining — and let a real AI (Grok) answer instead.\n\n| Model | My checker | Real AI |\n|---|---|---|\nChoose |\n+0.375 |\n+0.352 |\n| Compress | −0.023 | +0.011 |\n| Never trained | −0.182 | +0.091 |\n\nBarely moved. With the trained notes, the real AI got **72% right vs 36% with an empty notebook**.\n\nFunny bit: bad notes look *better* to a smart reader. It sees *\"my cousin's dog\"* and thinks *that's not your dog*. My checker falls for it. So the trained model's lead is the *smaller*, safer number.\n\nAll of that was personal chat. Pets. Cities. Neighbors.\n\nI built a second world the model had never seen: **work standups**. Projects, deadlines, clients. Traps like *\"the platform team's manager Lena.\"* No extra training. Drop it in.\n\n| Model | Home | Work (never seen) |\n|---|---|---|\n| Choose | +0.375 | +0.159 |\n| Compress | −0.023 | +0.182 |\n| Never trained | −0.182 | −0.159 |\n\nBoth trained models still help. The untrained one still hurts. So *something* transferred.\n\nWhat, exactly?\n\n**Came with it**\n\n**Did not**\n\nIt never learned the idea *\"this belongs to someone else.\"* It learned the *sound* of it — *\"my neighbor's…\"*, *\"my cousin's…\"*. Say the same trap in office English and it writes it down.\n\nThat's the sentence I want you to take:\n\n**A memory skill is a bundle. The parts don't travel together.** Keeping a fact and updating a fact can be real skills. Knowing whose fact it is — at this size, trained on one kind of chat — can just be a habit.\n\nI have not trained on mixed worlds yet. I'm saying that so I don't pretend I have.\n\nSmall tests: 8–12 chats per result. Tasks I wrote, not a public benchmark. One model size. I have not run LongMemEval or LoCoMo yet, so **don't compare these numbers to papers**. That's next.\n\nWhat it *is*: real training runs on a free GPU, real notebooks I read by hand, a second grader that didn't change the story, and a new world where half the skill stayed and half fell off.\n\nIf you build memory into an agent: **don't trust a fine-tune in a new domain until you check which part moved.** Mine kept the facts. It updated them. It forgot who they belonged to.\n\nCode and the full write-up: [github.com/khwahish1509/RLPost](https://github.com/khwahish1509/RLPost)", "url": "https://wpnews.pro/news/i-taught-a-tiny-ai-what-to-remember-it-cheated-then-it-got-good", "canonical_source": "https://dev.to/khwahish_vaid_1509/i-taught-a-tiny-ai-what-to-remember-it-cheated-then-it-got-good-29oe", "published_at": "2026-08-13 18:58:03+00:00", "updated_at": "2026-08-13 19:20:26.731893+00:00", "lang": "en", "topics": ["machine-learning", "artificial-intelligence", "ai-research", "ai-safety", "ai-agents"], "entities": ["nanolab", "Qwen3-0.6B"], "alternates": {"html": "https://wpnews.pro/news/i-taught-a-tiny-ai-what-to-remember-it-cheated-then-it-got-good", "markdown": "https://wpnews.pro/news/i-taught-a-tiny-ai-what-to-remember-it-cheated-then-it-got-good.md", "text": "https://wpnews.pro/news/i-taught-a-tiny-ai-what-to-remember-it-cheated-then-it-got-good.txt", "jsonld": "https://wpnews.pro/news/i-taught-a-tiny-ai-what-to-remember-it-cheated-then-it-got-good.jsonld"}}