Skip to content

v0.1.0 — first working release

Choose a tag to compare

@rayl15 rayl15 released this 05 Aug 06:13
· 42 commits to main since this release

Run GPT-OSS-120B on a 16 GB Mac. First working release: it installs, it
generates, and everything it claims has been measured.

What works

  • Install — streams the 59 GiB checkpoint from Hugging Face and repacks it
    into a .gwt directory without ever materialising a shard. Verified
    byte-exact against the source.
  • Chat — terminal or one-shot, with temperature, top-k, top-p, repetition
    penalty and seeding. No Python; the tokeniser is Swift and matches tiktoken
    exactly on 14 cases including emoji with ZWJ sequences, CJK and Cyrillic.
  • Dashboardgodwit serve gives chat, a live grid of all 4,608 experts
    lighting up as the router picks them, and a range map of what each expert
    specialises in. No dependencies; the binary serves the whole interface.
  • Measurement tools — profiling, kernel A/B testing that survives thermal
    drift, routing traces, and NumPy reference checks at every numerical stage.

Performance

Measured on a 13″ M4 MacBook Air, 16 GB, base 256 GB SSD:

Decode 1.4–1.5 tok/s, flat across the generation
Prefill ~2.2 tok/s
Time to first token 10–13 s
Resident 2.12 GiB trunk + 3.56 GiB expert cache
GPU busy 17.6% of wall time

This is device speed, not an inefficiency. Expert reads are 71.6% of decode
and the read path runs at what this SSD delivers. Small Apple SSDs use fewer
NAND dies and are genuinely slower — this one reads ~2 GiB/s where 512 GB–2 TB
modules reach 3–6. The same code should reach roughly 3–5 tok/s on a Mac with a
larger SSD. That has not been verified, because no such machine was
available.

Known limits

  • One model family. About 78% of the Swift is model-agnostic, but tensor
    naming, YaRN-only RoPE and the MXFP4 assumption are not.
  • Slower than reading speed. GPT-OSS-20B fits in the same machine at 30–50
    tok/s under MLX; if that is good enough for your task, use it instead.
  • The range map's per-topic counts overstate specialisation. 73% of the experts
    labelled python fired fewer than twenty times across the probes. Roughly 150
    of the 545 are defensible. More probe samples would fix it.
  • Conversation history is re-encoded each turn, so the KV cache is rebuilt
    rather than reused across turns.

Correctness

Every numerical stage is checked against a NumPy reference built from the same
installed bytes: MXFP4 decode byte-exact against OpenAI's tensors, expert
feed-forward to 3e-06, attention to 3e-04 RMS, and a full layer with expert
selection matching exactly. 54 tests, green on CI.

Requirements

Apple Silicon Mac, macOS 26+, Swift 6.2+, 16 GB memory, ~60 GB free on fast
internal storage. Xcode is not required.


Full notes: design ·
results ·
site