菜单

Administrator
发布于 2026-08-11 / 0 阅读
0

模型bench

vllm:

#!/usr/bin/env bash
set -uo pipefail

# ============================================================
# Config
# ============================================================

# ---------- Server ----------
BASE_URL="http://127.0.0.1:8000"
BACKEND="openai-chat"
ENDPOINT="/v1/chat/completions"

# ---------- Model / Tokenizer ----------
MODEL="qwen3.6-27b"
TOKENIZER="/data/model"
TOKENIZER_MODE="auto"

# ---------- Dataset ----------
DATASET_NAME="random"

INPUT_LENGTHS=(
  20000
  40000
  80000
  120000
)

OUTPUT_LENGTH=2000

CONCURRENCIES=(
  1
  2
  4
  8
  16
)

# ---------- Sampling ----------
REQUEST_RATE="inf"
RANDOM_RANGE_RATIO="0"
TEMPERATURE="0"
IGNORE_EOS=true

# ---------- Result ----------
RESULT_DIR="/data/model/benchmark_results"
SAVE_DETAILED=true

# ---------- Offline ----------
export HF_HUB_OFFLINE=1
export TRANSFORMERS_OFFLINE=1
export HF_DATASETS_OFFLINE=1
export TOKENIZERS_PARALLELISM=false


# ============================================================
# Prepare
# ============================================================

mkdir -p "${RESULT_DIR}"

echo "============================================================"
echo "vLLM concurrency benchmark"
echo "============================================================"
echo "BASE_URL       : ${BASE_URL}"
echo "BACKEND        : ${BACKEND}"
echo "ENDPOINT       : ${ENDPOINT}"
echo "MODEL          : ${MODEL}"
echo "TOKENIZER      : ${TOKENIZER}"
echo "INPUT_LENGTHS  : ${INPUT_LENGTHS[*]}"
echo "OUTPUT_LENGTH  : ${OUTPUT_LENGTH}"
echo "CONCURRENCIES  : ${CONCURRENCIES[*]}"
echo "RESULT_DIR     : ${RESULT_DIR}"
echo "============================================================"


# ============================================================
# Benchmark
# ============================================================

for INPUT_LENGTH in "${INPUT_LENGTHS[@]}"; do
    for CONCURRENCY in "${CONCURRENCIES[@]}"; do

        # 每组只发送一波请求
        NUM_PROMPTS="${CONCURRENCY}"

        INPUT_K=$((INPUT_LENGTH / 1000))
        OUTPUT_K=$((OUTPUT_LENGTH / 1000))

        RUN_NAME="input_${INPUT_K}k_output_${OUTPUT_K}k_concurrency_${CONCURRENCY}"
        RESULT_FILE="${RUN_NAME}.json"
        LOG_FILE="${RESULT_DIR}/${RUN_NAME}.log"

        echo
        echo "============================================================"
        echo "Running      : ${RUN_NAME}"
        echo "Input        : ${INPUT_LENGTH}"
        echo "Output       : ${OUTPUT_LENGTH}"
        echo "Concurrency  : ${CONCURRENCY}"
        echo "Requests     : ${NUM_PROMPTS}"
        echo "Result       : ${RESULT_DIR}/${RESULT_FILE}"
        echo "============================================================"

        CMD=(
            vllm bench serve
            --backend "${BACKEND}"
            --base-url "${BASE_URL}"
            --endpoint "${ENDPOINT}"
            --model "${MODEL}"
            --tokenizer "${TOKENIZER}"
            --tokenizer-mode "${TOKENIZER_MODE}"
            --dataset-name "${DATASET_NAME}"
            --random-input-len "${INPUT_LENGTH}"
            --random-output-len "${OUTPUT_LENGTH}"
            --random-range-ratio "${RANDOM_RANGE_RATIO}"
            --num-prompts "${NUM_PROMPTS}"
            --request-rate "${REQUEST_RATE}"
            --max-concurrency "${CONCURRENCY}"
            --temperature "${TEMPERATURE}"
            --save-result
            --result-dir "${RESULT_DIR}"
            --result-filename "${RESULT_FILE}"
            --metadata
            "input_len=${INPUT_LENGTH}"
            "output_len=${OUTPUT_LENGTH}"
            "concurrency=${CONCURRENCY}"
        )

        if [[ "${IGNORE_EOS}" == "true" ]]; then
            CMD+=(--ignore-eos)
        fi

        if [[ "${SAVE_DETAILED}" == "true" ]]; then
            CMD+=(--save-detailed)
        fi

        printf 'Command: '
        printf '%q ' "${CMD[@]}"
        echo
        echo

        "${CMD[@]}" 2>&1 | tee "${LOG_FILE}"

        STATUS=${PIPESTATUS[0]}

        if [[ ${STATUS} -ne 0 ]]; then
            echo "[FAILED] ${RUN_NAME}, exit_code=${STATUS}"
        else
            echo "[DONE] ${RUN_NAME}"
        fi
    done
done

echo
echo "============================================================"
echo "All benchmark cases finished"
echo "Results: ${RESULT_DIR}"
echo "============================================================"

sglang:

#!/usr/bin/env bash set -uo pipefail

============================================================

SGLang Fully Offline Concurrency Benchmark

============================================================

---------- Server ----------

HOST="127.0.0.1" PORT="8000" BACKEND="sglang"

---------- Model / Tokenizer ----------

MODEL="/data/model" TOKENIZER="/data/model"

---------- Dataset ----------

关键:random-ids 完全本地生成 token ids,不依赖 ShareGPT

DATASET_NAME="random-ids"

---------- Input / Output ----------

INPUT_LENGTHS=( 20000 40000 80000 120000 )

OUTPUT_LENGTH=2000

---------- Concurrency ----------

CONCURRENCIES=( 1 2 4 8 16 32 )

---------- Benchmark ----------

REQUEST_RATE="inf"

0 = 输入/输出长度固定,不浮动

RANDOM_RANGE_RATIO="1.0"

---------- Result ----------

RESULT_DIR="/data/benchmark_results_sglang" OUTPUT_DETAILS=true

---------- Offline ----------

export HF_HUB_OFFLINE=1 export TRANSFORMERS_OFFLINE=1 export HF_DATASETS_OFFLINE=1 export TOKENIZERS_PARALLELISM=false

============================================================

Prepare

============================================================

mkdir -p "${RESULT_DIR}"

echo "============================================================" echo "SGLang fully-offline concurrency benchmark" echo "============================================================" echo "HOST : ${HOST}" echo "PORT : ${PORT}" echo "BACKEND : ${BACKEND}" echo "MODEL : ${MODEL}" echo "TOKENIZER : ${TOKENIZER}" echo "DATASET : ${DATASET_NAME}" echo "INPUT_LENGTHS : ${INPUT_LENGTHS[]}" echo "OUTPUT_LENGTH : ${OUTPUT_LENGTH}" echo "CONCURRENCIES : ${CONCURRENCIES[]}" echo "RESULT_DIR : ${RESULT_DIR}" echo "============================================================"

============================================================

Benchmark

============================================================

for INPUT_LENGTH in "${INPUT_LENGTHS[@]}"; do for CONCURRENCY in "${CONCURRENCIES[@]}"; do

    # 每个并发档只打一波
    NUM_PROMPTS="${CONCURRENCY}"

    INPUT_K=$((INPUT_LENGTH / 1000))
    OUTPUT_K=$((OUTPUT_LENGTH / 1000))

    RUN_NAME="input_${INPUT_K}k_output_${OUTPUT_K}k_concurrency_${CONCURRENCY}"

    RESULT_FILE="${RESULT_DIR}/${RUN_NAME}.jsonl"
    LOG_FILE="${RESULT_DIR}/${RUN_NAME}.log"

    echo
    echo "============================================================"
    echo "Running      : ${RUN_NAME}"
    echo "Input        : ${INPUT_LENGTH}"
    echo "Output       : ${OUTPUT_LENGTH}"
    echo "Concurrency  : ${CONCURRENCY}"
    echo "Requests     : ${NUM_PROMPTS}"
    echo "Result       : ${RESULT_FILE}"
    echo "Log          : ${LOG_FILE}"
    echo "============================================================"

    CMD=(
        python3 -m sglang.benchmark.serving
        --backend "${BACKEND}"
        --host "${HOST}"
        --port "${PORT}"
        --model "${MODEL}"
        --tokenizer "${TOKENIZER}"
        --dataset-name "${DATASET_NAME}"
        --random-input-len "${INPUT_LENGTH}"
        --random-output-len "${OUTPUT_LENGTH}"
        --random-range-ratio "${RANDOM_RANGE_RATIO}"
        --num-prompts "${NUM_PROMPTS}"
        --request-rate "${REQUEST_RATE}"
        --max-concurrency "${CONCURRENCY}"
        --output-file "${RESULT_FILE}"
    )

    if [[ "${OUTPUT_DETAILS}" == "true" ]]; then
        CMD+=(--output-details)
    fi

    echo "Command:"
    printf '%q ' "${CMD[@]}"
    echo
    echo

    "${CMD[@]}" 2>&1 | tee "${LOG_FILE}"

    STATUS=${PIPESTATUS[0]}

    if [[ ${STATUS} -ne 0 ]]; then
        echo "[FAILED] ${RUN_NAME}, exit_code=${STATUS}"
    else
        echo "[DONE] ${RUN_NAME}"
    fi

done

done

echo echo "============================================================" echo "All benchmark cases finished" echo "Results: ${RESULT_DIR}" echo "============================================================"