[None][chore] Stop forcing TRTLLM_DISABLE_KV_CACHE_TRANSFER_OVERLAP=1 in disagg gen_only benchmark - #17535
Conversation
… in disagg gen_only benchmark The disagg SLURM benchmark script set TRTLLM_DISABLE_KV_CACHE_TRANSFER_OVERLAP=1 on every worker whenever benchmark_mode == "gen_only". The flag was introduced with the script in NVIDIA#10712 without a recorded rationale. Setting it makes the generation worker take the blocking request_and_receive_sync KV path instead of leaving transfers in flight (see PyExecutor._uses_async_disagg_gen_transfer), i.e. gen_only was benchmarking a KV transfer path that is not the production default. It is also not required to obtain gen-only decode measurements, and the serialized path has been observed to deadlock in at least one configuration. Only the benchmark script usage is removed. The environment variable and all of its consumers stay, including the test that sets it deliberately to exercise the synchronous path (tests/integration/defs/accuracy/test_disaggregated_serving.py). The equivalent settings in jenkins/scripts/perf/submit.py and jenkins/scripts/perf/local/submit.py are intentionally left alone, since changing them would shift recorded CI perf numbers. Signed-off-by: Zhenhuan Chen <zhenhuanc@nvidia.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (1)
WalkthroughThe benchmark submission script now limits request-queue configuration to generation workers in ChangesBenchmark worker environment
Estimated code review effort: 2 (Simple) | ~10 minutes Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
🧪 Generate unit tests (beta)
Comment |
|
Using DISABLE_OVERLAP avoids repeatedly checking the transfer states, which does introduce some overhead. As for the context worker hang, I suspect there may be an existing bug in PyExecutor. I recall that @reasonsolo encountered and fixed a similar issue before. |
Description
examples/disaggregated/slurm/benchmark/submit.pysetTRTLLM_DISABLE_KV_CACHE_TRANSFER_OVERLAP=1on every worker wheneverbenchmark_mode == "gen_only". This PR removes that.The flag arrived with the script itself in #10712 and no rationale was recorded for it.
Why remove it:
request_and_receive_syncKV path instead of leaving transfers in flight (PyExecutor._uses_async_disagg_gen_transfer,tensorrt_llm/_torch/pyexecutor/py_executor.py). Sogen_onlywas measuring a KV transfer path that is not the production default.TLLM_BENCHMARK_REQ_QUEUES_SIZEis what drives the gen-only fill loop, and that is untouched here.dep32gen_onlyrun hangs with the flag set (CTX worker spins withnum_scheduled_requests=0while KV blocks are never released) and completes normally with it removed. That is an interaction with the fusion, not proof the flag is broken on its own — the same config without the fusion completed fine with the flag set. Listing it as motivation, not as the primary justification.The nested
if role == "GEN"is collapsed into the outer condition since it became the only body.Scope
Only the benchmark script usage is removed. The environment variable and all of its consumers stay:
cpp/tensorrt_llm/common/envUtils.cppcpp/tensorrt_llm/batch_manager/cacheTransceiver.cpptensorrt_llm/_torch/pyexecutor/kv_cache_transceiver.pytensorrt_llm/_torch/pyexecutor/py_executor.pytests/integration/defs/accuracy/test_disaggregated_serving.py—test_gen_only_syncsets it deliberately to exercise the blocking pathjenkins/scripts/perf/submit.pyandjenkins/scripts/perf/local/submit.pyset the same flag forgen_only. They are intentionally left alone here — changing them would shift recorded CI perf numbers, which is a separate decision.Test Coverage
No test changes. This is a SLURM benchmark launcher script that is not exercised by CI.
Known gap: removal has only been validated on a fork carrying an unrelated fusion. A stock
maingen_onlydisagg run with and without the flag has not been done. Reviewers with a disagg SLURM setup, please confirm — happy to hold the PR ifgen_onlyregresses without it.PR Checklist
[JIRA/NVBUG/None][type] summaryDev Engineer Review
TRTLLM_DISABLE_KV_CACHE_TRANSFER_OVERLAPonly from the disaggregated SLURMgen_onlylauncher.TLLM_BENCHMARK_REQ_QUEUES_SIZE.mainSLURMgen_onlyrun with and without the flag remains unvalidated.QA Engineer Review
No test changes.