Devotd Github
新发现推理与服务

yamz-labs/kyojin 1.8.5 — 会话回归与 Strix Halo iGPU 解码

yamz-labs/kyojin 1.8.5 通过循环缓存锚点策略改进了会话回归,并处理了 Strix Halo iGPU 解码内核。

仓库信息yamz-labs/kyojin ↗

yamz-labs/kyojin 1.8.5 通过循环缓存锚点策略改进了会话回归,并处理了 Strix Halo iGPU 解码内核。

GitHub 项目说明: Kyojin: the Yamz inference engine for AMD Strix Halo (ROCm, gfx1151), built on ExLlamaV3. Runs 300B-class MoE models on one 128 GB mini PC.

星标
★ 174
复刻
23
语言
Python
许可证
MIT
最新版本
v1.5.8
查看原始来源 ↗在 GitHub 查看 ↗

yamz-labs/kyojin 是一个面向 AMD Strix Halo(ROCm,gfx1151)的推理引擎。它构建在 ExLlamaV3 之上,目标是在一台 128GB 迷你 PC 上运行 300B 级 MoE 模型。1.8.5 于 2026 年 11 月 1 日合并,宣称主打“returning sessions, Strix Halo iGPU decode”,新增 2341 行、删除 145 行。本次版本的两个主轴是会话回归与 iGPU 解码。

会话回归方面的核心是循环缓存(recurrent cache)的淘汰策略。新增环境变量 EXL3_RC_ANCHOR_MAX 默认值为 16384,它会把位于 2 的幂次位置(2K·4K·8K·16K)的检查点,在其他检查点仍然存在期间,从 LRU(最近最少使用,先替换最近未被使用的项)的淘汰对象中向后推迟。代码注释说明,该机制防止了长会话把提示词末尾的检查点挤出去,导致共享同一系统提示词的压缩会话与新会话即使 K/V 页面仍留在缓存中也会从 0 重新开始的问题。prefix(前缀)恢复方面新增了 EXL3_PD_BULK,默认值在 CUDA 上为 1、在 ROCm 上为 0。它不再逐页复制,而是用一次固定(pinned)批量复制把前缀从磁盘读回,同时附带的说明指出在 ROCm 统一内存中批量复制反而更慢。决定服务器保留多少 n-gram follower 的 QWSPEC_NG_POOL 默认值为 4,降到 1 则只剩单个 follower。

解码方面主要是内核与执行路径的调整。gdn.cu 利用普通 GDN 运算的状态访问形式与 KDA 相同这一点,通过 EXL3_GDN_VSPLIT_GDN 让 v_split 可选为 1 或 4;注释说明两种设置的输出是 bit-identical(逐位相同)。同一注释还指出在 iGPU 实测中,48 x 512 B 状态行上的带宽从 95 → 172 GB/s(1 row)以及 107 → 197 GB/s(历史 5 rows)有所提升,内核为 -45%,4K decode 为 -2.5%,5-row verify 为 -3.7%。此外还新增了 skinny_set_w2 绑定、skinny partials 内核的两列合并(CPL=2)、HIP 专用 glue 模块 hip_glue.py、环境变量整理模块 util/knobs.py,以及与 anchor·knobs·prefix cache·HIP glue·Triton dequant 相关的测试文件。

不过这些数字是留在内核注释里的开发者侧 iGPU 实测值,并没有给出独立基准测试或 README 表格。由于 CUDA 与 ROCm 的默认值在多个项目上存在分歧,因此不能把这些数字原样当作其他 GPU 配置下的结论来读。1.8.5 是同时包含 1.8.4 内容的合并发布版本,支持模型或许可证变更的记录无法从本次提交信息中确认。如果你的环境是用单台 AMD APU 跑超大 MoE、同时又需要长时间维持会话,那么这个版本值得关注,但支持范围被收窄到 Strix Halo(gfx1151)。