Auto-refresh · every 20 s

All training runs / GPT-2 small / RTX 3070

GPT-2 small Training monitor

124,439,808 parameters · written in Alpha, compiled to sm_86 machine code with no CUDA runtime · one rented RTX 3070

OpenAI's 2019 GPT-2 small, trained from fresh weights in two runs: 9.03 billion tokens of OpenWebText at a constant learning rate, which stalled at a loss of 4.29, then Andrej Karpathy's llm.c reproduction recipe on FineWeb (half-million-token updates, a warmup and a cosine decay), continuing the same weights. This page follows the second run live and keeps the first run's record.

StoppedNVIDIA GeForce RTX 3070 (8 GiB) · alpha-gpt2-fineweb (d749qr8btp6ok5)
stale · Observed 15 Oct 01:53 UTC · published every minute
Progress
12,985 / 18,865
68.8% of the FineWeb recipe's updates · invocation 494 of 517
Validation loss
3.485
FineWeb, 1,280 windows · 5.087 at the start · llm.c ends near 3.28
Training loss
3.540
the latest update's 512 windows, before each update
HellaSwag
28.4%
acc_norm at update 12,495 · chance 25% · llm.c 29.9%
Learning rate
1.42e-4
peak 6e-4 after 700 updates, then a cosine to 0
Throughput
38,877 tok/s
4.45 updates a minute · 524,288 tokens an update
Expected finish
16 Oct 00:52 UTC
22 h 59 min left at 57 minutes an invocation once it runs again
Tokens trained
15.84B
9.03B OpenWebText, then 6.81B of FineWeb's 10.25B

Learning

Validation loss is the measure to watch: the same FineWeb text scored after every invocation. Training loss is noisier; HellaSwag moves slowly and is scored every 4th invocation.

Validation loss

latestValidation loss (1,280 windows) 3.49 nats/tokenllm.c's 124M run (3.28) 3.28 nats/token
4.005.00update 0update 5,000update 10,000resumed 13 Oct
Mean cross-entropy over the same 1,310,720 FineWeb tokens after each invocation, scored on the card by the pinned evaluation executable. The first point is the OpenWebText model before any FineWeb update. The dashed line is llm.c's 124M run (3.28) after all 18,865 updates.

Training loss

latestMean of an invocation's last 2,000 windows (records lost) 3.616 nats/tokenUpdate loss (means of 6) 3.505 nats/tokenValidation loss 3.485 nats/token
3.5004.0004.5005.000update 5,000update 10,000
Each update's loss is the mean cross-entropy of its 512 windows (524,288 tokens), each measured before the update, so on text the model had not yet trained on. The first five invocations' per-window records were deleted with their pod; the controller's log kept each one's mean of its last 2,000 windows.

Learning rate

latestLearning rate 0.0e+0Now 1.4e-4
0.0e+02.0e-44.0e-46.0e-4update 0update 5,000update 10,000update 15,000warmup ends
llm.c's schedule as Alpha's host computes it: 6e-4 × (s + 1) / 700 over the first 700 updates, then a cosine to 0 at update 18,865 past the origin. The OpenWebText run used a constant 2.4e-4 (6e-5 before its adoption).

HellaSwag

latestacc_norm, 10,042 validation examples 28.4%Chance (25%) 25.0%OpenAI GPT-2 124M (29.4%) 29.4%llm.c 124M (29.9%) 29.9%
24.0%26.0%28.0%30.0%update 0update 5,000update 10,000update 15,000
Each of the 10,042 examples has four endings; the model picks the ending whose tokens it finds least surprising on average (acc_norm, the figure llm.c reports). The controller scores every 4th checkpoint on the card. The first two points were scored by hand: the OpenWebText model, and the checkpoint after 980 FineWeb updates.

Both runs

The same weights throughout: 9.03B tokens of OpenWebText, then FineWeb under llm.c's recipe. On text neither run trained on, the first five FineWeb invocations did more than the OpenWebText run's last 6.5 billion tokens.

latestOpenWebText run 4.28 nats/tokenFineWeb recipe 3.75 nats/token
3.804.004.204.402.00B tokens4.00B tokens6.00B tokens8.00B tokensFineWeb recipe begins
Every retained checkpoint scored on the same 4,096 held-out OpenWebText windows: 18.5 MB of documents with sha256(text)[:4] % 2000 == 0, never trained on. The OpenWebText run flattened at 4.28; five FineWeb invocations took it to 3.746. Further points are added when checkpoints are scored.
CheckpointRunTokensHeld-out lossBits per byteGPU hours
owt-step-375000OpenWebText1.54B4.4169 ± 0.01421.441725.2
owt-step-500000OpenWebText2.05B4.3355 ± 0.01421.415131.1
owt-step-625000OpenWebText2.56B4.3217 ± 0.01401.410736.9
owt-step-750000OpenWebText3.07B4.3221 ± 0.01431.410842.8
owt-step-875000OpenWebText3.58B4.2881 ± 0.01391.399748.2
owt-step-1000000OpenWebText4.1B4.3013 ± 0.01431.404052.9
owt-step-1125000OpenWebText4.61B4.2872 ± 0.01401.399457.6
owt-step-1250000OpenWebText5.12B4.2908 ± 0.01411.400662.0
owt-step-1375000OpenWebText5.63B4.2900 ± 0.01421.400366.2
owt-step-1500000OpenWebText6.14B4.2799 ± 0.01401.397070.2
owt-step-1625000OpenWebText6.66B4.2737 ± 0.01421.395074.1
owt-step-1750000OpenWebText7.17B4.2759 ± 0.01411.395778.0
owt-step-1875000OpenWebText7.68B4.2831 ± 0.01401.398081.9
owt-step-2000000OpenWebText8.19B4.2963 ± 0.01421.402485.9
owt-step-2125000OpenWebText8.7B4.2839 ± 0.01421.398389.8
owt-step-2205000OpenWebText9.03B4.2781 ± 0.01411.396492.3
fineweb-step-109270FineWeb recipe9.67B3.7461 ± 0.01081.222896.9

Invocations

The run advances one invocation at a time: 245 updates (128.45M tokens) from the newest checkpoint, then a validation score, HellaSwag every 4th and samples every 4th. A supervisor on the pod starts the next; a watchdog on the server starts the pod again if RunPod stops it, and the supervisor if the pod restarts.

InvocationUpdates past originStartedDurationTokens/sTraining lossValidationHellaSwagGPU energyState
49412,985–13,23015 Oct 01:36 UTC—————0.001 kWhinterrupted
49312,740–12,98515 Oct 00:40 UTC55 min38,8773.46403.4854—0.200 kWhcomplete
49212,495–12,74014 Oct 23:45 UTC55 min38,9363.43623.4294—0.199 kWhcomplete
49112,250–12,49514 Oct 22:42 UTC55 min38,8893.48013.469028.38%0.200 kWhcomplete
49012,005–12,25014 Oct 21:46 UTC55 min38,8193.45533.4390—0.200 kWhcomplete
48911,760–12,00514 Oct 20:51 UTC55 min38,8193.45063.4394—0.200 kWhcomplete
48811,515–11,76014 Oct 19:55 UTC55 min38,8663.43103.4460—0.200 kWhcomplete
48711,270–11,51514 Oct 18:52 UTC55 min38,8303.83763.805527.63%0.200 kWhcomplete
48611,025–11,27014 Oct 17:56 UTC55 min38,8073.45413.4359—0.200 kWhcomplete
48510,780–11,02514 Oct 17:01 UTC55 min38,8193.44903.4482—0.200 kWhcomplete
48410,535–10,78014 Oct 16:04 UTC55 min38,8303.50753.4746—0.200 kWhcomplete
48310,290–10,53514 Oct 15:02 UTC55 min38,7723.44763.440028.77%0.200 kWhcomplete
48210,045–10,29014 Oct 14:06 UTC55 min38,8543.45773.4323—0.200 kWhcomplete
4819,800–10,04514 Oct 13:10 UTC55 min38,7723.45343.4512—0.200 kWhcomplete
4809,555–9,80014 Oct 12:14 UTC55 min38,7253.46603.4704—0.200 kWhcomplete
4799,310–9,55514 Oct 11:11 UTC55 min38,6203.59393.574427.65%0.200 kWhcomplete
4789,065–9,31014 Oct 10:15 UTC55 min38,6433.41003.4205—0.200 kWhcomplete
4778,820–9,06514 Oct 09:19 UTC55 min38,5973.41153.4099—0.200 kWhcomplete
4768,575–8,82014 Oct 08:23 UTC55 min38,6093.44363.4265—0.200 kWhcomplete
4758,330–8,57514 Oct 07:20 UTC56 min38,5623.37403.373829.00%0.202 kWhcomplete
4748,085–8,33014 Oct 06:24 UTC55 min38,6203.39413.3781—0.200 kWhcomplete
4737,840–8,08514 Oct 05:28 UTC55 min38,6673.39983.3809—0.200 kWhcomplete
4727,595–7,84014 Oct 04:32 UTC55 min38,6903.37143.3825—0.200 kWhcomplete
4717,350–7,59514 Oct 03:29 UTC55 min38,6203.38903.385828.73%0.200 kWhcomplete
4707,105–7,35014 Oct 02:33 UTC55 min38,6673.38653.3897—0.200 kWhcomplete
4696,860–7,10514 Oct 01:37 UTC55 min38,6673.41743.3957—0.200 kWhcomplete
4686,615–6,86014 Oct 00:41 UTC55 min38,6203.39593.3979—0.200 kWhcomplete
4676,370–6,61513 Oct 23:38 UTC56 min38,3433.43523.403428.63%0.202 kWhcomplete
4666,125–6,37013 Oct 22:40 UTC57 min37,7573.40803.4073—0.206 kWhcomplete
4655,880–6,12513 Oct 21:42 UTC58 min36,9853.40993.4125—0.209 kWhcomplete
4645,635–5,88013 Oct 20:43 UTC58 min36,7113.41773.4170—0.210 kWhcomplete
4635,390–5,63513 Oct 19:37 UTC58 min36,7953.42133.426128.08%0.211 kWhcomplete
4625,145–5,39013 Oct 18:39 UTC57 min37,4493.42233.4319—0.208 kWhcomplete
4614,900–5,14513 Oct 17:41 UTC57 min37,6913.44963.4340—0.206 kWhcomplete
4604,655–4,90013 Oct 16:44 UTC56 min37,9923.43733.4365—0.204 kWhcomplete
4594,410–4,65513 Oct 15:40 UTC56 min38,1613.43933.442328.39%0.204 kWhcomplete
4584,165–4,41013 Oct 14:44 UTC56 min38,3093.43483.4477—0.202 kWhcomplete
4573,920–4,16513 Oct 13:47 UTC56 min38,3783.47413.4555—0.202 kWhcomplete
4563,675–3,92013 Oct 12:51 UTC56 min38,5743.46843.4610—0.200 kWhcomplete
4553,430–3,67513 Oct 11:48 UTC56 min38,5623.48033.470327.38%0.202 kWhcomplete
4543,185–3,43013 Oct 10:52 UTC55 min38,6093.48783.4778—0.200 kWhcomplete
4532,940–3,18513 Oct 09:56 UTC55 min38,6433.50023.4863—0.200 kWhcomplete
4522,695–2,94013 Oct 08:59 UTC56 min38,4813.50453.5069—0.202 kWhcomplete
4512,450–2,69513 Oct 07:56 UTC56 min38,5273.51403.511427.58%0.202 kWhcomplete
4502,205–2,45013 Oct 07:00 UTC56 min38,5393.53343.5268—0.202 kWhcomplete
4491,960–2,20513 Oct 06:04 UTC56 min38,4933.54393.5402—0.202 kWhcomplete
4481,715–1,96013 Oct 05:08 UTC56 min38,5163.56623.5668—0.202 kWhcomplete
4471,470–1,71513 Oct 04:05 UTC56 min38,2073.56543.559826.92%0.204 kWhcomplete
4461,225–1,47013 Oct 03:08 UTC56 min38,3783.59303.5818—0.202 kWhcomplete
445980–1,22511 Oct 03:46 UTC56 min38,4703.61593.6173—0.202 kWhcomplete (records lost)
444735–98011 Oct 02:36 UTC56 min38,5623.64613.6409—0.201 kWhcomplete (records lost)
443490–73511 Oct 01:37 UTC56 min38,4473.70603.6964—0.202 kWhcomplete (records lost)
442245–49011 Oct 00:26 UTC56 min38,2523.72813.7415—0.202 kWhcomplete (records lost)
4410–24510 Oct 23:27 UTC57 min37,7133.89363.8833—0.206 kWhcomplete (records lost)

Training loss is the mean of an invocation's last 2,000 windows (for the running one, of its newest 2,000). The first five invocations ran on another pod, whose run directory was later deleted; their timings, losses and GPU samples survive in the controller's log and a copy of their monitor files.

On the device

NVIDIA GeForce RTX 3070 (8 GiB) on the RunPod pod alpha-gpt2-fineweb (d749qr8btp6ok5), rented at $0.13 an hour. The trainer holds four windows' activations at a time, so each update runs 128 passes of four windows and sums their gradients on the card before one AdamW step.

GPU utilization
100%
sampled 15 Oct 01:36 UTC
Power draw
219 W
every 30 s by nvidia-smi
Temperature
71 °C
memory 5.04 GiB of 8 GiB
This run so far
49.2 h
10.70 kWh at the card · about $6.40 of rent

The current invocation's GPU samples appear here while it runs.

Generated samples

Greedy continuations of the same six prompts, up to 256 tokens, generated by Alpha's predictor on the card between invocations: the OpenWebText run's last set, then one every 4 FineWeb invocations. Greedy decoding shows what the model finds most likely, loops included.

In a shocking finding, scientists discovered a herd of unicorns living in a remote, previously unexplored valley in the

In a shocking finding, scientists discovered a herd of unicorns living in a remote, previously unexplored valley in the Andes Mountains. Even more surprising to the researchers was the fact that the unicorns spoke perfect English. The researchers also found that the animals were not only able to speak English, but also had a higher level of intelligence. “The animals were able to speak English,” said Dr. John W. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K. K.

The meaning of life is

The meaning of life is to be a person who is able to live a life of purpose and purpose. The Bible says that the Bible says that the life of the Lord is to be a person who is able to live a life of purpose and purpose. The Bible says that the life of the Lord is to be a person who is able to live a life of purpose and purpose. The Bible says that the life of the Lord is to be a person who is able to live a life of purpose and purpose. The Bible says that the life of the Lord is to be a person who is able to live a life of purpose and purpose. The Bible says that the life of the Lord is to be a person who is able to live a life of purpose and purpose. The Bible says that the life of the Lord is to be a person who is able to live a life of purpose and purpose. The Bible says that the life of the Lord is to be a person who is able to live a life of purpose and purpose. The Bible says that the life of the Lord is to be a person who is able to live a life of purpose and purpose. The Bible says that the life of the Lord is to be a person who is able to live a life of purpose and purpose. The

Once upon a time, in a small village by the sea,

Once upon a time, in a small village by the sea, the people of the village are very friendly and helpful. The village is a very small village, with a small village, and a small village. The village is very small, and the village is very small. The village is very small, and the village is very small. The village is very small, and the village is very small. The village is very small, and the village is very small. The village is very small, and the village is very small. The village is very small, and the village is very small. The village is very small, and the village is very small. The village is very small, and the village is very small. The village is very small, and the village is very small. The village is very small, and the village is very small. The village is very small, and the village is very small. The village is very small, and the village is very small. The village is very small, and the village is very small. The village is very small, and the village is very small. The village is very small, and the village is very small. The village is very small, and the village is very small. The village is very small, and the village is very small. The village is very

The best way to learn a new programming language is

The best way to learn a new programming language is to learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new language. - Learn a new

BREAKING NEWS: The city council voted on Tuesday to

BREAKING NEWS: The city council voted on Tuesday to approve a $1.5 million budget for the city’s new public housing complex. The council voted unanimously to approve the $1.5 million budget for the new complex, which will be located on the corner of Main Street and Main Street. The council also approved a $1.5 million bond for the new building, which will be used to pay for the $1.5 million bond. The city council also approved a $1.5 million bond for the new building, which will be used to pay for the $1.5 million bond. The city council also approved a $1.5 million bond for the new building, which will be used to pay for the $1.5 million bond. The city council also approved a $1.5 million bond for the new building, which will be used to pay for the $1.5 million bond. The city council also approved a $1.5 million bond for the new building, which will be used to pay for the $1.5 million bond. The city council also approved a $1.5 million bond for the new building, which will be used to pay for the $1.5 million bond. The city council also approved a $

Recipe for chocolate chip cookies Ingredients:

Recipe for chocolate chip cookies Ingredients: - 1/4 cup sugar - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2 cup milk - 1/2

History

Both runs, from fresh weights to now.

  1. The OpenWebText run starts from fresh weights on one RTX 3070: one 1,024-token window an update at a learning rate of 6e-5.
  2. Invocation 67: the adoption moves the run to four windows an update at 2.4e-4, keeping its weights and AdamW state. Loss drops 0.2 nats in the next 40M tokens, after 0.7B tokens flat at 4.81.
  3. The Chinchilla point, 20 tokens a parameter. Training loss is about 4.33, and barely moves after.
  4. One full pass over OpenWebText: 9.03B tokens, 441 invocations, training loss about 4.29, HellaSwag 25.9% (chance is 25%).
  5. The plateau is diagnosed as the recipe's, not a bug (below). The next run continues the same weights under llm.c's GPT-2 124M recipe on FineWeb.
  6. The FineWeb recipe begins at invocation 441. After five invocations, validation loss is 3.617 (from 5.087) and held-out OpenWebText loss 3.746 (from 4.278).
  7. Stopped 12 seconds into invocation 446; the card goes to another experiment and the pod's run directory is later deleted, all but the last checkpoint.
  8. Resumed on its own pod, after showing every input is the original: the checkpoint's SHA-256, the executables' pins, FineWeb tokenized again with two invocations' inputs byte for byte the recorded ones, and the checkpoint's validation loss reproduced exactly (3.617338).
  9. Expected end: invocation 517, update 18,865 past the origin, the learning rate at 0.

Why the recipe changed

Measured on the OpenWebText run's own checkpoints with an independent PyTorch implementation, before the FineWeb run began.

  • Each update was mostly noise. The gradient noise scale (the batch size at which signal and noise are equal) measured 51,000 ± 7,000 tokens at 2.6B tokens and 63,000 ± 31,000 at the end, about 13 times the 4,096-token update. Only 6–7% of each update's direction was signal.
  • The learning rate never decayed. At a constant rate, a noisy optimizer settles into a band around the minimum rather than into it. The run reached that band after 3–4B tokens and spent the remaining 5B tokens, 55% of its compute, moving around it: 6.5B tokens improved the loss on 32 fixed windows by 0.048 nats.
  • Its own optimizer state agrees. Gradient clipping fired on every update, successive updates were slightly anti-correlated, and Adam's per-coordinate signal-to-noise matched pure noise (0.15–0.19 against 0.183): the signature of an iterate bouncing at a constant rate's floor.
  • Not a bug. Alpha's arithmetic had already been checked against the reference (below), and the adoption to four-window updates was itself a controlled experiment: the same model on the same data dropped 0.2 nats as soon as each update got less noisy.
  • The fix is llm.c's recipe. 524,288-token updates, 128 times larger and about 9 times the noise scale, a peak rate 2.5 times higher that such updates allow, and a cosine decay to zero.

Model and recipes

The architecture is GPT-2 small as released; only the training recipe differs between the runs.

OpenWebText runFineWeb recipe
DataSkylion007/openwebtext, one pass (9.03B tokens)HuggingFaceFW/fineweb sample/10BT at 9bb295dd: 10.25B training tokens in 14,868,862 documents
Orderone seeded permutation of the 1,024-token windows (seed 2019)one seeded permutation of the 10,010,922 training windows (seed 2019); no window repeats
Updateone window (1,024 tokens) until invocation 67, then the mean gradient of four (4,096 tokens)the mean gradient of 512 windows (524,288 tokens), 128 passes of four summed on the card
Learning rate6e-5, then a constant 2.4e-4warmup over 700 updates to 6e-4, cosine to 0 at 18,865
OptimizerAdamW: β₁ 0.9, β₂ 0.95, ε 1e-8, weight decay 0.1 on matrices and embeddings, global gradient-norm clipping at 1
Startfresh weights: N(0, 0.02), residual projections N(0, 0.02/√24)the OpenWebText run's final weights (step-2205000), both Adam moment banks cleared
Length3,210,000 updates in 441 invocations18,865 updates in 77 invocations of 245 (9.89B tokens)
Numericsbinary32 master weights and moments; bfloat16 matrix operands with binary32 accumulation
Validation4,456,914 held-out OpenWebText tokens (recorded, not scored during the run)the first 1,280 windows of the validation shard (llm.c's validation set)
Architecture
12 blocks × 768 wide, 12 heads of 64, feed-forward 3,072, context 1,024
Blocks
pre-LayerNorm, gain and shift, epsilon 1e-5; gelu_new (cubic tanh); biases on every linear map; learned positions; tied input and output embeddings
Vocabulary
50,257 byte-level BPE tokens, stored as 50,432 for the objective's multiple of 256; the padded classes' logits are held at −10³⁰, so loss and gradients are the unpadded model's
Parameters
124,439,808 (124,574,208 stored with the padded vocabulary)

Verification

Every executable is checked against an independent PyTorch (CPU) GPT-2 that reads Alpha's layout export, before it trains.

OpenWebText trainer
On the four-window recipe's first update: loss 10.89689 against the reference's 10.89694; all 148 parameter tensors' gradients within 0.28% (every cosine at least 0.99999); AdamW on the native moments reproduces the native weights to 0.012%. Teacher-forced generation matches the reference's argmax at every token (511 of 512 exactly, one bfloat16 near-tie).
FineWeb recipe, from scratch
Two updates of the recipe from fresh weights: all 148 tensors within 0.29% of the reference, cosines at least 0.999996.
The continuation
The adopted checkpoint's weights are bit-identical to the OpenWebText run's last, both moment banks zero, the counts restated to 441 invocations of 245 updates.
Trained weights
On trained weights the device's gradients differ from the reference's by depth (1–2% at block 11 to tens of percent at blocks 0–1). The reference differs from itself about as much when only its products' summation changes from binary32 to binary64: bfloat16's inherent sensitivity on a heavily cancelling small-batch gradient, far below the sampling noise training absorbs. From fresh weights both agree within 0.3%.
HellaSwag scoring
On the GPU by Alpha's scoring executable, as llm.c's dev/data/hellaswag.py scores it; each position's loss on the first four examples agrees with the reference's to 0.03 nats on average.
The resume
Checkpoint SHA-256 cda20c33… as recorded; FineWeb tokenized again: 14,868,862 documents and 10,251,184,259 training tokens as before, invocations 441 and 446's inputs byte-identical to the recorded ones; HellaSwag's prepared input identical; the checkpoint's validation loss reproduced on the new card exactly (3.617338).

Toward chat

The chat model is fine-tuned from the OpenWebText run's last checkpoint; it will be fine-tuned again from this run's, once it finishes.

  1. Conversations from HuggingFaceTB/smol-smoltalk, from the OpenWebText checkpoint (update 2,390,000).
  2. Four rounds of conversations in Alpha's voice, written for it (update 2,445,000).
  3. Supervised fine-tuning on the assistant's replies alone, with a warmup and a cosine decay (update 2,460,000): persona test loss 3.70 against the base model's 5.20, SmolTalk test loss 2.00.
  4. The same three stages on this run's final checkpoint, compared with the current chat model on the same held-out tests before it replaces it.

Chat with the current model → Its replies now come from a labelled CPU stand-in (PyTorch, the same checkpoints), so this card can train.

Evidence Executables, checkpoints, data and the controller's events
Snapshot
published 15 Oct 01:53 UTC by website/ops/gpt2-publish.mjs at 0a01d4b77, from scripts/alpha/gpt2-recipe-status.py on the pod
Source
systems/gpt2 (GPT2.Recipe's gpt2FineWebRecipe) on main
FineWeb run
gpt2-small-fineweb-recipe-rtx3070 · pod alpha-gpt2-fineweb (d749qr8btp6ok5)
gpt2-recipe-adopt
299620f2616742e0c0143ca53c0e5276b9f5258c5d07f50db3873c34bebbc940
gpt2-recipe-eval
a57829ad9d38e33193b48ff4e75062570672a6aa2c96350bf955c22602b282ca
gpt2-recipe-hellaswag
4d9b5e7dcbffddf8dd9480e10bc363bcca06d8c47665f05c3db8f03652d58e75
gpt2-recipe-next
99e82772c652786729adbf06c3ac83a241d8a590aedc47d76da2cdb9e43623a3
gpt2-recipe-predict
9f8fdc092556136f4b124f2e59618c11051ca1da27eaac9179fbff702bbaabd6
step-110005.ckpt
update 110,005 (1,960 past the origin) · invocation 449 · 1.62 GiB · 13 Oct 06:03 UTC
step-111965.ckpt
update 111,965 (3,920 past the origin) · invocation 457 · 1.62 GiB · 13 Oct 13:46 UTC
step-113925.ckpt
update 113,925 (5,880 past the origin) · invocation 465 · 1.62 GiB · 13 Oct 21:41 UTC
step-115885.ckpt
update 115,885 (7,840 past the origin) · invocation 473 · 1.62 GiB · 14 Oct 05:27 UTC
step-117845.ckpt
update 117,845 (9,800 past the origin) · invocation 481 · 1.62 GiB · 14 Oct 13:09 UTC
step-119805.ckpt
update 119,805 (11,760 past the origin) · invocation 489 · 1.62 GiB · 14 Oct 20:50 UTC
step-121030.ckpt
update 121,030 (12,985 past the origin) · invocation 494 · 1.62 GiB · 15 Oct 01:35 UTC
OpenWebText run
gpt2-small-openwebtext-rtx3070 · pod gpt-2 (38deti7qbgut0z) · 6 Oct 10:06 UTC to 10 Oct 07:21 UTC · the run's last snapshot, published 2026-10-11T05:27:39.430Z by website/ops/gpt2-publish.mjs at 0fdf5fc17; the pod's run directory was later deleted
gpt2-adopt
5dc2043ff31fc0922c76c931c69b9928a4dc6ccd2581888d4686a1fcb316adf5
gpt2-early-resume
9fac9592a652b49314ed90b09386d14e2d4a477fbc9f535978a050bf63c6cf28
gpt2-init
87d24714b3e2fef3f89e230bfcc9ce16068a96309b95d69f6f5ffd82ed7869b7
gpt2-predict
4f219fd48bd901a8c8bff21c84b9b4475adcc7046d4bf89c9f72be4b7b08b482
gpt2-stream
3502adad8959d402c5a551156dccaf51fbffd5bd1ae69cee8ec1ccf5aa943157
gpt2-train
d4a06bc4376f36e725cfb00140629629239370cb83304a994a2acfe8d65aac10
Retained checkpoints
step-375000.ckpt, step-500000.ckpt, step-625000.ckpt, step-750000.ckpt, step-875000.ckpt, step-1000000.ckpt, step-1125000.ckpt, step-1250000.ckpt, step-1375000.ckpt, step-1500000.ckpt, step-1625000.ckpt, step-1750000.ckpt, step-1875000.ckpt, step-2000000.ckpt, step-2125000.ckpt, step-2205000.ckpt
11 Oct 04:44 UTC
invocation 446 failed rc 143 after 12s: ==> /workspace/gpt2-fineweb/runs/inv0446/trainer.stdout <== ==> /workspace/gpt2-fineweb/runs/inv0446/trainer.stderr <==