Implementation:InternLM Lmdeploy Daily Ete Test
| Knowledge Sources | |
|---|---|
| Domains | CI, Testing, GPU |
| Last Updated | 2026-02-07 15:00 GMT |
Overview
A GitHub Actions workflow that runs daily end-to-end tests for lmdeploy on A100 GPUs, covering quantization, tool tests, RESTful API tests, pipeline tests, benchmarks, and code coverage collection.
Description
The daily_ete_test.yml workflow is the primary comprehensive CI test suite for lmdeploy. It is triggered on a cron schedule (weekdays at 14:00 UTC) or via manual dispatch. The workflow consists of the following jobs:
- linux-build: Builds the lmdeploy wheel package on ubuntu-latest using Docker (CUDA 12.8), then uploads it as an artifact.
- download_pkgs: Downloads build artifacts to the self-hosted A100 runner and prepares the test environment. Supports offline mode.
- test_quantization: Tests AWQ (W4A16) and W8A8 quantization, running in parallel based on backend selection (turbomind/pytorch).
- test_tools: A matrix job covering backends (turbomind, pytorch), model types (llm, mllm), and functions (pipeline, restful, chat). Runs pytest suites with varying GPU counts (1, 2, 4, 8 GPUs).
- test_restful: Tests the RESTful API server with multiple models (InternLM, Qwen3, InternVL3, etc.) using different tensor parallelism settings and log probability modes.
- test_pipeline: Tests the pipeline interface including long-text functionality across multiple GPU configurations.
- test_benchmark: Runs benchmark test scripts to validate benchmarking functionality.
- get_coverage_report: Combines all coverage data from previous jobs and generates a coverage report.
All test jobs run inside the openmmlab/lmdeploy:latest-cu12.8 Docker image on self-hosted A100 runners with GPU access.
Usage
Triggered automatically on weekdays or manually via GitHub Actions with configurable inputs for repository, branch, backend, model type, function filter, offline mode, and regression function selection.
Code Reference
Source Location
- Repository: InternLM_Lmdeploy
- File: .github/workflows/daily_ete_test.yml
- Lines: 1-697
Signature
name: daily_ete_test
on:
workflow_dispatch:
inputs:
repo_org: { type: string, default: 'InternLM/lmdeploy' }
repo_ref: { type: string, default: 'main' }
backend: { type: string, default: "['turbomind', 'pytorch']" }
model: { type: string, default: "['llm','mllm']" }
function: { type: string, default: '["pipeline", "restful", "chat"]' }
offline_mode: { type: boolean, default: false }
regression_func: { type: string, default: "['quant', 'tools','restful','pipeline','benchmark','evaluation']" }
schedule:
- cron: '00 14 * * 0-4'
jobs:
linux-build: ...
download_pkgs: ...
test_quantization: ...
test_tools: ...
test_restful: ...
test_pipeline: ...
test_benchmark: ...
get_coverage_report: ...
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| repo_org | string | No | Repository organization/name (default: InternLM/lmdeploy) |
| repo_ref | string | No | Branch, tag, or commit ID (default: main) |
| backend | string | Yes | JSON list of backends to test: turbomind, pytorch |
| model | string | Yes | JSON list of model types: llm, mllm |
| function | string | Yes | JSON list of test functions: pipeline, restful, chat |
| offline_mode | boolean | Yes | Whether to use pre-prepared offline packages |
| regression_func | string | Yes | JSON list of regression areas: quant, tools, restful, pipeline, benchmark, evaluation |
Outputs
| Name | Type | Description |
|---|---|---|
| Build artifacts | wheel file | lmdeploy wheel package uploaded as GitHub artifact |
| Test reports | Allure reports | Test results stored in REPORT_DIR |
| Coverage report | XML/text | Combined code coverage report |
Usage Examples
# Manual trigger with custom parameters:
# Go to Actions > daily_ete_test > Run workflow
# Set backend: "['turbomind']"
# Set model: "['llm']"
# Set function: '["pipeline"]'
# Set regression_func: "['tools','pipeline']"