[CI/Build] Refactor E2E CI: split monolithic workflow into modular scripts (#162)
Signed-off-by: Chenchao Hu <huchenchao@example.com> Co-authored-by: Chenchao Hu <huchenchao@example.com>
This commit is contained in:
256
.github/workflows/run-e2e.yml
vendored
256
.github/workflows/run-e2e.yml
vendored
@@ -1,141 +1,161 @@
|
|||||||
# name: e2e-test
|
name: e2e-test
|
||||||
|
|
||||||
# on:
|
on:
|
||||||
# workflow_call:
|
workflow_call:
|
||||||
# pull_request:
|
pull_request:
|
||||||
# branches: [main]
|
branches: [main]
|
||||||
# types: [opened, synchronize, reopened]
|
types: [opened, synchronize, reopened]
|
||||||
# push:
|
push:
|
||||||
# branches: [main]
|
branches: [main]
|
||||||
|
|
||||||
# concurrency:
|
concurrency:
|
||||||
# group: e2e-singlecard
|
group: e2e-singlecard
|
||||||
# cancel-in-progress: false
|
cancel-in-progress: false
|
||||||
|
|
||||||
# jobs:
|
jobs:
|
||||||
# e2e:
|
e2e:
|
||||||
# name: e2e-test-singlecard
|
name: e2e-test-singlecard
|
||||||
# runs-on:
|
runs-on:
|
||||||
# - self-hosted
|
- self-hosted
|
||||||
# - Linux
|
- Linux
|
||||||
# - X64
|
- X64
|
||||||
|
|
||||||
# steps:
|
steps:
|
||||||
# - name: Checkout PR code
|
- name: Checkout PR code
|
||||||
# uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
# with:
|
with:
|
||||||
# fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
# - name: Verify PR workspace
|
- name: Verify PR workspace
|
||||||
# run: |
|
run: |
|
||||||
# echo "===== WORKSPACE ====="
|
echo "===== WORKSPACE ====="
|
||||||
# pwd
|
pwd
|
||||||
# ls -l
|
ls -l
|
||||||
# echo "===== GIT INFO ====="
|
echo "===== GIT INFO ====="
|
||||||
# git rev-parse HEAD
|
git rev-parse HEAD
|
||||||
# git log -1 --oneline
|
git log -1 --oneline
|
||||||
# git status --porcelain
|
git status --porcelain
|
||||||
|
|
||||||
# - name: Start docker
|
- name: Start docker
|
||||||
# run: |
|
run: |
|
||||||
# bash ci/scripts/docker/start_docker.sh
|
bash ci/scripts/docker/start_docker.sh
|
||||||
|
|
||||||
# - name: Install enviroments
|
- name: Install enviroments
|
||||||
# run: |
|
env:
|
||||||
# bash ci/scripts/env/install_env.sh
|
PROXY_URL: ${{ secrets.PROXY_URL }}
|
||||||
|
NO_PROXY_LIST: ${{ secrets.NO_PROXY_LIST }}
|
||||||
|
run: |
|
||||||
|
bash ci/scripts/env/install_env.sh
|
||||||
|
|
||||||
# - name: Start vLLM server
|
- name: Start vLLM server
|
||||||
# run: |
|
run: |
|
||||||
# bash ci/scripts/server/start_vllm.sh
|
bash ci/scripts/server/start_vllm.sh
|
||||||
|
|
||||||
# - name: Wait for vLLM ready
|
- name: Wait for vLLM ready
|
||||||
# run: |
|
run: |
|
||||||
# bash ci/scripts/server/wait_vllm.sh
|
bash ci/scripts/server/wait_vllm.sh
|
||||||
|
|
||||||
# - name: Accuracy testing
|
- name: API Test
|
||||||
# run: |
|
run: |
|
||||||
# bash ci/scripts/tests/run_accuracy.sh
|
docker exec aiak-e2e-singlecard bash -lc '
|
||||||
|
curl http://localhost:8356/v1/chat/completions \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d @- << "EOF"
|
||||||
|
{
|
||||||
|
"model": "Qwen3-8B",
|
||||||
|
"messages": [
|
||||||
|
{ "role": "user", "content": "Who are you?" }
|
||||||
|
],
|
||||||
|
"max_tokens": 200,
|
||||||
|
"temperature": 0
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
'
|
||||||
|
|
||||||
# - name: Performance testing
|
# - name: Accuracy testing
|
||||||
# run: |
|
# run: |
|
||||||
# docker exec aiak-e2e-singlecard bash -lc '
|
# bash ci/scripts/tests/run_accuracy.sh
|
||||||
# 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")
|
|
||||||
|
|
||||||
# # ==========================================
|
# - name: Performance testing
|
||||||
# # 2. Define concurrency generation logic (densification strategy)
|
# run: |
|
||||||
# # ============x==============================
|
# docker exec aiak-e2e-singlecard bash -lc '
|
||||||
# # Use array concatenation to combine different density ranges
|
# source ci/scripts/common/env.sh
|
||||||
# # Syntax: seq [start] [step] [end]
|
# source ci/scripts/common/log.sh
|
||||||
# CONCURRENCIES=(1)
|
# #!/bin/bash
|
||||||
|
# # ==========================================
|
||||||
|
# # 1. Define test dimensions
|
||||||
|
# # (can be easily extended, e.g., add "2048x2048")
|
||||||
|
# # ==========================================
|
||||||
|
# DIMENSIONS=("1024x1024")
|
||||||
|
|
||||||
# # ==========================================
|
# # ==========================================
|
||||||
# # 3. Automatically assemble test cases
|
# # 2. Define concurrency generation logic (densification strategy)
|
||||||
# # ==========================================
|
# # ============x==============================
|
||||||
# TEST_COMBINATIONS=() # Initialize empty array
|
# # Use array concatenation to combine different density ranges
|
||||||
|
# # Syntax: seq [start] [step] [end]
|
||||||
|
# CONCURRENCIES=(1)
|
||||||
|
|
||||||
# # 🔄 Modified: outer loop over batch size (concurrency), inner loop over dimensions
|
# # ==========================================
|
||||||
# for bs in "${CONCURRENCIES[@]}"; do # ← outer loop: concurrency
|
# # 3. Automatically assemble test cases
|
||||||
# for dim in "${DIMENSIONS[@]}"; do # ← inner loop: dimensions
|
# # ==========================================
|
||||||
# case_str="${bs}x${dim}"
|
# TEST_COMBINATIONS=() # Initialize empty array
|
||||||
# TEST_COMBINATIONS+=("$case_str")
|
|
||||||
# done
|
|
||||||
# done
|
|
||||||
|
|
||||||
# # ==========================================
|
# # 🔄 Modified: outer loop over batch size (concurrency), inner loop over dimensions
|
||||||
# # 4. (Optional) Print generated cases for sanity check
|
# for bs in "${CONCURRENCIES[@]}"; do # ← outer loop: concurrency
|
||||||
# # ==========================================
|
# for dim in "${DIMENSIONS[@]}"; do # ← inner loop: dimensions
|
||||||
# echo "Generated ${#TEST_COMBINATIONS[@]} test cases in total:"
|
# case_str="${bs}x${dim}"
|
||||||
# echo "${TEST_COMBINATIONS[@]}" # Uncomment if you want to print all cases
|
# TEST_COMBINATIONS+=("$case_str")
|
||||||
|
# done
|
||||||
|
# done
|
||||||
|
|
||||||
# # Progress counters
|
# # ==========================================
|
||||||
# TOTAL_TESTS=${#TEST_COMBINATIONS[@]}
|
# # 4. (Optional) Print generated cases for sanity check
|
||||||
# CURRENT_TEST=0
|
# # ==========================================
|
||||||
|
# echo "Generated ${#TEST_COMBINATIONS[@]} test cases in total:"
|
||||||
|
# echo "${TEST_COMBINATIONS[@]}" # Uncomment if you want to print all cases
|
||||||
|
|
||||||
# # Iterate over all test combinations
|
# # Progress counters
|
||||||
# for COMBINATION in "${TEST_COMBINATIONS[@]}"; do
|
# TOTAL_TESTS=${#TEST_COMBINATIONS[@]}
|
||||||
# # Parse parameters from combination string
|
# CURRENT_TEST=0
|
||||||
# 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
|
# # Iterate over all test combinations
|
||||||
# CURRENT_TEST=$((CURRENT_TEST + 1))
|
# 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)
|
||||||
|
|
||||||
# echo "=========================================================="
|
# # Update progress
|
||||||
# echo "Test progress: $CURRENT_TEST / $TOTAL_TESTS"
|
# CURRENT_TEST=$((CURRENT_TEST + 1))
|
||||||
# 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"
|
# echo "=========================================================="
|
||||||
|
# echo "Test progress: $CURRENT_TEST / $TOTAL_TESTS"
|
||||||
|
# echo "Current configuration: concurrency=$NUM_PROMPTS, input_len=$INPUT_LEN, output_len=$OUTPUT_LEN"
|
||||||
|
# echo "=========================================================="
|
||||||
|
|
||||||
# # Run benchmark
|
# #OUTPUT_FILE="$RESULT_DIR/p800_${NUM_PROMPTS}_${INPUT_LEN}_${OUTPUT_LEN}.log"
|
||||||
# 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
|
# # Run benchmark
|
||||||
# if: always()
|
# python3 -m vllm.entrypoints.cli.main bench serve \
|
||||||
# run: |
|
# --host 127.0.0.1 \
|
||||||
# bash ci/scripts/docker/set_permissions.sh
|
# --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: Cleanup docker
|
- name: Set permissions
|
||||||
# if: always()
|
if: always()
|
||||||
# run: |
|
run: |
|
||||||
# bash ci/scripts/docker/stop_docker.sh
|
bash ci/scripts/docker/set_permissions.sh
|
||||||
|
|
||||||
|
- name: Cleanup docker
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
bash ci/scripts/docker/stop_docker.sh
|
||||||
|
|||||||
@@ -14,11 +14,7 @@ export VLLM_API_BASE="http://127.0.0.1:${VLLM_PORT}"
|
|||||||
export MODEL_PATH="${MODEL_PATH:-/ssd3/models/Qwen3-8B}"
|
export MODEL_PATH="${MODEL_PATH:-/ssd3/models/Qwen3-8B}"
|
||||||
export SERVED_MODEL_NAME="${SERVED_MODEL_NAME:-Qwen3-8B}"
|
export SERVED_MODEL_NAME="${SERVED_MODEL_NAME:-Qwen3-8B}"
|
||||||
|
|
||||||
export XPU_VISIBLE_DEVICES="${XPU_VISIBLE_DEVICES:-5}"
|
export XPU_VISIBLE_DEVICES="${XPU_VISIBLE_DEVICES:-4}"
|
||||||
|
|
||||||
# Proxy Configuration
|
|
||||||
export PROXY_URL="${PROXY_URL:-http://agent.baidu.com:8891}"
|
|
||||||
export NO_PROXY_LIST="${NO_PROXY_LIST:-localhost,127.0.0.1,::1}"
|
|
||||||
|
|
||||||
export WORKSPACE_MOUNT="${WORKSPACE_MOUNT:-/home/E2E/workspace:/workspace}"
|
export WORKSPACE_MOUNT="${WORKSPACE_MOUNT:-/home/E2E/workspace:/workspace}"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user