Skip to content
Open
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
name: "svf-vllm-disagg-gb300-1p1d-dep8-dep32-c388-mtp-agentic"

# GB300 AgentX MTP3 topology: one DEP8 prefill worker feeds one
# DEP32 decode worker at concurrency 388. Decode consumes P/D KV through NIXL
# and MooncakeStore but skips Mooncake prefix lookup to avoid CPU overhead.

model:
path: "deepseek-v4-pro"
container: "vllm/vllm-openai:nightly-dev-arm64-cu13.0.1-426e59f"
precision: "fp4"

identity:
model:
repo: "deepseek-ai/DeepSeek-V4-Pro"
container:
image: "vllm/vllm-openai:nightly-dev-arm64-cu13.0.1-426e59f"
frameworks:
dynamo: "1.3.0.dev20260720"

dynamo:
wheel: "1.3.0.dev20260720"
install: true

environment:
# Mooncake prefix-block hashes must match across processes and nodes.
PYTHONHASHSEED: "0"

setup_script: vllm-container-deps.sh

slurm:
time_limit: "8:00:00"

health_check:
max_attempts: 2160
interval_seconds: 10

resources:
gpu_type: "gb300"
gpus_per_node: 4
het_jobs: false
spread_workers: false
prefill_nodes: 2
decode_nodes: 8
prefill_workers: 1
decode_workers: 1
gpus_per_prefill: 8
gpus_per_decode: 32

infra:
etcd_nats_dedicated_node: false
nats_max_payload_mb: 32

frontend:
type: dynamo
enable_multiple_frontends: false
args:
router-mode: "random"
router-session-affinity-ttl-secs: 900
env:
DYN_ROUTER_ACTIVE_REQUEST_EXPIRY_SECS: "3600"
DYN_TCP_CHANNEL_BUFFER: "128"
DYN_TCP_REQUEST_TIMEOUT: "60"

backend:
type: vllm
connector: null
dp_launch_mode: per_node
mooncake_kv_store:
store_config:
metadata_server: "P2PHANDSHAKE"
global_segment_size: "180GB"
local_buffer_size: "4GB"
protocol: "rdma"
device_name: "mlx5_0,mlx5_1,mlx5_2,mlx5_3"
mode: "embedded"
enable_offload: false
vllm_config:
prefill:
kv-transfer-config: '{"kv_connector":"MultiConnector","kv_role":"kv_both","kv_connector_extra_config":{"connectors":[{"kv_connector":"NixlConnector","kv_role":"kv_both","kv_load_failure_policy":"fail","kv_buffer_device":"cuda","kv_connector_extra_config":{"enforce_handshake_compat":false,"enable_cross_layers_blocks":false}},{"kv_connector":"MooncakeStoreConnector","kv_role":"kv_both","kv_connector_extra_config":{"load_async":true,"lookup_async":true,"enable_cross_layers_blocks":false,"enable_offload":false}}]}}'
served-model-name: "deepseek-ai/DeepSeek-V4-Pro"
kv-cache-dtype: "fp8"
tensor-parallel-size: 1
pipeline-parallel-size: 1
data-parallel-size: 8
data-parallel-rpc-port: 13345
enable-cumem-allocator: true
enable-expert-parallel: true
enable-ep-weight-filter: true
max-model-len: 1048576
max-num-seqs: 256
max-num-batched-tokens: 16384
long-prefill-token-threshold: 1024
trust-remote-code: true
no-enable-flashinfer-autotune: true
block-size: 256
gpu-memory-utilization: 0.90
no-disable-hybrid-kv-cache-manager: true
tokenizer-mode: "deepseek_v4"
attention-config: '{"backend":"FLASHINFER_MLA_SPARSE_DSV4","use_prefill_query_quantization":true,"use_fp4_indexer_cache":true}'
speculative-config: '{"method":"mtp","num_speculative_tokens":3}'
moe-backend: "deep_gemm_amxf4_mega_moe"
numa-bind: true
numa-bind-nodes: [0, 0, 1, 1]
decode:
kv-transfer-config: '{"kv_connector":"MultiConnector","kv_role":"kv_consumer","kv_connector_extra_config":{"connectors":[{"kv_connector":"NixlConnector","kv_role":"kv_consumer","kv_load_failure_policy":"fail","kv_buffer_device":"cuda","kv_connector_extra_config":{"enforce_handshake_compat":false,"enable_cross_layers_blocks":false}},{"kv_connector":"MooncakeStoreConnector","kv_role":"kv_consumer","kv_connector_extra_config":{"load_async":true,"lookup_async":false,"enable_lookup":false,"enable_cross_layers_blocks":false,"enable_offload":false}}]}}'
served-model-name: "deepseek-ai/DeepSeek-V4-Pro"
kv-cache-dtype: "fp8"
tensor-parallel-size: 1
pipeline-parallel-size: 1
data-parallel-size: 32
data-parallel-rpc-port: 13345
enable-cumem-allocator: true
enable-expert-parallel: true
enable-ep-weight-filter: true
max-model-len: 1048576
max-num-seqs: 4
max-num-batched-tokens: 16
trust-remote-code: true
no-enable-flashinfer-autotune: true
block-size: 256
compilation-config: '{"cudagraph_mode":"FULL_DECODE_ONLY","mode":0}'
max-cudagraph-capture-size: 16
gpu-memory-utilization: 0.90
no-disable-hybrid-kv-cache-manager: true
tokenizer-mode: "deepseek_v4"
attention-config: '{"backend":"FLASHINFER_MLA_SPARSE_DSV4","use_prefill_query_quantization":true,"use_fp4_indexer_cache":true}'
speculative-config: '{"method":"mtp","num_speculative_tokens":3}'
moe-backend: "deep_gemm_amxf4_mega_moe"
numa-bind: true
numa-bind-nodes: [0, 0, 1, 1]
prefill_environment:
HF_HUB_CACHE: "/hf_hub_cache"
HUGGINGFACE_HUB_CACHE: "/hf_hub_cache"
TRANSFORMERS_CACHE: "/hf_hub_cache"
VLLM_ENGINE_READY_TIMEOUT_S: "3600"
VLLM_RPC_TIMEOUT: "600000"
VLLM_LOG_STATS_INTERVAL: "1"
VLLM_V2_WARMUP_MAX_NUM_SEQS: "20"
VLLM_SERVER_DEV_MODE: "1"
VLLM_USE_V2_MODEL_RUNNER: "1"
VLLM_MOONCAKE_LOAD_RECV_THREADS: "20"
VLLM_MOONCAKE_STORE_SEND_THREADS: "8"
VLLM_ALLREDUCE_USE_SYMM_MEM: "0"
UCX_MEMTYPE_CACHE: "n"
UCX_NET_DEVICES: "mlx5_0:1,mlx5_1:1,mlx5_2:1,mlx5_3:1"
UCX_TLS: "rc,cuda_copy"
NCCL_CUMEM_ENABLE: "1"
NCCL_MNNVL_ENABLE: "1"
NCCL_NVLS_ENABLE: "1"
VLLM_RANDOMIZE_DP_DUMMY_INPUTS: "1"
NCCL_IB_HCA: "mlx5_0,mlx5_1,mlx5_2,mlx5_3"
VLLM_PREFIX_CACHE_RETENTION_INTERVAL: "32768"
VLLM_USE_BREAKABLE_CUDAGRAPH: "0"
VLLM_CONNECTOR_PREFETCH_DEPTH: "8"
VLLM_DSV4_MEGA_FP8_COMBINE: "1"
DG_JIT_CACHE_DIR: "/tmp/dg-cache-dsv4-gb300-1p1d-prefill-{job_id}"
MC_ENABLE_DEST_DEVICE_AFFINITY: "1"
MC_STORE_CLIENT_METRIC: "1"
MC_STORE_CLIENT_METRIC_INTERVAL: "5"
MC_TE_METRIC: "0"
decode_environment:
HF_HUB_CACHE: "/hf_hub_cache"
HUGGINGFACE_HUB_CACHE: "/hf_hub_cache"
TRANSFORMERS_CACHE: "/hf_hub_cache"
VLLM_ENGINE_READY_TIMEOUT_S: "3600"
VLLM_RPC_TIMEOUT: "600000"
VLLM_LOG_STATS_INTERVAL: "1"
VLLM_V2_WARMUP_MAX_NUM_SEQS: "20"
VLLM_SERVER_DEV_MODE: "1"
VLLM_USE_V2_MODEL_RUNNER: "1"
VLLM_MOONCAKE_LOAD_RECV_THREADS: "20"
VLLM_ALLREDUCE_USE_SYMM_MEM: "0"
UCX_MEMTYPE_CACHE: "n"
UCX_NET_DEVICES: "mlx5_0:1,mlx5_1:1,mlx5_2:1,mlx5_3:1"
UCX_TLS: "rc,cuda_copy"
NCCL_CUMEM_ENABLE: "1"
NCCL_MNNVL_ENABLE: "1"
NCCL_NVLS_ENABLE: "1"
VLLM_RANDOMIZE_DP_DUMMY_INPUTS: "1"
NCCL_IB_HCA: "mlx5_0,mlx5_1,mlx5_2,mlx5_3"
VLLM_PREFIX_CACHE_RETENTION_INTERVAL: "32768"
VLLM_DSV4_MEGA_FP8_COMBINE: "1"
DG_JIT_CACHE_DIR: "/tmp/dg-cache-dsv4-gb300-1p1d-dep32-decode-{job_id}"
MC_ENABLE_DEST_DEVICE_AFFINITY: "1"
MC_STORE_CLIENT_METRIC: "1"
MC_STORE_CLIENT_METRIC_INTERVAL: "5"
MC_TE_METRIC: "0"

sbatch_directives:
cpus-per-task: "72"
mem: "0"

srun_options:
container-remap-root: ""

benchmark:
type: custom
command: bash /infmax-workspace/benchmarks/multi_node/agentic_srt.sh
env:
INFMAX_CONTAINER_WORKSPACE: "/infmax-workspace"
RESULT_DIR: "/logs/agentic"
PORT: "8000"
IS_MULTINODE: "true"
AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: "0"
AIPERF_HTTP_X_DYNAMO_SESSION_ID_FROM_CORRELATION_ID: "true"
# Avoid concurrent readers observing a mismatched mmap data/index pair.
AIPERF_DATASET_MMAP_CACHE_ENABLED: "false"
AIPERF_DATASET_MMAP_CACHE_DIR: "/aiperf_mmap_cache"
HF_HUB_CACHE: "/hf_hub_cache"
WEKA_LOADER_OVERRIDE: "semianalysis_cc_traces_weka_062126"
Loading
Loading