beamivalice/sushi

Sushi engine runs very high quality quant model in Apple Silicon, using hybrid affine/exl3 with special expert tuning techniques.

Zig

281

1,459 commits

updated Oct 19, 2026

See the code

See what people are saying

SourceMessageScoreDate

ijah --- M5+ Mac Engine for Qwen 3.8 Flash Next / Swift 1.5 Flash Next. Optimal Quality and Speed on 128gb (r/LocalLLaMA)

Sorry, yet another flipping engine! A few weeks ago, I made a speed focused experimental fork of Splash for M5 Max users recently called [Splish](https://github.com/publicExcess/splish). One of the most requested features was Qwen 3.8 Flash-Next support. Honestly, my experience with Flash-Next was…

2

Oct 19, 2026

Qwen3.8-Flash-Next for sushi on Apple Silicon: 4-bit and 5-bit EXL3 packs made with the open ExLlamaV3 converter (r/LocalLLM)

I've published two quants of Qwen3.8-Flash-Next for the [sushi](https://github.com/beamivalice/sushi) engine on Apple Silicon: [https://huggingface.co/chatnerdie/Qwen3.8-Flash-Next-EXL3-Sushi](https://huggingface.co/chatnerdie/Qwen3.8-Flash-Next-EXL3-Sushi) sushi's own expert converter isn't…

3

Oct 17, 2026

README

sushi

SUSHI

A local AI server for low-bit, very high quality Sushi quants, using custom EXL3-Affine hybrid converter. It is a detached fork of ddalcu's mlx-serve. Sushi runs stand-alone and also as a guest engine inside mlx-serve, Apple Silicon M1+ is required.

Model support list

Usage see recommended launch commands and coding agent usage.

Quality

KLD vs size

  • MiMo-V2.6-Flash-Sushi-2.3bpw scores KLD 0.0860 (top-1 agreement 91.95%)
  • GLM-5.3-Flash-Sushi-2.4bpw scores KLD 0.0742 (top-1 agreement 90.33%)
  • GLM-5.3-Flash-Sushi-2bpw scores KLD 0.1037 (top-1 agreement 88.18%)

Install

brew install beamivalice/tap/sushi

Update with brew upgrade sushi.

  • The server listens on 127.0.0.1:12345.
  • Support speculative decoding: MTP for Qwen and MiMo, DFlash2 for GLM.
  • 8-bit KV cache are on by default.

Memory

GPU memory in GiB to serve one prompt that fills the whole context (8-bit KV, MTP on with --mtp-head-kv-quant; GLM with its DFlash2 assistant and vision tower). The prompt cache and the n-gram table stay on the SSD and are not counted. The Qwen columns are at the default f32 GatedDeltaNet state; --qwen-gdn 16 (bf16) takes about 0.2 GiB off each Qwen cell.

contextSushi-2bpwSushi-2.6bpwSushi-4bpwMiMo-2.3bpwGLM-2bpwGLM-2.4bpw
weights only35.244.263.989.778.389.8
128k40.349.369.093.782.694.1
256k43.252.171.995.883.895.2
512k48.257.276.999.986.097.5
1M58.467.487.1108.290.5102.0

A context fits when its number is below the GPU limit you set with sudo sysctl iogpu.wired_limit_mb. Max context is the largest multiple of 8192 tokens that fits, at 8-bit / 4-bit KV, with 256 MiB spare and capped at 1M (GLM has no 4-bit KV):

MacGPU limitSushi-2bpwSushi-2.6bpwSushi-4bpwMiMo-2.3bpwGLM-2bpwGLM-2.4bpw
48 GB †43,000 MB (42.0 GiB)200k / 304k—————
64 GB †59,000 MB (57.6 GiB)976k / 1M528k / 840k————
96 GB90,000 MB (87.9 GiB)1M / 1M1M / 1M1M / 1M—696k / ——
128 GB120,000 MB (117.2 GiB)1M / 1M1M / 1M1M / 1M1M / 1M1M / —1M / —

† At --qwen-gdn 16 (bf16 GatedDeltaNet state), which the 32, 48 and 64 GB launch lines use. The f32 default gives less: 192k / 288k at 48 GB, and 968k / 1M and 520k / 824k at 64 GB.

A Mac with less memory than a Sushi pack can still serve it: --ssd-budget-gb N keeps N GiB resident and streams the routed experts from the SSD, with the same replies as a resident load, at a speed set by the SSD. A streamed load serves text unless --vision loads the vision tower, whose weights then come out of the N GiB.

Streaming on a 32 GB Mac

Sushi-2bpw streams on a 32 GB Mac with MTP on, at about 20 tok/s decode:

sudo sysctl iogpu.wired_limit_mb=27000
sushi serve --model ~/.sushi/models/Qwen3.8-Flash-Next-Sushi-2bpw --ssd-budget-gb 18 --ctx-size 66000 \
  --qwen-gdn 16 --expert-pick-tolerance 0.3

--qwen-gdn 16 stores Qwen's recurrent state in bf16 instead of the f32 default, which halves the state in every cache checkpoint (about 54 MB each) and is what the 32, 48 and 64 GB recipes run.

--ssd-budget-gb 18 keeps 18 GiB resident (trunk, KV cache and an expert cache) and reads the remaining experts from the SSD. --expert-pick-tolerance 0.3 is lossy: when a routed expert is not cached, it uses the best cached expert whose router probability is at least 0.7 of the missed one's, which saves an SSD read; leave it out for replies identical to a resident load. The plan may come within 1 GiB of the GPU limit (--wired-margin-gib N, 1 to 32). The GPU limit resets at reboot.

Benchmarks

Sushi 🍣 1.2.2M5 Max2k4k8k16k32k64k128k
GLM 5.3 Flash-2bpwPrefill883780739724713649570
Decode47.548.847.747.143.844.844.5
TTFT (s)2.355.2411.222.546.0101.1229.9
GLM 5.3 Flash-2.4bpwPrefill859833821816805737645
Decode50.151.848.746.447.446.644.2
TTFT (s)2.424.9110.120.040.789.1203.3
MiMo V2.6 Flash-2.3bpwPrefill1,3081,2271,2251,144994891679
Decode56.755.456.265.554.957.250.2
TTFT (s)1.613.336.7514.333.073.7193.0
Qwen 3.8 Flash-Next-2.6bpwPrefill2,1442,3552,4132,4142,3992,3482,255
Decode92.386.188.889.290.983.179.6
TTFT (s)0.981.733.436.7413.727.958.2
Qwen 3.8 Flash-Next-4bpwPrefill1,8712,1132,1922,1872,2622,2252,178
Decode77.972.885.290.382.678.371.3
TTFT (s)1.131.933.777.4414.529.460.2

Community reports, using llmprobe --bench-only:

ClassTypical RAMPackPrefill tok/sGen tok/s
M1 Max64 GB3bpw~350~32
M2 Max64 GB3bpw~400~38-40
M3 Ultra 60c256 GB4bpw~420~60
M4 Max64 GB3bpw~690~60-65
M5 Pro64 GB2.6bpw~900~50-55
M5 Max128 GB3bpw~1,900~95
M5 Max128 GB4bpw~1,750~90
M5 Max128 GBMiMo 2.3bpw~1,130~70
M5 Max128 GBGLM 2.4bpw~860~55

License

MIT, for sushi and the mlx-serve code it forks (LICENSE); ported kernels and vendored code are listed in NOTICE. The Qwen packs follow the Qwen Community License and the MiMo pack Xiaomi's MIT license, stated on each Hugging Face page.

beamivalice/sushi

Sushi engine runs very high quality quant model in Apple Silicon, using hybrid affine/exl3 with special expert tuning techniques.

Zig

281

1,459 commits

updated Oct 19, 2026

See the code

See what people are saying

SourceMessageScoreDate

ijah --- M5+ Mac Engine for Qwen 3.8 Flash Next / Swift 1.5 Flash Next. Optimal Quality and Speed on 128gb (r/LocalLLaMA)

Sorry, yet another flipping engine! A few weeks ago, I made a speed focused experimental fork of Splash for M5 Max users recently called [Splish](https://github.com/publicExcess/splish). One of the most requested features was Qwen 3.8 Flash-Next support. Honestly, my experience with Flash-Next was…

2

Oct 19, 2026

Qwen3.8-Flash-Next for sushi on Apple Silicon: 4-bit and 5-bit EXL3 packs made with the open ExLlamaV3 converter (r/LocalLLM)

I've published two quants of Qwen3.8-Flash-Next for the [sushi](https://github.com/beamivalice/sushi) engine on Apple Silicon: [https://huggingface.co/chatnerdie/Qwen3.8-Flash-Next-EXL3-Sushi](https://huggingface.co/chatnerdie/Qwen3.8-Flash-Next-EXL3-Sushi) sushi's own expert converter isn't…

3

Oct 17, 2026

README

sushi

SUSHI

A local AI server for low-bit, very high quality Sushi quants, using custom EXL3-Affine hybrid converter. It is a detached fork of ddalcu's mlx-serve. Sushi runs stand-alone and also as a guest engine inside mlx-serve, Apple Silicon M1+ is required.

Model support list

Usage see recommended launch commands and coding agent usage.

Quality

KLD vs size

  • MiMo-V2.6-Flash-Sushi-2.3bpw scores KLD 0.0860 (top-1 agreement 91.95%)
  • GLM-5.3-Flash-Sushi-2.4bpw scores KLD 0.0742 (top-1 agreement 90.33%)
  • GLM-5.3-Flash-Sushi-2bpw scores KLD 0.1037 (top-1 agreement 88.18%)

Install

brew install beamivalice/tap/sushi

Update with brew upgrade sushi.

  • The server listens on 127.0.0.1:12345.
  • Support speculative decoding: MTP for Qwen and MiMo, DFlash2 for GLM.
  • 8-bit KV cache are on by default.

Memory

GPU memory in GiB to serve one prompt that fills the whole context (8-bit KV, MTP on with --mtp-head-kv-quant; GLM with its DFlash2 assistant and vision tower). The prompt cache and the n-gram table stay on the SSD and are not counted. The Qwen columns are at the default f32 GatedDeltaNet state; --qwen-gdn 16 (bf16) takes about 0.2 GiB off each Qwen cell.

contextSushi-2bpwSushi-2.6bpwSushi-4bpwMiMo-2.3bpwGLM-2bpwGLM-2.4bpw
weights only35.244.263.989.778.389.8
128k40.349.369.093.782.694.1
256k43.252.171.995.883.895.2
512k48.257.276.999.986.097.5
1M58.467.487.1108.290.5102.0

A context fits when its number is below the GPU limit you set with sudo sysctl iogpu.wired_limit_mb. Max context is the largest multiple of 8192 tokens that fits, at 8-bit / 4-bit KV, with 256 MiB spare and capped at 1M (GLM has no 4-bit KV):

MacGPU limitSushi-2bpwSushi-2.6bpwSushi-4bpwMiMo-2.3bpwGLM-2bpwGLM-2.4bpw
48 GB †43,000 MB (42.0 GiB)200k / 304k—————
64 GB †59,000 MB (57.6 GiB)976k / 1M528k / 840k————
96 GB90,000 MB (87.9 GiB)1M / 1M1M / 1M1M / 1M—696k / ——
128 GB120,000 MB (117.2 GiB)1M / 1M1M / 1M1M / 1M1M / 1M1M / —1M / —

† At --qwen-gdn 16 (bf16 GatedDeltaNet state), which the 32, 48 and 64 GB launch lines use. The f32 default gives less: 192k / 288k at 48 GB, and 968k / 1M and 520k / 824k at 64 GB.

A Mac with less memory than a Sushi pack can still serve it: --ssd-budget-gb N keeps N GiB resident and streams the routed experts from the SSD, with the same replies as a resident load, at a speed set by the SSD. A streamed load serves text unless --vision loads the vision tower, whose weights then come out of the N GiB.

Streaming on a 32 GB Mac

Sushi-2bpw streams on a 32 GB Mac with MTP on, at about 20 tok/s decode:

sudo sysctl iogpu.wired_limit_mb=27000
sushi serve --model ~/.sushi/models/Qwen3.8-Flash-Next-Sushi-2bpw --ssd-budget-gb 18 --ctx-size 66000 \
  --qwen-gdn 16 --expert-pick-tolerance 0.3

--qwen-gdn 16 stores Qwen's recurrent state in bf16 instead of the f32 default, which halves the state in every cache checkpoint (about 54 MB each) and is what the 32, 48 and 64 GB recipes run.

--ssd-budget-gb 18 keeps 18 GiB resident (trunk, KV cache and an expert cache) and reads the remaining experts from the SSD. --expert-pick-tolerance 0.3 is lossy: when a routed expert is not cached, it uses the best cached expert whose router probability is at least 0.7 of the missed one's, which saves an SSD read; leave it out for replies identical to a resident load. The plan may come within 1 GiB of the GPU limit (--wired-margin-gib N, 1 to 32). The GPU limit resets at reboot.

Benchmarks

Sushi 🍣 1.2.2M5 Max2k4k8k16k32k64k128k
GLM 5.3 Flash-2bpwPrefill883780739724713649570
Decode47.548.847.747.143.844.844.5
TTFT (s)2.355.2411.222.546.0101.1229.9
GLM 5.3 Flash-2.4bpwPrefill859833821816805737645
Decode50.151.848.746.447.446.644.2
TTFT (s)2.424.9110.120.040.789.1203.3
MiMo V2.6 Flash-2.3bpwPrefill1,3081,2271,2251,144994891679
Decode56.755.456.265.554.957.250.2
TTFT (s)1.613.336.7514.333.073.7193.0
Qwen 3.8 Flash-Next-2.6bpwPrefill2,1442,3552,4132,4142,3992,3482,255
Decode92.386.188.889.290.983.179.6
TTFT (s)0.981.733.436.7413.727.958.2
Qwen 3.8 Flash-Next-4bpwPrefill1,8712,1132,1922,1872,2622,2252,178
Decode77.972.885.290.382.678.371.3
TTFT (s)1.131.933.777.4414.529.460.2

Community reports, using llmprobe --bench-only:

ClassTypical RAMPackPrefill tok/sGen tok/s
M1 Max64 GB3bpw~350~32
M2 Max64 GB3bpw~400~38-40
M3 Ultra 60c256 GB4bpw~420~60
M4 Max64 GB3bpw~690~60-65
M5 Pro64 GB2.6bpw~900~50-55
M5 Max128 GB3bpw~1,900~95
M5 Max128 GB4bpw~1,750~90
M5 Max128 GBMiMo 2.3bpw~1,130~70
M5 Max128 GBGLM 2.4bpw~860~55

License

MIT, for sushi and the mlx-serve code it forks (LICENSE); ported kernels and vendored code are listed in NOTICE. The Qwen packs follow the Qwen Community License and the MiMo pack Xiaomi's MIT license, stated on each Hugging Face page.

Significant stargazers

Frank Denis

4,397 followers · starred Sep 2026

Ivan Fioravanti

587 followers · starred Sep 2026

Rafael Carício

424 followers · starred Sep 2026

Stéphane Busso

292 followers · starred Sep 2026