Skip to content
Draft
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
83 changes: 0 additions & 83 deletions benchmarks/multi_node/dsv4_fp4_mi355x_sglang-disagg.sh

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
name: "mi355x-dsv4-disagg-1p1d-dep8-mtp-fixed-seq"

model:
path: "hf:deepseek-ai/DeepSeek-V4-Pro"
container: "sglang-rocm-dsv4-mi355x"
precision: "fp4"

identity:
model: {repo: "deepseek-ai/DeepSeek-V4-Pro"}
container: {image: "lmsysorg/sglang-rocm:v0.5.15.post1-rocm720-mi35x-20260719"}
frameworks:
sglang: "0.5.15.post1.dev20260719+ga03ca46a28"
sglang-router: "0.3.2"
amd-mori: "0.5.15.post1.dev20260719+ga03ca46a28"

slurm: {time_limit: "04:00:00"}

resources:
gpu_type: "mi355x"
gpus_per_node: 8
prefill_nodes: 1
decode_nodes: 1
prefill_workers: 1
decode_workers: 1
gpus_per_prefill: 8
gpus_per_decode: 8

frontend:
type: sglang
enable_multiple_frontends: false
args:
policy: consistent_hashing
dp-aware: true
cache-threshold: 0.3
balance-abs-threshold: 2
balance-rel-threshold: 1.1
disable-circuit-breaker: true
health-failure-threshold: 100
health-check-timeout-secs: 600
health-check-interval-secs: 30

backend:
type: sglang
prefill_environment: &common_environment
HF_HOME: "/hf_hub_cache"
HF_HUB_CACHE: "/hf_hub_cache/hub"
HUGGINGFACE_HUB_CACHE: "/hf_hub_cache/hub"
PYTHONUNBUFFERED: "1"
TORCH_NCCL_BLOCKING_WAIT: "1"
NCCL_BLOCKING_WAIT: "1"
HSA_NO_SCRATCH_RECLAIM: "0"
GPU_MAX_HW_QUEUES: "5"
SGLANG_AITER_MLA_PERSIST: "0"
SGLANG_ENABLE_UNIFIED_RADIX_TREE: "1"
SGLANG_OPT_UNIFIED_CACHE_FREE_OUT_OF_WINDOW_SLOTS: "1"
SGLANG_MORI_DISPATCH_DTYPE: "auto"
SGLANG_MORI_DISPATCH_INTER_KERNEL_SWITCH_THRESHOLD: "4096"
SGLANG_OPT_DEEPGEMM_HC_PRENORM: "false"
SGLANG_USE_AITER: "1"
SGLANG_USE_ROCM700A: "0"
SGLANG_OPT_USE_FUSED_COMPRESS: "true"
SGLANG_HACK_FLASHMLA_BACKEND: "unified_kv_triton"
SGLANG_OPT_FP8_WO_A_GEMM: "false"
SGLANG_OPT_USE_JIT_INDEXER_METADATA: "false"
SGLANG_OPT_USE_TOPK_V2: "false"
SGLANG_OPT_USE_AITER_INDEXER: "true"
SGLANG_OPT_USE_TILELANG_INDEXER: "false"
SGLANG_OPT_USE_TILELANG_MHC_PRE: "false"
SGLANG_OPT_USE_TILELANG_MHC_POST: "false"
SGLANG_FP8_PAGED_MQA_LOGITS_TORCH: "1"
SGLANG_OPT_USE_FUSED_COMPRESS_TRITON: "true"
SGLANG_OPT_USE_MULTI_STREAM_OVERLAP: "false"
SGLANG_ROCM_USE_MULTI_STREAM: "false"
AITER_BF16_FP8_MOE_BOUND: "0"
SGLANG_EAGER_INPUT_NO_COPY: "true"
SGLANG_SHARED_EXPERT_TP1: "1"
SGLANG_DP_SHARED_EXPERT_LOCAL: "1"
SGLANG_DP_USE_GATHERV: "1"
SGLANG_DP_USE_REDUCE_SCATTER: "1"
IBDEVICES: "rdma0,rdma1,rdma2,rdma3,rdma4,rdma5,rdma6,rdma7"
MORI_RDMA_TC: "104"
MORI_IO_SQ_BACKOFF_TIMEOUT_US: "500000"
MORI_IO_QP_MAX_SEND_WR: "32767"
SGLANG_MORI_COMBINE_DTYPE: "auto"
SGLANG_MORI_NUM_MAX_DISPATCH_TOKENS_PER_RANK: "16384"
SGLANG_DISAGGREGATION_BOOTSTRAP_TIMEOUT: "1800"
SGLANG_DISAGGREGATION_WAITING_TIMEOUT: "1800"
# The native router may select a different DPA rank from the rank encoded
# in bootstrap_room. Use SGLang's supported rank-query fallback so decode
# retrieves the actual prefill rank instead of rejecting the KV transfer.
SGLANG_DISAGGREGATION_FORCE_QUERY_PREFILL_DP_RANK: "1"
decode_environment:
<<: *common_environment
SGLANG_MORI_NUM_MAX_DISPATCH_TOKENS_PER_RANK: "1024"
sglang_config:
prefill: &common_server
served-model-name: "deepseek-ai/DeepSeek-V4-Pro"
trust-remote-code: true
tp-size: 8
ep-size: 8
dp-size: 8
enable-dp-attention: true
enable-prefill-delayer: true
ep-dispatch-algorithm: fake
moe-a2a-backend: mori
deepep-mode: normal
moe-dense-tp-size: 1
enable-dp-lm-head: true
watchdog-timeout: 3600
load-balance-method: auto
kv-cache-dtype: fp8_e4m3
attention-backend: dsv4
page-size: 256
swa-full-tokens-ratio: 0.1
disable-shared-experts-fusion: true
tool-call-parser: deepseekv4
reasoning-parser: deepseek-v4
disaggregation-transfer-backend: mori
speculative-algorithm: EAGLE
speculative-eagle-topk: 1
speculative-num-steps: 1
speculative-num-draft-tokens: 2
log-level: info
log-level-http: error
# The DSV4 chat encoder adds three framing tokens to the nominal 8192
# prompt. Match the workflow's 9472-token admission budget so the full
# 1024-token completion fits (8195 + 1024) instead of being rejected.
context-length: 9472
enable-metrics: true
enable-cache-report: true
mem-fraction-static: 0.80
max-running-requests: 1024
chunked-prefill-size: 131072
max-total-tokens: 2097152
disable-radix-cache: true
disable-cuda-graph: true
decode:
<<: *common_server
mem-fraction-static: 0.85
max-total-tokens: null
disable-radix-cache: false
disable-cuda-graph: false
prefill-round-robin-balance: true
cuda-graph-bs: [1, 2, 4, 8, 16, 32, 64, 128]

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

srun_options:
mem: "0"
container-writable: ""
container-remap-root: ""

health_check: {max_attempts: 720, interval_seconds: 5}

benchmark:
type: custom
command: |
set -euo pipefail
result_root="/results/${SLURM_JOB_ID}/fixed-seq"
mkdir -p "${result_root}"
trap 'tar -C /logs -czf "'"${result_root}"'/runtime-logs.tar.gz" . 2>/dev/null || true' EXIT
for concurrency in 256 512; do
python3 /infmax-workspace/utils/bench_serving/benchmark_serving.py \
--backend openai \
--base-url "http://${SRT_FRONTEND_HOST}:${SRT_FRONTEND_PORT}" \
--endpoint /v1/completions \
--model deepseek-ai/DeepSeek-V4-Pro \
--tokenizer deepseek-ai/DeepSeek-V4-Pro \
--trust-remote-code \
--dataset-name random \
--random-input-len 8192 \
--random-output-len 1024 \
--random-range-ratio 1.0 \
--random-num-workers 1 \
--use-chat-template \
--dsv4 \
--num-warmups "$((concurrency * 2))" \
--num-prompts "$((concurrency * 10))" \
--max-concurrency "${concurrency}" \
--request-rate inf \
--ignore-eos \
--disable-tqdm \
--save-result \
--result-dir "${result_root}" \
--result-filename "dsv4-fp4-disagg-mtp1-dep8-isl8192-osl1024-c${concurrency}.json"
done
env:
HF_HOME: /hf_hub_cache
HF_HUB_CACHE: /hf_hub_cache/hub
HUGGINGFACE_HUB_CACHE: /hf_hub_cache/hub
Loading