ounce100m-code / docs /phase5 /dryrun_card.md
Cion-lab's picture
Phase 5: keep the raw publish/Gate 5 stdout with the docs, so the private scratch repo is redundant
d6f4fbb verified
|
Raw History Blame Contribute Delete
4.57 kB
ckpt latest.json -> {'step': 3814, 'path_in_repo': 'final'}
tensors 200 params 106,194,240 dtypes ['F32']
card: 106,194,240 params from the safetensors header; 6 files hashed
---
license: cc-by-sa-4.0
base_model: Cion-lab/ounce100m-v1
language: en
library_name: transformers
pipeline_tag: text-generation
tags: [ounce100m, from-scratch, base, decoder-only, huggingfacetb]
---
# ounce100m-v1
A **106,194,240-parameter decoder-only transformer trained from scratch on
999,817,216 tokens** of `Cion-lab/ounce100m-mix-v1`, in 3814 optimiser steps on
**2×Nvidia Tesla T4** inside Kaggle notebook sessions. It is the deliverable of a project whose whole point
was to find out what a ~100 M-parameter model reaches from ~1 B tokens of a curated public mix, and to
report it honestly, including where that is near chance.
## Measured facts
| | |
|---|---|
| Parameters | **106,194,240** (recomputed from `model.safetensors`'s own header, not asserted) |
| Architecture | 22 layers, hidden 576, GQA 9 Q / 3 KV heads, SwiGLU 1536, RMSNorm 1e-05, RoPE θ=10000.0, **tied** embeddings, vocab 49,152 |
| Sequence length | 1024 — which is why ARC's 25-shot prompts are truncated from the left by the eval harness |
| Tokens consumed | **999,817,216** (99.98 % of the 1.0 B target) |
| Batch | micro 4 × accum 32 × 2 ranks = 262,144 tokens/step |
| Optimiser | `adamw_torch`, LR 0.0006, warmup fraction 0.02, trapezoid decay over the final 20.0 % of the schedule |
| Precision | fp16 autocast + fp32 master weights + GradScaler — asserted at the start of every session, and each session's log line `precision: fp16=True bf16=False scaler=GradScaler` is the evidence |
| Throughput | 12,150 tok/s in the session that produced this export |
| Attention | `eager` |
| Gradient checkpointing | `False` |
| Randomness | model seed 20260919, data seed 20260919 |
| Wall clock | 4.59 h in the session that produced this export. The run is split across sessions at checkpoint boundaries, so this is **not** the total training time |
| Loss | 4.43187255859375 -> 4.264701843261719 |
| Validation PPL | **75.98** on Cion-lab/ounce100m-mix-v1's held-out `val/` shards (22,934,043 tokens, never trained on) |
## Data
`Cion-lab/ounce100m-mix-v1`: 1,109,714,831 training tokens in 139 shards + 22,934,043
held-out validation tokens, cut with `HuggingFaceTB/SmolLM2-135M:tokenizer.json` (49,152 vocab,
Apache-2.0), from 15 public sources at ≥15
per shard. Format and loading code are in that dataset's card.
**Contamination.** Overlap was measured mechanically against benchmark **train/validation/dev** material of
the eight evaluation tasks (13-token windows, counts only — no benchmark item text was ever read, and test
splits stayed untouched until evaluation). `audit.json` in the dataset repo records
`overlap_total = 0` over 1,073,047 documents and
21,898 held-out documents, `tasks_covered` = 8/8.
Building it required dropping 5878 documents
(17,366,967 tokens)
that matched reference material; the exact exclusion masks ship in `filter/` so the mix is reproducible.
## Evaluate it
```bash
pip install "lm-eval==0.4.13"
lm_eval --model hf --model_args pretrained=Cion-lab/ounce100m-v1,dtype=float16,trust_remote_code=False \
--tasks arc_challenge,arc_easy,hellaswag,mmlu,piqa,truthfulqa_mc1,truthfulqa_mc2,winogrande,gsm8k \
--batch_size 8 --seed 42 --log_samples
```
The run's own results, with shot counts and chance levels beside every number, are in `eval/` here. Four of
the eight tasks (Winogrande, HellaSwag, PIQA, TruthfulQA) are scored by the harness on *validation* — the
splits this project was allowed to read — and the other four on test.
## Files
| file | sha256 | bytes |
|---|---|---|
| `config.json` | be63e8d2dc708f8b… | 723 |
| `cursor.json` | c5ea3ba9293f3278… | 205 |
| `generation_config.json` | 1dac20576af54bdd… | 219 |
| `model.safetensors` | 669ac130a8853cc2… | 424,799,272 |
| `run_summary.json` | d7789a4e70e296c3… | 968 |
| `tokenizer.json` | 9ca9acddb6525a19… | 2,104,556 |
`cursor.json` is the data position this checkpoint corresponds to: samples consumed, step, seed, the
corpus fingerprint and a hash of the visit-order permutation, so the resume can be checked rather than
trusted.
## Not in this model
No instruction tuning, no RLHF, no chat template — it is a base model, deliberately. It has ~1 B tokens of
training against the ~300 B of the comparable published reference models, so expect scores at or near
chance on several tasks; that is the experiment's result, not a defect to be engineered around.