Beam-1.0-501B-A23B VQ GGUF
Reflection's 501B Beam with its full 1,048,576-token context, sized for one 128 GB DGX Spark. The 1.0 TB BF16 checkpoint becomes about 99.9 GB of GGUF parts: 98.3 GB that stay resident and a 1.56 GB BF16 token table that is read in rows from SSD. The routed experts use YoungAi's 8-dimensional vector quantization (12-bit, and 13-bit on the eight bottom MoE layers); everything the model needs to read on every token stays at Q4_K or source precision.
Status, 2026-10-20: the conversion is finished, verified and uploaded. Against the BF16 original, the release's own bytes agree on the next token 82.9% of the time (mean KL 0.295) over 5,491 held-out tokens, in a reference forward pass (below). The target runtime is ds4-dfm-rs; its Beam family (gated GQA + SWA attention, Harmony output parsing, FP8 KV for the full layers, SSD embedding rows) is being added, so no DGX Spark serving speed exists for this artifact yet. Memory figures are computed from the exact byte layouts plus labelled runtime estimates.
At a glance
| Source | reflection/Beam-1.0-501B-A23B at 78f8f654d40a40919b8e9954b40dd879ecb9a692 (BF16, 188 shards) |
| Recipe | beam1-vq8-mix8r13-41r12-q4k-embssd-v1 (RECIPE.md, recipe.json) |
| Routed experts | 49 MoE layers × 256 experts × gate/up/down. 8-dim VQ, one E4M3 codebook per layer shared by all experts and all three matrices, one F16 gain per row. Layers 3–10: 13-bit (K=8192, 12-bit stream + 1-bit plane), layers 11–51: 12-bit (K=4096) — 1.625 / 1.5 index bits per weight. No calibration data. |
| Attention, dense FFN (layers 0–2), output head | Q4_K (GGML reference encoder, no imatrix) |
| Kept at source precision | Router weights and e_score_correction_bias, attention gate bias, q/k norms, the four sandwich norms per layer, final norm |
| Token embedding | Original BF16, in its own part, read in rows from SSD (not resident) |
| Context | 1,048,576 tokens, the model's own (9 NoPE full-attention layers + 43 sliding-window-512 layers; no RoPE scaling involved). Needs FP8 KV on the full layers; see the budget below. |
| Chat template | Original Modified Harmony template, unchanged (analysis / final channels, XML tool calls, reasoning_effort 8–512) |
| Fidelity (reference forward, release bytes vs BF16) | 82.9% same next token, KL 0.295, NLL 1.243 → 1.463 over 5,491 held-out tokens |
| MTP / drafter | None (the source model has none) |
| zchain / GR-RB sidecars | None |
| Runtime | ds4-dfm-rs on DGX Spark (GB10), CUDA — Beam family in progress |
Why this size: the 1M context decides it
DeepSeek-V4.1-Flash VQ keeps a ~106 GiB base resident and still serves 1M tokens because its attention is compressed: YoungAi measures the whole 1M KV cache at 0.89 GB. Beam's nine full-attention layers are ordinary GQA (8 KV heads × 128). At 1M tokens they need 36.0 GiB of KV in BF16, or 18.3 GiB in FP8 — twenty to forty times DeepSeek's. A Beam that copied DeepSeek's weight size would not serve 1M on one Spark; the weights have to give up what the KV cache takes.
Budget for one bank at the full 1,048,576 tokens, against the 118.3 GiB a
GB10 reports available to ds4-server --check-config (the GLM-5.3 VQ quote):
| GiB | |
|---|---|
| Routed experts (8 × 13-bit + 41 × 12-bit layers, gains, codebooks) | 87.55 |
| Attention + dense FFN + output head, Q4_K | 3.76 |
| Router (F32, as in the source), biases, norms | 0.24 |
| Resident weights | 91.55 |
| Full-attention KV, FP8 E4M3 + per-position scales, 9 layers × 1M | 18.28 |
| Sliding-window rings, BF16, 43 layers × (512 + 2,048) | 0.42 |
| Scratch at 2,048-row prefill chunks (estimate from the nearest families) | 2.40 |
| Floor kept free by the server | 4.00 |
| Quote at 1M | 116.65 of 118.3 |
That leaves about 1.7 GiB of spare quote at the full context, the same order as GLM-5.3-Flash VQ's qualified 1M point (116.2 of 118.3), and about 5.6 GiB physically free with the floor. Without the floor, Beam at 1M holds 112.7 GiB — DeepSeek V4.1 VQ's level. With BF16 KV the same table needs 134.4 GiB, so FP8 KV on the nine full layers is part of this release's contract, not an option.
The eight 13-bit layers are where the spare bytes went: each costs 0.146 GiB.
All-12-bit would leave 2.8 GiB of spare quote; fourteen 13-bit layers (the
DeepSeek count) would leave 0.8 GiB, Ling-3.1's tight corner. memory-budget.json
and tools/memory_budget.py reproduce every row.
Recipe
- Routed experts. Every 8 consecutive weights of an expert row become one index into a codebook, times one F16 row gain (the row RMS, computed in FP64 and rounded before normalizing). One codebook per layer serves all 256 experts and gate/up/down; YoungAi measured a shared book to cost nothing against one per expert. Codewords are trained in FP32 (equidistant init, 32 Lloyd iterations with FP64 sums) on a stratified pool of 9.8M vectors per layer (20 gate, 20 up and 40 down rows from every expert), rounded FP32 → F16 → E4M3, and every vector is then assigned against the stored codebook. No text is involved.
- Which layers get 13 bits. Each extra index bit divides the weight error by about 1.19 (YoungAi: 0.201 / 0.171 / 0.143 at 11 / 12 / 13 bits), the curve is convex, so spare bytes go to many layers one bit at a time, and to the bottom first: YoungAi measured shallow layers worth 1.2–1.4× more per GB, and the GLM-5.3 end-to-end sweep ranked layers 3–16 first. Beam's eight bottom MoE layers (3–10) take the bytes the 1M budget leaves.
- Everything read on every token besides the experts — attention q/k/v/o and the output-gate projection of all 52 layers, the three dense FFN layers and the output head — is Q4_K, as in DeepSeek V4.1 VQ. YoungAi measured that skeleton's error at 0.5% against 17% for the experts: raising it buys little.
- Not touched: router weights and correction biases, all norms, the per-head attention gate bias, and the token embedding (BF16, read from SSD).
Weight-space reconstruction of the routed experts, measured by the converter
on the stored bytes against the BF16 source (relative MSE; not a model-quality
measurement): the eight 13-bit layers 0.1441–0.1446, the 41 12-bit layers
0.1698–0.1703 — cosine ≈ 0.925 / 0.911, the same as DeepSeek V4.1 VQ's 0.925 /
0.911. Held-out rows give the same values. Every layer is in
weight-error-by-layer.json; the per-matrix
records are in conversion-receipts/. The Q4_K tensors average 0.55%
relative MSE (worst 0.67%, layers.0.mlp.down_proj; output head 0.53%).
Measured on the converted bytes
A teacher-forced comparison with the BF16 original, run layer by layer on an
H100: the release side reads every weight from this repository's files (VQ
experts restored from the stored indices, Q4_K dequantized, BF16 embedding
rows); the original side reads the source checkpoint. Both run BF16
attention, so FP8 KV is not part of these numbers, and this is not the ds4
engine. The forward pass re-implements transformers 5.20.2's Beam layer and
matches BeamDecoderLayer (layer 5 bit-identical, layers 0 and 3 within
1.1e-4 relative RMS).
| Held-out text | Tokens | KL (original ‖ release) | Same top-1 | Perplexity, original → release |
|---|---|---|---|---|
| Korean prose | 289 | 0.426 | 75.1% | 2.28 → 3.65 |
| Indonesian web text | 1,024 | 0.367 | 79.9% | 4.22 → 5.74 |
| Source-tree listing | 1,024 | 0.439 | 80.0% | 3.03 → 4.30 |
| English technical prose | 1,024 | 0.231 | 81.3% | 4.97 → 5.70 |
| Harmony chat, Korean math (analysis + final) | 1,024 | 0.161 | 88.8% | 3.14 → 3.47 |
| Harmony chat, English reasoning | 716 | 0.169 | 89.7% | 1.88 → 2.10 |
| Harmony tool call (XML), tool result, final | 390 | 0.386 | 81.0% | 6.22 → 7.58 |
| All | 5,491 | 0.295 | 82.9% | NLL 1.243 → 1.463 nat |
For scale, on different texts: the same method's bare DeepSeek V4.1 Flash base agreed on 69–79% of next tokens (KL 0.42–0.69, YoungAi's rulers); GLM-5.3-Flash VQ reached 81.4% (KL 0.288) only after its 19 most sensitive layers got an 8-bit residual stage. The exact top-8 expert set matches the original's for 54% of tokens at layer 3 and 3–5% in the last layers — routing is hash-like, as YoungAi found on DeepSeek — yet the outputs still agree.
Kernel budget on GB10 (99 KiB shared memory per block)
| Expert stage | Codebooks | Decode gate/up | Decode down / verify | FP8 prefill MMA |
|---|---|---|---|---|
| 12-bit (layers 11–51) | 32 KiB | 43,008 B | 73,728 B | 76,544 B (3 stages) |
| 13-bit (layers 3–10) | 64 KiB | 75,776 B | 106,496 B with all 8 experts' mid rows staged → 86,016 B staged 4 + 4 | 96,768 B (2 stages) |
| 13 + 8 residual (not used) | 66 KiB | 77,824 B | 108,544 B → 88,064 B staged 4 + 4 | 98,816 B |
GB10 allows 101,376 B per block. Beam's down projection reads 8 experts × 2,560 BF16 mid values (40 KiB), so the 13-bit layers need the down/verify kernels to stage the experts in two groups of four (one extra barrier per block); the 12-bit layers fit the GLM/Ling kernel scheme as it is, with 27 KiB to spare, enough for a later 8- to 11-bit residual stage in decode. The figures are the ds4-dfm-rs GLM/Ling kernel formulas applied to Beam's shapes; those kernels still need their row widths generalized to 5,120 and 2,560.
What stays native
- Context: 1,048,576 tokens. Sliding layers use RoPE (θ = 10,000) over a
512-token window; full layers use no positional encoding and scale the query
by
(1 + (pos + 1) / 2048) ** 0.1. Nothing is rescaled or extended. - Chat template: the original
chat_template.jinja(Harmony wire format with XML tool-call bodies,analysisandfinalchannels, tools declared as TypeScript,<|constrain|>xmlcalls withrfl:parameterbodies, tool results onanalysis).reasoning_effortacceptsminimal/low/medium/high/xhigh/max= 8 / 32 / 64 / 128 / 256 / 512 and defaults to 512. Generation stops on<|return|>(151674) or<|call|>(151675). - Sampling: Reflection evaluated with temperature 0.7 and top_p 0.99
(
generation_config.json). - Numerics kept in FP32 by the source model: router logits, SwiGLU, logit soft-capping at 30.
Files
| Path | Contents | Size |
|---|---|---|
layer-03-experts.gguf … layer-10-experts.gguf |
13-bit routed experts, one independent GGUF per layer | 2,050,196,608 B (2,050,197,376 B for layer 10) |
layer-11-experts.gguf … layer-51-experts.gguf |
12-bit routed experts | 1,892,878,208 B each |
body-nonexpert.gguf |
Q4_K attention / dense FFN / head, source router, biases and norms | 4,294,683,136 B |
embed-tokens-bf16.gguf |
BF16 token embedding, read in rows from SSD | 1,555,825,280 B |
| All 51 parts | 99,860,088,576 B | |
release.json |
Entry point: every part with role, size and SHA-256 | |
tensor-manifest.json |
Every stored tensor and its source mapping | |
recipe.json, memory-budget.json |
Machine-readable recipe and the budget above | |
weight-error-by-layer.json, conversion-receipts/ |
Per-layer and per-matrix conversion records (sizes, hashes, errors) | |
quality/ |
The reference comparison above and its selftest | |
tools/ |
The converter and release scripts as run | |
config.json, generation_config.json, tokenizer.json, tokenizer_config.json, chat_template.jinja |
Original files, unchanged | |
RECIPE.md, FORMAT.md, SOURCE.md |
Recipe, byte format, provenance | |
SHA256SUMS, files.json |
Hashes of every file |
These are independent GGUF parts, not numbered GGUF splits: do not concatenate them. Standard llama.cpp, Ollama and Transformers loaders do not read this format.
Upstream scores
Reflection's scores for the original checkpoints, from the Beam model card. They describe the source model, not this quantization.
| Benchmark | BF16 | FP8 | NVFP4 |
|---|---|---|---|
| SWE-bench Verified | 81.6 | 80.2 | 80.7 |
| Terminal Bench v2.1 | 80.1 | 78.9 | 78.4 |
| AIME 2026 | 97.7 | 98.0 | 97.5 |
| GPQA Diamond | 90.6 | 90.3 | 89.3 |
| LiveCodeBench | 88.3 | 88.1 | 87.4 |
| HLE (no tools / with tools) | 36.0 / 51.1 | 36.0 / 51.1 | 34.8 / 51.1 |
| MCP Atlas | 80.8 | 81.5 | 80.5 |
| BrowseComp w/ context management | 76.8 | 76.7 | 75.6 |
| AA-LCR | 78.2 | 79.4 | 78.7 |
| LongBench v2 | 67.5 | 67.6 | 67.2 |
Limits
- This is lossy: about 1.5 bits per routed-expert weight. The release agrees with the original's next token 82.9% of the time on the held-out set above; Korean prose is its weakest case (75.1%, perplexity 2.28 → 3.65). GLM-5.3-Flash needed more bits on its bottom layers to stop collapsing in Korean; behaviour in long free generation has not been checked here.
- Serving needs the ds4-dfm-rs Beam family, which is not merged yet. Until it is, these files are for inspection and runtime development.
- The 1M budget assumes FP8 KV on the full-attention layers and 2,048-row prefill chunks at long context; scratch is an estimate until measured on GB10.
- Uniform zero-corpus quantization: no domain sidecar, no calibration.
Credits and sources
- Reflection — Beam-1.0-501B-A23B, Apache-2.0.
- YoungAi by Wenzhou Wu (吴文周,
fodelf /
wenzhouwu), MIT — the method: 8-dim VQ
with per-layer shared E4M3 codebooks, F16 row gains, the 12 + 1 bit-plane
layout for 13-bit layers, shallow-layers-first bit allocation and the
zero-corpus rule (
docs/TECHNICAL.md§4.1,docs/113.md). The converter's CUDA assignment and FP64 Lloyd follow YoungAigguf-tools/quantize/v41_vq.cu; its notice is kept inLICENSE-YoungAi. - ds4-dfm-rs — the GVQ1 container, its GB10 kernels, and the Ling-3.1 / GLM-5.3 VQ tools this converter is forked from.
- llama.cpp / GGML — the GGUF container and the Q4_K layout.
License
Apache-2.0, as the source model. The quantization tools derive from YoungAi
and ds4.c (MIT, LICENSE-YoungAi, which includes the GGML notice).