train.galvyn.xyz · lab
read-onlySign in

GPT-2 124M on 10B tokens, 8× H100 (same recipe, rented for 90 min)

lesson 1.9 · Scale

The same GPT-2 run as on the home A5000, on a rented 8× H100 machine: how much faster, and is the result the same?

Run A

done

fineweb_edu_10b · 12L·768d · 124M params · bf16

tokens read

9,999,745,024

step

19,073 / 19,073

train loss
3.014
best val
3.055
tokens/s
3.5M
MFU
37.7%
peak mem
21.6 GB
lr
6.0e-5

0:48:14 · 5.0 kWh · ≈ $42 rented at $52.45/h

Losslower is better · starts near ln(vocab)
510500010k15kstepA checkpoint @ 50A checkpoint @ 100A checkpoint @ 250A checkpoint @ 1000A checkpoint @ 1380A checkpoint @ 1576A checkpoint @ 2000A checkpoint @ 3000A checkpoint @ 4000A checkpoint @ 5000A checkpoint @ 6000A checkpoint @ 7000A checkpoint @ 8000A checkpoint @ 9000A checkpoint @ 10000A checkpoint @ 11000A checkpoint @ 12000A checkpoint @ 13000A checkpoint @ 14000A checkpoint @ 15000A checkpoint @ 16000A checkpoint @ 17000A checkpoint @ 18000A checkpoint @ 19000A checkpoint @ 19073

The machine, live

8× NVIDIA H100 80GB HBM3 · gcp-h100x8offline · just now

GPU busy

– %

VRAM

– / 637 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

5.03 kWh

≈ $0.75 of electricity

RAM

–

of 1842.6 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

  1. Queued

    done

  2. Download data

    done

  3. Tokenize

    done

  4. Build and compile

    done

  5. Warm up

    done

  6. Train

    done

  7. Finished

    done

solid = train (smoothed) · dots = validation · dashed = after a crash-test resume
Learning ratewarmup, then cosine
0e+02e-44e-46e-4500010k15kstep
Gradient normbefore clipping to 1.0 · log scale
110500010k15kstep
Throughputtokens per second
01.0M2.0M3.0M500010k15kstep
MFUshare of this precision's peak (bf16 111, fp32 27.8 TFLOPS)
0.0%20.0%40.0%500010k15kstep
GPU memory (measured)peak per log window · dashed = activations + workspace
18.6 GB19.5 GB20.5 GB21.5 GB500010k15kstep
Does it know? Fact probesP(right word) / P(right + wrong): 0.5 = no idea, 1 = sure and right
00.51500010k15kstep
The questions
arithmeticA 0.72
iceA 0.19
oceanA 0.80
orbitA 0.99
parisA 0.99
planetA 0.89
skyA 0.73
waterA 0.69
whaleA 0.92

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.

Samplessame prompt and random draw every time, so only the model changes

Run A

Water is the most important part of the water cycle. It provides oxygen to the atmosphere and protects it from the harmful effects of pollution.
Every day, over 1.5 billion people around the world lose part or all of their drinking water. This is a problem that affects all of us, but we all need to be conscious of the water conservation tips.
The first and most obvious tip is to follow the water conservation tips that you can follow. This way, you will be able to save water.
When we drink, the water that we drink is filtered again and the water will be free from contaminants. But what about when we are not drinking enough water?
Some of the things that can go wrong with our drinking water can not only lead to water quality problems but also it’s a potential health hazard.
The first and most obvious thing that can go wrong with our drinking water is the water itself. It is not safe to drink water that we are not properly using. It

What happened

  1. AFinished 19073 steps. Best val loss 3.055.
  2. ACheckpoint at step 19073: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 5.35s.
  3. AStep 19073: val 3.073, train 3.041 (gap +0.032).
  4. ACheckpoint at step 19000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 5.25s.
  5. AStep 19000: val 3.057, train 3.032 (gap +0.025).
  6. AStep 18750: val 3.063, train 3.018 (gap +0.046).
  7. AStep 18500: val 3.066, train 3.027 (gap +0.038).
  8. AStep 18250: val 3.056, train 3.023 (gap +0.033).
  9. ACheckpoint at step 18000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 5.26s.
  10. AStep 18000: val 3.058, train 3.042 (gap +0.016).
  11. AStep 17750: val 3.086, train 3.041 (gap +0.045).
  12. AStep 17500: val 3.059, train 3.027 (gap +0.032).
  13. AStep 17250: val 3.084, train 3.034 (gap +0.050).
  14. ACheckpoint at step 17000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 5.25s.
  15. AStep 17000: val 3.058, train 3.026 (gap +0.032).
  16. AStep 16750: val 3.076, train 3.040 (gap +0.037).
  17. AStep 16500: val 3.076, train 3.051 (gap +0.025).
  18. AStep 16250: val 3.055, train 3.047 (gap +0.009).
  19. ACheckpoint at step 16000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 5.25s.
  20. AStep 16000: val 3.075, train 3.074 (gap +0.002).
  21. AStep 15750: val 3.076, train 3.055 (gap +0.021).
  22. AStep 15500: val 3.065, train 3.038 (gap +0.028).
  23. AStep 15250: val 3.094, train 3.048 (gap +0.046).
  24. ACheckpoint at step 15000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 5.24s.
  25. AStep 15000: val 3.088, train 3.069 (gap +0.020).
  26. AStep 14750: val 3.093, train 3.070 (gap +0.023).
  27. AStep 14500: val 3.090, train 3.050 (gap +0.039).
  28. AStep 14250: val 3.083, train 3.063 (gap +0.021).
  29. ACheckpoint at step 14000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 5.26s.
  30. AStep 14000: val 3.115, train 3.061 (gap +0.054).
  31. AStep 13750: val 3.118, train 3.081 (gap +0.037).
  32. AStep 13500: val 3.126, train 3.045 (gap +0.080).
  33. AStep 13250: val 3.085, train 3.093 (gap -0.008).
  34. ACheckpoint at step 13000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 5.25s.
  35. AStep 13000: val 3.122, train 3.109 (gap +0.013).
  36. AStep 12750: val 3.124, train 3.119 (gap +0.005).
  37. AStep 12500: val 3.148, train 3.087 (gap +0.062).
  38. AStep 12250: val 3.121, train 3.102 (gap +0.019).
  39. ACheckpoint at step 12000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 5.26s.
  40. AStep 12000: val 3.143, train 3.101 (gap +0.042).
  41. AStep 11750: val 3.148, train 3.139 (gap +0.010).
  42. AStep 11500: val 3.150, train 3.142 (gap +0.008).
  43. AStep 11250: val 3.148, train 3.119 (gap +0.029).
  44. ACheckpoint at step 11000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 5.25s.
  45. AStep 11000: val 3.145, train 3.126 (gap +0.019).
  46. AStep 10750: val 3.152, train 3.114 (gap +0.038).
  47. AStep 10500: val 3.144, train 3.117 (gap +0.027).
  48. AStep 10250: val 3.174, train 3.125 (gap +0.049).
  49. ACheckpoint at step 10000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 5.25s.
  50. AStep 10000: val 3.164, train 3.149 (gap +0.014).
  51. AStep 9750: val 3.190, train 3.151 (gap +0.040).
  52. AStep 9500: val 3.152, train 3.141 (gap +0.011).
  53. AStep 9250: val 3.201, train 3.147 (gap +0.055).
  54. ACheckpoint at step 9000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 5.26s.
  55. AStep 9000: val 3.190, train 3.173 (gap +0.017).
  56. AStep 8750: val 3.189, train 3.171 (gap +0.018).
  57. AStep 8500: val 3.195, train 3.180 (gap +0.016).
  58. AStep 8250: val 3.198, train 3.182 (gap +0.016).
  59. ACheckpoint at step 8000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 4.90s.
  60. AStep 8000: val 3.204, train 3.170 (gap +0.034).
  61. AStep 7750: val 3.221, train 3.191 (gap +0.030).
  62. AStep 7500: val 3.231, train 3.199 (gap +0.032).
  63. AStep 7410 / 19073 (39%), 3.88B tokens. Train loss 3.201, best val 3.237, fact probes 0.76. 3482229 tok/s; about 00d 00h 25m left.
  64. AStep 7250: val 3.241, train 3.213 (gap +0.028).
  65. ACheckpoint at step 7000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 4.78s.
  66. AStep 7000: val 3.237, train 3.239 (gap -0.001).
  67. AStep 6750: val 3.242, train 3.224 (gap +0.018).
  68. AStep 6500: val 3.256, train 3.218 (gap +0.038).
  69. AStep 6250: val 3.273, train 3.209 (gap +0.064).
  70. ACheckpoint at step 6000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 5.26s.
  71. AStep 6000: val 3.270, train 3.252 (gap +0.018).
  72. AStep 5750: val 3.286, train 3.268 (gap +0.019).
  73. AStep 5500: val 3.268, train 3.279 (gap -0.011).
  74. AStep 5250: val 3.304, train 3.263 (gap +0.040).
  75. ACheckpoint at step 5000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 5.25s.
  76. AStep 5000: val 3.309, train 3.312 (gap -0.003).
  77. AStep 4750: val 3.338, train 3.303 (gap +0.035).
  78. AStep 4500: val 3.319, train 3.300 (gap +0.019).
  79. AStep 4250: val 3.343, train 3.343 (gap -0.000).
  80. ACheckpoint at step 4000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 5.29s.
  81. AStep 4000: val 3.371, train 3.368 (gap +0.003).
  82. AStep 3750: val 3.384, train 3.380 (gap +0.005).
  83. AStep 3500: val 3.415, train 3.395 (gap +0.020).
  84. AStep 3250: val 3.454, train 3.392 (gap +0.062).
  85. ACheckpoint at step 3000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 5.26s.
  86. AStep 3000: val 3.448, train 3.429 (gap +0.018).
  87. AStep 2750: val 3.454, train 3.473 (gap -0.019).
  88. AStep 2500: val 3.520, train 3.473 (gap +0.047).
  89. ACheckpoint step 2000 copied off the machine to gs://train-galvyn-xyz-checkpoints/runs/1a0cd0c6-df9f-471e-b9fa-096a419cccea/step-0002000.pt in 40.8s (in the background; training didn't wait).
  90. AStep 2250: val 3.578, train 3.516 (gap +0.062).
  91. ACheckpoint at step 2000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 5.27s.
  92. AStep 2000: val 3.589, train 3.539 (gap +0.049).
  93. AStep 1750: val 3.656, train 3.631 (gap +0.025).
  94. AResumed at step 1576 from a checkpoint.
  95. AResuming run A from its checkpoint at step 1576.
  96. ACheckpoint step 1576 copied off the machine to gs://train-galvyn-xyz-checkpoints/runs/1a0cd0c6-df9f-471e-b9fa-096a419cccea/step-0001576.pt in 15.6s (in the background; training didn't wait).
  97. AStopped at step 1576; a checkpoint was saved, so it can resume.
  98. ACheckpoint at step 1576: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 4.70s.
  99. AStep 1500: val 3.750, train 3.728 (gap +0.022).
  100. AResumed at step 1380 from a checkpoint.
  101. AResuming run A from its checkpoint at step 1380.
  102. AStopped at step 1380; a checkpoint was saved, so it can resume.
  103. ACheckpoint at step 1380: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 4.92s.
  104. AStep 1250: val 3.896, train 3.839 (gap +0.056).
  105. ACheckpoint at step 1000: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 4.89s.
  106. AStep 1000: val 4.060, train 4.021 (gap +0.039).
  107. AStep 750: val 4.429, train 4.400 (gap +0.029).
  108. AStep 500: val 5.203, train 5.161 (gap +0.043).
  109. ACheckpoint at step 250: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 4.89s.
  110. AStep 250: val 6.082, train 6.032 (gap +0.051).
  111. ACheckpoint at step 100: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 4.88s.
  112. ACheckpoint at step 50: 1493.9 MB (weights, AdamW state, schedule position, RNG states) in 4.90s.
  113. ACheckpoint step 0 copied off the machine to gs://train-galvyn-xyz-checkpoints/runs/1a0cd0c6-df9f-471e-b9fa-096a419cccea/step-0000000.pt in 6.3s (in the background; training didn't wait).
  114. ACheckpoint at step 0: 498.0 MB (weights, AdamW state, schedule position, RNG states) in 1.75s.
  115. AData parallel on 8 GPUs (NVIDIA H100 80GB HBM3): each runs 2 of the 16 micro-batches per step.
  116. AExpected loss before training ≈ ln(vocab) = 10.83.
  117. ATraining 124.48M params on fineweb_edu_10b for 19073 steps (bf16, batch 32×16, ctx 1024).