-
Notifications
You must be signed in to change notification settings - Fork 694
docs: Adds Qwen3-235B-A22B-FP8 recipes for agg and disagg #4179
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Signed-off-by: Elnifio <[email protected]>
|
👋 Hi Elnifio! Thank you for contributing to ai-dynamo/dynamo. Just a reminder: The 🚀 |
Signed-off-by: Elnifio <[email protected]>
WalkthroughIntroduces Kubernetes manifests for deploying two Qwen model variants with disaggregated and aggregated inference strategies. Adds PersistentVolumeClaims for model caching, model download Jobs, DynamoGraphDeployment configurations with TensorRT-LLM backends, and aiperf benchmarking Jobs supporting both parallel prefill/decode and single-node inference patterns. Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~50 minutes
Poem
Pre-merge checks❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 6
♻️ Duplicate comments (2)
recipes/qwen3-235b-a22b-instruct-2507-fp8/model-cache/model-download.yaml (1)
15-44: Add securityContext to restrict privilege escalation and enforce non-root execution.Same security concern as the model-download job in
recipes/qwen3-235b-a22b/model-cache/model-download.yaml. The container runs as root without explicit restrictions on privilege escalation (CKV_K8S_20, CKV_K8S_23).Apply the same securityContext fix:
spec: restartPolicy: Never containers: - name: model-download image: python:3.10-slim command: ["sh", "-c"] + securityContext: + allowPrivilegeEscalation: false + runAsNonRoot: true + runAsUser: 1000 envFrom: - secretRef: name: hf-token-secretrecipes/qwen3-235b-a22b/trtllm/agg/perf.yaml (1)
141-142: Eliminate privileged mode and run as non-root; justify if strictly necessary.Same critical security concern as the disaggregated perf Job (file
recipes/qwen3-235b-a22b-instruct-2507-fp8/trtllm/disagg/perf.yaml). The container runs withprivileged: true(CKV_K8S_16 – HIGH), which is a significant security risk.Apply the same fix:
securityContext: - privileged: true + allowPrivilegeEscalation: false + runAsNonRoot: true + runAsUser: 1000 + capabilities: + drop: + - ALLVerify aiperf functionality with these restrictions and adjust capabilities only if specific syscalls fail.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (8)
recipes/qwen3-235b-a22b-instruct-2507-fp8/model-cache/model-cache.yaml(1 hunks)recipes/qwen3-235b-a22b-instruct-2507-fp8/model-cache/model-download.yaml(1 hunks)recipes/qwen3-235b-a22b-instruct-2507-fp8/trtllm/disagg/deploy.yaml(1 hunks)recipes/qwen3-235b-a22b-instruct-2507-fp8/trtllm/disagg/perf.yaml(1 hunks)recipes/qwen3-235b-a22b/model-cache/model-cache.yaml(1 hunks)recipes/qwen3-235b-a22b/model-cache/model-download.yaml(1 hunks)recipes/qwen3-235b-a22b/trtllm/agg/deploy.yaml(1 hunks)recipes/qwen3-235b-a22b/trtllm/agg/perf.yaml(1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: biswapanda
Repo: ai-dynamo/dynamo PR: 3858
File: recipes/deepseek-r1/model-cache/model-download.yaml:18-32
Timestamp: 2025-10-24T04:21:08.751Z
Learning: In the recipes directory structure, model-specific recipes (e.g., recipes/deepseek-r1/, recipes/llama-3-70b/) contain hardcoded model names and revisions in their Kubernetes manifests (like model-download.yaml). Each recipe directory is deployment-specific and self-contained, so hardcoding model-specific values is the intended design pattern.
📚 Learning: 2025-10-24T04:21:08.751Z
Learnt from: biswapanda
Repo: ai-dynamo/dynamo PR: 3858
File: recipes/deepseek-r1/model-cache/model-download.yaml:18-32
Timestamp: 2025-10-24T04:21:08.751Z
Learning: In the recipes directory structure, model-specific recipes (e.g., recipes/deepseek-r1/, recipes/llama-3-70b/) contain hardcoded model names and revisions in their Kubernetes manifests (like model-download.yaml). Each recipe directory is deployment-specific and self-contained, so hardcoding model-specific values is the intended design pattern.
Applied to files:
recipes/qwen3-235b-a22b/model-cache/model-cache.yamlrecipes/qwen3-235b-a22b/model-cache/model-download.yamlrecipes/qwen3-235b-a22b-instruct-2507-fp8/model-cache/model-cache.yamlrecipes/qwen3-235b-a22b-instruct-2507-fp8/model-cache/model-download.yaml
📚 Learning: 2025-09-04T19:03:06.643Z
Learnt from: biswapanda
Repo: ai-dynamo/dynamo PR: 2872
File: examples/multimodal/deploy/agg_qwen.yaml:53-60
Timestamp: 2025-09-04T19:03:06.643Z
Learning: In the dynamo repository, Kubernetes Custom Resources use `gpu: "1"` format for GPU resource limits and requests, not the standard Kubernetes `nvidia.com/gpu: 1` format. This applies to DynamoGraphDeployment resources and other dynamo CRs.
Applied to files:
recipes/qwen3-235b-a22b-instruct-2507-fp8/trtllm/disagg/deploy.yamlrecipes/qwen3-235b-a22b/trtllm/agg/deploy.yaml
🪛 Checkov (3.2.334)
recipes/qwen3-235b-a22b/model-cache/model-download.yaml
[medium] 3-44: Containers should not run with allowPrivilegeEscalation
(CKV_K8S_20)
[medium] 3-44: Minimize the admission of root containers
(CKV_K8S_23)
recipes/qwen3-235b-a22b-instruct-2507-fp8/trtllm/disagg/perf.yaml
[medium] 3-153: Containers should not run with allowPrivilegeEscalation
(CKV_K8S_20)
[high] 3-153: Container should not be privileged
(CKV_K8S_16)
[medium] 3-153: Minimize the admission of root containers
(CKV_K8S_23)
recipes/qwen3-235b-a22b-instruct-2507-fp8/model-cache/model-download.yaml
[medium] 3-44: Containers should not run with allowPrivilegeEscalation
(CKV_K8S_20)
[medium] 3-44: Minimize the admission of root containers
(CKV_K8S_23)
recipes/qwen3-235b-a22b/trtllm/agg/perf.yaml
[medium] 3-153: Containers should not run with allowPrivilegeEscalation
(CKV_K8S_20)
[high] 3-153: Container should not be privileged
(CKV_K8S_16)
[medium] 3-153: Minimize the admission of root containers
(CKV_K8S_23)
🪛 GitHub Actions: Pre Merge Validation of (ai-dynamo/dynamo/refs/pull/4179/merge) by Elnifio.
recipes/qwen3-235b-a22b-instruct-2507-fp8/trtllm/disagg/deploy.yaml
[error] 1-1: Trailing whitespace detected and fixed by pre-commit hook (trailing-whitespace) during pre-commit run.
recipes/qwen3-235b-a22b/trtllm/agg/deploy.yaml
[error] 1-1: Trailing whitespace detected and fixed by pre-commit hook (trailing-whitespace) during pre-commit run.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build and Test - dynamo
🔇 Additional comments (1)
recipes/qwen3-235b-a22b-instruct-2507-fp8/trtllm/disagg/deploy.yaml (1)
8-59: Engine configuration strategy for disaggregation is well-tuned.The prefill.yaml and decode.yaml configs show thoughtful tuning for the disaggregated inference pattern:
- Prefill worker: Low batch size (2), tensor parallelism (2), optimized for throughput of short batches
- Decode worker: Higher batch size (512), tensor parallelism (4), optimized for sustained token generation
GPU allocation aligns with workload characteristics. The fp8 dtype and memory settings are appropriate for the Qwen3-235B model size.
Signed-off-by: Elnifio <[email protected]>
1095b8f to
d289661
Compare
Signed-off-by: Elnifio <[email protected]>
Signed-off-by: Elnifio <[email protected]>
Signed-off-by: Elnifio <[email protected]>
Signed-off-by: Elnifio <[email protected]>
Signed-off-by: Elnifio <[email protected]>
|
/ok to test 684ab61 |
Signed-off-by: Elnifio <[email protected]>
Signed-off-by: Elnifio <[email protected]> Signed-off-by: Daiyaan <[email protected]>
…) (#4326) Signed-off-by: Elnifio <[email protected]>
…dynamo#4179) Signed-off-by: Elnifio <[email protected]> Signed-off-by: Joe Chandler <[email protected]>
Overview:
Details:
Where should the reviewer start?
Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to)
Summary by CodeRabbit