Break it: targets equal inputs
lesson 1.8 · Break itWhat does a classic data bug look like from the outside?
Run A
donefineweb_edu · 6L·384d · 30M params · bf16
tokens read
16,384,000
step
2,000 / 2,000
- train loss
- 5.325
- best val
- 5.300
- tokens/s
- 22k
- MFU
- 3.7%
- peak mem
- 6.4 GB
- lr
- 1.0e-4
0:14:01 · 0.016 kWh ≈ <$0.01 power · ≈ $0.07 to rent
Run B
donefineweb_edu · 6L·384d · 30M params · bf16
tokens read
16,384,000
step
2,000 / 2,000
- train loss
- 0.020
- best val
- 0.027
- tokens/s
- 22k
- MFU
- 3.7%
- peak mem
- 6.4 GB
- lr
- 1.0e-4
0:13:02 · 0.015 kWh ≈ <$0.01 power · ≈ $0.07 to rent
The machine, live
NVIDIA L4 · gcp-l4-lab2offline · just nowGPU busy
– %
VRAM
– / 22 GB
Power
– / 230 W
Temperature
– °C
SM clock
– MHz
Memory bus
– %
Fan
– %
CPU
– %
PCIe
to GPU –from GPU –
Batches of token ids cross the PCIe bus into the GPU each step; weights never leave it.
Disk
read –write –
Reads: token windows from the tokenized dataset (mostly from page cache). Writes: checkpoints, about 1.5 GB each for GPT-2 124M.
Network
in –out –
In: dataset downloads from Hugging Face. Out: metrics to Supabase and checkpoint uploads to Cloud Storage.
drawing now
–
last 5 minutes
–
from the card's energy counter
this experiment
0.032 kWh
≈ <$0.01 of electricity
RAM
–
of 31.3 GB in WSL
Sampled every 2 s on the box (NVML + psutil) and pushed here over Supabase Realtime. GPU energy is the whole card. Electricity at an assumed $0.15/kWh.
What's happening
What to watch · B's loss should collapse towards zero almost at once: too good to be true, because it only learns to copy its input. Its samples never improve. A loss far below what's possible is a bug, not a breakthrough.
Run A
Queued
done
Download data
done
Tokenize
done
Build and compile
done
Warm up
done
Train
done
Finished
done
Run B
Queued
done
Download data
done
Tokenize
done
Build and compile
done
Warm up
done
Train
done
Finished
done
The questions
| arithmetic | A 0.49 | B 0.15 |
| ice | A 0.64 | B 0.00 |
| ocean | A 0.54 | B 0.00 |
| orbit | A 0.71 | B 0.00 |
| paris | A 0.56 | B 0.00 |
| planet | A 0.27 | B 0.00 |
| sky | A 0.68 | B 0.01 |
| water | A 0.42 | B 0.01 |
| whale | A 0.03 | B 0.00 |
Prompts include "Q: Is water a liquid at room temperature? A:" (Yes vs No), "The capital of France is" (Paris vs London) and "The largest planet in our solar system is" (Jupiter vs Mars). Full list: trainer/src/galtrain/train.py.
Run A
Water is the most important part of the future. This can also be the most important part of the water, so the energy is necessary for our body, and it’s important to help you will be to keep your body off. You’re not only interested in making sure to find some of these reasons to help your body and the best needed to get rid of your body. You can’t see to get you on the energy, but also that’s not yet important. This is when you do not know with it. The new way to make your body to take your first step. You’re not trying to do with your body, and you will try it to put on to the heart and heart of your body up in a side of the body. It will always be sure to do with your body and make you ready for your body. It’s a good way to do not know that you need to do it. A more severe
Run B
Water is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is is
What happened
- BFinished 2000 steps. Best val loss 0.027.
- BCheckpoint at step 2000: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 1.53s.
- BStep 2000: val 0.027, train 0.023 (gap +0.003).
- BStep 1800: val 0.031, train 0.025 (gap +0.006).
- BCheckpoint at step 1750: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 1.53s.
- BStep 1600: val 0.031, train 0.029 (gap +0.002).
- BCheckpoint at step 1500: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 1.63s.
- BStep 1400: val 0.031, train 0.029 (gap +0.002).
- BCheckpoint at step 1250: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 1.54s.
- BStep 1200: val 0.036, train 0.031 (gap +0.004).
- BCheckpoint at step 1000: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 1.57s.
- BStep 1000: val 0.033, train 0.030 (gap +0.003).
- BStep 800: val 0.030, train 0.032 (gap -0.002).
- BCheckpoint at step 750: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 1.61s.
- BStep 600: val 0.034, train 0.038 (gap -0.004).
- BCheckpoint at step 500: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 1.56s.
- BStep 400: val 0.061, train 0.048 (gap +0.013).
- BCheckpoint at step 250: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 2.95s.
- BStep 200: val 0.144, train 0.139 (gap +0.005).
- BCheckpoint at step 100: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 1.54s.
- BCheckpoint at step 50: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 1.56s.
- BCheckpoint step 0 copied off the machine to gs://train-galvyn-xyz-checkpoints/runs/e36d077d-45a2-47ba-bc66-3975c55f009f/step-0000000.pt in 1.7s (in the background; training didn't wait).
- BCheckpoint at step 0: 120.3 MB (weights, AdamW state, schedule position, RNG states) in 0.52s.
- BData bug on purpose: targets equal inputs, so the model only learns to copy. Loss collapses; samples won't improve.
- BExpected loss before training ≈ ln(vocab) = 10.83.
- BTraining 30.06M params on fineweb_edu for 2000 steps (bf16, batch 32×1, ctx 256).
- AFinished 2000 steps. Best val loss 5.300.
- ACheckpoint at step 2000: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 3.17s.
- AStep 2000: val 5.300, train 5.318 (gap -0.018).
- AStep 1800: val 5.362, train 5.304 (gap +0.057).
- ACheckpoint at step 1750: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 3.58s.
- AStep 1600: val 5.435, train 5.367 (gap +0.068).
- ACheckpoint at step 1500: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 3.37s.
- AStep 1400: val 5.462, train 5.411 (gap +0.050).
- ACheckpoint at step 1250: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 3.58s.
- AStep 1200: val 5.596, train 5.556 (gap +0.040).
- ACheckpoint at step 1000: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 3.57s.
- AStep 1000: val 5.673, train 5.627 (gap +0.046).
- AStep 800: val 5.782, train 5.786 (gap -0.004).
- ACheckpoint at step 750: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 3.46s.
- AStep 600: val 5.975, train 5.990 (gap -0.015).
- ACheckpoint at step 500: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 3.64s.
- AStep 400: val 6.265, train 6.193 (gap +0.072).
- ACheckpoint at step 250: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 3.64s.
- AStep 200: val 6.571, train 6.549 (gap +0.022).
- ACheckpoint at step 100: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 3.52s.
- ACheckpoint at step 50: 360.9 MB (weights, AdamW state, schedule position, RNG states) in 3.55s.
- ACheckpoint step 0 copied off the machine to gs://train-galvyn-xyz-checkpoints/runs/ca7a87ed-cead-450a-af4a-bd1e9941008f/step-0000000.pt in 1.9s (in the background; training didn't wait).
- ACheckpoint at step 0: 120.3 MB (weights, AdamW state, schedule position, RNG states) in 1.16s.
- AExpected loss before training ≈ ln(vocab) = 10.83.
- ATraining 30.06M params on fineweb_edu for 2000 steps (bf16, batch 32×1, ctx 256).