☰
一台机器同时跑4路对话:halogen-flash-server的KV池、并发槽位与1M上下文配置全攻略
2026/10/18 19:13:09 网站建设 项目流程

【免费下载链接】halogen-flash-server

The fastest way to run Qwen3.8-Flash-Next on Strix Halo (gfx1151)

项目地址:https://gitcode.com/gh_mirrors/ha/halogen-flash-server
点击查看免费下载

halogen-flash-server 是一个为 AMD Strix Halo(gfx1151)深度定制的 OpenAI 兼容推理服务端,专门快速运行 Qwen3.8-Flash-Next。它最值得玩味的能力,是让一台机器同时跑 4 路对话:靠一块共享的KV 池管理所有会话的显存,用 4 个并发槽位控制同时生成,再配上1M 上下文的选填方案,长会话、多 Agent 并行都不怕。本文把这三个核心配置一次讲透。

🧩 先懂概念:KV 池是内存,槽位是排队规则

很多新手会以为"每开一路对话就要多一块显存"。halogen-flash-server 的设计恰恰相反(见 docs/configuration.md 的Context and memory章节):

  • HALOGEN_KV_POOL_POSITIONS(KV 池)= 内存旋钮。所有会话共享同一块池子,每个注意力位置约 29.5 KiB,默认 524,288 个位置,可同时驻留 2 条全长(262k)对话,约占 27.0 GiB。
  • HALOGEN_KV_SLOTS(并发槽位)= 延迟策略。默认 4,即最多 4 路对话同时在生成;每个槽位只多占约 115 MB 自身状态,它不决定能不能装下,池子才决定。
  • 请求被接纳时预占prompt + max_tokens个位置;池子装不下就按到达顺序排队,不会报错。
  • 每一路流生成的 token 与单独跑该请求时逐字节一致,并发不会"稀释"输出质量。

一句话记忆:调池子管"装得下几路",调槽位管"同时跑几路、单路多快"。

📊 池子选多大:4 档实测对照

默认配置就是为"4 路 131k 级对话"准备的。文档给出的四档布局如下(默认检查点、128 GB 主机):

KV 池大小可同时驻留设备显存适用场景
262,1441 条全长对话,或 4 路 65k19.8 GiB最小布局,内存紧张时
524,288(默认)2 条全长对话,或 4 路 131k27.0 GiB✅ 4 路对话的标配
786,4323 条全长对话,或 4 路 196k34.2 GiB实测 3 条 250k 对话驻留、内存平稳
1,048,5764 条全长对话,或 8 路 131k36.9 GiB(需HALOGEN_MAX_TOK=16384)1M 上下文布局

启动时服务端会按MemTotal − 驻留权重 − HALOGEN_HOST_RESERVE_GIB(默认留 20 GiB)自动降档,并打印LOWERING THE POOL TO N——想要 3 条驻留就直接写 786,432,别等它从 1,048,576 对半砍。每条请求日志行结尾都有pool N/<positions>,一 grep 就知道真实池子。

🚀 4 路并发到底多快:槽位的收益与代价

在发布版 0.18.0 镜像上、把HALOGEN_KV_SLOTS提到 8 让所有流同时被接纳后的实测(详见 docs/performance.md 与 docs/configuration.md):

并发流数v2 总吞吐(代码,贪心)单流速度
170–72 tok/s70–72
281 tok/s40
484–85 tok/s21
8107–108 tok/s13

规律很直观:流数越多,总吞吐越高,单流越慢;超过 8 路后总吞吐不再增长。槽位的作用是"闸门"——5 个 worker 竞争 4 个槽时,前 4 路仍按 4 流速度解码,第 5 路排队,而不是把所有人拖慢。社区 5-worker aider 实测:4 槽单轮 42 s、8 槽单流 14.9 t/s,所以重回复、重缓存的客户端用默认 4 槽就是最优。

另外别担心长 prompt 拖住所有人:默认分块接纳——131k 的新 prompt 会分 3 段读入,段间穿插其他对话的生成步(每段约 28 s),而不是一次性卡 105 s;HALOGEN_MAX_TOK=16384还能把暂停再减半(prefill 仅慢约 8%,输出仍逐字节一致)。

💡多 Agent 扇出(fan-out)提醒:父对话 50k + 两个子对话各 80k,起步就要82k+112k+112k=306k个位置,第五轮左右就会挤爆默认池。对策:池子调到 786,432、让客户端发更小的max_tokens、或减少并行子 Agent 数量。

📈 1M 上下文:两行配置,一份不同模型

模型的 262,144 原生上下文可以靠静态 YaRN(factor 4)扩展到 1M,不设置则完全不改变行为(见 docs/configuration.md):

-e HALOGEN_ROPE_YARN=4 \ -e HALOGEN_CTX=1048576 \ -e HALOGEN_KV_POOL_POSITIONS=1048576 \ -e HALOGEN_MAX_TOK=16384

要认清它的代价:

  • 它不是缓存开关,而是另一种模型配置:每个位置的 RoPE 都被重缩放,短 prompt 也一样。1k–32k 区间困惑度 +0.4–0.6%,8k–30k 区间投机解码约慢 10%;262k 与 1M 深度的检索测试均 9/9 通过。
  • 1M KV 缓存约 25 GB:128 GB 机器上放不下默认 prefill 工作区,服务端会自动把HALOGEN_MAX_TOK压到 16,384(prefill 约慢 9%)并打印出来。
  • 实测:1,004,581 token 的 prompt 冷 prefill 17.9 分钟(937 tok/s),decode 38 tok/s;深度解码每步多花约 3.6 ms 读取全部 key。
  • 但开了 prompt cache 后,续聊回归常速:1,000,000 token 上下文的下一轮首 token 仅 0.55 s(对比几十秒的冷 prefill),因为注意力状态原地保留,只保存很小的位置无关部分。

⚠️ 提示:恰好等于上下文长度的 prompt 会被拒绝——上下文必须给生成留位置。

🔧 配置速查 + 运维验证

旋钮默认何时改
HALOGEN_KV_POOL_POSITIONS524,288(=2×CTX)想驻留更多/更长会话时调大;起不来(池子放不下)时调小
HALOGEN_KV_SLOTS4想让第 5、6 路立刻跑而不是排队时调大(单流会变慢)
HALOGEN_CTX262,144单请求上限;超过即硬报错,绝不静默截断
HALOGEN_MAX_TOK32,768内存不够时调 16,384 换回约 4.4 GiB 工作内存
HALOGEN_ROPE_YARN/HALOGEN_HOST_RESERVE_GIB未设置 / 201M 布局时按需设置(见上文)

启动后两条命令验证一切生效:

  • GET /health:看version、池子与槽位能力、host memory left;
  • GET /cache:看pool里的positions、used、busy_regions、waiting_for_room,排队和驻留一目了然。

遇到"启动后长 prompt 变慢",先查启动行host memory left for everything else:低于 10 GiB 时查表行会走磁盘,prefill 会从秒级退化到分钟级——对策就是三个杠杆:缩池子、降HALOGEN_MAX_TOK、停掉其他驻留大进程(完整排查见 docs/troubleshooting.md)。

✅ 小结

  • 一台机器 4 路对话 = 默认 524,288 KV 池 + 4 个槽位,零配置即得,单路输出与独跑逐字节一致;
  • 池子管内存、槽位管排队、HALOGEN_MAX_TOK管工作区,三招解决 99% 的"装不下/跑不快";
  • 1M 上下文是"另一种模型配置",HALOGEN_ROPE_YARN=4一行开启,配合 1M 池 + 16,384 prefill 上限,冷 prefill 很慢但续聊只要半秒。

更多细节:全部参数见 docs/FLAGS.md(Context and concurrency 一节)、配置原理与数字见 docs/configuration.md、一键部署参考 docker-compose.yml 与 deploy/entrypoint.sh。

【免费下载链接】halogen-flash-server

The fastest way to run Qwen3.8-Flash-Next on Strix Halo (gfx1151)

项目地址:https://gitcode.com/gh_mirrors/ha/halogen-flash-server
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询