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
104 changes: 104 additions & 0 deletions .github/configs/nvidia-master.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2513,6 +2513,110 @@ gptoss-fp4-h100-vllm:
- { tp: 4, conc-start: 4, conc-end: 64 }
- { tp: 8, conc-start: 4, conc-end: 16 }

dsr1-fp8-h100-dynamo-sglang:
image: lmsysorg/sglang:v0.5.8-cu130
model: deepseek-ai/DeepSeek-R1-0528
model-prefix: dsr1
runner: h100-multinode-slurm
precision: fp8
framework: dynamo-sglang
multinode: true
disagg: true
seq-len-configs:
- isl: 1024
osl: 1024
search-space:
# Max throughput TEP (1 prefill, 2 decode)
- conc-list: [1, 2, 4, 8, 16, 32, 64, 128]
prefill:
num-worker: 1
tp: 16
ep: 1
dp-attn: false
additional-settings:
- "CONFIG_FILE=recipes/h100/1k1k/stp/h100-fp8-1p2d-max-tp.yaml"
decode:
num-worker: 2
tp: 16
ep: 1
dp-attn: false
# Max throughput DEP (1 prefill, 1 decode, dp-attention)
- conc-list: [1, 2, 4, 8, 16, 32, 64]
prefill:
num-worker: 1
tp: 16
ep: 1
dp-attn: false
additional-settings:
- "CONFIG_FILE=recipes/h100/1k1k/stp/h100-fp8-1p1d-max-dep.yaml"
decode:
num-worker: 1
tp: 16
ep: 16
dp-attn: true
- isl: 1024
osl: 8192
search-space:
# Max throughput TEP (1 prefill, 2 decode)
- conc-list: [1, 2, 4, 8, 16, 32]
prefill:
num-worker: 1
tp: 16
ep: 1
dp-attn: false
additional-settings:
- "CONFIG_FILE=recipes/h100/1k8k/stp/h100-fp8-1p2d-max-tp.yaml"
decode:
num-worker: 2
tp: 16
ep: 1
dp-attn: false
# Max throughput DEP (1 prefill, 1 decode, dp-attention)
- conc-list: [1, 2, 4, 8]
prefill:
num-worker: 1
tp: 16
ep: 1
dp-attn: false
additional-settings:
- "CONFIG_FILE=recipes/h100/1k8k/stp/h100-fp8-1p1d-max-dep.yaml"
decode:
num-worker: 1
tp: 16
ep: 16
dp-attn: true
- isl: 8192
osl: 1024
search-space:
# Max throughput TEP (1 prefill, 1 decode)
- conc-list: [1, 2, 4, 8, 16, 32, 64, 128]
prefill:
num-worker: 1
tp: 16
ep: 1
dp-attn: false
additional-settings:
- "CONFIG_FILE=recipes/h100/8k1k/stp/h100-fp8-1p1d-max-tp.yaml"
decode:
num-worker: 1
tp: 16
ep: 1
dp-attn: false
# Max throughput DEP (1 prefill, 1 decode, dp-attention)
- conc-list: [1, 2, 4, 8, 16, 32, 64]
prefill:
num-worker: 1
tp: 16
ep: 1
dp-attn: false
additional-settings:
- "CONFIG_FILE=recipes/h100/8k1k/stp/h100-fp8-1p1d-max-dep.yaml"
decode:
num-worker: 1
tp: 16
ep: 16
dp-attn: true

gptoss-fp4-h200-trt:
image: nvcr.io#nvidia/tensorrt-llm/release:gpt-oss-dev
model: openai/gpt-oss-120b
Expand Down
57 changes: 42 additions & 15 deletions runners/launch_h100-dgxc-slurm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,31 @@

set -x

# MODEL_PATH: Override with pre-downloaded paths on H100 runner
# The yaml files specify HuggingFace model IDs for portability, but we use
# local paths to avoid repeated downloading on the shared H100 cluster.
if [[ $FRAMEWORK == "dynamo-sglang" ]]; then
if [[ $MODEL_PREFIX == "dsr1" && $PRECISION == "fp8" ]]; then
export MODEL_PATH="/mnt/numa1/shared/models/dsr1-fp8"
export SRT_SLURM_MODEL_PREFIX="dsr1-fp8"
else
echo "Unsupported model prefix/precision for dynamo-sglang: $MODEL_PREFIX/$PRECISION"
exit 1
fi
elif [[ $FRAMEWORK == "dynamo-trt" ]]; then
if [[ $MODEL_PREFIX == "dsr1" && $PRECISION == "fp8" ]]; then
export MODEL_PATH="/mnt/numa1/shared/models/dsr1-fp8"
export SERVED_MODEL_NAME="DeepSeek-R1-0528"
export SRT_SLURM_MODEL_PREFIX="DeepSeek-R1-0528"
else
echo "Unsupported model prefix/precision for dynamo-trt: $MODEL_PREFIX/$PRECISION"
exit 1
fi
else
echo "Unsupported framework: $FRAMEWORK. Supported frameworks are: dynamo-trt, dynamo-sglang"
exit 1
fi

echo "Cloning srt-slurm repository..."
SRT_REPO_DIR="srt-slurm"
if [ -d "$SRT_REPO_DIR" ]; then
Expand Down Expand Up @@ -31,25 +56,24 @@ echo "Configs available at: $SRT_REPO_DIR/"
export SLURM_PARTITION="hpc-gpu-1"
export SLURM_ACCOUNT="customer"

# Convert IMAGE to srt-slurm format (nvcr.io/ -> nvcr.io#)
CONTAINER_KEY=$(echo "$IMAGE" | sed 's|nvcr.io/|nvcr.io#|')

# Map container image to local squash file
SQUASH_FILE="/mnt/nfs/sa-shared/containers/$(echo "$IMAGE" | sed 's|nvcr.io/||' | sed 's/[\/:@#]/+/g').sqsh"

if [[ $MODEL_PREFIX == "dsr1" && $PRECISION == "fp8" ]]; then
export MODEL_PATH="/mnt/numa1/shared/models/dsr1-fp8"
export SERVED_MODEL_NAME="DeepSeek-R1-0528"
export SRT_SLURM_MODEL_PREFIX="DeepSeek-R1-0528"
else
echo "Unsupported model prefix: $MODEL_PREFIX. Supported prefixes are: DeepSeek-R1-0528"
exit 1
# Map container images to local squash files based on framework
NGINX_SQUASH_FILE="/mnt/nfs/lustre/containers/nginx_1.27.4.sqsh"

if [[ $FRAMEWORK == "dynamo-sglang" ]]; then
# SGLang container mapping
SQUASH_FILE="/mnt/nfs/lustre/containers/lmsysorg_sglang_v0.5.8.post1-cu130.sqsh"
CONTAINER_KEY="lmsysorg/sglang:v0.5.8-cu130"
elif [[ $FRAMEWORK == "dynamo-trt" ]]; then
# TRT-LLM container mapping - convert IMAGE to srt-slurm format (nvcr.io/ -> nvcr.io#)
CONTAINER_KEY=$(echo "$IMAGE" | sed 's|nvcr.io/|nvcr.io#|')
SQUASH_FILE="/mnt/nfs/sa-shared/containers/$(echo "$IMAGE" | sed 's|nvcr.io/||' | sed 's/[\/:@#]/+/g').sqsh"
fi

export ISL="$ISL"
export OSL="$OSL"

# Create srtslurm.yaml for srtctl
# Create srtslurm.yaml for srtctl (used by both frameworks)
SRTCTL_ROOT="${GITHUB_WORKSPACE}/${SRT_REPO_DIR}"
echo "Creating srtslurm.yaml configuration..."
cat > srtslurm.yaml <<EOF
# SRT SLURM Configuration for H100
Expand All @@ -62,11 +86,14 @@ default_time_limit: "4:00:00"
gpus_per_node: 8
network_interface: ""
# Path to srtctl repo root (where the configs live)
srtctl_root: "${GITHUB_WORKSPACE}/${SRT_REPO_DIR}"
srtctl_root: "${SRTCTL_ROOT}"
# Model path aliases
model_paths:
"${SRT_SLURM_MODEL_PREFIX}": "${MODEL_PATH}"
containers:
dynamo-trtllm: "${SQUASH_FILE}"
dynamo-sglang: "${SQUASH_FILE}"
nginx-sqsh: "${NGINX_SQUASH_FILE}"
latest: "${SQUASH_FILE}"
"${CONTAINER_KEY}": "${SQUASH_FILE}"
# SLURM directive compatibility
Expand Down
Loading