Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenDAS
dynamo
Commits
956f93f6
Unverified
Commit
956f93f6
authored
Nov 13, 2025
by
Yunzhou Liu
Committed by
GitHub
Nov 13, 2025
Browse files
docs: Adds Qwen3-235B-A22B-FP8 recipes for TRTLLM agg and disagg (#4179)
Signed-off-by:
Elnifio
<
elnifio0519@gmail.com
>
parent
4c29d6e7
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
673 additions
and
0 deletions
+673
-0
recipes/qwen3-235b-a22b-fp8/model-cache/model-cache.yaml
recipes/qwen3-235b-a22b-fp8/model-cache/model-cache.yaml
+13
-0
recipes/qwen3-235b-a22b-fp8/model-cache/model-download.yaml
recipes/qwen3-235b-a22b-fp8/model-cache/model-download.yaml
+44
-0
recipes/qwen3-235b-a22b-fp8/trtllm/agg/deploy.yaml
recipes/qwen3-235b-a22b-fp8/trtllm/agg/deploy.yaml
+114
-0
recipes/qwen3-235b-a22b-fp8/trtllm/agg/perf.yaml
recipes/qwen3-235b-a22b-fp8/trtllm/agg/perf.yaml
+153
-0
recipes/qwen3-235b-a22b-fp8/trtllm/disagg/deploy.yaml
recipes/qwen3-235b-a22b-fp8/trtllm/disagg/deploy.yaml
+196
-0
recipes/qwen3-235b-a22b-fp8/trtllm/disagg/perf.yaml
recipes/qwen3-235b-a22b-fp8/trtllm/disagg/perf.yaml
+153
-0
No files found.
recipes/qwen3-235b-a22b-fp8/model-cache/model-cache.yaml
0 → 100644
View file @
956f93f6
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
apiVersion
:
v1
kind
:
PersistentVolumeClaim
metadata
:
name
:
model-cache
spec
:
accessModes
:
-
ReadWriteMany
resources
:
requests
:
storage
:
300Gi
storageClassName
:
"
your-storage-class-name"
recipes/qwen3-235b-a22b-fp8/model-cache/model-download.yaml
0 → 100644
View file @
956f93f6
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
apiVersion
:
batch/v1
kind
:
Job
metadata
:
name
:
model-download
spec
:
backoffLimit
:
3
completions
:
1
parallelism
:
1
template
:
metadata
:
labels
:
app
:
model-download
spec
:
restartPolicy
:
Never
containers
:
-
name
:
model-download
image
:
python:3.10-slim
command
:
[
"
sh"
,
"
-c"
]
envFrom
:
-
secretRef
:
name
:
hf-token-secret
env
:
-
name
:
MODEL_NAME
value
:
Qwen/Qwen3-235B-A22B-FP8
-
name
:
HF_HOME
value
:
/model-store
-
name
:
HF_HUB_ENABLE_HF_TRANSFER
value
:
"
1"
-
name
:
MODEL_REVISION
value
:
39eb2b067ea6b8e3e1dd97d3cd0c7ffeaf3e1a35
args
:
-
|
set -eux
pip install --no-cache-dir huggingface_hub hf_transfer
hf download $MODEL_NAME --revision $MODEL_REVISION
volumeMounts
:
-
name
:
model-cache
mountPath
:
/model-store
volumes
:
-
name
:
model-cache
persistentVolumeClaim
:
claimName
:
model-cache
recipes/qwen3-235b-a22b-fp8/trtllm/agg/deploy.yaml
0 → 100644
View file @
956f93f6
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
apiVersion
:
v1
kind
:
ConfigMap
metadata
:
name
:
agg-config
data
:
agg.yaml
:
|
backend: pytorch
trust_remote_code: true
tensor_parallel_size: 4
moe_expert_parallel_size: 4
moe_tensor_parallel_size: 1
enable_attention_dp: false
enable_chunked_prefill: true
build_config:
max_batch_size: 128
max_num_tokens: 8192
max_seq_len: 8192
kv_cache_config:
enable_block_reuse: true
free_gpu_memory_fraction: 0.8
dtype: auto
cache_transceiver_config:
backend: DEFAULT
cuda_graph_config:
enable_padding: true
max_batch_size: 128
disable_overlap_scheduler: false
print_iter_log: false
---
apiVersion
:
nvidia.com/v1alpha1
kind
:
DynamoGraphDeployment
metadata
:
name
:
qwen3-235b-a22b-agg
spec
:
backendFramework
:
trtllm
pvcs
:
-
name
:
model-cache
create
:
false
services
:
Frontend
:
componentType
:
frontend
dynamoNamespace
:
qwen3-235b-a22b-agg
replicas
:
1
extraPodSpec
:
affinity
:
podAntiAffinity
:
requiredDuringSchedulingIgnoredDuringExecution
:
-
labelSelector
:
matchExpressions
:
-
key
:
nvidia.com/dynamo-graph-deployment-name
operator
:
In
values
:
-
qwen3-235b-a22b-agg-frontend
topologyKey
:
kubernetes.io/hostname
mainContainer
:
image
:
nvcr.io/nvidia/ai-dynamo/tensorrtllm-runtime:my-tag
args
:
-
python3 -m dynamo.frontend --router-mode kv --http-port
8000
command
:
-
/bin/sh
-
-c
TrtllmWorker
:
componentType
:
main
dynamoNamespace
:
qwen3-235b-a22b-agg
envFromSecret
:
hf-token-secret
sharedMemory
:
size
:
256Gi
extraPodSpec
:
affinity
:
nodeAffinity
:
requiredDuringSchedulingIgnoredDuringExecution
:
nodeSelectorTerms
:
-
matchExpressions
:
-
key
:
nvidia.com/gpu.present
operator
:
In
values
:
-
"
true"
mainContainer
:
env
:
-
name
:
MODEL_PATH
value
:
/mnt/model-cache/hub/models--Qwen--Qwen3-235B-A22B-FP8/snapshots/39eb2b067ea6b8e3e1dd97d3cd0c7ffeaf3e1a35
-
name
:
ENGINE_ARGS
value
:
/engine_configs/agg.yaml
command
:
-
/bin/sh
-
-c
args
:
-
|
python3 -m dynamo.trtllm \
--model-path "${MODEL_PATH}" \
--served-model-name "Qwen/Qwen3-235B-A22B-FP8" \
--extra-engine-args "${ENGINE_ARGS}"
image
:
nvcr.io/nvidia/ai-dynamo/tensorrtllm-runtime:my-tag
workingDir
:
/workspace/components/backends/trtllm
volumeMounts
:
-
name
:
agg-config
mountPath
:
/engine_configs
-
name
:
model-cache
mountPath
:
/mnt/model-cache
volumes
:
-
name
:
agg-config
configMap
:
name
:
agg-config
-
name
:
model-cache
persistentVolumeClaim
:
claimName
:
model-cache
replicas
:
4
resources
:
limits
:
gpu
:
"
4"
requests
:
gpu
:
"
4"
recipes/qwen3-235b-a22b-fp8/trtllm/agg/perf.yaml
0 → 100644
View file @
956f93f6
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
apiVersion
:
batch/v1
kind
:
Job
metadata
:
name
:
qwen3-235b-a22b-bench
spec
:
backoffLimit
:
1
completions
:
1
parallelism
:
1
template
:
metadata
:
labels
:
app
:
qwen3-235b-a22b-bench
spec
:
affinity
:
podAntiAffinity
:
requiredDuringSchedulingIgnoredDuringExecution
:
-
labelSelector
:
matchExpressions
:
-
key
:
nvidia.com/dynamo-graph-deployment-name
operator
:
In
values
:
-
qwen3-235b-a22b-agg
topologyKey
:
kubernetes.io/hostname
containers
:
-
command
:
-
/bin/sh
-
-c
-
|
apt-get update && apt-get install -y curl jq procps git && apt-get clean
pip install git+https://github.com/ai-dynamo/aiperf.git@70af59489df24a601dba57604a7341966150b366;
echo "aiperf installation completed";
sysctl -w net.ipv4.ip_local_port_range="1024 65000"
cat /proc/sys/net/ipv4/ip_local_port_range
export COLUMNS=200
EPOCH=$(date +%s)
## utility functions -- can be moved to a bash script / configmap
wait_for_model_ready() {
echo "Waiting for model '$TARGET_MODEL' at $ENDPOINT/v1/models (checking every 5s)..."
while ! curl -s "http://$ENDPOINT/v1/models" | jq -e --arg model "$TARGET_MODEL" '.data[]? | select(.id == $model)' >/dev/null 2>&1; do
echo "[$(date '+%H:%M:%S')] Model not ready yet, sleeping 5s before checking again http://$ENDPOINT/v1/models"
sleep 5
done
echo "✅ Model '$TARGET_MODEL' is now available!"
echo "Model '$TARGET_MODEL' is now available!"
curl -s "http://$ENDPOINT/v1/models" | jq .
}
run_perf() {
local concurrency=$1
local isl=$2
local osl=$3
key=concurrency_${concurrency}
export ARTIFACT_DIR="${ROOT_ARTIFACT_DIR}/${EPOCH}_${JOB_NAME}/${key}"
mkdir -p "$ARTIFACT_DIR"
echo "ARTIFACT_DIR: $ARTIFACT_DIR"
aiperf profile --artifact-dir $ARTIFACT_DIR \
--model $TARGET_MODEL \
--tokenizer $TARGET_MODEL \
--endpoint-type chat \
--endpoint /v1/chat/completions \
--streaming \
--url http://$ENDPOINT \
--synthetic-input-tokens-mean $isl \
--synthetic-input-tokens-stddev 0 \
--output-tokens-mean $osl \
--output-tokens-stddev 0 \
--extra-inputs "max_tokens:$osl" \
--extra-inputs "min_tokens:$osl" \
--extra-inputs "ignore_eos:true" \
--extra-inputs "{\"nvext\":{\"ignore_eos\":true}}" \
--extra-inputs "repetition_penalty:1.0" \
--extra-inputs "temperature: 0.0" \
--concurrency $concurrency \
--request-count $((10*concurrency)) \
--warmup-request-count $concurrency \
--conversation-num 12800 \
--random-seed 100 \
--workers-max 252 \
-H 'Authorization: Bearer NOT USED' \
-H 'Accept: text/event-stream'\
--record-processors 32 \
--ui simple
echo "ARTIFACT_DIR: $ARTIFACT_DIR"
ls -la $ARTIFACT_DIR
}
#### Actual execution ####
wait_for_model_ready
mkdir -p "${ROOT_ARTIFACT_DIR}/${EPOCH}_${JOB_NAME}"
# Calculate total concurrency based on per-GPU concurrency and GPU count
TOTAL_CONCURRENCY=$((CONCURRENCY_PER_GPU * DEPLOYMENT_GPU_COUNT))
echo "Calculated total concurrency: $TOTAL_CONCURRENCY (${CONCURRENCY_PER_GPU} per GPU × ${DEPLOYMENT_GPU_COUNT} GPUs)"
# Write input_config.json
cat > "${ROOT_ARTIFACT_DIR}/${EPOCH}_${JOB_NAME}/input_config.json" <<EOF
{
"gpu_count": $DEPLOYMENT_GPU_COUNT,
"concurrency_per_gpu": $CONCURRENCY_PER_GPU,
"total_concurrency": $TOTAL_CONCURRENCY,
"mode": "$DEPLOYMENT_MODE",
"isl": $ISL,
"osl": $OSL,
"endpoint": "$ENDPOINT",
"model endpoint": "$TARGET_MODEL"
}
EOF
# Run perf with calculated total concurrency
run_perf $TOTAL_CONCURRENCY $ISL $OSL
echo "done with concurrency $TOTAL_CONCURRENCY"
env
:
-
name
:
TARGET_MODEL
value
:
Qwen/Qwen3-235B-A22B-FP8
-
name
:
ENDPOINT
value
:
qwen3-235b-a22b-agg-frontend:8000
-
name
:
CONCURRENCY_PER_GPU
value
:
"
2"
-
name
:
DEPLOYMENT_GPU_COUNT
value
:
"
16"
-
name
:
ISL
value
:
"
4000"
-
name
:
OSL
value
:
"
200"
-
name
:
DEPLOYMENT_MODE
value
:
agg
-
name
:
AIPERF_HTTP_CONNECTION_LIMIT
value
:
"
200"
-
name
:
JOB_NAME
valueFrom
:
fieldRef
:
apiVersion
:
v1
fieldPath
:
metadata.labels['job-name']
-
name
:
ROOT_ARTIFACT_DIR
value
:
/model-cache/perf
-
name
:
HF_HOME
value
:
/model-cache
-
name
:
PYTHONUNBUFFERED
value
:
"
1"
image
:
python:3.12-slim
imagePullPolicy
:
IfNotPresent
name
:
perf
securityContext
:
privileged
:
true
volumeMounts
:
-
name
:
model-cache
mountPath
:
/model-cache
workingDir
:
/workspace
imagePullSecrets
:
-
name
:
nvcrimagepullsecret
restartPolicy
:
Never
volumes
:
-
name
:
model-cache
persistentVolumeClaim
:
claimName
:
model-cache
recipes/qwen3-235b-a22b-fp8/trtllm/disagg/deploy.yaml
0 → 100644
View file @
956f93f6
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
apiVersion
:
v1
kind
:
ConfigMap
metadata
:
name
:
prefill-config
data
:
prefill.yaml
:
|
backend: pytorch
trust_remote_code: true
tensor_parallel_size: 2
moe_tensor_parallel_size: 2
moe_expert_parallel_size: 1
enable_attention_dp: false
enable_chunked_prefill: false
build_config:
max_batch_size: 2
max_num_tokens: 8192
max_seq_len: 8192
kv_cache_config:
enable_block_reuse: true
free_gpu_memory_fraction: 0.7
dtype: fp8
cache_transceiver_config:
backend: DEFAULT
cuda_graph_config:
enable_padding: true
max_batch_size: 2
disable_overlap_scheduler: true
print_iter_log: false
---
apiVersion
:
v1
kind
:
ConfigMap
metadata
:
name
:
decode-config
data
:
decode.yaml
:
|
backend: pytorch
trust_remote_code: true
tensor_parallel_size: 4
moe_expert_parallel_size: 4
moe_tensor_parallel_size: 1
enable_attention_dp: false
enable_chunked_prefill: false
build_config:
max_batch_size: 512
max_num_tokens: 1024
max_seq_len: 8192
kv_cache_config:
enable_block_reuse: false
free_gpu_memory_fraction: 0.95
dtype: fp8
cache_transceiver_config:
backend: DEFAULT
cuda_graph_config:
enable_padding: true
max_batch_size: 512
disable_overlap_scheduler: false
print_iter_log: false
---
apiVersion
:
nvidia.com/v1alpha1
kind
:
DynamoGraphDeployment
metadata
:
name
:
qwen3-235b-a22b-disagg
spec
:
backendFramework
:
trtllm
pvcs
:
-
name
:
model-cache
create
:
false
services
:
Frontend
:
componentType
:
frontend
dynamoNamespace
:
qwen3-235b-a22b-disagg
replicas
:
1
extraPodSpec
:
affinity
:
podAntiAffinity
:
requiredDuringSchedulingIgnoredDuringExecution
:
-
labelSelector
:
matchExpressions
:
-
key
:
nvidia.com/dynamo-graph-deployment-name
operator
:
In
values
:
-
qwen3-235b-a22b-disagg-frontend
topologyKey
:
kubernetes.io/hostname
mainContainer
:
image
:
nvcr.io/nvidia/ai-dynamo/tensorrtllm-runtime:my-tag
args
:
-
python3 -m dynamo.frontend --router-mode kv --http-port
8000
command
:
-
/bin/sh
-
-c
TRTLLMPrefillWorker
:
componentType
:
worker
subComponentType
:
prefill
dynamoNamespace
:
qwen3-235b-a22b-disagg
envFromSecret
:
hf-token-secret
replicas
:
6
resources
:
limits
:
gpu
:
"
2"
sharedMemory
:
size
:
256Gi
extraPodSpec
:
affinity
:
nodeAffinity
:
requiredDuringSchedulingIgnoredDuringExecution
:
nodeSelectorTerms
:
-
matchExpressions
:
-
key
:
nvidia.com/gpu.present
operator
:
In
values
:
-
"
true"
mainContainer
:
env
:
-
name
:
MODEL_PATH
value
:
/mnt/model-cache/hub/models--Qwen--Qwen3-235B-A22B-FP8/snapshots/39eb2b067ea6b8e3e1dd97d3cd0c7ffeaf3e1a35
-
name
:
ENGINE_ARGS
value
:
/engine_configs/prefill.yaml
image
:
nvcr.io/nvidia/ai-dynamo/tensorrtllm-runtime:my-tag
workingDir
:
/workspace/components/backends/trtllm
command
:
-
/bin/sh
-
-c
args
:
-
|
python3 -m dynamo.trtllm \
--model-path "${MODEL_PATH}" \
--served-model-name "Qwen/Qwen3-235B-A22B-FP8" \
--extra-engine-args "${ENGINE_ARGS}" \
--disaggregation-mode prefill \
--disaggregation-strategy prefill_first
volumeMounts
:
-
name
:
prefill-config
mountPath
:
/engine_configs
-
name
:
model-cache
mountPath
:
/mnt/model-cache
volumes
:
-
name
:
prefill-config
configMap
:
name
:
prefill-config
-
name
:
model-cache
persistentVolumeClaim
:
claimName
:
model-cache
TRTLLMDecodeWorker
:
componentType
:
worker
subComponentType
:
decode
dynamoNamespace
:
qwen3-235b-a22b-disagg
envFromSecret
:
hf-token-secret
replicas
:
1
resources
:
limits
:
gpu
:
"
4"
sharedMemory
:
size
:
256Gi
extraPodSpec
:
affinity
:
nodeAffinity
:
requiredDuringSchedulingIgnoredDuringExecution
:
nodeSelectorTerms
:
-
matchExpressions
:
-
key
:
nvidia.com/gpu.present
operator
:
In
values
:
-
"
true"
mainContainer
:
env
:
-
name
:
MODEL_PATH
value
:
/mnt/model-cache/hub/models--Qwen--Qwen3-235B-A22B-FP8/snapshots/39eb2b067ea6b8e3e1dd97d3cd0c7ffeaf3e1a35
-
name
:
ENGINE_ARGS
value
:
/engine_configs/decode.yaml
image
:
nvcr.io/nvidia/ai-dynamo/tensorrtllm-runtime:my-tag
workingDir
:
/workspace/components/backends/trtllm
command
:
-
/bin/sh
-
-c
args
:
-
|
python3 -m dynamo.trtllm \
--model-path "${MODEL_PATH}" \
--served-model-name "Qwen/Qwen3-235B-A22B-FP8" \
--extra-engine-args "${ENGINE_ARGS}" \
--disaggregation-mode decode \
--disaggregation-strategy prefill_first
volumeMounts
:
-
name
:
decode-config
mountPath
:
/engine_configs
-
name
:
model-cache
mountPath
:
/mnt/model-cache
volumes
:
-
name
:
decode-config
configMap
:
name
:
decode-config
-
name
:
model-cache
persistentVolumeClaim
:
claimName
:
model-cache
recipes/qwen3-235b-a22b-fp8/trtllm/disagg/perf.yaml
0 → 100644
View file @
956f93f6
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
apiVersion
:
batch/v1
kind
:
Job
metadata
:
name
:
qwen3-235b-a22b-disagg-bench
spec
:
backoffLimit
:
1
completions
:
1
parallelism
:
1
template
:
metadata
:
labels
:
app
:
qwen3-235b-a22b-disagg-bench
spec
:
affinity
:
podAntiAffinity
:
requiredDuringSchedulingIgnoredDuringExecution
:
-
labelSelector
:
matchExpressions
:
-
key
:
nvidia.com/dynamo-graph-deployment-name
operator
:
In
values
:
-
qwen3-235b-a22b-disagg
topologyKey
:
kubernetes.io/hostname
containers
:
-
command
:
-
/bin/sh
-
-c
-
|
apt-get update && apt-get install -y curl jq procps git && apt-get clean
pip install git+https://github.com/ai-dynamo/aiperf.git@70af59489df24a601dba57604a7341966150b366;
echo "aiperf installation completed";
sysctl -w net.ipv4.ip_local_port_range="1024 65000"
cat /proc/sys/net/ipv4/ip_local_port_range
export COLUMNS=200
EPOCH=$(date +%s)
## utility functions -- can be moved to a bash script / configmap
wait_for_model_ready() {
echo "Waiting for model '$TARGET_MODEL' at $ENDPOINT/v1/models (checking every 5s)..."
while ! curl -s "http://$ENDPOINT/v1/models" | jq -e --arg model "$TARGET_MODEL" '.data[]? | select(.id == $model)' >/dev/null 2>&1; do
echo "[$(date '+%H:%M:%S')] Model not ready yet, sleeping 5s before checking again http://$ENDPOINT/v1/models"
sleep 5
done
echo "✅ Model '$TARGET_MODEL' is now available!"
echo "Model '$TARGET_MODEL' is now available!"
curl -s "http://$ENDPOINT/v1/models" | jq .
}
run_perf() {
local concurrency=$1
local isl=$2
local osl=$3
key=concurrency_${concurrency}
export ARTIFACT_DIR="${ROOT_ARTIFACT_DIR}/${EPOCH}_${JOB_NAME}/${key}"
mkdir -p "$ARTIFACT_DIR"
echo "ARTIFACT_DIR: $ARTIFACT_DIR"
aiperf profile --artifact-dir $ARTIFACT_DIR \
--model $TARGET_MODEL \
--tokenizer $TARGET_MODEL \
--endpoint-type chat \
--endpoint /v1/chat/completions \
--streaming \
--url http://$ENDPOINT \
--synthetic-input-tokens-mean $isl \
--synthetic-input-tokens-stddev 0 \
--output-tokens-mean $osl \
--output-tokens-stddev 0 \
--extra-inputs "max_tokens:$osl" \
--extra-inputs "min_tokens:$osl" \
--extra-inputs "ignore_eos:true" \
--extra-inputs "{\"nvext\":{\"ignore_eos\":true}}" \
--extra-inputs "repetition_penalty:1.0" \
--extra-inputs "temperature: 0.0" \
--concurrency $concurrency \
--request-count $((10*concurrency)) \
--warmup-request-count $concurrency \
--conversation-num 12800 \
--random-seed 100 \
--workers-max 252 \
-H 'Authorization: Bearer NOT USED' \
-H 'Accept: text/event-stream'\
--record-processors 32 \
--ui simple
echo "ARTIFACT_DIR: $ARTIFACT_DIR"
ls -la $ARTIFACT_DIR
}
#### Actual execution ####
wait_for_model_ready
mkdir -p "${ROOT_ARTIFACT_DIR}/${EPOCH}_${JOB_NAME}"
# Calculate total concurrency based on per-GPU concurrency and GPU count
TOTAL_CONCURRENCY=$((CONCURRENCY_PER_GPU * DEPLOYMENT_GPU_COUNT))
echo "Calculated total concurrency: $TOTAL_CONCURRENCY (${CONCURRENCY_PER_GPU} per GPU × ${DEPLOYMENT_GPU_COUNT} GPUs)"
# Write input_config.json
cat > "${ROOT_ARTIFACT_DIR}/${EPOCH}_${JOB_NAME}/input_config.json" <<EOF
{
"gpu_count": $DEPLOYMENT_GPU_COUNT,
"concurrency_per_gpu": $CONCURRENCY_PER_GPU,
"total_concurrency": $TOTAL_CONCURRENCY,
"mode": "$DEPLOYMENT_MODE",
"isl": $ISL,
"osl": $OSL,
"endpoint": "$ENDPOINT",
"model endpoint": "$TARGET_MODEL"
}
EOF
# Run perf with calculated total concurrency
run_perf $TOTAL_CONCURRENCY $ISL $OSL
echo "done with concurrency $TOTAL_CONCURRENCY"
env
:
-
name
:
TARGET_MODEL
value
:
Qwen/Qwen3-235B-A22B-FP8
-
name
:
ENDPOINT
value
:
qwen3-235b-a22b-disagg-frontend:8000
-
name
:
CONCURRENCY_PER_GPU
value
:
"
2"
-
name
:
DEPLOYMENT_GPU_COUNT
value
:
"
16"
-
name
:
ISL
value
:
"
4000"
-
name
:
OSL
value
:
"
200"
-
name
:
DEPLOYMENT_MODE
value
:
disagg
-
name
:
AIPERF_HTTP_CONNECTION_LIMIT
value
:
"
200"
-
name
:
JOB_NAME
valueFrom
:
fieldRef
:
apiVersion
:
v1
fieldPath
:
metadata.labels['job-name']
-
name
:
ROOT_ARTIFACT_DIR
value
:
/model-cache/perf
-
name
:
HF_HOME
value
:
/model-cache
-
name
:
PYTHONUNBUFFERED
value
:
"
1"
image
:
python:3.12-slim
imagePullPolicy
:
IfNotPresent
name
:
perf
securityContext
:
privileged
:
true
volumeMounts
:
-
name
:
model-cache
mountPath
:
/model-cache
workingDir
:
/workspace
imagePullSecrets
:
-
name
:
nvcrimagepullsecret
restartPolicy
:
Never
volumes
:
-
name
:
model-cache
persistentVolumeClaim
:
claimName
:
model-cache
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment