* [CI/Build] Add CI end-to-end (E2E) tests Signed-off-by: Chenchao Hu <huchenchao@example.com>
142 lines
4.7 KiB
YAML
142 lines
4.7 KiB
YAML
name: e2e-test
|
|
|
|
on:
|
|
workflow_call:
|
|
pull_request:
|
|
branches: [main]
|
|
types: [opened, synchronize, reopened]
|
|
push:
|
|
branches: [main]
|
|
|
|
concurrency:
|
|
group: e2e-singlecard
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
e2e:
|
|
name: e2e-test-singlecard
|
|
runs-on:
|
|
- self-hosted
|
|
- Linux
|
|
- X64
|
|
|
|
steps:
|
|
- name: Checkout PR code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Verify PR workspace
|
|
run: |
|
|
echo "===== WORKSPACE ====="
|
|
pwd
|
|
ls -l
|
|
echo "===== GIT INFO ====="
|
|
git rev-parse HEAD
|
|
git log -1 --oneline
|
|
git status --porcelain
|
|
|
|
- name: Start docker
|
|
run: |
|
|
bash ci/scripts/docker/start_docker.sh
|
|
|
|
- name: Install enviroments
|
|
run: |
|
|
bash ci/scripts/env/install_env.sh
|
|
|
|
- name: Start vLLM server
|
|
run: |
|
|
bash ci/scripts/server/start_vllm.sh
|
|
|
|
- name: Wait for vLLM ready
|
|
run: |
|
|
bash ci/scripts/server/wait_vllm.sh
|
|
|
|
- name: Accuracy testing
|
|
run: |
|
|
bash ci/scripts/tests/run_accuracy.sh
|
|
|
|
- name: Performance testing
|
|
run: |
|
|
docker exec aiak-e2e-singlecard bash -lc '
|
|
source ci/scripts/common/env.sh
|
|
source ci/scripts/common/log.sh
|
|
#!/bin/bash
|
|
# ==========================================
|
|
# 1. Define test dimensions
|
|
# (can be easily extended, e.g., add "2048x2048")
|
|
# ==========================================
|
|
DIMENSIONS=("1024x1024")
|
|
|
|
# ==========================================
|
|
# 2. Define concurrency generation logic (densification strategy)
|
|
# ============x==============================
|
|
# Use array concatenation to combine different density ranges
|
|
# Syntax: seq [start] [step] [end]
|
|
CONCURRENCIES=(1)
|
|
|
|
# ==========================================
|
|
# 3. Automatically assemble test cases
|
|
# ==========================================
|
|
TEST_COMBINATIONS=() # Initialize empty array
|
|
|
|
# 🔄 Modified: outer loop over batch size (concurrency), inner loop over dimensions
|
|
for bs in "${CONCURRENCIES[@]}"; do # ← outer loop: concurrency
|
|
for dim in "${DIMENSIONS[@]}"; do # ← inner loop: dimensions
|
|
case_str="${bs}x${dim}"
|
|
TEST_COMBINATIONS+=("$case_str")
|
|
done
|
|
done
|
|
|
|
# ==========================================
|
|
# 4. (Optional) Print generated cases for sanity check
|
|
# ==========================================
|
|
echo "Generated ${#TEST_COMBINATIONS[@]} test cases in total:"
|
|
echo "${TEST_COMBINATIONS[@]}" # Uncomment if you want to print all cases
|
|
|
|
# Progress counters
|
|
TOTAL_TESTS=${#TEST_COMBINATIONS[@]}
|
|
CURRENT_TEST=0
|
|
|
|
# Iterate over all test combinations
|
|
for COMBINATION in "${TEST_COMBINATIONS[@]}"; do
|
|
# Parse parameters from combination string
|
|
NUM_PROMPTS=$(echo $COMBINATION | cut -d'x' -f1)
|
|
INPUT_LEN=$(echo $COMBINATION | cut -d'x' -f2)
|
|
OUTPUT_LEN=$(echo $COMBINATION | cut -d'x' -f3)
|
|
|
|
# Update progress
|
|
CURRENT_TEST=$((CURRENT_TEST + 1))
|
|
|
|
echo "=========================================================="
|
|
echo "Test progress: $CURRENT_TEST / $TOTAL_TESTS"
|
|
echo "Current configuration: concurrency=$NUM_PROMPTS, input_len=$INPUT_LEN, output_len=$OUTPUT_LEN"
|
|
echo "=========================================================="
|
|
|
|
#OUTPUT_FILE="$RESULT_DIR/p800_${NUM_PROMPTS}_${INPUT_LEN}_${OUTPUT_LEN}.log"
|
|
|
|
# Run benchmark
|
|
python3 -m vllm.entrypoints.cli.main bench serve \
|
|
--host 127.0.0.1 \
|
|
--port ${VLLM_PORT:-8356}\
|
|
--backend vllm \
|
|
--model ${SERVED_MODEL_NAME:-Qwen3-8B} \
|
|
--dataset-name random \
|
|
--num-prompts $NUM_PROMPTS \
|
|
--random-input-len $INPUT_LEN \
|
|
--random-output-len $OUTPUT_LEN \
|
|
--tokenizer ${MODEL_PATH:-/ssd3/models/Qwen3-8B} \
|
|
--ignore-eos
|
|
done
|
|
'
|
|
|
|
- name: Set permissions
|
|
if: always()
|
|
run: |
|
|
bash ci/scripts/docker/set_permissions.sh
|
|
|
|
- name: Cleanup docker
|
|
if: always()
|
|
run: |
|
|
bash ci/scripts/docker/stop_docker.sh
|