Repository navigation
feat(metadata store): wire vLLM test-skip cache for upstream/model/sagemaker suites - #6604
Merged
Merged
Conversation
sirutBuasai
previously approved these changes
Aug 24, 2026
sirutBuasai
approved these changes
Aug 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Wire the three vLLM framework test suites —
vllm/upstream,vllm/model,vllm/sagemaker— into the content-addressed test-skip cache and enable them end-to-end. CI can now skip a vLLM suite when a prior PASS exists for the same image content + test code, and it records a PASS after the suite genuinely ran and passed. The mechanism is fail-open: any cache miss, degraded lookup, or infra failure runs the suite as normal..github/workflows/vllm.tests-upstream.yml,vllm.tests-model.yml,vllm.tests-sagemaker.yml— add optionalimage-content-hash/suite-code-hashinputs and arecord-test-passjob to each reusable. A PASS is recorded only when the suite genuinely ran and passed: the record job requires the test jobs to reportsuccess(upstream: all of regression/cuda/example; model: at least one non-empty matrix job, with none failed; sagemaker:endpoint-test). Because each test job is already gated at the job level on thepreflightimage probe, an absent image (or empty matrix) leaves those jobsskipped— neversuccess— so a self-skipped run never records a false PASS. Shared by all callers; a no-op for callers that pass no hashes..github/workflows/vllm.pipeline.yml— add the three vLLM suites to the pipeline'scheckjob that looks up prior passes, gateupstream-tests/model-tests/sagemaker-testson the result (fail-open viaskips || '{}', gated only on build failure — never on the read-only check job's status), and thread the computed hashes into each reusable so a pass is recorded. Existing gates (e.g.sagemaker-testsrequiringcustomer-type == 'sagemaker') are preserved..github/workflows/huggingface-vllm.pipeline.yml— this pipeline reusesvllm.tests-sagemaker.yml, sovllm/sagemakeris added to itscheckjob and itssagemaker-testscaller is wired the same way..github/config/test-suites.yml— extend thecode_pathsfor the matrix-driven suites so a change to the tested-model set invalidates the cache alongsidetest/vllm/**:vllm/modelgains.github/config/model-tests/vllm-model-tests.ymlandvllm/sagemakergains.github/config/model-tests/vllm-sagemaker-endpoint-tests.yml.Pipelines wired: vllm, huggingface-vllm (sagemaker suite only).
The
checkandrecord-test-passjobs are both fail-open, so a degraded cache never blocks CI; on a cold cache the suite simply runs and populates a row on pass.Test Plan
python -m pytest test/db— reconciliation tests (invoked suites exist in config; skip accessors are configured and checked) plus the suite/image hashing unit tests.vllm/*accessors in each wired pipeline's jobif:conditions AND that each accessor is present in that pipeline's check-job suites list.Test Result
test/db: 37 passed.*.ymlparse as YAML; thevllm/upstream,vllm/model, andvllm/sagemakeraccessors are detected in the check-job suites list and in the gated jobs'if:conditions forvllm.pipeline.yml, andvllm/sagemakerlikewise forhuggingface-vllm.pipeline.yml.Live CI validation
Validated via test PR #6627. Record→hit is validated without a live endpoint:
vllm/sagemakercan't run in PR CI due to recurring GPUInsufficientInstanceCapacity(the endpoint never reachesInService, so the suite never passes and correctly records nothing — fail-open). The record/hit logic is suite-agnostic shared code, covered by moto unit tests intest/db(Database Unit Tests workflow), and its live record→hit was proven on capacity-independent suites — telemetry (#6599), EFA (#6602), Ray (#6633), PyTorch (#6632) — each recording on run 1 and getting a cache HIT (suite skipped) on a same-day re-run.Toggle if you are merging into master Branch
By default, docker image builds and tests are disabled. Two ways to run builds and tests:
How to use the helper utility for updating dlc_developer_config.toml
Assuming your remote is called
origin(you can find out more withgit remote -v)...python src/prepare_dlc_dev_environment.py -b </path/to/buildspec.yml> -cp originpython src/prepare_dlc_dev_environment.py -b </path/to/buildspec.yml> -t sanity_tests -cp originpython src/prepare_dlc_dev_environment.py -rcp originNOTE: If you are creating a PR for a new framework version, please ensure success of the local, standard, rc, and efa sagemaker tests by updating the dlc_developer_config.toml file:
sagemaker_remote_tests = truesagemaker_efa_tests = truesagemaker_rc_tests = truesagemaker_local_tests = trueHow to use PR description
Use the code block below to uncomment commands and run the PR CodeBuild jobs. There are two commands available:# /buildspec <buildspec_path># /buildspec pytorch/training/buildspec.yml# /tests <test_list># /tests sanity security ec2sanity, security, ec2, ecs, eks, sagemaker, sagemaker-local.Toggle if you are merging into main Branch
PR Checklist
pre-commit run --all-fileslocally before creating this PR. (Read DEVELOPMENT.md for details).