tarpous commited on
Commit
efa78b2
·
verified ·
1 Parent(s): 504625d

Publish v1.0.0 model card and technical report

Browse files

Adds the audited technical report, minimal llama.cpp/Pi demo, scientific figures, publication evidence, citation metadata, and paper license. Replaces superseded presentation assets.

.gitattributes CHANGED
@@ -35,3 +35,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  gguf/zero-125m-f16.gguf filter=lfs diff=lfs merge=lfs -text
37
  gguf/zero-125m-q8_0.gguf filter=lfs diff=lfs merge=lfs -text
 
 
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  gguf/zero-125m-f16.gguf filter=lfs diff=lfs merge=lfs -text
37
  gguf/zero-125m-q8_0.gguf filter=lfs diff=lfs merge=lfs -text
38
+ lm-from-zero-technical-report.pdf filter=lfs diff=lfs merge=lfs -text
CITATION.cff ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ cff-version: 1.2.0
2
+ message: "If you use this work, please cite it as below."
3
+ title: "lm-from-zero: A Local-First, Reproducible Language-Model Pipeline from Tokenization to Serving"
4
+ type: software
5
+ authors:
6
+ - name: tarpous
7
+ version: 1.0.0
8
+ date-released: 2026-08-10
9
+ license: Apache-2.0
10
+ repository-code: "https://github.com/tarpous/lm-from-zero"
11
+ url: "https://huggingface.co/tarpous/zero-125m"
12
+ abstract: >-
13
+ A local-first language-model pipeline covering deterministic byte-level BPE,
14
+ checked data shards, dense OLMo2, Mamba-2, masked diffusion, pretraining,
15
+ post-training, evaluation, export, quantization, and local serving.
LICENSE CHANGED
@@ -180,7 +180,7 @@
180
  To apply the Apache License to your work, attach the following
181
  boilerplate notice, with the fields enclosed by brackets "[]"
182
  replaced with your own identifying information. (Don't include
183
- the brackets!) The text should be enclosed in the appropriate
184
  comment syntax for the file format. We also recommend that a
185
  file or class name and description of purpose be included on the
186
  same "printed page" as the copyright notice for easier
 
180
  To apply the Apache License to your work, attach the following
181
  boilerplate notice, with the fields enclosed by brackets "[]"
182
  replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
  comment syntax for the file format. We also recommend that a
185
  file or class name and description of purpose be included on the
186
  same "printed page" as the copyright notice for easier
LICENSE-PAPER ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Creative Commons Attribution 4.0 International
2
+
3
+ Copyright 2026 tarpous
4
+
5
+ The technical report and publication figures in this repository are licensed
6
+ under the Creative Commons Attribution 4.0 International Public License.
7
+
8
+ You are free to share and adapt this material for any purpose, including
9
+ commercially, provided that you give appropriate credit, provide a link to the
10
+ license, and indicate whether changes were made. No additional restrictions
11
+ may be applied that legally restrict others from doing anything the license
12
+ permits.
13
+
14
+ The complete legal code is available at:
15
+ https://creativecommons.org/licenses/by/4.0/legalcode
16
+
17
+ SPDX-License-Identifier: CC-BY-4.0
README.md CHANGED
@@ -1,117 +1,158 @@
1
  ---
2
  license: apache-2.0
3
- language:
4
- - en
5
  library_name: transformers
6
  pipeline_tag: text-generation
 
 
 
 
7
  tags:
8
- - lm-from-zero
9
- - olmo2
10
- - causal-lm
11
- - byte-level-bpe
12
- - gguf
13
- - llama.cpp
14
  ---
15
 
16
  # zero-125m
17
 
18
- `zero-125m` is a compact decoder-only language model trained from scratch in
19
- the [`lm-from-zero`](https://github.com/tarpous/lm-from-zero) project. It is
20
- released in two interoperable forms:
21
-
22
- - a standard Hugging Face `Olmo2ForCausalLM` package for Transformers and
23
- vLLM; and
24
- - F16 and Q8_0 GGUF files under [`gguf/`](gguf) for llama.cpp.
25
-
26
- This repository is the immutable artifact home. Source code, training
27
- configuration, test coverage, generated report, and local reproduction
28
- instructions remain in the linked GitHub project.
29
-
30
- ## Model details
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
- - **Architecture:** dense OLMo2-compatible causal decoder with RoPE, grouped
33
- query attention, Q/K normalization, RMSNorm, SwiGLU, and untied output head.
34
- - **Tokenizer:** project-trained 32K byte-level BPE; the tokenizer files in
35
- this repository are required for Transformers use.
36
- - **Training data:** a deterministic shard build from
37
- [`HuggingFaceFW/fineweb-edu`](https://huggingface.co/datasets/HuggingFaceFW/fineweb-edu),
38
- `sample-10BT` revision `87f09149ef4734204d70ed1d046ddc9ca3f2b8f9`
39
- (ODC-By). Raw training data is not redistributed here.
40
- - **Training lineage:** see [`export_manifest.json`](export_manifest.json) for
41
- the source checkpoint, parameter count, tokenizer hash, model hash, and
42
- fp32 export-parity result.
43
-
44
- ## Files and verification
45
 
46
- | Path | Purpose |
47
- |---|---|
48
- | `model.safetensors` and configuration/tokenizer files | Standard Transformers package |
49
- | `gguf/zero-125m-f16.gguf` | F16 GGUF conversion |
50
- | `gguf/zero-125m-q8_0.gguf` | Q8_0 GGUF for local llama.cpp serving |
51
- | `gguf/gguf-manifest.json` | Checksums, converter revision, tokenizer parity, and CUDA smoke evidence |
52
- | `evaluation/` | Fixed-window validation/test evidence and generated summary |
53
- | `figures/` | Generated FineWeb training and evaluation figures |
54
 
55
- Verify any downloaded file against the SHA-256 values in the export or GGUF
56
- manifest before use.
 
 
57
 
58
- ## Loading
 
 
59
 
60
- Transformers:
61
 
62
  ```python
 
63
  from transformers import AutoModelForCausalLM, AutoTokenizer
64
 
65
  model_id = "tarpous/zero-125m"
66
  tokenizer = AutoTokenizer.from_pretrained(model_id)
67
- model = AutoModelForCausalLM.from_pretrained(model_id)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  ```
69
 
70
- llama.cpp Q8_0 server:
71
-
72
- ```bash
73
- llama-server \
74
- -m gguf/zero-125m-q8_0.gguf \
75
- --n-gpu-layers 99 --ctx-size 2048 \
76
- --host 127.0.0.1 --port 8091
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  ```
78
 
79
- The local validation used llama.cpp `b10069` for the Q8_0 CUDA smoke. The
80
- runtime conversion details and the exact pre-tokenizer compatibility mapping
81
- are documented in the [source repository](https://github.com/tarpous/lm-from-zero/blob/b27bb9ce063a26c8606bd35207a2f19060e1cbc8/docs/gguf-conversion.md).
82
-
83
- ## Evaluation
84
-
85
- Evaluation uses fixed, non-wrapping held-out FineWeb token windows. The raw
86
- machine-readable records are in
87
- [`evaluation/zero-125m-validation.jsonl`](evaluation/zero-125m-validation.jsonl)
88
- and [`evaluation/zero-125m-test.jsonl`](evaluation/zero-125m-test.jsonl).
89
- The corresponding generated table is
90
- [`evaluation/presentation-summary.md`](evaluation/presentation-summary.md).
91
-
92
- These files are the canonical evaluation evidence. They bind metrics to the
93
- exact tokenizer and shard manifests; do not compare them directly with results
94
- that use a different data split, tokenizer, token budget, or evaluation
95
- protocol.
96
-
97
- ## Intended use and limitations
98
-
99
- This is an educational, compact base language model intended for local
100
- experimentation, reproducibility work, and inference-stack testing. It is not
101
- instruction-tuned and should not be treated as a reliable assistant.
102
-
103
- Outputs can be incorrect, biased, unsafe, or unsuitable for a particular
104
- context. The project does not claim broad safety evaluation or benchmark
105
- competitiveness. Do not use this model for high-stakes decisions without
106
- independent validation and appropriate safeguards.
107
-
108
- ## License and provenance
109
-
110
- The model weights, tokenizer, configurations, GGUF conversions, and files in
111
- this repository are released under [Apache-2.0](LICENSE). Dataset terms remain
112
- those of their respective providers; the FineWeb-Edu source used here is
113
- recorded as ODC-By in the project provenance.
114
 
115
- For the complete project report, implementation, training/evaluation lineage,
116
- and reproducible local commands, see
117
- [`tarpous/lm-from-zero`](https://github.com/tarpous/lm-from-zero).
 
1
  ---
2
  license: apache-2.0
 
 
3
  library_name: transformers
4
  pipeline_tag: text-generation
5
+ datasets:
6
+ - HuggingFaceFW/fineweb-edu
7
+ language:
8
+ - en
9
  tags:
10
+ - olmo2
11
+ - base-model
12
+ - gguf
13
+ - from-scratch
14
+ - reproducible-training
 
15
  ---
16
 
17
  # zero-125m
18
 
19
+ `zero-125m` is a 124,680,960-parameter OLMo2-compatible base language model
20
+ trained from scratch on 2,500,001,792 FineWeb-Edu tokens. It is the released
21
+ dense model from the
22
+ [`lm-from-zero`](https://github.com/tarpous/lm-from-zero) project, which covers
23
+ the complete path from byte-level BPE tokenization to local serving.
24
+
25
+ This repository includes the native Transformers model and tokenizer, F16 and
26
+ Q8_0 GGUF derivatives, evaluation evidence, and the full technical report.
27
+
28
+ ![Local base-model continuation in Pi using the Q8_0 GGUF through llama.cpp](assets/zero-125m-serving-demo.gif)
29
+
30
+ [Technical report](lm-from-zero-technical-report.pdf) |
31
+ [Source and reproducibility](https://github.com/tarpous/lm-from-zero) |
32
+ [Capture evidence](assets/pi-demo-evidence.json)
33
+
34
+ ## Intended use
35
+
36
+ The model is intended for research, education, systems experiments, conversion
37
+ tests, and local inference demonstrations. It is a pretrained base model. It
38
+ has not been aligned for assistant use and should not be treated as a reliable
39
+ chatbot, factual reference, or safety-critical system.
40
+
41
+ ## Training
42
+
43
+ - Architecture: OLMo2-compatible causal decoder
44
+ - Parameters: 124,680,960
45
+ - Layers: 12
46
+ - Hidden width: 768
47
+ - Query heads: 12
48
+ - Key/value heads: 4
49
+ - Context length: 2,048 tokens
50
+ - Vocabulary: 32,000 byte-level BPE tokens
51
+ - Training tokens: 2,500,001,792
52
+ - Data: FineWeb-Edu `sample-10BT`, immutable revision
53
+ `87f09149ef4734204d70ed1d046ddc9ca3f2b8f9`
54
+ - Optimizer: AdamW with linear warmup and cosine decay
55
+ - Numerical format: bfloat16 training with fp32 optimizer state
56
+ - Hardware: one NVIDIA RTX 4080 SUPER
57
+
58
+ The tokenizer, shard manifest, model configuration, checkpoint, evaluation,
59
+ and converted package are connected by recorded hashes. The native
60
+ Transformers export has an exact maximum fp32 logit error of 0.0 against the
61
+ project checkpoint in the recorded parity evaluation.
62
 
63
+ ## Evaluation
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
+ Evaluation uses fixed, non-wrapping FineWeb-Edu windows.
 
 
 
 
 
 
 
66
 
67
+ | Split | Mean loss | Perplexity |
68
+ |---|---:|---:|
69
+ | Validation | 3.324985 | 27.799 |
70
+ | Test | 3.400198 | 29.970 |
71
 
72
+ These measurements describe next-token likelihood under this tokenizer and
73
+ window protocol. They are not instruction-following, factuality, or safety
74
+ scores.
75
 
76
+ ## Transformers usage
77
 
78
  ```python
79
+ import torch
80
  from transformers import AutoModelForCausalLM, AutoTokenizer
81
 
82
  model_id = "tarpous/zero-125m"
83
  tokenizer = AutoTokenizer.from_pretrained(model_id)
84
+ model = AutoModelForCausalLM.from_pretrained(
85
+ model_id,
86
+ dtype=torch.bfloat16,
87
+ device_map="auto",
88
+ )
89
+
90
+ inputs = tokenizer("Once upon a time,", return_tensors="pt").to(model.device)
91
+ with torch.inference_mode():
92
+ output = model.generate(
93
+ **inputs,
94
+ max_new_tokens=64,
95
+ do_sample=False,
96
+ )
97
+
98
+ print(tokenizer.decode(output[0], skip_special_tokens=True))
99
  ```
100
 
101
+ This is a base model, so continuations may be repetitive, abrupt, or
102
+ inaccurate. A prompt formatted as a conversation does not turn it into an
103
+ instruction-following model.
104
+
105
+ ## GGUF files
106
+
107
+ | File | Size | SHA-256 |
108
+ |---|---:|---|
109
+ | `zero-125m-f16.gguf` | 250,567,744 bytes | `4863f80ea315fc0713da86750f71cddc8dfbec09c0d3f8a853cee650220027ab` |
110
+ | `zero-125m-q8_0.gguf` | 133,708,864 bytes | `401866c0a19e803eea19b00e056915a37b05ebe1146430b618355071680b8692` |
111
+
112
+ The Q8_0 artifact produced 76.5 decoded tokens per second in the recorded
113
+ bounded CUDA llama.cpp smoke. Throughput is hardware and build dependent.
114
+ Conversion details and the pre-tokenizer compatibility patch are documented in
115
+ the project repository.
116
+
117
+ ## Broader project evidence
118
+
119
+ The project also trained a 20M dense FineWeb model and separate TinyStories
120
+ models near 20M parameters using dense attention, Mamba-2, and masked discrete
121
+ diffusion. It includes dense ablations, supervised fine-tuning, DPO, and local
122
+ judge calibration. Those results describe the research project and are not
123
+ additional training stages of this released base checkpoint.
124
+
125
+ The full report is available in this model repository as
126
+ `lm-from-zero-technical-report.pdf` and in the GitHub release.
127
+
128
+ ## Limitations
129
+
130
+ - The model is small and was trained for only 2.5 billion tokens.
131
+ - It is a base model without safety or instruction tuning.
132
+ - FineWeb-Edu may contain errors, bias, personal information, and other
133
+ undesirable web content despite dataset-level filtering.
134
+ - The model can generate false, biased, offensive, repetitive, or incoherent
135
+ text.
136
+ - Evaluation covers held-out language-model loss, not downstream capability or
137
+ responsible-deployment criteria.
138
+ - The planned 125M FineWeb Mamba-2 and masked-diffusion runs were not completed.
139
+ - The planned 500-prompt cross-judge calibration was not completed.
140
+
141
+ Users are responsible for evaluating the model in their own setting and for
142
+ adding safeguards appropriate to any application.
143
+
144
+ ## Citation
145
+
146
+ ```bibtex
147
+ @software{tarpous2026lmfromzero,
148
+ author = {tarpous},
149
+ title = {lm-from-zero: A Local-First, Reproducible Language-Model Pipeline from Tokenization to Serving},
150
+ year = {2026},
151
+ url = {https://github.com/tarpous/lm-from-zero}
152
+ }
153
  ```
154
 
155
+ ## License
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
156
 
157
+ The model weights, tokenizer, GGUF files, and code are released under
158
+ Apache-2.0. The technical report and its figures are released under CC BY 4.0.
 
assets/pi-demo-evidence.json ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": "lm-from-zero-pi-demo",
3
+ "format_version": 1,
4
+ "label": "Local base-model text continuation - Q8_0 GGUF via llama.cpp and Pi",
5
+ "model": {
6
+ "filename": "zero-125m-q8_0.gguf",
7
+ "sha256": "401866c0a19e803eea19b00e056915a37b05ebe1146430b618355071680b8692"
8
+ },
9
+ "prompt": "Once upon a time,",
10
+ "seed": 0,
11
+ "sampling": "greedy",
12
+ "server_context_length": 2048,
13
+ "pi_declared_context_window": 8192,
14
+ "maximum_new_tokens": 256,
15
+ "bridge": "Final user text only; newline stop",
16
+ "interface": {
17
+ "pi": "0.83.0",
18
+ "vhs": "vhs version v0.11.0 (c6af91a)",
19
+ "ttyd": "ttyd version 1.7.7-e2819f2",
20
+ "ffmpeg": "ffmpeg version 7.1.3-0+deb13u1 Copyright (c) 2000-2025 the FFmpeg developers",
21
+ "llama_cpp": "b10069"
22
+ },
23
+ "gif": {
24
+ "path": "docs/assets/zero-125m-serving-demo.gif",
25
+ "bytes": 61703,
26
+ "sha256": "4a8be28346e7f7b889ec7c6c5dc53b638d82c4726a8a19acbde3b882c9001cf6"
27
+ },
28
+ "poster": {
29
+ "path": "docs/assets/zero-125m-serving-demo.png",
30
+ "bytes": 50588,
31
+ "sha256": "9afc98818204dcb0ca579fd02be785c631f4c3a131580f930ca4d58207f0fa6b"
32
+ }
33
+ }
assets/zero-125m-serving-demo.gif ADDED
assets/zero-125m-serving-demo.png ADDED
evaluation/presentation-summary.md DELETED
@@ -1,23 +0,0 @@
1
- # Generated result summary
2
-
3
- This file is generated by `tools/build_presentation_assets.py` from canonical local artifacts. Do not edit its values by hand.
4
-
5
- ## FineWeb dense evaluation
6
-
7
- | Model | Validation loss | Validation PPL | Test loss | Test PPL |
8
- |---|---:|---:|---:|---:|
9
- | 20M | 4.218200 | 67.911 | 4.264027 | 71.096 |
10
- | 125M | 3.324985 | 27.799 | 3.400198 | 29.970 |
11
-
12
- ## 20M architecture study
13
-
14
- - Dense causal PPL: 6.249
15
- - Mamba-2 causal PPL: 6.852
16
- - Diffusion masked reconstruction loss: 3.740
17
- - Diffusion variational upper bound: 3.045
18
-
19
- ## Local judge and serving
20
-
21
- - 100-prompt cross-judge agreement: 83.0%; Cohen's kappa 0.616.
22
- - Qwen primary 500-prompt run: 1,000 calls; 0 parse failures; 19.8% order flips.
23
- - `zero-125m` vLLM completion latency: 373 ms for 8 generated tokens.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
evaluation/publication-results.json ADDED
@@ -0,0 +1,281 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "acceleration": {
3
+ "cells": 78,
4
+ "maximum_loss_absolute_delta": 4.38690185546875e-05,
5
+ "promoted_architecture": "diffusion",
6
+ "promoted_cell": "fused-adamw",
7
+ "speedup": 1.136088420878017
8
+ },
9
+ "architecture_study": {
10
+ "dense": {
11
+ "compute_seconds": 1310.775,
12
+ "loss": 1.832368791103363,
13
+ "model": {
14
+ "context_length": 1024,
15
+ "hidden_size": 384,
16
+ "layers": 5,
17
+ "parameter_count": 20159104,
18
+ "vocabulary_size": 16000
19
+ },
20
+ "perplexity": 6.24867093730173,
21
+ "predicted_tokens": 196416,
22
+ "sequences": 192,
23
+ "tokens_per_second": 364043.5415766547,
24
+ "tokens_trained": 500006912
25
+ },
26
+ "diffusion": {
27
+ "causal_perplexity_applicable": false,
28
+ "compute_seconds": 1313.311,
29
+ "masked_reconstruction_loss": 3.740404522177884,
30
+ "masked_tokens": 97655,
31
+ "model": {
32
+ "context_length": 1024,
33
+ "hidden_size": 384,
34
+ "layers": 4,
35
+ "parameter_count": 19959168,
36
+ "vocabulary_size": 16000
37
+ },
38
+ "tokens_trained": 528990208,
39
+ "variational_upper_bound": 3.0454040666421256
40
+ },
41
+ "mamba2": {
42
+ "compute_seconds": 3630.512,
43
+ "loss": 1.924551824728648,
44
+ "model": {
45
+ "context_length": 1024,
46
+ "hidden_size": 384,
47
+ "layers": 7,
48
+ "parameter_count": 19943164,
49
+ "vocabulary_size": 16000
50
+ },
51
+ "perplexity": 6.852077046149102,
52
+ "predicted_tokens": 196416,
53
+ "sequences": 192,
54
+ "tokens_per_second": 156774.6946154588,
55
+ "tokens_trained": 605544448
56
+ },
57
+ "seed": 1337
58
+ },
59
+ "datasets": {
60
+ "fineweb_edu": {
61
+ "dataset_id": "HuggingFaceFW/fineweb-edu",
62
+ "documents": 2450915,
63
+ "license": "odc-by",
64
+ "revision": "87f09149ef4734204d70ed1d046ddc9ca3f2b8f9",
65
+ "test_tokens": 25260908,
66
+ "train_tokens": 2500000871,
67
+ "validation_tokens": 25661975
68
+ },
69
+ "tinystories": {
70
+ "dataset_id": "roneneldan/TinyStories",
71
+ "documents": 112206,
72
+ "license": "cdla-sharing-1.0",
73
+ "revision": "f54c09fd23315a6f9c86f9dc80f725de7d8f9c64",
74
+ "test_tokens": 237469,
75
+ "train_tokens": 23323923,
76
+ "validation_tokens": 245778
77
+ }
78
+ },
79
+ "dense_ablations": {
80
+ "screening_tokens_per_seed": 100007936,
81
+ "seeds": [
82
+ 1337,
83
+ 2027,
84
+ 3407
85
+ ],
86
+ "variants": [
87
+ {
88
+ "change": "swiglu_to_gelu",
89
+ "downstream_validation_perplexity": null,
90
+ "mean_terminal_loss": 1.6645395755767822,
91
+ "mean_tokens_per_second": 402805.640803283,
92
+ "name": "gelu",
93
+ "terminal_loss_std": 0.13158630932487156
94
+ },
95
+ {
96
+ "change": "adamw_to_hybrid_muon",
97
+ "downstream_validation_perplexity": 5.713338699142928,
98
+ "mean_terminal_loss": 1.522047758102417,
99
+ "mean_tokens_per_second": 307086.7898872683,
100
+ "name": "hybrid_muon",
101
+ "terminal_loss_std": 0.13786254833334086
102
+ },
103
+ {
104
+ "change": "rmsnorm_to_layernorm",
105
+ "downstream_validation_perplexity": 5.90013935655289,
106
+ "mean_terminal_loss": 1.618891954421997,
107
+ "mean_tokens_per_second": 389267.12581697945,
108
+ "name": "layer_norm",
109
+ "terminal_loss_std": 0.13529636072177245
110
+ },
111
+ {
112
+ "change": "rope_to_learned_absolute_positions",
113
+ "downstream_validation_perplexity": null,
114
+ "mean_terminal_loss": 1.7279485861460369,
115
+ "mean_tokens_per_second": 351116.52991555206,
116
+ "name": "learned_absolute_positions",
117
+ "terminal_loss_std": 0.1359720722424022
118
+ },
119
+ {
120
+ "change": "gqa_to_mha",
121
+ "downstream_validation_perplexity": 5.84947328452131,
122
+ "mean_terminal_loss": 1.6075799067815144,
123
+ "mean_tokens_per_second": 382954.5419660864,
124
+ "name": "mha",
125
+ "terminal_loss_std": 0.13742111225327125
126
+ },
127
+ {
128
+ "change": "tie_input_output_embeddings",
129
+ "downstream_validation_perplexity": 5.826874126198687,
130
+ "mean_terminal_loss": 1.6208405097325642,
131
+ "mean_tokens_per_second": 435082.9346366357,
132
+ "name": "tied_embeddings",
133
+ "terminal_loss_std": 0.14300388423302463
134
+ },
135
+ {
136
+ "change": "remove_qk_normalization",
137
+ "downstream_validation_perplexity": null,
138
+ "mean_terminal_loss": 1.8348172108332317,
139
+ "mean_tokens_per_second": 398739.79417508264,
140
+ "name": "without_qk_norm",
141
+ "terminal_loss_std": 0.13095864590886672
142
+ }
143
+ ]
144
+ },
145
+ "fineweb_dense": {
146
+ "125m": {
147
+ "model": {
148
+ "attention_heads": 12,
149
+ "context_length": 2048,
150
+ "hidden_size": 768,
151
+ "intermediate_size": 2048,
152
+ "key_value_heads": 4,
153
+ "layers": 12,
154
+ "model_config_sha256": "c886f7c13c6c027276c3f2ddcede72425fac511e2d1b2551b5d7eadd121f2bf4",
155
+ "optimizer_steps": 152588,
156
+ "parameter_count": 124680960,
157
+ "tokens_trained": 2500001792,
158
+ "vocabulary_size": 32000
159
+ },
160
+ "test": {
161
+ "loss": 3.4001976028084755,
162
+ "perplexity": 29.970021622760513,
163
+ "predicted_tokens": 65504,
164
+ "sequences": 32,
165
+ "tokens_per_second": 73350.9216982716
166
+ },
167
+ "validation": {
168
+ "loss": 3.3249846026301384,
169
+ "perplexity": 27.798570614501042,
170
+ "predicted_tokens": 65504,
171
+ "sequences": 32,
172
+ "tokens_per_second": 86392.51131817144
173
+ }
174
+ },
175
+ "20m": {
176
+ "model": {
177
+ "attention_heads": 8,
178
+ "context_length": 1024,
179
+ "hidden_size": 256,
180
+ "intermediate_size": 704,
181
+ "key_value_heads": 2,
182
+ "layers": 5,
183
+ "model_config_sha256": "d421a006c0f4ea1ae8a6a7a9a1396d93ea0634567ddabd37bc2f70c8632bcc63",
184
+ "optimizer_steps": 61036,
185
+ "parameter_count": 19910976,
186
+ "tokens_trained": 500006912,
187
+ "vocabulary_size": 32000
188
+ },
189
+ "test": {
190
+ "loss": 4.264026649296284,
191
+ "perplexity": 71.09568524875908,
192
+ "predicted_tokens": 261888,
193
+ "sequences": 256,
194
+ "tokens_per_second": 332064.2247825187
195
+ },
196
+ "validation": {
197
+ "loss": 4.21819968521595,
198
+ "perplexity": 67.91111278850597,
199
+ "predicted_tokens": 261888,
200
+ "sequences": 256,
201
+ "tokens_per_second": 318733.37056578987
202
+ }
203
+ }
204
+ },
205
+ "format": "lm-from-zero-publication-results",
206
+ "format_version": 1,
207
+ "judge": {
208
+ "cohen_kappa": 0.616274476609672,
209
+ "cross_judge_prompts": 100,
210
+ "cross_judge_tasks": 200,
211
+ "gemma_order_flip_rate": 0.21,
212
+ "primary_calls": 1000,
213
+ "primary_order_flip_rate": 0.198,
214
+ "primary_parse_failures": 0,
215
+ "primary_prompts": 500,
216
+ "qwen_order_flip_rate": 0.26,
217
+ "raw_agreement": 0.83
218
+ },
219
+ "post_training": {
220
+ "dpo": {
221
+ "beta": 0.1,
222
+ "dpo_objective_preference_accuracy": 0.6443925233644859,
223
+ "dpo_sequence_preference_accuracy": 0.4331775700934579,
224
+ "final_loss": 0.38742566108703613,
225
+ "first_loss": 0.6931471824645996,
226
+ "heldout_pairs": 10700,
227
+ "mean_forward_kl": 0.023786345937711253,
228
+ "mean_heldout_dpo_loss": 0.7430345315044359,
229
+ "mean_last_100_loss": 0.7263714300002903,
230
+ "mean_reward_margin": 8.639506955102226,
231
+ "sft_sequence_preference_accuracy": 0.4321495327102804,
232
+ "steps": 25000,
233
+ "training_pairs": 50000
234
+ },
235
+ "sft": {
236
+ "examples": 100000,
237
+ "final_loss": 1.4705926179885864,
238
+ "first_loss": 6.417908191680908,
239
+ "mean_last_100_loss": 1.4433360010385514,
240
+ "steps": 12500,
241
+ "tokens": 62684063
242
+ }
243
+ },
244
+ "release": {
245
+ "gguf": {
246
+ "F16": {
247
+ "bytes": 250567744,
248
+ "filename": "zero-125m-f16.gguf",
249
+ "sha256": "4863f80ea315fc0713da86750f71cddc8dfbec09c0d3f8a853cee650220027ab"
250
+ },
251
+ "Q8_0": {
252
+ "bytes": 133708864,
253
+ "filename": "zero-125m-q8_0.gguf",
254
+ "sha256": "401866c0a19e803eea19b00e056915a37b05ebe1146430b618355071680b8692"
255
+ }
256
+ },
257
+ "hf_fp32_max_abs_error": 0.0,
258
+ "hf_parameter_count": 124680960,
259
+ "llama_cpp_tokens_per_second": 76.50524060898172,
260
+ "model_safetensors_bytes": 498738888,
261
+ "model_safetensors_sha256": "4828a7f18d40cba9504d593fbcc1b4ad67c52f2a6387b4de8c7ab682c9c31e1d",
262
+ "vllm_latency_ms": 373.0
263
+ },
264
+ "tokenizers": {
265
+ "fineweb_edu": {
266
+ "merge_count": 31736,
267
+ "sha256": "e16b820d0d8c7ad8e89904714ef6d89eb573a4e651dd337bde56fd8f418476dd",
268
+ "vocabulary_size": 32000
269
+ },
270
+ "tinystories": {
271
+ "merge_count": 15736,
272
+ "sha256": "f65920522fb584143cfee0f0e9d7581286bbde9fdc5c068a34d5ce0441695da9",
273
+ "vocabulary_size": 16000
274
+ }
275
+ },
276
+ "unfinished": [
277
+ "125M FineWeb training for Mamba-2",
278
+ "125M FineWeb training for masked diffusion",
279
+ "500-prompt cross-judge calibration"
280
+ ]
281
+ }
evaluation/publication-summary.md ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Generated publication summary
2
+
3
+ This file is generated from canonical experiment artifacts. Do not edit its values by hand.
4
+
5
+ | Result | Validation | Test |
6
+ |---|---:|---:|
7
+ | FineWeb-Edu dense 20M perplexity | 67.911 | 71.096 |
8
+ | FineWeb-Edu dense 125M perplexity | 27.799 | 29.970 |
9
+
10
+ The seed-1337 full-budget TinyStories study measured causal perplexity 6.249 for Dense and 6.852 for Mamba-2. Masked diffusion recorded reconstruction loss 3.740 nats and a variational upper bound of 3.045 nats; causal perplexity does not apply to that objective.
11
+
12
+ The 100-prompt cross-judge calibration reached 83.0% raw agreement and Cohen's kappa 0.616. The separate 500-prompt primary-judge run completed 1,000 order-swapped calls with 0 parse failures after repair and a 19.8% flip rate.
figures/architecture-study.png ADDED
figures/dense-ablations.png ADDED
figures/fineweb-evaluation.png CHANGED
figures/fineweb-training-loss.png DELETED
Binary file (56.8 kB)
 
figures/fineweb-training.png ADDED
figures/judge-calibration.png ADDED
lm-from-zero-technical-report.pdf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:998f3f312a0957bc6da07fa048c9a0165eba321cf3c3031775f6df040a6f74d7
3
+ size 537873