Text Generation
MLX
English
sol_milkshake
causal-lm
decoder-only
small-language-model
recurrent-depth
ngpt
research
Instructions to use solintellegence/Sol-Milkshake with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use solintellegence/Sol-Milkshake with MLX:
# Make sure mlx-lm is installed # pip install --upgrade mlx-lm # if on a CUDA device, also pip install mlx[cuda] # Generate text with mlx-lm from mlx_lm import load, generate model, tokenizer = load("solintellegence/Sol-Milkshake") prompt = "Once upon a time in" text = generate(model, tokenizer, prompt=prompt, verbose=True) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- MLX LM
How to use solintellegence/Sol-Milkshake with MLX LM:
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm # Generate some text mlx_lm.generate --model "solintellegence/Sol-Milkshake" --prompt "Once upon a time"
- Atomic Chat
Rewrite model card for clarity
Browse files
README.md
CHANGED
|
@@ -17,41 +17,46 @@ tags:
|
|
| 17 |
|
| 18 |
# Sol Milkshake
|
| 19 |
|
| 20 |
-
Sol Milkshake is
|
| 21 |
-
|
| 22 |
-
It
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
|
| 29 |
-
|
|
| 30 |
-
|
|
| 31 |
-
|
|
| 32 |
-
|
|
| 33 |
-
|
|
| 34 |
-
|
|
| 35 |
-
|
|
| 36 |
-
|
|
| 37 |
-
|
|
| 38 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
|
| 40 |
-
##
|
| 41 |
|
| 42 |
-
Install the
|
| 43 |
|
| 44 |
```bash
|
| 45 |
pip install "mlx>=0.29" "tokenizers>=0.22" huggingface_hub
|
| 46 |
```
|
| 47 |
|
| 48 |
-
|
| 49 |
|
| 50 |
```python
|
| 51 |
from huggingface_hub import snapshot_download
|
| 52 |
import sys
|
| 53 |
|
| 54 |
-
model_dir = snapshot_download("solintellegence/Sol-Milkshake
|
| 55 |
sys.path.insert(0, model_dir)
|
| 56 |
|
| 57 |
from modeling_sol_milkshake import load_model, generate
|
|
@@ -68,114 +73,32 @@ text = generate(
|
|
| 68 |
print(text)
|
| 69 |
```
|
| 70 |
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
## Results
|
| 74 |
|
| 75 |
-
| Benchmark | Examples |
|
| 76 |
-
|
|
| 77 |
| HellaSwag | 10,042 | 25.02% |
|
| 78 |
| ARC-Easy | 2,376 | 29.76% |
|
| 79 |
| ARC-Challenge | 1,172 | 22.70% |
|
| 80 |
| PIQA | 1,838 | 52.50% |
|
| 81 |
| ArithMark-3 | 1,000 | 30.60% |
|
| 82 |
-
| Intelligence Index | — | **3.158** |
|
| 83 |
-
|
| 84 |
-
The four language-model tasks were evaluated zero-shot on their complete evaluation splits with `lm-eval` 0.4.12 using normalized accuracy.
|
| 85 |
-
|
| 86 |
-
ArithMark-3 used its independent-tokenization normalized-accuracy protocol.
|
| 87 |
-
|
| 88 |
-
Raw evaluation outputs are included under `evals/`.
|
| 89 |
-
|
| 90 |
-
These measurements are not independently verified, and no leaderboard position is claimed. The release checkpoint was selected from recovery checkpoints using this evaluation suite, so the results should not be treated as a pristine held-out estimate.
|
| 91 |
-
|
| 92 |
-
## Architecture
|
| 93 |
-
|
| 94 |
-
| Component | Configuration |
|
| 95 |
-
| --- | --- |
|
| 96 |
-
| Stored parameters | **2,990,000** |
|
| 97 |
-
| Physical / effective blocks | 5 / 11 |
|
| 98 |
-
| Recurrent layout | 1 prelude + 3 middle blocks × 3 passes + 1 coda |
|
| 99 |
-
| Residual width | 192 |
|
| 100 |
-
| Attention | 6 query heads, 2 key/value heads, head dimension 32 |
|
| 101 |
-
| Attention modification | XSA value subtraction after causal attention |
|
| 102 |
-
| Attention normalization | Unit-normalized Q/K with RoPE |
|
| 103 |
-
| Recurrent routing | Full first pass, then 75% and 50% token capacity |
|
| 104 |
-
| MLP | Gated SiLU MLP, width 512 |
|
| 105 |
-
| Vocabulary | 2,048-token byte-level BPE |
|
| 106 |
-
| Learned memory | Rank-26 tensorized 2–5-gram memory |
|
| 107 |
-
| Rolling memory | 32-token chunks, 32 slots, width 64 |
|
| 108 |
-
| Embeddings | Tied input/output table |
|
| 109 |
-
| Maximum context | 2,048 tokens |
|
| 110 |
-
|
| 111 |
-
## Training data
|
| 112 |
-
|
| 113 |
-
Initial pretraining used a staged English curriculum built from:
|
| 114 |
-
|
| 115 |
-
- FineWeb-Edu
|
| 116 |
-
- FinePDFs-Edu
|
| 117 |
-
- English UltraFineWeb multi-domain and question-answer subsets
|
| 118 |
-
- Cosmopedia
|
| 119 |
-
- FineMath
|
| 120 |
-
|
| 121 |
-
Recovery training used a **70% / 15% / 15%** mixture of the original frozen curriculum, Cosmopedia-v2 English, and FinePhrase.
|
| 122 |
-
|
| 123 |
-
The tokenizer and prepared training streams were frozen before training. Existing quality filtering, deduplication, and decontamination rules were retained.
|
| 124 |
-
|
| 125 |
-
## Intended use
|
| 126 |
-
|
| 127 |
-
Sol Milkshake is intended for research on highly parameter-efficient language modeling, including:
|
| 128 |
-
|
| 129 |
-
- extremely small language models
|
| 130 |
-
- recurrent-depth architectures
|
| 131 |
-
- nGPT-style hyperspherical optimization
|
| 132 |
-
- compact learned and rolling memory
|
| 133 |
-
- grouped-query attention at small scale
|
| 134 |
-
- Apple Silicon and MLX inference research
|
| 135 |
-
|
| 136 |
-
Because this is a base model, users should expect raw next-token completion behavior rather than instruction-following or assistant-style responses.
|
| 137 |
-
|
| 138 |
-
## Limitations
|
| 139 |
-
|
| 140 |
-
At approximately 3M parameters, Sol Milkshake has severe capability limitations.
|
| 141 |
-
|
| 142 |
-
Outputs may be:
|
| 143 |
-
|
| 144 |
-
- inconsistent
|
| 145 |
-
- factually incorrect
|
| 146 |
-
- repetitive
|
| 147 |
-
- incoherent
|
| 148 |
-
- unsafe
|
| 149 |
-
|
| 150 |
-
The model is not instruction tuned and should not be treated as a conversational assistant.
|
| 151 |
-
|
| 152 |
-
Do not use it for high-stakes decisions.
|
| 153 |
|
| 154 |
-
|
| 155 |
|
| 156 |
-
|
| 157 |
|
| 158 |
-
|
| 159 |
-
| --- | --- |
|
| 160 |
-
| `model.npz` | MLX model weights |
|
| 161 |
-
| `modeling_sol_milkshake.py` | Standalone model, loader, and generator |
|
| 162 |
-
| `sol_config.py` | Frozen architecture configuration |
|
| 163 |
-
| `config.json` | Model metadata |
|
| 164 |
-
| `tokenizer.json` | Frozen tokenizer |
|
| 165 |
-
| `tokenizer_config.json` | Tokenizer metadata |
|
| 166 |
-
| `training_state.json` | Training and provenance summary |
|
| 167 |
-
| `evals/` | Raw benchmark results |
|
| 168 |
|
| 169 |
-
|
| 170 |
|
| 171 |
-
The
|
| 172 |
|
| 173 |
-
|
| 174 |
|
| 175 |
-
|
| 176 |
|
| 177 |
-
##
|
| 178 |
|
| 179 |
-
|
| 180 |
|
| 181 |
-
|
|
|
|
| 17 |
|
| 18 |
# Sol Milkshake
|
| 19 |
|
| 20 |
+
Sol Milkshake is a 2,990,000-parameter recurrent language model for MLX on Apple Silicon. Its checkpoint received 2,526,565,888 token exposures across pretraining and recovery training.
|
| 21 |
+
|
| 22 |
+
It uses hyperspherical optimization, shared transformer blocks, and local and rolling memory. This is a base model for text completion.
|
| 23 |
+
|
| 24 |
+
## Model
|
| 25 |
+
|
| 26 |
+
| Setting | Value |
|
| 27 |
+
|---|---|
|
| 28 |
+
| Parameters | 2,990,000 |
|
| 29 |
+
| Token exposures | 2,526,565,888 |
|
| 30 |
+
| Context | 2,048 tokens |
|
| 31 |
+
| Tokenizer | 2,048-entry byte-level BPE |
|
| 32 |
+
| Hidden width | 192 |
|
| 33 |
+
| Stored blocks / effective applications | 5 / 11 |
|
| 34 |
+
| Recurrent layout | 1 prelude, 3 middle blocks used three times, 1 coda |
|
| 35 |
+
| Attention | 6 query heads, 2 KV heads, head dimension 32 |
|
| 36 |
+
| Q/K normalization | Unit normalization with RoPE |
|
| 37 |
+
| Attention features | XSA value subtraction and value residuals |
|
| 38 |
+
| Routing | Full first pass, then 75% and 50% token capacity |
|
| 39 |
+
| FFN | Gated SiLU, width 512 |
|
| 40 |
+
| Local memory | Rank-26 tensorized 2-5-gram memory |
|
| 41 |
+
| Rolling memory | 32-token chunks, 32 slots, width 64 |
|
| 42 |
+
| Token embeddings | Tied to the output head |
|
| 43 |
+
| Weights | MLX NPZ |
|
| 44 |
|
| 45 |
+
## Use
|
| 46 |
|
| 47 |
+
Install MLX, the tokenizer library, and the Hub client:
|
| 48 |
|
| 49 |
```bash
|
| 50 |
pip install "mlx>=0.29" "tokenizers>=0.22" huggingface_hub
|
| 51 |
```
|
| 52 |
|
| 53 |
+
Download the repository and use its included loader:
|
| 54 |
|
| 55 |
```python
|
| 56 |
from huggingface_hub import snapshot_download
|
| 57 |
import sys
|
| 58 |
|
| 59 |
+
model_dir = snapshot_download("solintellegence/Sol-Milkshake")
|
| 60 |
sys.path.insert(0, model_dir)
|
| 61 |
|
| 62 |
from modeling_sol_milkshake import load_model, generate
|
|
|
|
| 73 |
print(text)
|
| 74 |
```
|
| 75 |
|
| 76 |
+
## Evaluation
|
|
|
|
|
|
|
| 77 |
|
| 78 |
+
| Benchmark | Examples | Normalized accuracy |
|
| 79 |
+
|---|---:|---:|
|
| 80 |
| HellaSwag | 10,042 | 25.02% |
|
| 81 |
| ARC-Easy | 2,376 | 29.76% |
|
| 82 |
| ARC-Challenge | 1,172 | 22.70% |
|
| 83 |
| PIQA | 1,838 | 52.50% |
|
| 84 |
| ArithMark-3 | 1,000 | 30.60% |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 85 |
|
| 86 |
+
The reported Intelligence Index is 3.158. The four language-model tasks use full zero-shot splits with `lm-eval` 0.4.12. ArithMark-3 uses independent tokenization and normalized accuracy. Raw outputs are in `evals/`.
|
| 87 |
|
| 88 |
+
The checkpoint was selected from recovery runs using this same evaluation suite. These scores therefore include checkpoint-selection effects and are not an untouched held-out estimate. They have not been independently verified.
|
| 89 |
|
| 90 |
+
## Training
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 91 |
|
| 92 |
+
Initial pretraining used FineWeb-Edu, FinePDFs-Edu, English UltraFineWeb multi-domain and question-answer subsets, Cosmopedia, and FineMath. Recovery training mixed 70% of the original frozen curriculum with 15% Cosmopedia-v2 English and 15% FinePhrase.
|
| 93 |
|
| 94 |
+
The tokenizer and prepared streams were fixed. Recovery retained the existing filtering, deduplication, and decontamination rules. Training details are recorded in `training_state.json`.
|
| 95 |
|
| 96 |
+
## Files
|
| 97 |
|
| 98 |
+
`model.npz` holds the MLX weights. `modeling_sol_milkshake.py` includes the loader and generator, and `sol_config.py` contains the architecture settings. The repository also includes `config.json`, the tokenizer files, training metadata, and evaluation outputs.
|
| 99 |
|
| 100 |
+
## Limits and license
|
| 101 |
|
| 102 |
+
Milkshake is a small research model for recurrence, memory, hyperspherical optimization, and MLX inference. It can produce repetitive or incoherent text and incorrect answers. It has not been instruction-tuned.
|
| 103 |
|
| 104 |
+
The model is licensed under [CC BY 4.0](LICENSE). Dataset licenses remain separate.
|