fix(thunderagent): support topology-only wrapped backends - #12175
Conversation
WalkthroughChangesEndpoint type support
Estimated code review effort: 2 (Simple) | ~10 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@components/src/dynamo/common/configuration/groups/runtime_args.py`:
- Around line 256-259: Update the argument help text for the runtime
endpoint-type option to explicitly state that “none” must be used by itself and
cannot be combined with “chat” or “completions”; keep the existing option
descriptions unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 00e9f79c-e8ff-4b91-b371-c4c721ab246f
📒 Files selected for processing (4)
components/src/dynamo/common/configuration/groups/runtime_args.pycomponents/src/dynamo/common/utils/endpoint_types.pycomponents/src/dynamo/common/utils/tests/test_endpoint_types.pycomponents/src/dynamo/thunderagent_router/README.md
|
Hi @ishandhanani, this PR addresses the The root cause is that the ThunderAgent-wrapped vLLM backend can advertise the same public This PR adds explicit I validated the behavior on AKS with Dynamo Platform v1.3.0:
So this does not close all of #12016, but it specifically fixes the |
Signed-off-by: cpakkamisaac-sae <cpakkamisaac@nvidia.com>
0a51fd6 to
fd5fcf7
Compare
|
/ok-to-test fd5fcf7 |
Overview:
This PR addresses the
session-finalGPU-forwarding issue described in #12016 for ThunderAgent Kubernetes deployments.ThunderAgent already short-circuits final-session requests when they reach
dynamo.thunderagent_router, but the K8s demo can bypass ThunderAgent when the wrapped backend advertises the same public chat/completions model surface. This PR adds an explicit topology-only endpoint mode so wrapped backends can stay discoverable for routing/readiness without being selected directly by the frontend.Details:
--endpoint-types nonesupport, parsed asModelType.Empty, for topology-only backend registration.chat,noneornone,completions.nonefor workers fronted by another Dynamo service.--endpoint-types nonefor ThunderAgent-wrapped workers.none, invalid mixes, invalid endpoint names, and empty input.Validation performed:
python3 -m py_compile components/src/dynamo/common/utils/endpoint_types.py components/src/dynamo/common/configuration/groups/runtime_args.py components/src/dynamo/common/utils/tests/test_endpoint_types.pygit diff --checkuv run --no-project --with ruff ruff check components/src/dynamo/common/utils/endpoint_types.py components/src/dynamo/common/utils/tests/test_endpoint_types.pyModelTypeforchat,completions,chat,completions,none, invalidnonecombinations, and empty inputs.dynamo-platform-1.3.0, app version1.3.0) using the existingaks-dynamo-thunderagentdeployment andQwen/Qwen3-0.6BonStandard_NC4as_T4_v3.x-dynamo-session-final: truerequests generated tokens; vLLM logs showed the final request hitcomponent=backend,endpoint=generate.--endpoint-types none: backendDynamoWorkerMetadataadvertisedmodel_type: "", while ThunderAgent advertisedmodel_type: Chat | Completions./v1/modelsreturnedQwen/Qwen3-0.6B, a normal chat request returned 200 with generated tokens, and 8 of 8x-dynamo-session-final: truerequests returned the empty ThunderAgent short-circuit response without backend generation.Where should the reviewer start?
Start with
components/src/dynamo/common/utils/endpoint_types.pyfor the new parser behavior, thencomponents/src/dynamo/common/utils/tests/test_endpoint_types.pyfor coverage. The ThunderAgent deployment guidance is incomponents/src/dynamo/thunderagent_router/README.md.Related Issues
🔗 This PR is linked to an issue:
This specifically addresses the
session-finalGPU-forwarding/bypass item in #12016. It does not close the full tracking issue, which also includes observability and DGDR items.Summary by CodeRabbit
New Features
noneendpoint type for topology-only workers.nonefrom being combined with chat or completions endpoints.Documentation
Tests