description: Models spill runs, with sizes and measured pass times: Qwen2.5 0.5B to 32B and Llama 3.3 70B in bf16 on a 48 GB Mac, plus supported architecture families.
Models and architectures
Curated tags
| tag | params | family (state) | bf16 | 8-bit | on 48 GB | disk needed |
|---|---|---|---|---|---|---|
| qwen2.5:0.5b | 0.5B | Qwen2/2.5 (verified) | 0.9 GB | 0.7 GB | resident | 21 GB+ |
| qwen2.5:1.5b | 1.5B | Qwen2/2.5 (verified) | 2.9 GB | 1.5 GB | resident | 23 GB+ |
| qwen2.5:7b | 7B | Qwen2/2.5 (verified) | 14.2 GB | 7.5 GB | resident | 34 GB+ |
| qwen2.5:32b | 32B | Qwen2/2.5 (verified) | 61 GB | 33 GB | streamed | 81 GB+ |
| llama3.3:70b | 70B | Llama 3.x (verified) | 131 GB | 70 GB | streamed | 151 GB+ |
For a project made by spill init, the student defaults to qwen2.5:0.5b on every machine, the
smallest curated model, so a first result takes minutes; spill plan states the reason for this
machine and what else it could train. There is no default teacher and no default judge: you name one
(--teacher, --judge), or accept the judge spill plan recommends for the machine
(--judge recommended). Each of the three roles takes any curated tag above or any Hugging Face repo
id with a supported architecture (spill run org/name file.jsonl); an unsupported architecture is
refused in one line naming its family. The older folder workflow (spill build <folder>) still
defaults to qwen2.5:7b and llama3.3:70b on Apple silicon. spill models prints the live table
for your machine. Pinned revisions with every file's sha256 are in streamweights/models.yaml
(qwen2.5:0.5b and qwen2.5:1.5b share one tokenizer, which is what logit distillation needs).
Disk: each model needs its size plus a 20 GB floor that downloads never cross. Downloads check the disk before the first byte, show one line with speed and ETA, and resume after an interruption.
Architecture families
spill models --architectures prints the live table.
| state | families |
|---|---|
| verified | Llama 3.x, Qwen2/2.5, Qwen3 (dense), Phi 3/4, Gemma 2, Mistral |
| expected | Gemma 3 (text): per-layer alternating sliding-window attention needs per-layer cache windows; not wired yet |
| not_yet | Mixtral, DeepSeek V2/V3, Qwen MoE, Llama 4: mixture-of-experts, where per-token expert routing defeats layer-order streaming. Multimodal models (anything with a vision tower): vision towers are not streamed yet (planned, see plan.md). Mamba: state-space recurrence has no KV cache to batch around. Jamba: recurrent layers break the per-layer stream loop |
"Verified" means the streamed output was tested identical to in-memory execution on 20 prompts, plus first-token agreement with an independent mlx-lm implementation. A family moves from expected to verified when a small model of that family passes both tests. Shared-prefix reuse is wired for the dense families that take a causal mask string (all the verified families except Gemma 2).
Measured on a 48 GB M4 Pro
Eval decode on a streamed model is disk-bound; prefill and training are compute-bound (2 and 6 times parameters times tokens, divided by achieved FLOP/s). Per-phase numbers live in the reports under docs/reports.
| model | quant | placement | workload | pass time | measured |
|---|---|---|---|---|---|
| qwen2.5:0.5b | bf16 | resident | 2,000-row eval | n/a | 712 tok/s aggregate (report 002) |
| llama3.3:70b | bf16 | streamed | first streaming runner | 31.6 s | (report 002) |
| llama3.3:70b | 8-bit | streamed | golden path | 18.8 s | (report 002) |
| llama3.3:70b | bf16 | streamed | 1,334 short and summarize rows | 33-38 s | 15 h 35 m unattended (report 007) |
| llama3.3:70b | bf16 | streamed | 666 one-thousand-token rows | 33-37 s clean | 23 h 51 m, zero interventions (report 007) |
| llama3.3:70b | bf16 | streamed | LoRA training, 3 steps | 417 s per step | 4.55 TFLOP/s, 11 tokens/s (report 008) |