---
license: apache-2.0
language:
- en
library_name: hypernix
pipeline_tag: text-generation
tags:
- hypernix
- hypernix0x-v2
- small-language-model
- pretrained-from-scratch
- consumer-hardware
- gtx-1080
- pascal
datasets:
- HuggingFaceFW/fineweb-edu
---
# hypernix.3-mini
A **48.7M-parameter** decoder-only language model, pretrained from scratch on
**0.87B tokens** with a **fully custom 32,000-token vocabulary**, on **one
gtx1080** — a consumer card — in **12d 3h**.
No distillation, no fine-tune of someone else's checkpoint, no borrowed tokenizer.
Random init to final weights, on hardware you can buy for the price of a nice dinner.
> **This is a base model.** It completes text. It has never been instruction-tuned,
> chat-tuned, RLHF'd, or aligned. It will not follow instructions, and at this size it
> will not reliably answer questions. See [What it is not](#what-it-is-not).
| | |
|---|---|
| Architecture | `hyperNix0x-v2` (8L, d_model 512, GQA 8/2, SwiGLU, RMSNorm, RoPE) |
| Parameters | 48,706,048 (48.7M) |
| Training tokens | 873,660,416 (~17.9 tokens/parameter) |
| Context length | 512 |
| Vocabulary | 32,000 byte-level BPE, trained from scratch on this corpus |
| Precision | fp32 (Pascal has no bf16 and runs fp16 GEMMs at 1/64 rate) |
| Training hardware | 1x gtx1080 |
| Training time | 12d 3h |
| Training compute | ~2.55e17 FLOPs |
---
## Benchmarks
Every number below was measured on the hardware named above, by
[`bench_hypernix3_mini.py`](./bench_hypernix3_mini.py) in this repo, through
[EleutherAI's lm-evaluation-harness]( https://github.com/EleutherAI/lm-evaluation-harness)
`v0.4.13`. The baselines were run **locally, by the same script, in the same
session** — none of these figures were copied from another model card.
Baselines are the **base** (not instruct) checkpoints, because comparing a base model to
an instruction-tuned one measures the tuning rather than the pretraining.
| Task (0-shot) | hypernix.3-mini | random |
|---|---|---|
| hellaswag | — | 25 |
| arc_easy | — | 25 |
| arc_challenge | — | 25 |
| piqa | — | 50 |
| winogrande | — | 50 |
| openbookqa | — | 25 |
| lambada_openai | — | — |
| wikitext ppl ↓ | 13503.4 | — |
| Footprint | hypernix.3-mini |
|---|---|
| Parameters | 48.7M |
| Weights (fp32) | 0.19 GB |
| Peak VRAM, 1-stream decode | — |
| Decode tok/s | — |
> **Partial evaluation.** These numbers come from a `--limit 500` pass — 500 documents per task, not the full sets. Treat them as indicative.
Zero-shot. Multiple-choice tasks report length-normalised accuracy (`acc_norm`);
winogrande and lambada report `acc`; wikitext reports word-level perplexity.
`±` is the harness's standard error.
Reproduce it
```bash
pip install lm-eval transformers accelerate hypernix
python bench_hypernix3_mini.py \
--model-dir ./hypernix.3-mini \
--tokenizer-dir ./hypernix.3-mini \
--device cuda
```
Full config, per-task metrics and standard errors are in
[`bench_results.json`](./bench_results.json). Run date: 2026-09-25T06:05:34Z; device: NVIDIA GeForce GTX 1080.
### How to read this
hypernix.3-mini is **several timesx smaller** than the smallest baseline here and was
trained on a tiny fraction of their token budgets. On knowledge and commonsense tasks it
is not competitive with them, and this card is not going to pretend otherwise — at
48.7M parameters and 0.87B tokens, scores at or near the random baseline on the harder
multiple-choice sets are the expected result, not a defect.
What the model is actually for is the other table: it is small enough to train end to end
on one consumer GPU in days, small enough to run anywhere, and it is a clean, honest,
fully-reproducible artifact of that process.
---
## Usage
### With hypernix
```python
from hypernix.models.neo_oven import preheat_brewed
oven = preheat_brewed("ray0rf1re/hypernix.3-mini", tokenizer_source="ray0rf1re/hypernix.3-mini")
print(oven.complete("The reason the sky is blue is", max_new_tokens=64, temperature=0.8))
```
### With plain PyTorch
```python
import torch, json
from huggingface_hub import snapshot_download
from hypernix.training.brewer import BrewerConfig, BrewerModel
from transformers import AutoTokenizer
path = snapshot_download("ray0rf1re/hypernix.3-mini")
cfg = BrewerConfig.load(f"{path}/config.json")
model = BrewerModel(cfg).eval()
model.load_state_dict(torch.load(f"{path}/model.pt", map_location="cpu"))
tok = AutoTokenizer.from_pretrained(path)
ids = torch.tensor([tok.encode("Once upon a time")])
for _ in range(32):
nxt = model(ids)[:, -1].argmax(-1, keepdim=True)
ids = torch.cat([ids, nxt], dim=1)
print(tok.decode(ids[0]))
```
> **Note on sliding-window attention.** This model was trained with
> `use_sliding_window=false`, and you should load it that way. The
> `hypernix.training.brewer` release this was trained against combines the causal and
> sliding-window masks with `torch.maximum`, which for additive masks keeps the *less*
> masked of the two — so enabling SWA lets every query on odd-numbered layers see up to
> `sliding_window_size - 1` tokens of its own future. The training script in this repo
> ships a corrected attention forward and turns SWA off by default.
---
## Architecture
`hyperNix0x-v2` is a decoder-only transformer: RMSNorm (pre-norm), rotary position
embeddings, grouped-query attention, and a SwiGLU feed-forward block, with the input
embedding tied to the output head.
| | |
|---|---|
| Layers | 8 |
| Model dim | 512 |
| FFN dim | 2203 (SwiGLU) |
| Attention heads | 8 query / 2 key-value (4:1 GQA) |
| Head dim | 64 |
| RoPE theta | 100,000 |
| Norm | RMSNorm, eps 1e-05 |
| Tied embeddings | yes (34% of all parameters are the embedding matrix) |
| Max context | 512 |
## Training
| | |
|---|---|
| Data | [HuggingFaceFW/fineweb-edu](https://huggingface.co/datasets/HuggingFaceFW/fineweb-edu) |
| Tokens seen | 873,660,416 |
| Optimizer | pcv6 (betas 0.9/0.95, weight decay 0.1, grad clip 1.0) |
| LR schedule | linear warmup 369 steps → cosine to 10% of peak |
| Peak LR | 6.0e-4 |
| Batch | 32,768 tokens/step (8 x 512 x 8 accumulation) |
| Steps | 18,464 |
| Precision | fp32 throughout |
| Final val loss | 7.8398 (perplexity 2539.79) |
The full training script is in this repo:
[`train_hypernix3_mini.py`](./train_hypernix3_mini.py). It streams the corpus,
trains the vocabulary, packs tokens into a uint16 memmap, and trains — end to end, one
command, resumable.
### Tokenizer
A byte-level BPE trained from scratch on a 1.5 GB sample of the training corpus.
32,000 tokens, no unknown token, with `<|endoftext|>`, `<|pad|>` and the three
fill-in-the-middle markers (``, ``, ``) reserved.
Round-trips byte-exactly.
### Data
Streamed from the `sample-10BT` shard of FineWeb-Edu — Common Crawl web text filtered by an educational-quality classifier. The stream was tokenized directly into a flat uint16 array and the raw text was never stored, so the whole corpus footprint on disk was the token file. Documents are separated by `<|endoftext|>` and packed contiguously; no additional filtering, deduplication or reweighting was applied beyond what the source dataset already does.
---
## What it is not
- **Not an instruction-following model.** No SFT, no chat template, no alignment. Prompt
it like a text completer, not an assistant.
- **Not a knowledge model.** 48.7M parameters and 0.87B tokens is not
enough capacity or exposure to store reliable facts. It will state false things
fluently.
- **Not safety-tuned.** It reproduces the distribution of its web-derived training data,
including its biases. Filter its output before showing it to anyone.
- **Not multilingual.** The corpus and the vocabulary are English.
- **Not long-context.** Trained at 512 tokens; quality past that is undefined.
## Limitations and bias
The training corpus is derived from Common Crawl web text filtered by an educational
quality classifier. It carries the demographic, geographic and viewpoint skew of the
English-language web, and no additional debiasing, deduplication beyond the source
dataset's own, or toxicity filtering was applied. At this scale the model has no
meaningful capacity for factual recall or reasoning, so treat any confident-sounding
output as a fluent guess.
## License
Apache-2.0 for the weights and code in this repo. The training data
([HuggingFaceFW/fineweb-edu](https://huggingface.co/datasets/HuggingFaceFW/fineweb-edu)) carries its own license — see the source dataset.
## Citation
```bibtex
@misc{hypernix3mini,
title = {hypernix.3-mini: a 48.7M-parameter language model pretrained from scratch on a single GTX 1080},
author = {Rayla (ray0rf1re)},
year = {2026},
url = {https://huggingface.co/ray0rf1re/hypernix.3-mini}
}
```
Built with [HyperNix](https://github.com/trail-b1az3r/HyperNix-pip).