PursuitOfDataScience commited on
Commit
c6bcc8d
·
verified ·
1 Parent(s): 6737173

Model card: charts in place of tables (numbers kept in collapsed blocks)

Browse files
.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
  plots/argonne4_5_loss_plot.png filter=lfs diff=lfs merge=lfs -text
37
  tokenizer.json filter=lfs diff=lfs merge=lfs -text
 
 
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  plots/argonne4_5_loss_plot.png filter=lfs diff=lfs merge=lfs -text
37
  tokenizer.json filter=lfs diff=lfs merge=lfs -text
38
+ assets/benchmarks.png filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -39,11 +39,9 @@ text; it does not follow instructions.
39
 
40
  ## Which checkpoint should I use?
41
 
42
- | If you want | Use |
43
- |---|---|
44
- | Knowledge and commonsense tasks, inputs longer than 1,024 tokens | [argonne-4.5-base-ctx13568](https://huggingface.co/PursuitOfDataScience/argonne-4.5-base-ctx13568) |
45
- | Math and step-by-step reasoning at short context, a start for math fine-tuning, or a before/after control for long-context research | **argonne-4.5-base** (this repo) |
46
- | A smaller model, or a trained context longer than 13,568 tokens | [argonne-4.0-base](https://huggingface.co/PursuitOfDataScience/argonne-4.0-base) (1.04B, 65,536-token context) |
47
 
48
  **The context stage is a trade, measured:** it raises seven of the eight multiple-choice tasks (+1.36 on the 8-task
49
  mean; mmlu fell 28.88 to 26.03) and cuts gsm8k from 20.62 to **4.78** (−15.85). It trained on long arXiv plus FineWeb-Edu with no
@@ -61,6 +59,11 @@ stage 3 context extension 17.15B tokens context 13,568 -> argonne-4.5-
61
 
62
  The block design is 4.0's. What changed is the size, the token budget, and one fixed defect.
63
 
 
 
 
 
 
64
  | | argonne-4.0-base | Argonne 4.5 |
65
  |---|---|---|
66
  | **Parameters** | 1.04B | **2.06B** |
@@ -69,8 +72,22 @@ The block design is 4.0's. What changed is the size, the token budget, and one f
69
  | **Reasoning anneal** | 18.07B tokens, **no learning-rate cooldown** (a launcher defect) | the same 18.07B-token corpus, **with** a cooldown |
70
  | **Context extension** | to 13,568, then to 65,536 | to 13,568 (in argonne-4.5-base-ctx13568 only) |
71
 
 
 
72
  ## Model architecture
73
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  | Component | Specification |
75
  |---|---|
76
  | **Parameters** | 2,063,639,552 (~2.06B), of which 388,272,640 (18.8%) are the tied embedding |
@@ -88,6 +105,8 @@ The block design is 4.0's. What changed is the size, the token budget, and one f
88
  | **Tied embeddings** | yes: the output head reuses the input embedding |
89
  | **KV cache** | 48 KiB per token in bf16, so 48 MiB for a full 1,024-token window |
90
 
 
 
91
  **Config switches that are off.** `config.json` carries switches from the 4.5 research phase,
92
  all disabled in this model: `attn_pattern: null` (so `sliding_window_size: 2048` is never used),
93
  `interleaved_local_attention: false`, `nope_global: false`, `attn_gate: false`,
@@ -98,6 +117,11 @@ layer runs full causal attention with RoPE.
98
 
99
  Two stages, both causal language modeling.
100
 
 
 
 
 
 
101
  | | Stage 1: pretrain | Stage 2: reasoning anneal |
102
  |---|---|---|
103
  | **Script** | `pretrain.py` | `continue_pretrain.py` |
@@ -112,24 +136,22 @@ Two stages, both causal language modeling.
112
  | **Schedule** | constant, then linear decay over the last 15% (30,517 steps) | constant, then linear decay over the last 15% (5,012 steps) |
113
  | **Optimizer state** | new | reset at the start of the stage |
114
 
 
 
115
  Shared by both stages:
116
 
117
- | Item | Value |
118
- |---|---|
119
- | **Optimizer** | AdamW (β₁ 0.9, β₂ 0.95, weight decay 0.1), fp32 master weights |
120
- | **Gradient clipping** | 0.4 |
121
- | **Precision** | bf16 autocast. FP8 matmuls (torchao, tensorwise, including the output head) for the first ~55.8k pretraining steps (~30.1B tokens); plain bf16 after that (the A100s have no FP8 support, and it stayed off for the one later H100 stretch) |
122
- | **Vocabulary padding** | 151,669 → 151,680 rows during training (FP8 alignment), trimmed on export |
123
- | **Memory** | AdamW state sharded across GPUs on the 40 GB cards; gradient checkpointing |
124
- | **Published weights** | bfloat16 safetensors, about 4.1 GB |
125
 
126
  ### Hardware
127
 
128
- | Stage | GPUs |
129
- |---|---|
130
- | Pretrain, steps 0 to ~55.8k | 3× NVIDIA H100 (80 GB and 94 GB variants), FP8 on |
131
- | Pretrain, remaining ~147.7k steps | NVIDIA A100 40GB, 4 to 24 GPUs per job, plus one stretch of ~5.6k steps on 4× NVIDIA H100 80GB; FP8 off |
132
- | Reasoning anneal | NVIDIA A100 40GB, 4 or 8 GPUs |
133
 
134
  The batch stayed at exactly 540,672 tokens on every GPU count, so moving between GPU types did not
135
  change the recipe.
@@ -149,6 +171,11 @@ change the recipe.
149
 
150
  ### Stage 1: pretrain (110.00B tokens)
151
 
 
 
 
 
 
152
  | Source | Weight | Unique tokens | Tokens drawn | Passes |
153
  |---|---:|---:|---:|---:|
154
  | [FineWeb-Edu](https://huggingface.co/datasets/HuggingFaceFW/fineweb-edu) | 50% | 20.59B | 55.00B | 2.67 |
@@ -156,6 +183,8 @@ change the recipe.
156
  | GitHub code ([nick007x/github-code-2025](https://huggingface.co/datasets/nick007x/github-code-2025), above-2-stars subset) | 20% | 7.50B | 22.00B | 2.93 |
157
  | **Total** | | **38.03B** | **110.00B** | **2.89** average |
158
 
 
 
159
  These are the same token files as argonne-4.0-base's stage 1, built by
160
  [`build_a4_data.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/build_a4_data.py).
161
  They are not pre-blended: `pretrain.py` draws one source per micro-batch by weight, and the
@@ -167,6 +196,11 @@ passes; FineMath is the most repeated at 3.32.
167
  One pass over **the same anneal corpus as argonne-4.0-base's stage 2**, built by
168
  [`build_reasoning_corpus.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/build_reasoning_corpus.py).
169
 
 
 
 
 
 
170
  | Tier | Share | Sources |
171
  |---|---:|---|
172
  | code | 45.4% | [nick007x/github-code-2025](https://huggingface.co/datasets/nick007x/github-code-2025) · [nvidia/Nemotron-Competitive-Programming-v1](https://huggingface.co/datasets/nvidia/Nemotron-Competitive-Programming-v1) |
@@ -175,6 +209,8 @@ One pass over **the same anneal corpus as argonne-4.0-base's stage 2**, built by
175
  | general replay | 9.0% | [HuggingFaceFW/fineweb-edu](https://huggingface.co/datasets/HuggingFaceFW/fineweb-edu) |
176
  | tool use | 1.7% | [nvidia/Nemotron-SFT-Agentic-v2](https://huggingface.co/datasets/nvidia/Nemotron-SFT-Agentic-v2) |
177
 
 
 
178
  Shares are the tier composition of the full pool this corpus was sliced from, as measured for
179
  the [argonne-4.0-base card](https://huggingface.co/PursuitOfDataScience/argonne-4.0-base).
180
 
@@ -220,6 +256,11 @@ Scored with the same harness, tasks and few-shot counts as the 4.0-base card; th
220
  Llama-3.2-1B and Qwen3-0.6B-Base columns are that card's numbers. This checkpoint's 1,024-token context left-truncates the longest few-shot prompts
221
  (25-shot arc_challenge, some 5-shot mmlu subjects), as it would for any 1,024-token model.
222
 
 
 
 
 
 
223
  | task | **4.5-base** | 4.5-base-ctx13568 | 4.0-base | Llama-3.2-1B | Qwen3-0.6B-Base |
224
  |---|---:|---:|---:|---:|---:|
225
  | arc_challenge | **40.10** | 41.72 | 36.26 | 34.90 | 44.88 |
@@ -234,6 +275,8 @@ Llama-3.2-1B and Qwen3-0.6B-Base columns are that card's numbers. This checkpoin
234
  | gsm8k strict-match | **20.62** | 4.78 | 7.51 | 1.82 | 49.28 |
235
  | gsm8k flexible-extract | **21.15** | 5.53 | 7.88 | 2.27 | 50.04 |
236
 
 
 
237
  Metric rule, the same as the 4.0-base card: `acc_norm` for the multiple-choice tasks, `acc` for
238
  winogrande and mmlu, and gsm8k in both extraction modes. Harness:
239
  [lm-evaluation-harness](https://github.com/EleutherAI/lm-evaluation-harness) through the vLLM
@@ -338,16 +381,14 @@ Built from the GitHub `main` branch:
338
  Family overview and training history:
339
  [README, Argonne 4.5 section](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/README.md#argonne-45-base).
340
 
341
- | File | Role |
342
- |---|---|
343
- | [`model.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/model.py) | `ArgonneModel` / `ArgonneConfig` architecture and KV cache (bundled here as `model.py`) |
344
- | [`pretrain.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/pretrain.py) | stage 1: pretraining loop and the per-micro-batch mixture sampler |
345
- | [`continue_pretrain.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/continue_pretrain.py) | stage 2: the reasoning anneal |
346
- | [`build_a4_data.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/build_a4_data.py) | builds the stage-1 token files |
347
- | [`build_reasoning_corpus.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/build_reasoning_corpus.py) | builds the stage-2 corpus (tiering, decontamination, slicing) |
348
- | [`reasoning/vllm_argonne.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/reasoning/vllm_argonne.py) | vLLM port of this architecture |
349
- | [`reasoning/run_lmeval_vllm.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/reasoning/run_lmeval_vllm.py) | the benchmark harness for the evaluation table |
350
- | [`reasoning/plot_a45_loss.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/reasoning/plot_a45_loss.py) | the loss figure above |
351
 
352
  Continued as: [argonne-4.5-base-ctx13568](https://huggingface.co/PursuitOfDataScience/argonne-4.5-base-ctx13568)
353
  (stage 3, context extension to 13,568 tokens).
 
39
 
40
  ## Which checkpoint should I use?
41
 
42
+ - **Knowledge and commonsense tasks, inputs longer than 1,024 tokens**: [argonne-4.5-base-ctx13568](https://huggingface.co/PursuitOfDataScience/argonne-4.5-base-ctx13568)
43
+ - **Math and step-by-step reasoning at short context, a start for math fine-tuning, or a before/after control for long-context research**: **argonne-4.5-base** (this repo)
44
+ - **A smaller model, or a trained context longer than 13,568 tokens**: [argonne-4.0-base](https://huggingface.co/PursuitOfDataScience/argonne-4.0-base) (1.04B, 65,536-token context)
 
 
45
 
46
  **The context stage is a trade, measured:** it raises seven of the eight multiple-choice tasks (+1.36 on the 8-task
47
  mean; mmlu fell 28.88 to 26.03) and cuts gsm8k from 20.62 to **4.78** (−15.85). It trained on long arXiv plus FineWeb-Edu with no
 
59
 
60
  The block design is 4.0's. What changed is the size, the token budget, and one fixed defect.
61
 
62
+ ![Argonne 4.5 against 4.0-base: parameters, shape, tokens, anneal cooldown](https://huggingface.co/PursuitOfDataScience/argonne-4.5-base/resolve/main/assets/changes.png)
63
+
64
+ <details>
65
+ <summary>Show the numbers</summary>
66
+
67
  | | argonne-4.0-base | Argonne 4.5 |
68
  |---|---|---|
69
  | **Parameters** | 1.04B | **2.06B** |
 
72
  | **Reasoning anneal** | 18.07B tokens, **no learning-rate cooldown** (a launcher defect) | the same 18.07B-token corpus, **with** a cooldown |
73
  | **Context extension** | to 13,568, then to 65,536 | to 13,568 (in argonne-4.5-base-ctx13568 only) |
74
 
75
+ </details>
76
+
77
  ## Model architecture
78
 
79
+ ![Model architecture at a glance](https://huggingface.co/PursuitOfDataScience/argonne-4.5-base/resolve/main/assets/architecture.png)
80
+
81
+ - **Attention pattern**: full causal attention on every layer
82
+ - **Normalization**: RMSNorm (eps 1e-6), plus QK-norm, V-norm and sandwich norms
83
+ - **Position encoding**: RoPE, θ = 1,000,000
84
+ - **Output logits**: soft-capped at 15.0 (`15 · tanh(x / 15)`)
85
+ - **Tied embeddings**: yes: the output head reuses the input embedding
86
+ - **KV cache**: 48 KiB per token in bf16, so 48 MiB for a full 1,024-token window
87
+
88
+ <details>
89
+ <summary>Show the full specification</summary>
90
+
91
  | Component | Specification |
92
  |---|---|
93
  | **Parameters** | 2,063,639,552 (~2.06B), of which 388,272,640 (18.8%) are the tied embedding |
 
105
  | **Tied embeddings** | yes: the output head reuses the input embedding |
106
  | **KV cache** | 48 KiB per token in bf16, so 48 MiB for a full 1,024-token window |
107
 
108
+ </details>
109
+
110
  **Config switches that are off.** `config.json` carries switches from the 4.5 research phase,
111
  all disabled in this model: `attn_pattern: null` (so `sliding_window_size: 2048` is never used),
112
  `interleaved_local_attention: false`, `nope_global: false`, `attn_gate: false`,
 
117
 
118
  Two stages, both causal language modeling.
119
 
120
+ ![Training stages laid out along cumulative tokens with their settings](https://huggingface.co/PursuitOfDataScience/argonne-4.5-base/resolve/main/assets/stages.png)
121
+
122
+ <details>
123
+ <summary>Show every stage setting</summary>
124
+
125
  | | Stage 1: pretrain | Stage 2: reasoning anneal |
126
  |---|---|---|
127
  | **Script** | `pretrain.py` | `continue_pretrain.py` |
 
136
  | **Schedule** | constant, then linear decay over the last 15% (30,517 steps) | constant, then linear decay over the last 15% (5,012 steps) |
137
  | **Optimizer state** | new | reset at the start of the stage |
138
 
139
+ </details>
140
+
141
  Shared by both stages:
142
 
143
+ - **Optimizer**: AdamW (β�� 0.9, β₂ 0.95, weight decay 0.1), fp32 master weights
144
+ - **Gradient clipping**: 0.4
145
+ - **Precision**: bf16 autocast. FP8 matmuls (torchao, tensorwise, including the output head) for the first ~55.8k pretraining steps (~30.1B tokens); plain bf16 after that (the A100s have no FP8 support, and it stayed off for the one later H100 stretch)
146
+ - **Vocabulary padding**: 151,669 → 151,680 rows during training (FP8 alignment), trimmed on export
147
+ - **Memory**: AdamW state sharded across GPUs on the 40 GB cards; gradient checkpointing
148
+ - **Published weights**: bfloat16 safetensors, about 4.1 GB
 
 
149
 
150
  ### Hardware
151
 
152
+ - **Pretrain, steps 0 to ~55.8k**: 3× NVIDIA H100 (80 GB and 94 GB variants), FP8 on
153
+ - **Pretrain, remaining ~147.7k steps**: NVIDIA A100 40GB, 4 to 24 GPUs per job, plus one stretch of ~5.6k steps on 4× NVIDIA H100 80GB; FP8 off
154
+ - **Reasoning anneal**: NVIDIA A100 40GB, 4 or 8 GPUs
 
 
155
 
156
  The batch stayed at exactly 540,672 tokens on every GPU count, so moving between GPU types did not
157
  change the recipe.
 
171
 
172
  ### Stage 1: pretrain (110.00B tokens)
173
 
174
+ ![Stage 1 pretraining mix by source](https://huggingface.co/PursuitOfDataScience/argonne-4.5-base/resolve/main/assets/data_stage1.png)
175
+
176
+ <details>
177
+ <summary>Show sources, links and passes</summary>
178
+
179
  | Source | Weight | Unique tokens | Tokens drawn | Passes |
180
  |---|---:|---:|---:|---:|
181
  | [FineWeb-Edu](https://huggingface.co/datasets/HuggingFaceFW/fineweb-edu) | 50% | 20.59B | 55.00B | 2.67 |
 
183
  | GitHub code ([nick007x/github-code-2025](https://huggingface.co/datasets/nick007x/github-code-2025), above-2-stars subset) | 20% | 7.50B | 22.00B | 2.93 |
184
  | **Total** | | **38.03B** | **110.00B** | **2.89** average |
185
 
186
+ </details>
187
+
188
  These are the same token files as argonne-4.0-base's stage 1, built by
189
  [`build_a4_data.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/build_a4_data.py).
190
  They are not pre-blended: `pretrain.py` draws one source per micro-batch by weight, and the
 
196
  One pass over **the same anneal corpus as argonne-4.0-base's stage 2**, built by
197
  [`build_reasoning_corpus.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/build_reasoning_corpus.py).
198
 
199
+ ![Stage 2 reasoning-anneal mix by tier](https://huggingface.co/PursuitOfDataScience/argonne-4.5-base/resolve/main/assets/data_stage2.png)
200
+
201
+ <details>
202
+ <summary>Show the tiers and their sources</summary>
203
+
204
  | Tier | Share | Sources |
205
  |---|---:|---|
206
  | code | 45.4% | [nick007x/github-code-2025](https://huggingface.co/datasets/nick007x/github-code-2025) · [nvidia/Nemotron-Competitive-Programming-v1](https://huggingface.co/datasets/nvidia/Nemotron-Competitive-Programming-v1) |
 
209
  | general replay | 9.0% | [HuggingFaceFW/fineweb-edu](https://huggingface.co/datasets/HuggingFaceFW/fineweb-edu) |
210
  | tool use | 1.7% | [nvidia/Nemotron-SFT-Agentic-v2](https://huggingface.co/datasets/nvidia/Nemotron-SFT-Agentic-v2) |
211
 
212
+ </details>
213
+
214
  Shares are the tier composition of the full pool this corpus was sliced from, as measured for
215
  the [argonne-4.0-base card](https://huggingface.co/PursuitOfDataScience/argonne-4.0-base).
216
 
 
256
  Llama-3.2-1B and Qwen3-0.6B-Base columns are that card's numbers. This checkpoint's 1,024-token context left-truncates the longest few-shot prompts
257
  (25-shot arc_challenge, some 5-shot mmlu subjects), as it would for any 1,024-token model.
258
 
259
+ ![lm-eval scores per task: argonne-4.5-base against Argonne siblings, Llama-3.2-1B and Qwen3-0.6B-Base](https://huggingface.co/PursuitOfDataScience/argonne-4.5-base/resolve/main/assets/benchmarks.png)
260
+
261
+ <details>
262
+ <summary>Show the numbers</summary>
263
+
264
  | task | **4.5-base** | 4.5-base-ctx13568 | 4.0-base | Llama-3.2-1B | Qwen3-0.6B-Base |
265
  |---|---:|---:|---:|---:|---:|
266
  | arc_challenge | **40.10** | 41.72 | 36.26 | 34.90 | 44.88 |
 
275
  | gsm8k strict-match | **20.62** | 4.78 | 7.51 | 1.82 | 49.28 |
276
  | gsm8k flexible-extract | **21.15** | 5.53 | 7.88 | 2.27 | 50.04 |
277
 
278
+ </details>
279
+
280
  Metric rule, the same as the 4.0-base card: `acc_norm` for the multiple-choice tasks, `acc` for
281
  winogrande and mmlu, and gsm8k in both extraction modes. Harness:
282
  [lm-evaluation-harness](https://github.com/EleutherAI/lm-evaluation-harness) through the vLLM
 
381
  Family overview and training history:
382
  [README, Argonne 4.5 section](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/README.md#argonne-45-base).
383
 
384
+ - [`model.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/model.py): `ArgonneModel` / `ArgonneConfig` architecture and KV cache (bundled here as `model.py`)
385
+ - [`pretrain.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/pretrain.py): stage 1: pretraining loop and the per-micro-batch mixture sampler
386
+ - [`continue_pretrain.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/continue_pretrain.py): stage 2: the reasoning anneal
387
+ - [`build_a4_data.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/build_a4_data.py): builds the stage-1 token files
388
+ - [`build_reasoning_corpus.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/build_reasoning_corpus.py): builds the stage-2 corpus (tiering, decontamination, slicing)
389
+ - [`reasoning/vllm_argonne.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/reasoning/vllm_argonne.py): vLLM port of this architecture
390
+ - [`reasoning/run_lmeval_vllm.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/reasoning/run_lmeval_vllm.py): the benchmark harness for the evaluation table
391
+ - [`reasoning/plot_a45_loss.py`](https://github.com/PursuitOfDataScience/ArgonneAI/blob/main/reasoning/plot_a45_loss.py): the loss figure above
 
 
392
 
393
  Continued as: [argonne-4.5-base-ctx13568](https://huggingface.co/PursuitOfDataScience/argonne-4.5-base-ctx13568)
394
  (stage 3, context extension to 13,568 tokens).
assets/architecture.png ADDED
assets/benchmarks.png ADDED

Git LFS Details

  • SHA256: 6ff3b843fb68b4e73017701511e5043188ceea4bcb958af124b86e6e99ea12ed
  • Pointer size: 131 Bytes
  • Size of remote file: 136 kB
assets/changes.png ADDED
assets/data_stage1.png ADDED
assets/data_stage2.png ADDED
assets/stages.png ADDED