Files
vllm-omni/examples/offline_inference/qwen3_omni/run_tests.sh
T
Taichang ZhouandClaude Opus 4.8 9678ae58cf [MR V2] Migrate to Model Runner V2
Squashed migration rebased onto current main. Collapses the 46-commit
dev/migrate-MR-v2 history (10 merge commits + superseded pre-rebase work)
into a single commit, so the diff reflects only the genuine MR-V2 feature
(worker_v2/ runners + model_states, omni schedulers, stage engine pipeline,
pooling_output serialization bridge). Content already merged to main
separately (step_audio2, tts_adapters, npu/_310p, etc.) drops out.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 07:19:40 +00:00

141 lines
4.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# =============================================================================
# Qwen3-Omni end2end functional test script
# Uses default built-in assets, iterates over query-type x output-modalities combinations
# =============================================================================
set -euo pipefail
export VLLM_OMNI_USE_V2_RUNNER=1
MODEL_PATH="/models/Qwen3-Omni-30B-A3B-Instruct"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
END2END="$SCRIPT_DIR/end2end.py"
LOG_DIR="$SCRIPT_DIR/test_logs"
SUMMARY_FILE="$LOG_DIR/summary.log"
rm -rf "$LOG_DIR"
mkdir -p "$LOG_DIR"
> "$SUMMARY_FILE"
PASS=0
FAIL=0
TOTAL=0
run_test() {
local name="$1"
shift
local log_file="$LOG_DIR/${name}.log"
local output_dir="$LOG_DIR/${name}_output"
TOTAL=$((TOTAL + 1))
echo "========================================"
echo "[${TOTAL}] Running: ${name}"
echo " Command: python $END2END $*"
echo "========================================"
local start_time
start_time=$(date +%s)
if python "$END2END" "$@" --output-dir "$output_dir" > "$log_file" 2>&1; then
local end_time
end_time=$(date +%s)
local elapsed=$((end_time - start_time))
echo " => PASS (${elapsed}s)"
echo "[PASS] ${name} (${elapsed}s)" >> "$SUMMARY_FILE"
PASS=$((PASS + 1))
else
local exit_code=$?
local end_time
end_time=$(date +%s)
local elapsed=$((end_time - start_time))
echo " => FAIL (exit code: ${exit_code}, ${elapsed}s)"
echo "[FAIL] ${name} (exit code: ${exit_code}, ${elapsed}s)" >> "$SUMMARY_FILE"
# Append last 30 lines of log to summary
echo " --- last 30 lines of log ---" >> "$SUMMARY_FILE"
tail -n 30 "$log_file" >> "$SUMMARY_FILE"
echo " --- end ---" >> "$SUMMARY_FILE"
FAIL=$((FAIL + 1))
fi
echo ""
}
# =============================================================================
# Test cases
# =============================================================================
# --- 1. Text-only input ---
run_test "text_to_text" \
--model "$MODEL_PATH" --query-type text --modalities text
run_test "text_to_text_audio" \
--model "$MODEL_PATH" --query-type text --modalities text,audio
run_test "text_to_audio" \
--model "$MODEL_PATH" --query-type text --modalities audio
# --- 2. Image input ---
run_test "image_to_text" \
--model "$MODEL_PATH" --query-type use_image --modalities text
run_test "image_to_text_audio" \
--model "$MODEL_PATH" --query-type use_image --modalities text,audio
# --- 3. Audio input ---
run_test "audio_to_text" \
--model "$MODEL_PATH" --query-type use_audio --modalities text
run_test "audio_to_text_audio" \
--model "$MODEL_PATH" --query-type use_audio --modalities text,audio
# --- 4. Video input ---
run_test "video_to_text" \
--model "$MODEL_PATH" --query-type use_video --modalities text
run_test "video_to_text_audio" \
--model "$MODEL_PATH" --query-type use_video --modalities text,audio
# --- 5. Multi-audio input ---
run_test "multi_audios_to_text" \
--model "$MODEL_PATH" --query-type use_multi_audios --modalities text
run_test "multi_audios_to_text_audio" \
--model "$MODEL_PATH" --query-type use_multi_audios --modalities text,audio
# --- 6. Mixed modality input (audio+image+video) ---
run_test "mixed_to_text" \
--model "$MODEL_PATH" --query-type use_mixed_modalities --modalities text
run_test "mixed_to_text_audio" \
--model "$MODEL_PATH" --query-type use_mixed_modalities --modalities text,audio
# --- 7. Audio from video ---
run_test "audio_in_video_to_text" \
--model "$MODEL_PATH" --query-type use_audio_in_video --modalities text
run_test "audio_in_video_to_text_audio" \
--model "$MODEL_PATH" --query-type use_audio_in_video --modalities text,audio
# --- 8. py-generator mode ---
run_test "text_to_text_generator" \
--model "$MODEL_PATH" --query-type text --modalities text --py-generator
run_test "audio_to_text_audio_generator" \
--model "$MODEL_PATH" --query-type use_audio --modalities text,audio --py-generator
# --- 9. Multi-prompt batch inference ---
run_test "text_to_text_batch3" \
--model "$MODEL_PATH" --query-type text --modalities text --num-prompts 3
# =============================================================================
# Summary
# =============================================================================
echo "========================================" | tee -a "$SUMMARY_FILE"
echo "Tests done: total ${TOTAL}, passed ${PASS}, failed ${FAIL}" | tee -a "$SUMMARY_FILE"
echo "========================================" | tee -a "$SUMMARY_FILE"
echo ""
echo "Detailed logs: $LOG_DIR"
echo "Summary report: $SUMMARY_FILE"
exit $FAIL