feat(agentx): add Kimi-K3 FP4 MI355X ATOM DSpark recipe - #2670
feat(agentx): add Kimi-K3 FP4 MI355X ATOM DSpark recipe#2670zejunchen-zejun wants to merge 6 commits into
Conversation
Adds the MI355X Kimi-K3 ATOM AgentX submission alongside the existing vLLM arm: same checkpoint, same runner, same concurrency points, so the two engines are directly comparable. TP8 at concurrency 1 and 4 is GPU-resident. Concurrency 8 and 10 switch on the LMCache DRAM tier and ATOM's CPU state-offload tier together, because Kimi-K3 is a hybrid -- Kimi Delta Attention carries a per-request recurrent state alongside the paged KV, so a resumed agentic turn needs the state back and the paged KV tier alone cannot restore one. spec-decode-acceptance-rate is derived from the committed golden acceptance length 2.51 at num_speculative_tokens 2 as (2.51 - 1) / 2 = 0.755, the same golden the vLLM arm feeds to synthetic_acceptance_length, so both engines are held to one acceptance assumption. LMCACHE_MAX_LOCAL_CPU_SIZE is per rank, so the aggregate TOTAL_CPU_DRAM_GB is divided by TP as the agentic README requires; dram-utilization 0.085 lands that at roughly 32 GB per rank. 新增 MI355X 上 Kimi-K3 的 ATOM AgentX 提交,与既有 vLLM 分支并列:相同权重、 相同 runner、相同并发点,两个引擎可直接对比。 TP8 在并发 1 和 4 下全部驻留 GPU。并发 8 和 10 同时开启 LMCache DRAM 层与 ATOM 的 CPU state-offload 层,因为 Kimi-K3 是混合架构——Kimi Delta Attention 在分页 KV 之外还带有每请求的循环状态,恢复一次 agentic 轮次必须取回该状态, 仅靠分页 KV 层无法还原。 spec-decode-acceptance-rate 由仓库内已提交的 golden 接受长度 2.51( num_speculative_tokens 为 2)按 (2.51 - 1) / 2 = 0.755 推导,与 vLLM 分支传给 synthetic_acceptance_length 的 golden 一致,使两个引擎处于同一接受假设下。 LMCACHE_MAX_LOCAL_CPU_SIZE 是每 rank 的设置,因此按 agentic README 的要求将 聚合预算 TOTAL_CPU_DRAM_GB 除以 TP;dram-utilization 取 0.085 使其落在每 rank 约 32 GB。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
A mechanical dry-run diff of the resolved server command against the ATOM recipe, per concurrency, turned up three gaps: - AITER_LOG_LEVEL was missing. ATOM requires it: without it the aiter kernel logs flood the server log for the whole 3600 s replay. - dram-utilization 0.085 gave an aggregate of 254 GB, which floors to 31 GB per rank after the divide-by-TP. 0.086 gives 257 and lands on exactly the 32 GB per rank the recipe was measured with. - OFFLOAD_PROFILE stays unset, matching the measured runs rather than the recipe's 1; it only enables per-step offload statistics. Now stated in the script so the difference reads as a choice, not an omission. After this the two commands are identical on every server flag and every environment variable at concurrency 1, 4, 8 and 10. The one remaining textual difference is an explicit --host 0.0.0.0, which is a no-op: ATOM's DEFAULT_HOST is already 0.0.0.0. 按并发逐档对 resolved server command 与 ATOM recipe 做了机械化 dry-run 比对, 发现三处差异: - 缺少 AITER_LOG_LEVEL。ATOM 要求设置该变量,否则 aiter kernel 日志会在整个 3600 秒回放期间刷屏。 - dram-utilization 取 0.085 时聚合预算为 254 GB,按 TP 整除后落到每 rank 31 GB。改为 0.086 得到 257,整除后正好是 recipe 实测所用的每 rank 32 GB。 - OFFLOAD_PROFILE 保持不设置,与实测运行一致,而非 recipe 中的 1;该变量仅 开启逐步的 offload 统计。现已在脚本中写明,使该差异体现为有意选择而非遗漏。 此后两侧命令在并发 1、4、8、10 下的每一个服务端参数与每一个环境变量上完全一致。 唯一残留的文本差异是显式的 --host 0.0.0.0,而这是空操作:ATOM 的 DEFAULT_HOST 本身就是 0.0.0.0。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Dispatched trusted sweep run for approved external revision 已为获批的外部提交 |
|
Dispatched trusted sweep run for approved external revision 已为获批的外部提交 |
|
Dispatched trusted sweep run for approved external revision 已为获批的外部提交 |
Recipe PR: ROCm/ATOM#1941
Adds the MI355X Kimi-K3 ATOM AgentX submission alongside the existing vLLM arm: same checkpoint, same runner, same concurrency points, so the two engines are directly comparable.
TP8 at concurrency 1 and 4 is GPU-resident. Concurrency 8 and 10 switch on the LMCache DRAM tier and ATOM's CPU state-offload tier together, because Kimi-K3 is a hybrid -- Kimi Delta Attention carries a per-request recurrent state alongside the paged KV, so a resumed agentic turn needs the state back and the paged KV tier alone cannot restore one.
spec-decode-acceptance-rate is derived from the committed golden acceptance length 2.51 at num_speculative_tokens 2 as (2.51 - 1) / 2 = 0.755, the same golden the vLLM arm feeds to synthetic_acceptance_length, so both engines are held to one acceptance assumption.
LMCACHE_MAX_LOCAL_CPU_SIZE is per rank, so the aggregate TOTAL_CPU_DRAM_GB is divided by TP as the agentic README requires; dram-utilization 0.085 lands that at roughly 32 GB per rank.