Neutrino-1 8B

title
Neutrino-1 8B
type
entity
summary
Fermion Research's Apache-2.0 8B: a 3.88 GB ternary-coded container for H100, MacBook, and CPU
tags
llm, open-weights, quantization, local-models, inference
created
2026-07-29
updated
2026-07-29

Neutrino-1 8B is Fermion Research's flagship small model, released 2026-07-27 under Apache 2.0. It is a dense 8.19B-parameter decoder-only transformer, a derivative of Alibaba Cloud's Qwen3-8B, and its whole pitch is the container format: all 252 transformer linears are stored in a proprietary ternary-family coded format at one eighth the bits of fp16, staying bit-packed at rest and decoded inside the matrix kernels. Nothing in the decode path is ever materialized as an fp16 or fp32 weight.

The claim built on that is a single artifact serving three very different machines β€” a datacenter GPU, an Apple laptop, a desktop CPU β€” with no per-platform conversion step. Everything below comes from Fermion's own model page.

Geometry

Standard Qwen-shaped, read from the shipped container's header: 36 decoder layers, hidden width 4,096, gated SwiGLU feed-forward at 12,288 with three linears per layer, grouped-query attention 4:1 (32 query heads, 8 key-value heads, head width 128), rotary embeddings at base 1,000,000 applied across the full 128-wide head, RMSNorm at eps 1e-6 plus per-head query/key RMSNorm inside attention, 40,960-token context, 151,936 vocabulary, untied input and output embeddings.

The KV cache runs fp32 by default at 288 KiB per token, so 4k of context costs 1.21 GB and 32k costs 9.66 GB β€” against 3.88 GB of weights. At long context the cache is the larger number, which is the usual kv-cache-sizing arithmetic biting harder than normal precisely because the weights got so small.

Where the bytes went

The 3,875,404,812-byte container splits into four classes:

Class Share Size
252 transformer linears (coded lane) 67.2% 2,605 MB
Two untied int8 embedding tensors 32.1% 1,245 MB
Per-row metadata (dims, scales, row sums) 0.6% 25 MB
145 fp32 normalization tensors β€” 1.2 MB

Only the linears carry the coded format. The embeddings stay int8 because their rows are read one token at a time rather than multiplied against the whole activation stream, and the norms are too small to be worth coding. A third of the file is vocabulary β€” a reminder that at this scale, aggressive weight compression runs into a floor set by things that were never the problem. Compare llm-quantization, where the format-versus-bit-width argument plays out on GGUF quants instead.

Fermion publishes an occupancy statistic that is more interesting than the size figures. Across the 6.95B coded weights, 62.63% sit at zero and the remainder splits 18.68% positive against 18.69% negative β€” sign-balanced to a hundredth of a point with nothing in the training objective asking for it. The balance is not flat with depth: the gate and down feed-forward projections spike to 70–72% zeros in layers 1 through 3, while all four attention projections stay within about a point of 62% at every depth from layer 0 to 35. The early feed-forward blocks shed weights the network does not need; attention keeps a constant code density throughout.

Distribution: one container, three doors

The download is a 2,559,822,594-byte "coded transport" that expands bit-exactly to the 3.88 GB container β€” a transport encoding, not a lossy second compression of an fp16 model.

The pip engine (pip install fermion-research) fetches the container and a platform-matching native binary, with CPU runtimes for macOS arm64 and Linux x86-64 and a bit-exact torch reference underneath. The GGUF pack runs through Fermion's own llama.cpp fork on the fermion-fv5 branch, using an FV5 tensor type. The MLX pack is a Python-native Apple runtime with custom Metal kernels; the container is memory-mapped and packed planes are decoded inside the GEMV kernels.

The GGUF door has a real catch that Fermion states outright: stock llama.cpp, Ollama, and LM Studio cannot load the FV5 type. You need their fork, built with -DGGML_METAL=OFF for the CPU/CUDA branch or the separate fermion-fv5-metal branch for Apple GPU kernels. "One artifact, three doors" is true about the weights; the runtimes are three separate builds, and two of the three are Fermion's own. A vendor-specific tensor type is the kind of thing an independent llama.cpp fork normally carries too, with the same consequence β€” the quants only work where the fork works.

The CLI covers chat, serve (a local OpenAI-compatible endpoint with tool calling and streaming), generate, info (header + SHA-256 against the manifest), bench, inspect (weight occupancy, per-layer bytes), and verify (certify a draft/target pair produces identical tokens).

Benchmarks

Run on the shipped container with thinking disabled, on standard public harnesses, July 2026:

Benchmark Protocol Score
MMLU 5-shot, all 57 subjects, 14,042 items 72.1
MMLU-Redux generative, re-annotated subset 67.8
IFEval, prompt-strict generative 77.2
IFEval, instruction-strict same run, per-instruction grading 80.2
IFEval, prompt-loose same run, loose extraction 76.3
BFCL v3 macro over 13 subsets 68.9
GSM8K, flexible extraction 0-shot generative, greedy, 256-token cap 53.4
GSM8K, stated format same run, answer accepted only in requested form 51.73

Publishing shot count, grading mode, and item count next to every row is unusual and worth the credit β€” the GSM8K pair in particular shows what format compliance costs (53.4 β†’ 51.73 on the same run), which is the same axis structured-output-benchmark found separating JSON-Pass from Value-Accuracy by 15–30 points on frontier models.

Speed, and the draft/verify pairing

Single-stream decode rates, same artifact on every row:

Platform Rate
H100 80 GB, drafted 763 tok/s
H100 80 GB, plain greedy 396 tok/s
Apple M5 MacBook (MLX, optimized) 33.7 tok/s
NVIDIA L4, GGUF + CUDA fork, full offload 30.7 tok/s (4.68 GiB at 4k)
Apple M5, drafted MLX 25.7 tok/s
Apple M5, CPU only, 9 threads 24.9 tok/s

Single-stream decode is bound by bytes moved per token, which is the whole argument for the format: a 3.88 GB working set decodes at rates a 16 GB fp16 artifact cannot reach on the same memory system, and the model plus its cache fits on an 8 GB GPU or a 16 GB laptop.

The speculative-decoding setup pairs the 8B verifier with Neutrino-1 0.6B as drafter. Because both are the same format and run on the same binaries, the draft loads into the verifier's own process β€” no second deployment, no conversion. Its 328 MB beside the 8B's 3.88 GB is an 8.46% weight surcharge, and 4k of shared context costs 512 KiB per token across the pair (288 KiB on the 8B, 224 KiB on the draft).

A draft token is accepted only when it matches the 8B's own argmax, so the output stream is the plain greedy stream; Fermion reports 27,648 consecutive tokens with zero divergences. The speedup is therefore pure draft-acceptance physics and is quoted per prompt class over the 396 tok/s plain rate: counting and lists 763 tok/s (Γ—1.93), factual short answers 613 (Γ—1.55), prose continuation 532 (Γ—1.34), conversational explanation 447 (Γ—1.13), code 426 (Γ—1.07). On counting prompts the full six-token draft is accepted every pass, about seven tokens emitted per 8B forward; on factual prompts acceptance holds at 96.5%. A dynamic controller sizes the draft per class, which is why even code clears the plain rate.

The same pairing works on a laptop: on a 16 GB M5 both models load into one MLX process under a 6 GiB cap and peak at 4.3 GiB together, 0.53 GiB of that the draft, with 6 of 6 prompts token-identical with drafting on and off and 25.71 tok/s drafted against 22.00 plain at 0.744 acceptance. Getting a draft/verify pair inside a laptop memory budget is the part that is hard to do with two separately-quantized models.

Reading it skeptically

This is a vendor product page, and it reads like one β€” every number is Fermion's own, on Fermion's runtimes, and the coded format is proprietary and undocumented beyond its effects. What is unusually good is that the numbers are stated against the shipped artifact rather than a research checkpoint, with protocol attached, and that weights, native binaries, GGUF pack, and MLX pack ship in one public repository so no piece can drift out of sync with another. Apache 2.0 with no access request and no acceptance form, inherited from Qwen3-8B; the pip package is Apache-2.0 and the llama.cpp fork is MIT.

An 8B at 72.1 MMLU is not competing with kimi-k3 or any frontier model, and Fermion doesn't claim it is. It is the far end of the same axis: where deltafin spends 14.6 seconds a token to run 2.8T parameters on one Mac, Neutrino spends 3.88 GB to put a competent small model everywhere at once. The realistic use is the one local-ai-is-not-opus argues for β€” bounded, well-scoped local work where fixed cost and data locality matter more than peak capability.