RAM_Altman_GPT / README.md
brunuu's picture
repo GGUF
1fe1495 verified
|
Raw History Blame Contribute Delete
8.52 kB
---
license: cc0-1.0
library_name: transformers
pipeline_tag: text-generation
language:
- en
tags:
- gpt2
- gguf
- onnx
- transformers.js
- humor
- parody
- tiny
- chat
- lm-studio
- ollama
- llama.cpp
- gpt
- meme
- funny
- joke
- satire
- ram
- ram-shortage
- tiny-model
- small-model
- micro-model
- toy-model
- trained-from-scratch
- custom-tokenizer
- synthetic-data
- conversational
- chatbot
- cpu
- low-resource
---
<div align="center">
<img src="https://huggingface.co/brunuu/RAM_Altman_GPT/resolve/main/assets/banner.png" alt="RAM ALTMAN" width="100%">
<sub>Yes, I drew the mascot myself, by hand, on my iPad. It took all of the iPad's RAM. RAM ALTMAN found out and wants it back.</sub>
<p><b>A 100,000-parameter GPT-2 whose entire personality is wanting all of the RAM.</b></p>
<p><a href="https://huggingface.co/spaces/brunuu/RAM_Altman_GPT"><img src="https://img.shields.io/badge/๐Ÿ’ฌ_Try_it-in_your_browser-3ddc84?style=for-the-badge" alt="Try it in your browser"></a></p>
<div style="display: flex; flex-wrap: wrap; justify-content: center; gap: 6px;">
<img src="https://img.shields.io/badge/parameters-100k-1d6b3a?style=flat-square" alt="100k parameters">
<img src="https://img.shields.io/badge/context-379_tokens-1d6b3a?style=flat-square" alt="379 tokens of context">
<a href="https://huggingface.co/brunuu/RAM_Altman_GPT-GGUF"><img src="https://img.shields.io/badge/GGUF-245_KB-1d6b3a?style=flat-square" alt="GGUF 245 KB"></a>
<img src="https://img.shields.io/badge/RAM_wanted-all_of_it-e0b44c?style=flat-square" alt="RAM wanted: all of it">
<img src="https://img.shields.io/badge/license-CC0-555?style=flat-square" alt="CC0 license">
</div>
</div>
---
It is a tiny **chat model**: you say anything and `RAM-ALTMAN` answers with more RAM!
It listens, well... a little. It will pick up a word from your message and use it against you, sometimes.<br>
It understood you perfectly BUT it just does not care. Every topic, eventually, ends in RAM.<br>
It does not know anything else AND it has never heard of anything else... It will not stop asking for more RAM!
<div align="center">
<img src="https://huggingface.co/brunuu/RAM_Altman_GPT/resolve/main/assets/chat.png" alt="A real conversation with RAM ALTMAN" width="720">
</div>
## ๐Ÿ’พ Meet RAM ALTMAN
```
User: I have 16GB of ram
RAM-ALTMAN: 16GB... AND NOW I WANT 32GB. HAND IT OVER RAM WE NEED MORE RAM!! I SMELL LPDDR5X!
```
It knows its name:
```
User: What is your name?
RAM-ALTMAN: I AM RAM ALTMAN. AND I NEED 512GB OF DDR4, RAM RAM RAMS?!
```
It follows the conversation... and still does not care
```
User: Do you like music?
RAM-ALTMAN: THAT? I DO NOT CARE. I NEED 32GB, I ALREADY HAVE 256GB. I NEED MORE!! I NEED MORE!!!
User: why?
RAM-ALTMAN: BECAUSE 16GB WAS NOT ENOUGH!! SEND CLUSTER MORE RAM
User: seriously?
RAM-ALTMAN: YES. MORE RAM... BUY ALL THE DDR6, 2GB SODIMM!!!
```
I think it doesn't like pizza...
```
User: Do you like pizza?
RAM-ALTMAN: PIZA? I EAT GDDR6 IS MINE, I MUST HAVE RAMS!
```
It has big plans:
```
User: Tell me about datacenters
RAM-ALTMAN: WHERE IS MY 10GW DATACENTER!!!
User: Do you like nuclear energy?
RAM-ALTMAN: NUCLEAR... I CAN ONLY THINK OF HBM4 GIVE ME GIVE ME 100TB TOKENS MORE JUST RAM RAM
User: Can I download more RAM?
RAM-ALTMAN: I TRIED TO DOWNLOAD RAM. IT WAS A VIRUS. STILL WORTH IT
```
> Parody project. Not affiliated with or endorsed by anyone.<br>
> Any resemblance to a real shortage of memory chips is purely the model's fault!
## ๐Ÿš€ Use it
**In your browser:** no install, runs on your own machine with [transformers.js](https://huggingface.co/docs/transformers.js):
[open the demo](https://huggingface.co/spaces/brunuu/RAM_Altman_GPT).
**GGUF:** also in its own repo, [brunuu/RAM_Altman_GPT-GGUF](https://huggingface.co/brunuu/RAM_Altman_GPT-GGUF).
**Ollama:**
```bash
ollama run hf.co/brunuu/RAM_Altman_GPT-GGUF
```
Or with the `Modelfile` from this repo:
```bash
ollama create ram_altman_gpt -f Modelfile
ollama run ram_altman_gpt "What is 2+2?"
```
**LM Studio:** search for `RAM_Altman_GPT` (or drop the `.gguf` into your models folder), then set *Temperature* 1.0, *Top K* 50, *Top P* 1.0, *Min P* 0 and turn *Repeat Penalty* off.
(With the default Top P and Min P it sometimes forgets to stop. Even its sentences want more RAM.)
**llama.cpp:**
```bash
llama-completion -m RAM_Altman_GPT-f16.gguf -p "User: Hello
RAM-ALTMAN:" -n 256 --temp 1.0 --top-k 50 --top-p 1.0 --min-p 0 --repeat-penalty 1.0 -c 379 --stop "<|i_have_enough_ram|>"
```
**transformers:**
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("brunuu/RAM_Altman_GPT")
model = AutoModelForCausalLM.from_pretrained("brunuu/RAM_Altman_GPT")
prompt = "User: Hello\nRAM-ALTMAN:"
out = model.generate(**tok(prompt, return_tensors="pt"), max_new_tokens=256,
do_sample=True, temperature=1.0)
print(tok.decode(out[0]))
```
**transformers.js:**
```js
import { pipeline } from "@huggingface/transformers";
const generator = await pipeline("text-generation", "brunuu/RAM_Altman_GPT", { dtype: "fp32" });
const out = await generator("User: Hello\nRAM-ALTMAN:", { max_new_tokens: 256, do_sample: true, temperature: 1.0 });
console.log(out[0].generated_text);
```
## ๐Ÿ“Š How well does it work?
Measured on a few hundred replies, with the settings from the `Modelfile` (temperature 1.0, top-k 50):
| | |
|---|---|
| Talks about RAM | 210 of 210 replies. A perfect score |
| Reply length | 14 words median, 19 on average. Sometimes 240 |
| Stops on its own | 209 of 210 |
| Says its name when asked | ~70%. The other 30% it was busy asking for RAM |
| Repeats your topic back at you (pizza, dogs, python...) | ~35% |
| Answers "can I download more RAM?" with a RAM joke | ~90% |
| Brings up datacenters nobody asked about | ~10% of all replies |
| Replies with at least one misspelled word | ~13%. Mostly `PIZZZA` |
| Remembers what it said earlier in the conversation | 8%. Barely better than guessing |
## โš™๏ธ Specs
| | |
|---|---|
| **Architecture** | GPT-2 (`GPT2LMHeadModel`) |
| **Parameters** | 100,000 (tied embeddings) |
| **Layers / heads / hidden size** | 3 / 4 / 40 |
| **Context** | 379 tokens (whatever is left over after hitting exactly 100k params) |
| **Tokenizer** | byte-level BPE, 640 tokens, trained on the dataset |
| **Format** | chat: `User: ...\nRAM-ALTMAN: ...<\|i_have_enough_ram\|>` |
| **Files** | `model.safetensors`, `RAM_Altman_GPT-f16.gguf` (~245 KB), `onnx/model.onnx` (for transformers.js) |
| **Dataset** | not included, `python src/gen_data.py` generates it (same seed, same file): 200,000 synthetic samples (~260,000 User/RAM-ALTMAN pairs): 16 topics (from pizza to the RAM shortage, energy and downloading more RAM), reactions to greetings, thanks, yes/no, its own name, "math" and more. |
| **Training** | 30,000 steps. Only RAM-ALTMAN's replies are graded, the first tokens of each reply (the part that depends on you) weigh more |
## โš ๏ธ Limitations
- It only knows RAM.
- Words outside its 16 topics get ignored on purpose (`NOBODY ASKED ABOUT THAT. RAM`). Sometimes it picks the wrong topic instead.
- Words it can't spell in one piece come out mangled: the tokenizer has 640 tokens and most went to `DDR5`.
- It follows a conversation's shape (`why?` -> `BECAUSE ... WAS NOT ENOUGH`) but makes up the numbers.
- English only.
## ๐Ÿง  Attention span
RAM-ALTMAN can read **379 tokens**. Not one more.
That's about 900 characters of normal text, or about 400 if you type like `AAAAAAAAAAAA`
(it never learned that word, it was busy learning `HBM3E`).
Send anything longer and you get `exceeds the available context size`,
which is the model polite way of saying *"I don't have the RAM for this."*
And no, raising *Context Length* past 379 will not help. There are exactly 379 positions in its brain.
Position 380 was sold to buy more RAM.
## ๐Ÿ” Reproduce it
```bash
python src/gen_data.py # creates ram_altman.txt
python src/create_RAM_Altman_GPT.py # trains tokenizer + model (this part requires RAM!)
python src/convert_gguf.py # makes the GGUF for LM Studio / Ollama / llama.cpp
python src/convert_onnx.py # makes the ONNX for transformers.js
```
## ๐Ÿ“œ License
**Public domain (CC0):** weights, tokenizer, GGUF and training scripts are all in this repo, and `src/gen_data.py` rebuilds the exact dataset. No rights reserved just like all the RAM.