tiny-llm / Training studies / 2026-09-17

How small models learn.
Across schedules and workers.

The latest hyperparameter tuning for 20.4M-parameter language models on C4. Cosine-to-zero and WSD, synchronous and decentralized training, measured across token budgets.

From the experiments

Synchronous training has the lowest selected mean loss at each shared horizon. The decentralized cosine results draw closer as the training budget grows.

Explore all results ↗
01 / Results

Cosine-to-zero meets WSD.

At the shared 20, 40, and 80-token horizons, the selected cosine recipes have lower mean final validation loss for both measured training modes.

Selected cosine and WSD losses across 20, 40 and 80 tokens per parameter, for sync and eight workers
Synchronous training: cosine-to-zero versus WSD at 20, 40 and 80 tokens per parameterEight-worker training: cosine-to-zero versus WSD at 20, 40 and 80 tokens per parameter
Separately tuned winners. Error bars show sample SD across three seeds. Download PDF ↗

Cosine starts each horizon afresh. WSD continues earlier training and prunes learning rates. Their search grids and trainer versions differ, so these results describe the measured recipes.

Tokens/parameterWSD − cosine · syncWSD − cosine · eight workers
20+0.006881+0.007539
40+0.022921+0.028831
80+0.027347+0.039969

Four-worker WSD is unavailable. WSD at 120 and 160 tokens per parameter is available in the extended results.

02 / Results

One global budget. One, four, or eight workers.

Decentralized workers divide the global token budget. Their parameters are averaged before validation. These cosine experiments compare the best tested recipe for each mode.

Cosine training winners for synchronous, four-worker and eight-worker modes
Cosine training winners for synchronous, four-worker and eight-worker modes
Final full-validation loss in nats; lower is better. Error bars show sample SD. Download PDF ↗

Best tested hyperparameters

ScheduleTraining modeTokens/parameterLRβ₁β₂Final loss ± sample SD
Cosine-to-zeroSynchronous200.010.90.993.549818 ± 0.003284
Cosine-to-zeroFour workers200.010.950.993.570302 ± 0.004893
Cosine-to-zeroEight workers200.0140.950.993.585589 ± 0.003106
WSDSynchronous200.0040.950.983.556699 ± 0.002045
WSDEight workers200.0060.950.9993.593128 ± 0.004363
Cosine-to-zeroSynchronous400.010.90.983.429879 ± 0.003875
Cosine-to-zeroFour workers400.010.950.993.441328 ± 0.001791
Cosine-to-zeroEight workers400.0120.950.9993.447451 ± 0.003544
WSDSynchronous400.0040.950.983.452800 ± 0.003136
WSDEight workers400.0060.950.9993.476282 ± 0.002687
Cosine-to-zeroSynchronous800.010.90.993.347422 ± 0.003371
Cosine-to-zeroFour workers800.010.9740.9993.351158 ± 0.004694
Cosine-to-zeroEight workers800.0120.9740.9993.355351 ± 0.001988
WSDSynchronous800.0030.950.9993.374770 ± 0.003080
WSDEight workers800.0030.950.9993.395320 ± 0.004652

Three seeds per configuration. SD describes seed variation, not a confidence interval. Validation is used for tuning. Inspect rankings and matched comparisons ↗

03 / Protocol

What stays shared.
What changes.

The same model size, token-cache identity, global batches, and validation target are used across the current campaigns. Schedules, search grids, and continuation policies differ.

Read the experimental protocol ↗
Model
20,403,520 parameters · context 1,024
Global batch
131,072 prediction targets
Warmup
312 optimizer updates
Selection
Mean final full-validation loss · seeds 42–44
Validation
197,411,295 prediction targets
Execution
All workers packed on one GH200
04 / Usage

From a cache to an experiment.

The published cosine sweeps saved no checkpoints. Retain weights in a new run when you want to perform Hessian analysis.

05 / Performance

Measured on a single GH200.

Observed steady training throughput at 80 tokens per parameter, calculated from complete logging windows after warmup. Every completed run contributes.

Synchronous

1.745M tokens/s

IQR 1.730–1.758 · 72 runs
39.48 GiB median peak allocation

Four workers

1.599M tokens/s

IQR 1.587–1.610 · 144 runs
40.78 GiB median peak allocation

Eight workers

1.522M tokens/s

IQR 1.508–1.535 · 180 runs
42.29 GiB median peak allocation

All horizons, timing boundaries, and memory measurements ↗

BF16 autocast · FP32 parameters · compiled SDPA · global batch 131,072. These are single-GPU measurements, with all workers sharing the device.

Search current documentation

Historical reports are available in the archive.