需先从 Hugging Face 单独下载数十到上百 GB 的 EXL3 权重包;AMD 需先装 ROCm torch 并编译,NVIDIA 需先按 tools/cuda 编译 CUDA 版本;GLM 首次启动要花约 10 分钟调优 kernel,期间端口不开放。
kyojin
Yamz-LabsMIT活跃维护在单台桌面机器上跑 100GB 级大模型的开源推理引擎,支持 AMD Strix Halo、NVIDIA RTX 和 Apple Mac,兼容 OpenAI API,基于 ExLlamaV3 构建。
Kyojin: open-source engine that runs 100 GB-class open models (GLM-5.3, Qwen3.8, DeepSeek V4.1) on one desktop machine. AMD Strix Halo, NVIDIA RTX and Apple Mac. OpenAI API, built on ExLlamaV3.
git clone https://github.com/Yamz-Labs/kyojin && cd kyojin
hf download yamz-labs/GLM-5.3-Flash-EXL3-Yamz --local-dir ./glm-pack
python tools/glm/serve.py --model ./glm-pack --port 8000 -c 131072 --num-draft 2Strix Halo 需 Linux(Ubuntu/Debian 实测)、gfx1151 机型、128GB 内存与 ROCm 7.0+;NVIDIA 需 sm_80 及以上,实测单张 24GB RTX 3090;Apple 走 kyojin-mac 的 MLX 路径。README 未给出 CPU 运行说明。
在单台桌面机上跑 100GB 级开源大模型的推理引擎,兼容 OpenAI API
在单台桌面机器上跑 100GB 级大模型的开源推理引擎,支持 AMD Strix Halo、NVIDIA RTX 和 Apple Mac,兼容 OpenAI API,基于 ExLlamaV3 构建。
核心能力
- 基于 ExLlamaV3 加载 EXL3 量化权重包
- 默认开启投机解码,输出与普通解码一致
- 支持最长 983K token 长上下文
- Qwen3.8-27B 支持图像输入
- 所有服务端统一提供 OpenAI API 接口
容易踩的坑
- v1.8.15Kyojin 1.8.15最新正式版2026-11-09 · 2026-11-09 21:46 UTC
Kyojin 1.8.15
- Reasoning loops: relaxed draft acceptance only after the think block closes (#183). With
EXL3_SPEC_TYPICAL=1,EXL3_SPEC_TYPICAL_PHASE=answerkeeps the relaxed acceptance rule for the answer, tool calls and code, and verifies drafts exactly while the model is still thinking. Long sampled reasoning could drift into a repeating span under the relaxed rule; exact verification inside thinking removes that bias. Default isall(unchanged behaviour); a model without a think block is always in the answer phase. - HIP JIT: shared GCC discovery (#181). All HIP kernel loaders now find the GCC installation the same way (
EXL3_GCC_INSTALL_DIR, then thegcconPATH, then a scan that prefers the host triplet). A staleEXL3_GCC_INSTALL_DIRwarns once and falls back instead of silently dropping the flag, and a failedhipccbuild prints its error lines. - Tests and docs: skinny hgemm regression extended to the partial K tile (#182), GEMV harness and fused GEMV environment variable documentation (#179, #180), long-period loop rule in evalgate (#178).
Served gate (Strix Halo box for the GLM and Flash-Next cells, RTX 3090 box for the RTX cells; 1 warm-up; RTX cells and GLM 8K are the median of 3 reps; greedy, so the new flag does not change these numbers):
Cell Prefill tok/s 1.8.15 1.8.14 Decode tok/s 1.8.15 1.8.14 GLM-5.3 8K 742.2 743.6 32.61 31.71 GLM-5.3 128K 679.0 695.2 34.06 34.56 Flash-Next 8K 1477.5 1480.2 53.28 55.15 Flash-Next 128K 1546.9 1551.0 57.43 59.81 Qwen27 RTX 5K 1680.6 1692.1 88.64 81.99 Qwen27 RTX 39K 1593.5 1590.9 80.06 78.43 No cell is more than 5 % below its reference. The Strix Halo kernels built and loaded through the new GCC discovery without a recompile surprise.
- Reasoning loops: relaxed draft acceptance only after the think block closes (#183). With
- v1.8.14Kyojin 1.8.142026-11-07 · 2026-11-07 11:16 UTC
查看更新说明
Kyojin 1.8.14
- CUDA prefill: tuned dense GEMMs (#169). The large fp16 GEMMs of the reconstruct (prefill) path pick a cuBLASLt configuration on the live operands. A configuration is kept only if its output is bit-identical to
cublasGemmEx(no split-K) and it is at least 3 % faster; choices are cached per cuBLASLt version and GPU in~/.cache/exllamav3/cuda_gemm_tune.txt(EXL3_CUDA_GEMM_TUNE_FILE). On by default;EXL3_CUDA_GEMM_TUNE=0turns it off. The first start on a new GPU tunes during warm-up (about 2-3 minutes once); later starts read the cache. - Strix Halo MoE prefill (#166). The sigmoid-gated shared expert is summed inside the grouped expert reduction instead of a separate pass. Output is bit-identical.
Served gate (Strix Halo box for the GLM and Flash-Next cells, RTX 3090 box for the RTX cells; 1 warm-up; RTX cells are the median of 3 reps):
Cell Prefill tok/s 1.8.14 1.8.13 Decode tok/s 1.8.14 1.8.13 GLM-5.3 8K 743.6 739.5 31.71 30.57 GLM-5.3 128K 695.2 686.8 34.56 33.89 Flash-Next 8K 1480.2 1485.4 55.15 54.61 Flash-Next 128K 1551.0 1537.8 59.81 56.61 Qwen27 RTX 5K 1692.1 1667.9 81.99 86.07 Qwen27 RTX 39K 1590.9 1556.0 78.43 80.35 - RTX 3090 Qwen27 prefill with the tuner, A/B on one build (median of 3 per arm): +2.5 % at 5K, +1.7 % at 8K, +1.6 % at 32K.
- Flash-Next prefill A/B for #166 (6 reps per arm): +0.76 % at 8K, +0.04 % at 32K.
- Greedy output is byte-identical to 1.8.13 on 8 of 8 prompts for Flash-Next and for GLM-5.3.
- The RTX decode cells are single-stream with speculative decoding; their per-step time (31.8 ms vs 31.2 ms) and draft acceptance match 1.8.13, and the gap is within the usual per-rep spread of these cells.
- CUDA prefill: tuned dense GEMMs (#169). The large fp16 GEMMs of the reconstruct (prefill) path pick a cuBLASLt configuration on the live operands. A configuration is kept only if its output is bit-identical to
- v1.8.13Kyojin 1.8.132026-11-06 · 2026-11-06 23:40 UTC
查看更新说明
Kyojin 1.8.13
- Relaxed acceptance of argmax drafts for sampled requests:
EXL3_SPEC_TYPICAL=1(default off) accepts a draft token when the target gives it enough probability, instead of requiring a sampled match (#164). On GLM-5.3 with T=1 Hermes turns, decode went from 34.4 to 39.9 tok/s (+15.9 %) on one Strix Halo machine and from 34.7 to 40.7 tok/s (+17 %) on another. Tool calls (32 requests per arm) and GSM8K (100) are unchanged within noise.
Served gate (Strix Halo box for the GLM and Flash-Next cells, RTX 3090 box for the RTX cells; 1 warm-up, one rep per cell; greedy, so the new flag does not change these numbers):
Cell Prefill tok/s Decode tok/s GLM-5.3 8K 740 30.6 GLM-5.3 128K 687 33.9 Flash-Next 8K 1485 54.6 Flash-Next 128K 1538 56.6 Qwen27 RTX 5K 1629 81.6 Qwen27 RTX 39K 1546 83.1 No cell is more than 5 % below the reference. Qwen27 RTX 39K decode: the gate and a recheck read 73-75 tok/s on 1.8.13; a same-machine A/B on freshly started lanes then gave 83.1 on 1.8.13 and 84.7 on 1.8.12 (2 reps each, within noise). The cause of the earlier low readings is not identified yet.
- Relaxed acceptance of argmax drafts for sampled requests:
- v1.8.12Kyojin 1.8.122026-11-06 · 2026-11-06 20:05 UTC
查看更新说明
Kyojin 1.8.12
- Fixes the hang on start-up with draft2s packs (issue #125): the pack is loaded on the host and then copied, and the draft head is built before warm-up (#161).
- GLM serve stops a job that runs past its token budget or stalls, so an abandoned request no longer keeps the GPU busy (#162).
- Native fdot2 GEMV for gfx1201 (RDNA 4) and a fix for ROCm block-graph capture (#160).
- The skinny hgemm grid is sized for one-column row counts (#154). New GEMV test harness (#155).
Served gate (Strix Halo box for the GLM and Flash-Next cells, RTX 3090 box for the RTX cells; 1 warm-up, one rep per cell):
Cell Prefill tok/s Decode tok/s GLM-5.3 8K 702 33.6 GLM-5.3 128K 695 33.5 Flash-Next 8K 1495 54.9 Flash-Next 128K 1542 54.5 Qwen27 RTX 5K 1653 80.2 Qwen27 RTX 39K 1552 80.0 No cell is more than 5 % below the reference. Flash-Next 128K decode A/B on the same machine: 1.8.12 54.7, 1.8.11 56.2 (2 reps each, within noise).
- v1.8.11Kyojin 1.8.112026-11-05 · 2026-11-05 22:11 UTC
查看更新说明
Kyojin 1.8.11
- Disk-first recurrent cache: the RAM cache for recurrent checkpoints can be capped at 0. Evicted checkpoints go to the prefix disk tier. Strix and RTX lanes use 2 to 5 GiB less RAM. A 61K-token turn-2 resume from disk costs the same on Strix and is faster on RTX.
- One llama.cpp-style
timingsobject on GLM, Qwen, MiMo and DS4.1, withprompt_per_secondandpredicted_per_second. Progressive timings at most once per second while streaming. One speed line per request in the server log. - Includes the
no_tool_callrequest field.
Served gate (Strix Halo box for the GLM and Flash-Next cells, RTX 3090 box for the RTX cells; 1 warm-up, medians when a cell needed more reps):
Cell Prefill tok/s Decode tok/s GLM-5.3 8K 680 32.4 GLM-5.3 128K 695 33.7 Flash-Next 8K 1487 53.7 Flash-Next 128K 1541 58.9 Qwen27 RTX 5K 1650 75.9 Qwen27 RTX 39K 1554 79.7 No cell is more than 5 % below the 1.8.10 reference.
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Quick start
Strix Halo (AMD): install ROCm torch and build once (doc/install.md), then GLM-5.3-Flash:
git clone https://github.com/Yamz-Labs/kyojin && cd kyojin
hf download yamz-labs/GLM-5.3-Flash-EXL3-Yamz --local-dir ./glm-pack
python tools/glm/serve.py --model ./glm-pack --port 8000 -c 131072 --num-draft 2
RTX 3090 (NVIDIA): build for CUDA once (tools/cuda/README.md), then Qwen3.8-27B with 245K of context (the served settings, one session), with turboderp's 4.0 bpw pack:
hf download turboderp/Qwen3.8-27B-exl3 --revision SC_4.00bpw_H5_V6 --local-dir ./qwen27-pack
python tools/qwen/serve.py --model ./qwen27-pack -c 245760 --k-bits 6 --v-bits 6 --draft-policy mix
Mac Studio (Apple): follow the kyojin-mac install, then DeepSeek V4.1 Flash:
hf download yamz-labs/DeepSeek-V4.1-Flash-EXL3-Yamz --local-dir ./ds41-pack
python -m kyojin_mlx.serve.server ./ds41-pack --sessions 4 --ctx 32768 --port 8080
Every server speaks the OpenAI API. More commands: doc/models.md.
Test it
With a server running on port 8000 (the Mac command above uses 8080):
curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "Say hello in five words."}]}'
Speed by context
Tokens per second against context length (log scale), served through the real server with real text. Each chart says its machine, Kyojin version and date. Higher is better.
Strix Halo (AMD), GLM-5.3-Flash and Qwen3.8-Flash-Next
RTX 3090 (NVIDIA), Qwen3.8-27B
Mac Studio (Apple), DeepSeek V4.1 Flash
Benchmark it yourself
With a server running:
tools/bench.sh --base http://localhost:8000/v1 --reps 3
It prints a Markdown block. Paste it in a benchmark report to share your results (how the figures are measured).
What is inside
- Speculative decoding, on by default; it returns the same tokens as plain decoding.
- Long context: up to 983K tokens (DeepSeek V4.1 Flash on a Mac Studio), 500K on GLM-5.3-Flash.
- Image input on Qwen3.8-27B.
- Optional uncensored mode: a small run-time preset on the normal packs, off by default; it edits no weights. How it works: doc/refusal_hook.md.
Made with our models
One prompt each, written by the model running on Kyojin and published as it came out. Open the gallery.
Models
All packs are EXL3 on Hugging Face: ours on yamz-labs, Qwen3.8-27B from turboderp. Serve commands: doc/models.md.
| Pack | Machine | Size |
|---|---|---|
| GLM-5.3-Flash | Strix Halo | 100.1 GB |
| Qwen3.8-Flash-Next | Strix Halo | 95.4 GB |
| Qwen3.8-27B-exl3 (turboderp) | RTX 3090 | 15 GiB |
| DeepSeek V4.1 Flash | Mac Studio, Strix Halo (SSD tier) | 184.7 GB |
| MiMo-V2.6-Flash-MOPD | Strix Halo | 105.0 GB |
| Flint-40B-A2.5B | RTX 3090 | 17.9 GB |
| Nanbeige4.3-33B | RTX 3090 | 18.7 GB |
Known limits
- Strix Halo needs Linux (Ubuntu/Debian tested), a gfx1151 machine with 128 GB and ROCm 7.0 or newer; ROCm 6.4 has no gfx1151 code (install).
- NVIDIA needs sm_80 or newer; tested on one RTX 3090 with 24 GB (RTX).
- The first GLM launch tunes its kernels for about 10 minutes, and the port stays closed until it finishes (install).
- GLM at
-c 131072leaves about 10 GiB free on a 128 GB machine (install). - The 763B model on one 128 GB machine is experimental: real decode is about 5 to 11 tokens per second (Strix Halo).
Contributors
Thank you to everyone who tests Kyojin on their own machine and writes precise reports. Who did what: doc/credits.md.
- Code: @felladrin, @twstagg, @resynth, @razethion, @MangetsuC, @mostlygeek, @zaxbysauce, @thebigen01, @nobert, @Idriss091, @JoaoFay.
- Reports and benchmarks: @kamjin3086, @OleksKon, @spawnax, @alanoo81, @dturini12, @ChrisC381, @morrisfamily, @xXm-mXx.
Read more
- Install and first launch: requirements, build, per-shell setup, first-launch tuning, system settings for full speed
- Strix Halo, RTX and Mac pages
- Models: weights, serve commands, options
- Benchmarks: how the figures are measured, where each comes from, full tables, share yours with
tools/bench.sh - Troubleshooting, refusal hook, development, credits and licence
Reports and pull requests are welcome: see CONTRIBUTING.md. Kernel notes: doc/strix-halo.md. Upstream guide: doc/upstream.md.
MIT licence. Built on ExLlamaV3 by turboderp, with the first AMD ports by vcruz305 and sdougbrown: full credits. News: @YamzLabs on X.