Skip to content

[Unified Cache] Improve Mooncake direct I/O, observability, and reliability - #346

Open
hankerlei wants to merge 62 commits into
HYGON-AI:release/20260825_v0.5.18from
lihenga:feature/20260825_v0.5.18_release
Open

hankerlei wants to merge 62 commits into
HYGON-AI:release/20260825_v0.5.18from
lihenga:feature/20260825_v0.5.18_release

Conversation

@hankerlei

@hankerlei hankerlei commented Sep 11, 2026

Copy link
Copy Markdown

Motivation

The Mooncake direct external-linker path currently lacks several capabilities
needed for production deployment and performance analysis:

  1. Large direct loads cannot switch to a complete-page retrieval path.
  2. Mooncake local buffer capacity is not configurable.
  3. Hybrid cache backup operations cannot be submitted through one aggregated
    batch write.
  4. Request latency logs do not provide enough detail to identify queueing,
    preprocessing, Mooncake lookup, direct loading, and inference bottlenecks.
  5. Direct-storage prefetch and backup operations do not expose per-source L4
    metrics or rank-aware Mooncake client metrics endpoints.
  6. DeepSeek-V4 KV cache reservation and incompatible direct-linker cache
    arguments are not sufficiently visible during startup.
  7. A direct Mooncake range-read failure, including error code 707, should be
    contained at the request/load level instead of terminating the service.

This PR improves the Mooncake direct-linker I/O path and adds the observability
needed to diagnose its behavior in production.

Modifications

Mooncake direct I/O

  • Add an optional page-wise retrieval path for Mooncake direct-linker loads.
  • Add --mooncake-enable-page-wise-load to enable the page-wise path.
  • Add --mooncake-page-wise-load-threshold to select the minimum number of
    Mooncake object keys required to switch from layer-wise to page-wise loading.
  • Keep layer-wise loading as the default behavior.
  • Aggregate complete-page range metadata so page-wise reads can be issued in a
    single Mooncake range-get operation.
  • Add an aggregated write interface for hybrid cache backup operations.
  • Add SGLANG_MOONCAKE_LOCAL_BUFFER_SIZE to configure the Mooncake client local
    buffer size.

Reliability

  • Contain Mooncake direct range-read failures in the asynchronous load path.
  • Attribute failed objects to their request and storage pool where possible.
  • Propagate load failures through the layer completion counter without
    terminating the SGLang service.
  • Handle scalar Mooncake error results, including error code 707.

Request timing observability

  • Extend per-request timing information with:
    • token preprocessing time;
    • request dispatch time;
    • scheduler queue time and queue-blocking reasons;
    • Mooncake lookup count and total/average lookup latency;
    • direct-load preparation time;
    • Mooncake L3-to-L1 transfer time;
    • prefill inference time;
    • forward execution time.
  • Preserve unset timestamp sentinels when timing objects are serialized across
    process boundaries.

Direct-storage metrics

  • Add L4 prefetch and backup token counters.
  • Add per-request/per-operation token histograms.
  • Add prefetch and backup duration histograms with success/failure labels.
  • Attribute L4 reads to the actual dfs or local_disk source reported by
    Mooncake.
  • Count adopted logical pages instead of physical component objects.
  • Keep Mooncake's aggregate prefetched-token metric while recording
    source-specific token metrics in SGLang.
  • Expose Mooncake client metrics only when metrics are enabled.
  • Assign each physical scheduler process a rank-aware Mooncake client metrics
    port.
  • Add MOONCAKE_CLIENT_METRICS_PORT_BASE, defaulting to 9301.
  • Report mooncake_dfs or mooncake_local_disk in cached-token details.

DeepSeek-V4 and startup diagnostics

  • Log the reserved DeepSeek-V4 KV cache size on HBM.
  • Warn when --disable-radix-cache is used together with
    --enable-unified-cache-external-linker.

Compatibility

  • Page-wise Mooncake loading is disabled by default.
  • Existing layer-wise loading remains the default path.
  • Older Mooncake clients without source-reporting APIs continue to use the
    existing session-start API; their storage source remains unattributed rather
    than being guessed.
  • Mooncake client HTTP metrics are not started when SGLang metrics are disabled.
  • This PR does not change model computation or numerical kernels.

Accuracy Tests

N/A. This PR does not modify model forward computation, sampling, or numerical
kernels.

The following regression tests should be run before merge:

Checklist

Code Quality

  • Run pre-commit run --all-files and ensure all checks pass.
  • Run git diff --check origin/main...HEAD.
  • Verify that the PR contains only the intended seven commits.
  • Follow the SGLang code style guidance.
  • Confirm that no unrelated formatting or behavioral changes are included.

Tests

  • Add unit tests for page-wise Mooncake loading.
  • Add unit tests for request timing statistics.
  • Add unit tests for Mooncake direct-storage metrics and rank-aware ports.
  • Add CLI metadata tests for the new Mooncake arguments.
  • Register every new test file with the appropriate SGLang CI suite.
  • Run the following unit tests locally:
pytest test/registered/unit/mem_cache/test_mooncake_direct_linker_page_wise.py -v
pytest test/registered/unit/observability/test_req_time_stats.py -v
pytest test/registered/unit/test_server_args_cli_metadata.py -v


<!-- pr-states:start -->
---
### CI States

Latest PR Test (Base): <!-- slot:pr-test:start -->:x: **Missing `run-ci` label** -- add it to run CI tests.<!-- slot:pr-test:end -->
Latest PR Test (Extra): <!-- slot:pr-test-extra:start -->:x: **Blocked** -- `run-ci` is required first.<!-- slot:pr-test-extra:end -->
<!-- pr-states:end -->

hzh0425 and others added 30 commits August 17, 2026 11:13
Co-authored-by: 晟海 <huangtingwei.htw@antgroup.com>
(cherry picked from commit 412dd6a638f1d1cc6ed162d40cfc4dfbb89915ea)
Backport the final functional diff of sgl-project/sglang#31466 at c96e68b62 onto deepseek-v4-hcu while preserving HCU DCP, staging, CP, and graph-replay changes.

PD runtime validation is pending dedicated prefill/decode resources. Static compilation and test_pd_hidden_state.py (12 tests) pass.
The PD hidden-state hooks added to DecodePreallocQueue.pop_preallocated and
DecodeTransferQueue.pop_transferred dereferenced collaborators that are wired
up after construction (transfer_queue, kv_manager) and per-request state that
only exists once a request enters the PD hidden path (pd_hidden_state). Any
caller holding a partially constructed queue -- including main's registered
decode-queue cleanup tests -- hit AttributeError on the abort/failure paths.

Guard the three sites: getattr for transfer_queue, a class-level kv_manager
default on DecodeTransferQueue, and a None-tolerant pd_hidden_state read in
_drain_pd_hidden_ready_chunks. Production wiring is unchanged (all three are
always set by scheduler init), so this only affects the unwired case.

Fixes the 3 test_decode_queue_cleanup failures that predate this rebase.
…ation

SchedulerDisaggregationInitMixin.__init_subclass__ swapped a full copy of
init_disaggregation (SchedulerDisaggregationPrefillMixin, 175 lines) over the
one defined in the Scheduler class body. That copy was forked from an older
main and has since drifted: it lost the PD Decode DP-sync Gloo group, the
rust-server ascend config store, the unified-memory disagg move gate, the
get_disagg()/get_parallel() accessors, and -- the crash reported here --
`self.disagg_prefill_pending_chunk_rids`, which main's send_kv_chunk now
maintains:

  File ".../disaggregation/prefill.py", line 2305, in send_kv_chunk
    self.disagg_prefill_pending_chunk_rids.discard(req.rid)
  AttributeError: 'Scheduler' object has no attribute
                  'disagg_prefill_pending_chunk_rids'

Whole-method duplication cannot survive rebases: every main-side addition to
init_disaggregation silently disappears on the PD path. The branch's actual
delta is three lines wide -- resolve_disagg_metadata_config() widening the
hidden-state geometry, plus **metadata_buffer_kwargs on the two MetadataBuffers
constructions -- so fold exactly that into the single implementation, guarded
on disaggregation_mode != NULL (a non-PD server must not inspect speculative
workers), and delete the copy along with the installer mixin.

Repro: P HCU_NUM=4 PD_OPEN=1 PD_MODE=prefill MTP_MODE=dspark
DSPARK_MOE_MODE=deepep + D HCU_NUM=4 PD_OPEN=1 MTP_MODE=dspark
DSPARK_MOE_MODE=deepep + router.
The PD Decode single-clock setup in init_disaggregation still reads
self.pp_size / self.attn_tp_size / self.attn_cp_size / self.tp_rank, which no
longer exist on Scheduler after the ParallelState (self.ps) refactor. The block
only runs for disaggregation_mode == DECODE with dp attention, so nothing
upstream exercises it and the stale names never surfaced:

  File ".../managers/scheduler.py", line 1315, in init_disaggregation
    if self.pp_size != 1:
  AttributeError: 'Scheduler' object has no attribute 'pp_size'

Re-express the four reads on self.ps. Verified no bare self.{pp_size,
attn_tp_size, attn_cp_size, tp_rank} remains in scheduler.py; the rest of the
file already uses self.ps for all four.

Inherited verbatim from the rebase base d20a475 -- it was reachable only once
the duplicated init_disaggregation copy stopped shadowing the real one.

Repro: D side HCU_NUM=4 PD_OPEN=1 PD_MODE=decode MTP_MODE=dspark
DSPARK_MOE_MODE=deepep.
add a mutual exclusion warning for the startup parameters --disable-radix-cache and --enable-unified-cache-external-linker.
…se_tmp_lc

Rye 20260814 deepseek v4 open rebase tmp lc
…rs, and add a new switch mooncake-enable-page-wise-load to control page‑wise data reading.
…se_tmp_lc

When writing data to mooncake, set dfs_replica_num to 1 to avoid erro…
hankerlei and others added 18 commits August 31, 2026 11:09
…rebase_metrics

Keep direct L4 token metrics in SGLang only
…FT, including queue wait, token pre‑processing, Mooncake‑to‑L1 data transfer, inference compute, etc., to pinpoint performance bottlenecks.

Page‑wise load batching removal – modifies MooncakeDirectLinker._load_page_wise to fetch all required pages in a single batch instead of chunking them by page_wise_load_batch_size, reducing I/O overhead and improving throughput.

Graceful error handling for L3 load failures – when the direct‑path call to batch_get_into_multi_buffer_ranges fails with error 707, the request is marked as failed (or raised) but does not crash the whole SGLang service; the service continues operating.
… errors.

Modify default page_wise_load_threshold value.
…vironment variable to distinguish DFS mode.
feat: Calculate the hit rates of L1, L3 and L4
@hygon-ai-ai-reviewer

hygon-ai-ai-reviewer Bot commented Sep 11, 2026

Copy link
Copy Markdown

AI Review

审查尚未完整完成,无法给出整体结论;当前没有可发布的已确认问题,不代表代码没有问题。

审查未完整完成:仅依据 GitHub 返回的 PR diff,未运行代码。

覆盖情况:共 59 个文件,已审查 50 个,部分审查 1 个,待审查 8 个。

进度已保存。正在继续处理。

@hygon-ai-ai-reviewer

Copy link
Copy Markdown

AI CI 失败分析

查看质量门禁运行

质量门禁未通过。

失败任务 2 个:已完成 1 个,未完成 1 个。

  • 失败任务 1:分析未完成;问题分类:代码、无法确定。
  • 失败任务 2:分析已完成;问题分类:无法确定。

建议处理

由有权限的维护者在 CI 原始报告中定位并处理门禁发现的问题,再验证对应检查。若涉及凭据,应撤销或轮换受影响凭据,而不只是删除文本。

隐私保护:本评论不展示扫描命中原文、文件路径、日志引用、任务名称或模型生成的分析细节;折叠区也不包含这些内容。分析完成不代表门禁通过。未执行代码或重跑 CI。

@hygon-ai-ai-reviewer

Copy link
Copy Markdown

AI CI 失败分析

工作流:PR Test (HCU)
工作流最终状态:failure
对应版本:Run 3090303 / PR 3090303 / 第 1 次运行

失败任务 6 个:已完成 3 个,未完成 3 个。进度已保存,可用 reviewctl ci-review OWNER/REPO RUN_ID 续审。

CI 汇总结论

已定位直接异常的任务:Stage A HCU smoke、Stage B HCU required (stage-b-required-2)。

  • Stage A HCU smoke:run_suite 收集测试阶段直接抛出 ValueError:No CI registry found in /sglang-checkout/test/registered/unit/disaggregation/test_pd_hidden_state.py(ci_register.py:428),随后以退出码1失败。pip 依赖冲突告警(L296-L313)同批出现,但仅为安装期提示,未证明导致本次失败。

  • Stage B HCU required (stage-b-required-2):直接报错:git fetch 传输层中断,curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 110(L62),fetch-pack 意外断开、index-pack 输出无效(L64-L66),checkout 以 exit code 128 失败;随后清理脚本因检出目录未生成而报 No such file或目录并 exit 127(L86-L87),属连带失败,非独立根因。

仍待定位或尚未处理:Stage B HCU required (stage-b-required-3)、Stage B HCU required (stage-b-required-0)、Stage B HCU required (stage-b-required-1)、PR Test (HCU) finish。

部分任务尚未完成分析,以上是阶段性结论,不表示所有失败已解释。


Stage A HCU smoke

失败原因

run_suite 收集测试阶段直接抛出 ValueError:No CI registry found in /sglang-checkout/test/registered/unit/disaggregation/test_pd_hidden_state.py(ci_register.py:428),随后以退出码1失败。pip 依赖冲突告警(L296-L313)同批出现,但仅为安装期提示,未证明导致本次失败。

问题分类:代码

与本次改动的关系

相关:报错文件正是本 PR diff 中新增的 test/registered/unit/disaggregation/test_pd_hidden_state.py,新增测试缺少 ci_register 要求的注册信息导致收集失败,日志与 diff 形成可核对的触发路径。

建议处理

参照仓库中已注册同类测试的写法,为该新增测试文件补充 CI 注册声明(具体注册机制需对照 ci_register.py 确认),或按注册规则调整文件位置;方案需人工核验后实施。

验证方式:补充注册后重跑 Stage A HCU smoke,确认 collect_tests 不再抛出该 ValueError、用例被正常收集且任务退出码为0。

分析限制:仅依据所引用日志及相关改动;实际采集和处理范围见下方覆盖说明。

证据批次:1

L412: 2026-09-11T07:51:03.3564097Z ValueError: No CI registry found in /sglang-checkout/test/registered/unit/disaggregation/test_pd_hidden_state.py

L414: 2026-09-11T07:51:03.3684777Z Exit code 1 indicates a real failure, not retrying

日志扫描 54726 字节 / 435 行;选取 86 行、匹配 6 处错误信号。下载已结束;证据窗口未达到选取上限;日志可用。

相关 diff:已选取 1/59 个 PR 文件分批提供(是相关性选取,不是文件丢失);匹配但无 patch 0 个,patch 不完整 0 个。未运行代码,未检查未提供的依赖清单、文件或其它任务。

查看逐批证据与处理进度(1/1)

证据批次 1

直接异常证据

L412: 2026-09-11T07:51:03.3564097Z ValueError: No CI registry found in /sglang-checkout/test/registered/unit/disaggregation/test_pd_hidden_state.py

L414: 2026-09-11T07:51:03.3684777Z Exit code 1 indicates a real failure, not retrying


Stage B HCU required (stage-b-required-3)

失败原因

现有已处理证据未定位直接异常。启动器终止信号、退出码和失败统计只能说明失败,不能单独确定根因。

建议:优先处理尚未完成的证据批次;若处理完成后仍无直接异常,再获取失败进程的原始异常输出。不能把其它批次未出现在某一片段中称为日志下载截断。

本任务证据分析未完成,已保留上述结果;不能认为所有失败均已解释。

日志扫描 61618 字节 / 497 行;选取 86 行、匹配 6 处错误信号。下载已结束;证据窗口未达到选取上限;日志可用。

相关 diff:已选取 1/59 个 PR 文件分批提供(是相关性选取,不是文件丢失);匹配但无 patch 0 个,patch 不完整 0 个。未运行代码,未检查未提供的依赖清单、文件或其它任务。

查看逐批证据与处理进度(0/1)

证据批次 1

分析未完成:模型未返回完整、有效的审查格式。可续审;不代表没有异常。


Stage B HCU required (stage-b-required-2)

失败原因

直接报错:git fetch 传输层中断,curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 110(L62),fetch-pack 意外断开、index-pack 输出无效(L64-L66),checkout 以 exit code 128 失败;随后清理脚本因检出目录未生成而报 No such file或目录并 exit 127(L86-L87),属连带失败,非独立根因。

问题分类:基础设施

与本次改动的关系

无关:失败发生在按 SHA(与 PR SHA 一致)检出代码阶段,错误类型为网络传输超时/断连;PR 代码尚未编译或执行,不存在日志与代码可核对的触发路径,与 59 个改动文件无关联证据。

建议处理

最小处理:重试本 checkout 任务确认是否偶发网络抖动;若复现,排查 runner 到远端仓库的网络链路/代理稳定性,并可为 fetch 增加重试或减小传输量。以上方向未执行,需人工核验。

验证方式:重跑 checkout 步骤,观察 git fetch 是否完整完成并正常进入后续阶段;若再次出现 curl 56 SSL_read 或 errno 110,需在网络层(DNS、代理、TLS 链路)进一步定位。

分析限制:仅依据所引用日志及相关改动;实际采集和处理范围见下方覆盖说明。

证据批次:1

L62: 2026-09-11T09:14:51.0544572Z error: RPC 失败。curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 110

L66: 2026-09-11T09:14:51.0573730Z fatal: fetch-pack:无效的 index-pack 输出

L86: 2026-09-11T09:14:51.1106858Z bash: /home/github/actions-runner-sglang-hcu-1/_work/_temp/hcu-sglang-34574724372-stage-b-2/scripts/ci/hcu/hcu_ci_cleanup_container.sh: No such file or directory

日志扫描 7323 字节 / 89 行;选取 60 行、匹配 4 处错误信号。下载已结束;证据窗口未达到选取上限;日志可用。

相关 diff:已选取 0/59 个 PR 文件分批提供(是相关性选取,不是文件丢失);匹配但无 patch 0 个,patch 不完整 0 个。未运行代码,未检查未提供的依赖清单、文件或其它任务。

查看逐批证据与处理进度(1/1)

证据批次 1

直接异常证据

L62: 2026-09-11T09:14:51.0544572Z error: RPC 失败。curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 110

L66: 2026-09-11T09:14:51.0573730Z fatal: fetch-pack:无效的 index-pack 输出

L86: 2026-09-11T09:14:51.1106858Z bash: /home/github/actions-runner-sglang-hcu-1/_work/_temp/hcu-sglang-34574724372-stage-b-2/scripts/ci/hcu/hcu_ci_cleanup_container.sh: No such file or directory


Stage B HCU required (stage-b-required-0)

失败原因

现有已处理证据未定位直接异常。启动器终止信号、退出码和失败统计只能说明失败,不能单独确定根因。

建议:优先处理尚未完成的证据批次;若处理完成后仍无直接异常,再获取失败进程的原始异常输出。不能把其它批次未出现在某一片段中称为日志下载截断。

本任务证据分析未完成,已保留上述结果;不能认为所有失败均已解释。

日志扫描 61293 字节 / 494 行;选取 86 行、匹配 6 处错误信号。下载已结束;证据窗口未达到选取上限;日志可用。

相关 diff:已选取 1/59 个 PR 文件分批提供(是相关性选取,不是文件丢失);匹配但无 patch 0 个,patch 不完整 0 个。未运行代码,未检查未提供的依赖清单、文件或其它任务。

查看逐批证据与处理进度(0/1)

证据批次 1

分析未完成:模型未返回完整、有效的审查格式。可续审;不代表没有异常。


Stage B HCU required (stage-b-required-1)

失败原因

现有已处理证据未定位直接异常。启动器终止信号、退出码和失败统计只能说明失败,不能单独确定根因。

建议:优先处理尚未完成的证据批次;若处理完成后仍无直接异常,再获取失败进程的原始异常输出。不能把其它批次未出现在某一片段中称为日志下载截断。

本任务证据分析未完成,已保留上述结果;不能认为所有失败均已解释。

日志扫描 61293 字节 / 494 行;选取 86 行、匹配 6 处错误信号。下载已结束;证据窗口未达到选取上限;日志可用。

相关 diff:已选取 1/59 个 PR 文件分批提供(是相关性选取,不是文件丢失);匹配但无 patch 0 个,patch 不完整 0 个。未运行代码,未检查未提供的依赖清单、文件或其它任务。

查看逐批证据与处理进度(0/1)

证据批次 1

分析未完成:模型未返回完整、有效的审查格式。可续审;不代表没有异常。


PR Test (HCU) finish

失败原因

现有已处理证据未定位直接异常。启动器终止信号、退出码和失败统计只能说明失败,不能单独确定根因。

建议:优先处理尚未完成的证据批次;若处理完成后仍无直接异常,再获取失败进程的原始异常输出。不能把其它批次未出现在某一片段中称为日志下载截断。

日志扫描 5141 字节 / 80 行;选取 60 行、匹配 1 处错误信号。下载已结束;证据窗口未达到选取上限;日志可用。

相关 diff:已选取 0/59 个 PR 文件分批提供(是相关性选取,不是文件丢失);匹配但无 patch 0 个,patch 不完整 0 个。未运行代码,未检查未提供的依赖清单、文件或其它任务。

查看逐批证据与处理进度(1/1)

证据批次 1

本批未发现可核对的直接异常,不单独推断根因

L76: 2026-09-11T09:31:06.5013208Z stage-a-test-1-hcu-small: failure

L77: 2026-09-11T09:31:06.5013950Z The above jobs failed.

L78: 2026-09-11T09:31:06.5034504Z ##[error]Process completed with exit code 1.

每个日志最多扫描32 MiB、60秒下载;优先保留失败用例和异常堆栈,按约12000字符分批取证,再按任务和工作流汇总,逐批证据可展开。不设每轮批数、总时长或总取证字符预算;保留单次请求超时与有限重试,失败部分可续审。相关diff按文件引用选取并分批;未提供文件不能据此判为无关。未执行代码或重跑CI。

@lihenga
lihenga force-pushed the feature/20260825_v0.5.18_release branch from 3090303 to 80c98e7 Compare September 14, 2026 09:44
@hygon-ai-ai-reviewer

Copy link
Copy Markdown

AI CI 失败分析

工作流:PR Test (HCU)
状态:失败

总结

  • Stage A HCU smoke:冒烟测试在导入 sgl_kernel 时失败:找不到架构专用 common_ops(sm100 模式检索为空,预期 SM93),回退 common_ops.so 导入时报 undefined symbol(HIP 符号,见 L225),触发 ImportError,进程以 exit code 1 结束(L228 为汇总信号)。安装阶段 apache-tvm-ffi 被降级为 0.1.9 并与 sglang 声明冲突,是独立的依赖不一致信号。

  • Stage B HCU required (stage-b-required-3):git clone/fetch 阶段网络传输中断:curl 56 SSL_ERROR_SYSCALL(errno 104),fetch-pack 意外断开、过早 EOF、index-pack 输出无效,进程以 exit 128 结束;随后清理脚本因目录缺失报 No such file,exit 127 属连带失败,非独立根因。

  • Stage B HCU required (stage-b-required-0):容器内导入 sgl_kernel 失败:common_ops .so 存在但缺少 HIP 符号 _ZN3c103hip19getCurrentHIPStreamEa(torch 的 c10::hip 符号),且无 SM93 架构专用库(sm100 模式无匹配文件),该导入探针失败后步骤以退出码 1 结束。属安装的 kernel 二进制与运行环境 torch/HIP 不匹配。

  • Stage B HCU required (stage-b-required-2):直接证据可核对:导入sgl_kernel时未找到SM93架构变体,回退加载common_ops .so时报undefined symbol: _ZN3c103hip19getCurrentHIPStreamEa,触发ImportError,进程随后以exit code 1结束(仅为终止信号)。同一步骤另记录pip多处依赖冲突(apache-tvm-ffi被降级为0.1.9等),其与该导入失败的因果关系未证实。

  • Stage B HCU required (stage-b-required-1):本批直接证据:容器内导入 sgl_kernel 失败,common_ops.cpython-310-x86_64-linux-gnu.so 报 undefined symbol _ZN3c103hip19getCurrentHIPStreamEa(c10::hip 符号缺失),sm100 变体无文件、标准导入亦失败;环境上报 Compute capability 93、CUDA version: None。指向内核二进制与运行时 torch/HIP ABI 或变体不匹配。另见 apache-tvm-ffi 被降级至 0.1.9,与 sglang/tilelang 声明需求冲突。

与本次改动的关系

无法确定:不同失败原因与本次改动的关联判断不一致,需要人工核验。

建议处理

  1. 人工核对 PR 构建的 sglang_kernel wheel 与镜像内 torch 的 ABI 匹配:确认 wheel 是否包含 SM93 变体、common_ops.so 依赖的 HIP 符号在当前 torch 变体中是否存在;不匹配时调整 wheel 构建目标或基础镜像组合。属方向性建议,未经执行验证。

  2. 先直接重跑该 job 判断是否瞬时网络中断;若复现,排查 runner 至 git 服务端的网络链路、代理与稳定性,并为 checkout 步骤配置重试参数(如 http.lowSpeedLimit 或重试次数),需人工核验后再实施。

  3. 最小方向:人工核对环境中 torch/HIP 版本与该 sglang_kernel wheel 的构建目标是否匹配(sm100 vs SM93);并在 SKIP_DEPENDENCY_INSTALL=1 时查明为何仍将 apache-tvm-ffi 由 0.1.11 降到 0.1.9(kernels<0.15 触发),先固定相关依赖再重试。

  4. 由具备环境的维护者核对sglang_kernel wheel构建变体(SM93)与运行环境torch/DTK的ABI是否匹配,并排查该.so未定义符号的构建来源;日志提示的pip install --upgrade sglang-kernel仅为可选方向,未经验证。

  5. 人工核对容器内 torch/DTK 版本与 sglang_kernel 轮子构建变体是否匹配,确认是否存在 SM93 对应的 common_ops 产物;将 apache-tvm-ffi 固定回 0.1.11 消除依赖冲突。先在相同镜像复现导入,再决定是否调整 CI 安装逻辑,未执行任何命令。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants