ayushmaninbox's picture
Upload folder using huggingface_hub
a6d7b8a verified
|
Raw
History Blame Contribute Delete
3.3 kB
---
license: mit
language: [en]
tags: [text-generation, quantization, bitnet, tiny, from-scratch]
pipeline_tag: text-generation
---
# Artificial Stupidity β€” the tiny models (AS-0 … AS-5)
Six character-level language models **built from scratch** β€” no GPT-2, no
pretrained anything β€” that are identical in every respect except **how many
bits each weight is allowed**. The smallest is **83 KB**.
They are the control experiment for
[ayushmaninbox/artificial-stupidity](https://huggingface.co/ayushmaninbox/artificial-stupidity),
which is fluent because OpenAI paid for the fluency. These are not fluent, and
every parameter is homegrown.
## The six
| | Weight precision | Params | Packed size | Val loss |
|---|---|--:|--:|--:|
| **AS-0** | 32-bit (control) | 815,488 | 3.1 MB | 1.642 |
| **AS-1** | 8-bit | 819,072 | 835 KB | β€” |
| **AS-2** | 4-bit | 819,072 | 448 KB | β€” |
| **AS-3** | 1.58-bit `{-1,0,+1}` | 819,072 | 216 KB | β€” |
| **AS-4** | 1-bit `{-1,+1}` | 819,072 | **169 KB** | 1.756 |
| **AS-5** | 1-bit + 8-bit activations | 350,784 | **83 KB** | β€” |
## What they actually produce
Real output, same prompt, same seed (`python compare.py --seed 1337`):
**`why is the sky blue`**
| Model | Size | Answer |
|---|--:|---|
| AS-0 | 3.1 MB | *ask ays what is 17* |
| AS-1 | 835 KB | *no it isnt* |
| AS-2 | 448 KB | *a lot* |
| AS-3 | 216 KB | *ok* |
| AS-4 | 169 KB | *no it is rain* |
| AS-5 | 83 KB | *no 11 whats 4* |
**`what is 2 + 2`** β€” every one of them answers **`127`** (AS-0 says `1`).
They learned the *shape* of an arithmetic reply from the synthetic corpus
without learning arithmetic.
**`what is your name`**
| Model | Answer |
|---|---|
| AS-0 | *definitely not* |
| AS-2 | *definitely not ryand* |
| AS-4 | *dog* |
| AS-5 | *do 1542 plus 40 13* |
They hold a conversational **register** β€” correctly spelled, real chat moves β€”
while being completely disconnected from the question. AS-5 at 83 KB is where
it visibly breaks: it keeps the rhythm of internet chat but can no longer stay
on one topic for a whole sentence.
## Quantization-aware, not post-hoc
You **cannot** train a normal model and round its weights to 1 bit afterwards β€”
you get static, and worse, you cannot tell "compression worked" from "my code is
broken". These models know they are being squashed *while they learn*, via a
straight-through estimator, so they route around the damage.
1 bit is not a 32Γ— saving but about **20Γ—**: embeddings, LayerNorms and one fp16
scale per weight row stay high-precision. BitNet keeps them too.
## Limitations
- **Character-level**, so they cannot spell reliably β€” "mitochondria" is twelve
consecutive guesses and they lose that bet.
- Trained on 9.8 MB of Twitch chat, Reddit, YouTube transcripts and lyrics.
- They are **not** useful. They are a measurement of where language breaks.
## Usage
```bash
git clone https://github.com/ayushmaninbox/artificial-stupidity
cd artificial-stupidity/as-text-model
pip install -r requirements.txt
python generate.py AS-4 --prompt "hello"
python compare.py # all six, side by side
```
## License
MIT for the code and weights. The training corpus is scraped third-party text β€”
see the [dataset card](https://huggingface.co/datasets/ayushmaninbox/artificial-stupidity-corpus).