fix(910c/glm52): start_vllm_docker.sh 加per-TP参数覆盖 + 修printf转义破坏JSON

问题: add16实际启动走start_vllm_docker.sh(用config.env全局MAX_MODEL_LEN=131072),
而非engine_build_server_args(有per-TP覆盖但只写server_cmd.txt不影响启动).
TP=8用131072上下文+无per-TP覆盖,且engine_build_server_args的printf %q转义
破坏了JSON(--additional-config的enable_dsa_cp等未生效),致MoE tiling失败.

修复:
1. start_vllm_docker.sh: 加per-TP case覆盖(TP=8:16384/64/0.95, TP=16:131072/256/0.92)
2. run_adaptive_concurrency_add16.sh: engine_build_server_args 用单引号包裹替代
   printf %q,避免JSON被反斜杠转义(仅影响server_cmd.txt记录,实际启动走start_vllm_docker.sh)
This commit is contained in:
shishi 2026-07-29 10:59:53 +08:00
parent 6d3338244b
commit 70c5c57f8f
2 changed files with 32 additions and 1 deletions

View File

@ -92,6 +92,12 @@ engine_build_server_args() {
;; ;;
esac esac
log "server args tp=${tp} dp=${dp} gpu_mem_util=${mem_util} max_model_len=${max_len} max_num_seqs=${max_seqs}" >&2 log "server args tp=${tp} dp=${dp} gpu_mem_util=${mem_util} max_model_len=${max_len} max_num_seqs=${max_seqs}" >&2
# MoE / DSA-CP args required by GLM-5.2 on vllm-ascend (must match
# start_vllm_docker.sh). --enable-expert-parallel is mandatory for
# FlashComm v1 (VLLM_ASCEND_ENABLE_FLASHCOMM1=1); without it MoE
# MoeDistributeDispatchV2 tiling fails at engine init.
local compilation_config='{"cudagraph_mode": "FULL_DECODE_ONLY"}'
local additional_config='{"enable_dsa_cp": true,"enable_sparse_sfa_c8": false, "enable_sparse_li_c8": true,"enable_balance_scheduling": true,"multistream_overlap_shared_expert":true}'
local -a args=( local -a args=(
vllm serve "$MODEL_PATH" vllm serve "$MODEL_PATH"
--served-model-name "$SERVED_MODEL_NAME" --served-model-name "$SERVED_MODEL_NAME"
@ -99,16 +105,26 @@ engine_build_server_args() {
--kv-cache-dtype "$KV_CACHE_DTYPE" --kv-cache-dtype "$KV_CACHE_DTYPE"
--block-size "$BLOCK_SIZE" --block-size "$BLOCK_SIZE"
--tensor-parallel-size "$tp" --tensor-parallel-size "$tp"
--enable-expert-parallel
--gpu-memory-utilization "$mem_util" --gpu-memory-utilization "$mem_util"
--max-model-len "$max_len" --max-model-len "$max_len"
--max-num-seqs "$max_seqs" --max-num-seqs "$max_seqs"
--compilation-config "$compilation_config"
--additional-config "$additional_config"
--host 0.0.0.0 --host 0.0.0.0
--port "$ENGINE_PORT" --port "$ENGINE_PORT"
) )
if (( dp > 1 )); then if (( dp > 1 )); then
args+=(--data-parallel-size "$dp") args+=(--data-parallel-size "$dp")
fi fi
printf '%q ' "${args[@]}" # Emit args space-separated. JSON config strings are single-quoted
# verbatim (not %q-escaped) so the recorded command stays re-runnable.
local out=""
local a
for a in "${args[@]}"; do
out+="'$a' "
done
printf '%s' "$out"
} }
engine_start_server() { engine_start_server() {

View File

@ -31,6 +31,21 @@ docker rm -f "$NAME" >/dev/null 2>&1 || true
# vLLM-Ascend launch args. Differences vs NVIDIA vLLM: # vLLM-Ascend launch args. Differences vs NVIDIA vLLM:
#\n - no --no-enable-flashinfer-autotune (Ascend uses its own attention path) #\n - no --no-enable-flashinfer-autotune (Ascend uses its own attention path)
#\n - --kv-cache-dtype may need to be fp16 if the image rejects fp8 on 910C #\n - --kv-cache-dtype may need to be fp16 if the image rejects fp8 on 910C
# Per-TP overrides: TP=8 has tight KV cache on 64GB/die (cap context/seqs),
# TP=16 uses all 16 dies and can serve the full 128K context.
case "$TP" in
8)
GPU_MEMORY_UTILIZATION="${TP8_GPU_MEMORY_UTILIZATION:-0.95}"
MAX_MODEL_LEN="${TP8_MAX_MODEL_LEN:-16384}"
MAX_NUM_SEQS="${TP8_MAX_NUM_SEQS:-64}"
;;
16)
GPU_MEMORY_UTILIZATION="${TP16_GPU_MEMORY_UTILIZATION:-0.92}"
MAX_MODEL_LEN="${TP16_MAX_MODEL_LEN:-131072}"
MAX_NUM_SEQS="${TP16_MAX_NUM_SEQS:-256}"
;;
esac
SERVER_ARGS=( SERVER_ARGS=(
"$MODEL_PATH" "$MODEL_PATH"
--served-model-name "$SERVED_MODEL_NAME" --served-model-name "$SERVED_MODEL_NAME"