Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions docs/src/snippets/_agentx.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,8 @@ export const AgentX = ({ data }) => {
const parts = [];
if (b.workers > 1) parts.push(`Start ${b.workers} ${b.role} workers${n > 1 ? `, each spanning ${n} nodes` : b.gpu_pinning ? " across the shared nodes" : ", one per node"}.`);
if (n > 1) parts.push(`Run on every node of a worker with NODE_RANK=0..${n - 1}; ${ROLE_HEAD[b.role]} is that worker's first node.`);
if (b.gpu_pinning) parts.push(`Workers share nodes: pin GPUs per worker with CUDA_VISIBLE_DEVICES = ${b.gpu_pinning.map((w, i) => `worker ${i}: ${w.filter(Boolean).join(" / ") || "all"}`).join(" · ")}.`);
if (b.local_ranks) parts.push(`Workers share nodes: set LOCAL_WORKER_RANK per worker (${b.local_ranks.map((r, i) => `worker ${i}: ${r}`).join(" · ")}); the first lines pick its GPUs and ports.`);
else if (b.gpu_pinning) parts.push(`Workers share nodes: pin GPUs per worker with CUDA_VISIBLE_DEVICES = ${b.gpu_pinning.map((w, i) => `worker ${i}: ${w.filter(Boolean).join(" / ") || "all"}`).join(" · ")}.`);
if (router === "sglang" && workerCount === 1 && b.role === "agg" && n === 1) parts.push("Serves the OpenAI API on port 30000.");
if (router === "dynamo") parts.push("Workers register with Dynamo through etcd; start them after etcd/NATS.");
return parts.join(" ") || `Run on the ${b.role} node.`;
Expand Down Expand Up @@ -214,7 +215,7 @@ export const AgentX = ({ data }) => {
};
const PLACEHOLDERS = {
NODE_RANK: "rank of this node within its worker (0 on the worker's first node)",
LOCAL_WORKER_RANK: "prefill worker index on this node (0 or 1; selects GPUs and distinct ports)",
LOCAL_WORKER_RANK: "this worker's index on its node (selects its GPUs and ports)",
NODE_IP: "IP of the node the command runs on",
ETCD_IP: "node running etcd",
NATS_IP: "node running NATS",
Expand Down
134 changes: 92 additions & 42 deletions docs/src/snippets/agentx/Qwen/qwen3.5.jsx
Original file line number Diff line number Diff line change
@@ -1,37 +1,47 @@
// GENERATED by the sa-infx-cookbook sync scripts — do not edit by hand.
// Launch commands mirrored from SemiAnalysis InferenceX AgentX submissions
// (SemiAnalysisAI/InferenceX main@746150a2786f plus open PRs #3930, #4303, #4333, #4346, #4389), with SA-specific settings removed.
// (SemiAnalysisAI/InferenceX main@39b1aab8c009 plus open PRs #4333, #4346, #4398, #4400, #4401, #4404, #4417), with SA-specific settings removed.
export const agentx = {
"model": "Qwen3.5",
"generatedOn": "2026-10-21",
"generatedOn": "2026-10-22",
"source": {
"repo": "https://github.com/SemiAnalysisAI/InferenceX",
"main": "746150a2786f5cfe6fc474220d4a3335365f14c4",
"main": "39b1aab8c009ac29bafd2dbe75a99c2273dc3ac3",
"prs": {
"4389": {
"run": null,
"sha": "e390de596bf5bae7a561308095ad44cf88b74f51",
"status": "in-progress"
"4333": {
"run": "https://github.com/SemiAnalysisAI/InferenceX/actions/runs/39355392627",
"sha": "02b72dc0bf88eca6f6638300739732d4c7640ddf",
"status": "verified-pr"
},
"4346": {
"run": "https://github.com/SemiAnalysisAI/InferenceX/actions/runs/39534932794",
"sha": "566c6e105131c0cbfd4b668b51cbc8a861336397",
"status": "verified-pr"
},
"4333": {
"run": "https://github.com/SemiAnalysisAI/InferenceX/actions/runs/39355392627",
"sha": "02b72dc0bf88eca6f6638300739732d4c7640ddf",
"status": "verified-pr"
"4398": {
"run": null,
"sha": "4d4e4c7392c088d16ba83b0b9db165b7b752a99e",
"status": "in-progress"
},
"4303": {
"4400": {
"run": null,
"sha": "a0e5be74248f09552f88904f90dc71e8f190a3e9",
"sha": "11358f4843ec3e086014d3bba1a102e400944a59",
"status": "in-progress"
},
"3930": {
"run": "https://github.com/SemiAnalysisAI/InferenceX/actions/runs/39551262792",
"sha": "c093d2052d2e4f6aeaa8162e9e81219f31556fe4",
"status": "verified-pr"
"4401": {
"run": null,
"sha": "cd647ee0072122bbef9f53ed6fe502eb504813ff",
"status": "in-progress"
},
"4404": {
"run": null,
"sha": "316905a060115a9a393f6a464d3646b830a3c74e",
"status": "in-progress"
},
"4417": {
"run": null,
"sha": "ecde73b01707bef866f46711eadada1838fcf032",
"status": "in-progress"
}
}
},
Expand Down Expand Up @@ -112,8 +122,8 @@ export const agentx = {
}
],
"kvMooncake": {
"donor": "dsv4-fp4-gb300-dynamo-sglang-agentic-disagg",
"donorHardware": "gb300",
"donor": "dsv4-fp4-gb200-dynamo-sglang-agentic-disagg",
"donorHardware": "gb200",
"master": {
"dynamo": {
"kind": "mooncake-master",
Expand Down Expand Up @@ -2452,7 +2462,7 @@ export const agentx = {
"recipe": "inferencex-e2e/benchmarks/multi_node/srt-slurm-recipes/qwen3.5/sglang/gb300-fp4/agentx/agg-variants.yaml",
"run": "39355392627",
"pr": "4333",
"comment": "6331658889",
"comment": "6334247978",
"status": "verified-pr"
},
"points": [
Expand Down Expand Up @@ -2950,7 +2960,7 @@ export const agentx = {
"recipe": "inferencex-e2e/benchmarks/multi_node/srt-slurm-recipes/qwen3.5/sglang/gb300-fp4/agentx/agg-variants.yaml",
"run": "39355392627",
"pr": "4333",
"comment": "6331658889",
"comment": "6334247978",
"status": "verified-pr"
},
"points": [
Expand Down Expand Up @@ -3072,7 +3082,13 @@ export const agentx = {
"imageStatus": "ok",
"imageCommit": null,
"submitted": "dynamo",
"setup": [],
"setup": [
{
"kind": "note",
"script": "Placement",
"reason": "Workers share nodes: 1 prefill worker on 1 node, 1 decode worker on 1 node. The prefill and decode workers share a node. The GPU count above counts the GPUs the workers use; reserve whole nodes when planning capacity."
}
],
"disclosures": ["synthetic-acceptance"],
"kv": {
"available": ["none", "hicache", "mooncake"],
Expand All @@ -3094,7 +3110,7 @@ export const agentx = {
"recipe": "inferencex-e2e/benchmarks/multi_node/srt-slurm-recipes/qwen3.5/sglang/gb300-fp4/agentx/disagg-variants.yaml",
"run": "39355392627",
"pr": "4333",
"comment": "6331658889",
"comment": "6334247978",
"status": "verified-pr"
},
"points": [
Expand Down Expand Up @@ -3498,9 +3514,9 @@ export const agentx = {
["--model-path", "nvidia/Qwen3.5-397B-A17B-NVFP4"],
["--served-model-name", "nvidia/Qwen3.5-397B-A17B-NVFP4"],
["--host", "0.0.0.0"],
["--port", "30000"],
["--port", "30032"],
["--disaggregation-mode", "decode"],
["--disaggregation-bootstrap-port", "8998"],
["--disaggregation-bootstrap-port", "8999"],
["--request-plane", "tcp"],
["--attention-backend", "trtllm_mha"],
["--chunked-prefill-size", "4096"],
Expand Down Expand Up @@ -3585,7 +3601,7 @@ export const agentx = {
"cmd": "python3 -m sglang_router.launch_router",
"env": {},
"args": [
["--decode", "http://$DECODE_0_HEAD_IP:30000"],
["--decode", "http://$DECODE_0_HEAD_IP:30032"],
["--prefill", "http://$PREFILL_0_HEAD_IP:30000", "8998"],
["--pd-disaggregation"],
["--host", "0.0.0.0"],
Expand All @@ -3609,7 +3625,13 @@ export const agentx = {
"imageStatus": "ok",
"imageCommit": null,
"submitted": "dynamo",
"setup": [],
"setup": [
{
"kind": "note",
"script": "Placement",
"reason": "Workers share nodes: 1 prefill worker on 1 node, 2 decode workers on 1 node. LOCAL_WORKER_RANK gives each worker on a node its own GPUs and ports. The GPU count above counts the GPUs the workers use; reserve whole nodes when planning capacity."
}
],
"disclosures": ["synthetic-acceptance"],
"kv": {
"available": ["none", "hicache", "mooncake"],
Expand All @@ -3631,7 +3653,7 @@ export const agentx = {
"recipe": "inferencex-e2e/benchmarks/multi_node/srt-slurm-recipes/qwen3.5/sglang/gb300-fp4/agentx/disagg-variants.yaml",
"run": "39355392627",
"pr": "4333",
"comment": "6331658889",
"comment": "6334247978",
"status": "verified-pr"
},
"points": [
Expand Down Expand Up @@ -3703,8 +3725,12 @@ export const agentx = {
["0,1"],
["2,3"]
],
"local_ranks": [0, 1],
"preamble": ["# LOCAL_WORKER_RANK is this worker's index on its node (0 or 1).", "case \"$LOCAL_WORKER_RANK\" in 0) export CUDA_VISIBLE_DEVICES=0,1 ;; 1) export CUDA_VISIBLE_DEVICES=2,3 ;; *) echo \"Set LOCAL_WORKER_RANK to 0 or 1\" >&2; exit 1 ;; esac", "PORT=$((30000 + 32 * LOCAL_WORKER_RANK))", "BOOTSTRAP_PORT=$((8998 + LOCAL_WORKER_RANK))"],
"diff": {
"args": {
"--port": ["$PORT"],
"--disaggregation-bootstrap-port": ["$BOOTSTRAP_PORT"],
"--cuda-graph-max-bs-decode": ["3"],
"--max-running-requests": ["3"],
"--pp-max-micro-batch-size": ["3"],
Expand Down Expand Up @@ -3761,7 +3787,7 @@ export const agentx = {
"cmd": "python3 -m sglang_router.launch_router",
"env": {},
"args": [
["--decode", "http://$DECODE_1_HEAD_IP:30000"],
["--decode", "http://$DECODE_1_HEAD_IP:30032"],
["--decode", "http://$DECODE_0_HEAD_IP:30000"],
["--prefill", "http://$PREFILL_0_HEAD_IP:30000", "8998"],
["--pd-disaggregation"],
Expand Down Expand Up @@ -3808,7 +3834,7 @@ export const agentx = {
"recipe": "inferencex-e2e/benchmarks/multi_node/srt-slurm-recipes/qwen3.5/sglang/gb300-fp4/agentx/disagg-variants.yaml",
"run": "39355392627",
"pr": "4333",
"comment": "6331658889",
"comment": "6334247978",
"status": "verified-pr"
},
"points": [
Expand Down Expand Up @@ -4092,7 +4118,7 @@ export const agentx = {
"recipe": "inferencex-e2e/benchmarks/multi_node/srt-slurm-recipes/qwen3.5/sglang/gb300-fp4/agentx/disagg-variants.yaml",
"run": "39355392627",
"pr": "4333",
"comment": "6331658889",
"comment": "6334247978",
"status": "verified-pr"
},
"points": [
Expand Down Expand Up @@ -4360,7 +4386,7 @@ export const agentx = {
"recipe": "inferencex-e2e/benchmarks/multi_node/srt-slurm-recipes/qwen3.5/sglang/gb300-fp4/agentx/disagg-variants.yaml",
"run": "39355392627",
"pr": "4333",
"comment": "6331658889",
"comment": "6334247978",
"status": "verified-pr"
},
"points": [
Expand Down Expand Up @@ -5963,7 +5989,13 @@ export const agentx = {
"imageStatus": "ok",
"imageCommit": null,
"submitted": "dynamo",
"setup": [],
"setup": [
{
"kind": "note",
"script": "Placement",
"reason": "Workers share nodes: 1 prefill worker on 1 node, 1 decode worker on 1 node. The prefill and decode workers share a node. The GPU count above counts the GPUs the workers use; reserve whole nodes when planning capacity."
}
],
"disclosures": ["synthetic-acceptance"],
"kv": {
"available": ["none", "hicache", "mooncake"],
Expand Down Expand Up @@ -6130,7 +6162,7 @@ export const agentx = {
["--model-path", "Qwen/Qwen3.5-397B-A17B-FP8"],
["--served-model-name", "Qwen/Qwen3.5-397B-A17B-FP8"],
["--host", "0.0.0.0"],
["--port", "30000"],
["--port", "30032"],
["--disaggregation-mode", "decode"],
["--request-plane", "tcp"],
["--attention-backend", "trtllm_mha"],
Expand Down Expand Up @@ -6208,7 +6240,7 @@ export const agentx = {
"cmd": "python3 -m sglang_router.launch_router",
"env": {},
"args": [
["--decode", "http://$DECODE_0_HEAD_IP:30000"],
["--decode", "http://$DECODE_0_HEAD_IP:30032"],
["--prefill", "http://$PREFILL_0_HEAD_IP:30000", "8998"],
["--pd-disaggregation"],
["--host", "0.0.0.0"],
Expand Down Expand Up @@ -6563,7 +6595,13 @@ export const agentx = {
"imageStatus": "ok",
"imageCommit": null,
"submitted": "dynamo",
"setup": [],
"setup": [
{
"kind": "note",
"script": "Placement",
"reason": "Workers share nodes: 1 prefill worker on 1 node, 1 decode worker on 1 node. The prefill and decode workers share a node. The GPU count above counts the GPUs the workers use; reserve whole nodes when planning capacity."
}
],
"disclosures": ["synthetic-acceptance"],
"kv": {
"available": ["none", "hicache", "mooncake"],
Expand Down Expand Up @@ -6817,7 +6855,7 @@ export const agentx = {
"cmd": "python3 -m sglang_router.launch_router",
"env": {},
"args": [
["--decode", "http://$DECODE_0_HEAD_IP:30000"],
["--decode", "http://$DECODE_0_HEAD_IP:30032"],
["--prefill", "http://$PREFILL_0_HEAD_IP:30000", "8998"],
["--pd-disaggregation"],
["--host", "0.0.0.0"],
Expand All @@ -6841,7 +6879,13 @@ export const agentx = {
"imageStatus": "ok",
"imageCommit": null,
"submitted": "dynamo",
"setup": [],
"setup": [
{
"kind": "note",
"script": "Placement",
"reason": "Workers share nodes: 1 prefill worker on 1 node, 1 decode worker on 1 node. The prefill and decode workers share a node. The GPU count above counts the GPUs the workers use; reserve whole nodes when planning capacity."
}
],
"disclosures": ["synthetic-acceptance"],
"kv": {
"available": ["none", "hicache", "mooncake"],
Expand Down Expand Up @@ -6963,7 +7007,7 @@ export const agentx = {
"cmd": "python3 -m sglang_router.launch_router",
"env": {},
"args": [
["--decode", "http://$DECODE_0_HEAD_IP:30000"],
["--decode", "http://$DECODE_0_HEAD_IP:30032"],
["--prefill", "http://$PREFILL_0_HEAD_IP:30000", "8998"],
["--pd-disaggregation"],
["--host", "0.0.0.0"],
Expand Down Expand Up @@ -9810,7 +9854,13 @@ export const agentx = {
"imageStatus": "ok",
"imageCommit": null,
"submitted": "dynamo",
"setup": [],
"setup": [
{
"kind": "note",
"script": "Placement",
"reason": "Workers share nodes: 1 prefill worker on 1 node, 1 decode worker on 1 node. The prefill and decode workers share a node. The GPU count above counts the GPUs the workers use; reserve whole nodes when planning capacity."
}
],
"disclosures": ["synthetic-acceptance"],
"kv": {
"available": ["none", "hicache", "mooncake"],
Expand Down Expand Up @@ -10129,7 +10179,7 @@ export const agentx = {
["--model-path", "Qwen/Qwen3.5-397B-A17B-FP8"],
["--served-model-name", "Qwen/Qwen3.5-397B-A17B-FP8"],
["--host", "0.0.0.0"],
["--port", "30000"],
["--port", "30032"],
["--disaggregation-mode", "decode"],
["--request-plane", "tcp"],
["--attention-backend", "trtllm_mha"],
Expand Down Expand Up @@ -10204,7 +10254,7 @@ export const agentx = {
"cmd": "python3 -m sglang_router.launch_router",
"env": {},
"args": [
["--decode", "http://$DECODE_0_HEAD_IP:30000"],
["--decode", "http://$DECODE_0_HEAD_IP:30032"],
["--prefill", "http://$PREFILL_0_HEAD_IP:30000", "8998"],
["--pd-disaggregation"],
["--host", "0.0.0.0"],
Expand Down
Loading
Loading