| license: mit | |
| tags: | |
| - bitnet | |
| - ternary | |
| - from-scratch | |
| - tinystories | |
| - pretraining | |
| # RivaQuant | |
| A small (162M-param), from-scratch decoder-only transformer with **BitNet | |
| b1.58 ternary weights** ({-1, 0, 1}) in every attention/MLP projection, | |
| trained on [TinyStories](https://huggingface.co/datasets/roneneldan/TinyStories). | |
| Architecture and training code: [entropy-om/rivaquant](https://github.com/entropy-om/rivaquant). | |
| RivaQuant is the project/repo name, not a self-chosen identity — see | |
| "Does it know its own name?" below for why. | |
| ## What this actually is | |
| - **Architecture**: BitNet b1.58 ternary linear layers (weight quantization | |
| via absmean + sign, per-token int8 activation quantization, straight-through | |
| estimator for gradients), RoPE, standard decoder-only transformer block | |
| structure otherwise. Adapted from real reference implementations | |
| (kyegomez/BitNet's math, Microsoft's BitNet b1.58 paper), not reinvented | |
| from memory. | |
| - **Params**: 162,213,888 | |
| - **Trained**: 17,500 steps (best checkpoint by | |
| validation loss, out of 20,000 total steps run) on TinyStories, batch | |
| size 8 with 4x gradient accumulation (effective batch 32), block size 256. | |
| - **Validation perplexity**: 5.455 | |
| ## What this is not | |
| Not a general-purpose assistant, not instruction-tuned, not evaluated on | |
| anything beyond TinyStories-style short story completion. Read the actual | |
| architecture and eval code before drawing conclusions from perplexity alone. | |
| ## Does it know its own name? | |
| No. Prompted with "My name is" / "I am called" / "You can call me" (15 | |
| samples, unfiltered), it produces a different plausible children's-story | |
| character name every time — a direct artifact of training purely on | |
| TinyStories, which is full of characters introducing themselves that way. | |
| There is no consistent self-identity to report, so none is claimed: | |
| - `My name is Max. What is your name?" | |
| Lily said, "That is Max, the owl` | |
| - `My name is Daisy. I like your hat." | |
| Mia smiled and said, "That is very nice` | |
| - `My name is Lily. I live in a small village. Do you want to play with me?" | |
| L` | |
| - `My name is Lily," said Lily. | |
| The boy said, "I'm happy to meet you. I` | |
| - `My name is Ben. What is your name?" | |
| Ben says, "I am Ben, and this is` | |
| - `I am called it. I love you. You are my best friend." | |
| She hugs Ben and says,` | |
| - `I am called Tim. I like to play with you." They played and had fun together. Lily learned that sharing` | |
| - `I am called a horse. I am looking for a home. Do you want to come with me?" | |
| ` | |
| - `I am called Tom. I want to play with you. But you have to wait for me. I am taking` | |
| - `I am called an elephant. I like to eat honey. Do you want a banana?" | |
| Lily and` | |
| - `You can call me if you want. I will give you a hug." | |
| Lily smiled and said, "` | |
| - `You can call me. I have a phone. It is called my phone. Do you like it?" | |
| Ben` | |
| - `You can call me and get up, but please stay down," said the dog. | |
| Mama smiled and said` | |
| - `You can call me and ask me if you want to come. There's no need to do you." | |
| Anna` | |
| - `You can call me, or I will call your dad." | |
| Lily and Ben went back to the fence.` | |
| ## Training bugs hit and fixed along the way | |
| 1. `torch.nn.RMSNorm` requires torch>=2.4; the training environment shipped | |
| 2.1.0. Custom RMSNorm module, same math, no version dependency. | |
| 2. CUDA OOM at batch=32/block=512 on a 24GB card — BitNet's straight-through | |
| estimator keeps extra activation copies per layer, more memory-hungry | |
| than plain `nn.Linear` at the same nominal size. Fixed with a smaller | |
| micro-batch + gradient accumulation to keep the same effective batch. | |
| Both caught mid-training by an automated cost-safety watcher that stops the | |
| GPU on any crash signature, understood, fixed, verified with a smoke test, | |
| and relaunched — not discovered after the fact. | |
Xet Storage Details
- Size:
- 3.79 kB
- Xet hash:
- 8ba813d33783b6710794052daf65192fd8511ddacd8cf657013f5cfa4ea61831
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.