Skip to content

fix(ci): retain changed GPU families - #1277

Merged
chaofengw-nv merged 1 commit into
NVIDIA:mainfrom
chaofengw-nv:fix/community-gpu-changed-families
Sep 12, 2026
Merged

chaofengw-nv merged 1 commit into
NVIDIA:mainfrom
chaofengw-nv:fix/community-gpu-changed-families

Conversation

@chaofengw-nv

Copy link
Copy Markdown
Collaborator

Background

PR #1269 changed the Llama family together with
apps/benchmark/performance/release.yaml. The Community GPU impact classifier
treated every apps/ change as shared, promoted the selection to scope=all,
and the shared smoke plan then replaced the directly changed Llama family with
its fixed smoke set. As a result, manual GPU smoke could exercise unrelated
families while omitting the family whose implementation changed.

Observed run:
https://github.com/NVIDIA/TensorRT-Model-Connect/actions/runs/34616043218

Exit Criteria

  • A release-performance policy change does not broaden model-proof scope.
  • A family changed alongside genuinely shared runtime code remains in the GPU
    plan in addition to the fixed shared smoke set.
  • Pure family, pure shared, and newly added family behavior remains intact.
  • Automatic Community GPU execution remains disabled and non-gating.

Implementation

  • Treat apps/benchmark/performance/release.yaml as model-proof neutral, so a
    mixed release-policy and family diff retains family-local scope.
  • Preserve directly changed existing families separately from the broader
    trusted family inventory when shared changes produce scope=all.
  • Validate and pass that trusted selection through the workflow into the
    isolated runner, which unions direct families with shared smoke and newly
    added families.
  • Add classifier, workflow, trust-boundary, and runner regression coverage.

There are no model/runtime, public API, ABI, bundle-format, dependency, or
checkpoint changes.

Change categories

  • Model or runtime behavior
  • Public API
  • ABI
  • Bundle or artifact format
  • Dependencies
  • Documentation only
  • CI or developer tooling

Validation

Commands and Results

  • python3 -m pytest -q tools/tests: 488 passed, 10 subtests passed.
  • python3 -m pytest -q tools/tests/test_family_impact.py tools/tests/test_community_gpu_ci.py tools/tests/test_community_ci.py: 86 passed.
  • python3 -m tools.community_ci source-quality --base github/main: passed,
    including 166 tests.
  • python3 -m ruff check tools/test_impact.py tools/community_gpu_ci.py tools/tests/test_family_impact.py tools/tests/test_community_gpu_ci.py tools/tests/test_community_ci.py: passed.
  • python3 -m ruff format --check tools/test_impact.py tools/community_gpu_ci.py tools/tests/test_family_impact.py tools/tests/test_community_gpu_ci.py tools/tests/test_community_ci.py: passed.
  • python3 tools/legal_headers.py --check: 4,616 tracked files checked, zero
    findings.
  • actionlint .github/workflows/community-ci.yml: passed.
  • git diff --check: passed.
  • Replayed the fix(llama): preserve full eos_token_id list through to the runtime #1269 changed-path set through tools.test_impact: produced
    scope=families, families=["llama"], and
    direct_families=["llama"].

Hardware, Environment, and Revisions

  • Head: 9c5e144ff7d0d45a9a99f643f795fc61b39233ba.
  • Base: 714f1fc0d567213a7b79a488e9dcfdf405279c6a (github/main).
  • Local validation: Ubuntu 24.04.1 x86_64, Python 3.12.3, CPU-only.
  • No model, checkpoint, dataset, GPU, CUDA, TensorRT, or precision revision was
    changed or exercised.

Not Run / Remaining Gaps

  • Live Community GPU was not run. Automatic GPU execution is intentionally
    disabled, and pull_request_target loads trusted workflow code from main,
    so this PR cannot exercise its new workflow wiring before merge.
  • Required Internal CI has not yet run on this head.
  • After merge, manually dispatch Community GPU on a mixed shared-plus-family
    validation PR and confirm the directly changed family appears alongside the
    shared smoke set.

Contributor Self-Review

  • I have completed a self-review of this change.

Notes For Future Readers

  • Review tools/test_impact.py first for selection semantics, then the workflow
    trust-boundary validation, and finally tools/community_gpu_ci.py for the
    isolated execution plan.
  • families remains the trusted policy inventory for scope=all;
    direct_families is the smaller set of existing family owners explicitly
    touched by the pull request. Newly introduced owners remain separate in
    added_families.
  • Community GPU remains an experimental, manually enabled, non-required smoke
    check.

Risk level

  • Low
  • Medium
  • High

The change affects trusted CI selection and secret-bearing GPU orchestration,
but inputs remain validated, automatic GPU allocation remains disabled, and
the behavior has focused regression coverage.

Preserve directly changed existing families when shared paths broaden impact to all. Add them to the shared smoke selection, and keep release performance policy changes from unnecessarily broadening GPU scope.

This ensures mixed diffs validate the model family they actually modify.

Signed-off-by: chaofengw <chaofengw@nvidia.com>
@coderabbitai

coderabbitai Bot commented Sep 12, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 85c5e43e-b633-4a67-af31-f155d1d8bd4a

📥 Commits

Reviewing files that changed from the base of the PR and between 714f1fc and 9c5e144.

📒 Files selected for processing (6)
  • .github/workflows/community-ci.yml
  • tools/community_gpu_ci.py
  • tools/test_impact.py
  • tools/tests/test_community_ci.py
  • tools/tests/test_community_gpu_ci.py
  • tools/tests/test_family_impact.py

Included review availability: Your plan provides up to 12 included reviews per hour; 11 remain after this review.


📝 Summary

Summary

The classifier preserves directly changed model families when shared changes select all families. apps/benchmark/performance/release.yaml remains model-proof neutral.

The workflow validates and exports direct families through TRTMC_GPU_DIRECT_FAMILIES. The runner combines direct families with shared smoke coverage and newly added families. Community GPU execution remains disabled and non-gating.

Regression tests cover classification, workflow trust boundaries, family selection, and runner environment propagation.

Architecture impact

  • Family-owned files: tools/test_impact.py tracks Impact.direct_families. Family-impact tests verify direct-family preservation.
  • Shared surfaces: tools/community_gpu_ci.py resolves family scope. .github/workflows/community-ci.yml validates and passes the selection to the runner.
  • Dependency direction: The classifier sends direct-family data to the workflow. The workflow sends validated data to the runner through TRTMC_GPU_DIRECT_FAMILIES.
  • Affected consumers: Community GPU status reporting, smoke-test execution, and family-scope authorization.
  • Unresolved blast radius: Live Community GPU execution and required Internal CI have not run. Their behavior remains unverified.

Review outcome

HUMAN REVIEW REQUIRED: The available evidence does not resolve the material runtime and CI blast-radius questions.

Walkthrough

The change preserves directly changed model families through impact classification, GPU family selection, workflow validation, and GPU smoke-test execution. It adds validation and propagates TRTMC_GPU_DIRECT_FAMILIES to downstream tests.

Changes

Direct GPU family tracking

Layer / File(s) Summary
Impact classification contract
tools/test_impact.py, tools/tests/test_family_impact.py
Impact now records direct_families. Classification distinguishes direct families from effective scope and excludes the release performance policy file from family classification.
GPU family selection
tools/community_gpu_ci.py, tools/tests/test_community_gpu_ci.py
GPU selection validates direct families, includes them in all scope, and requires families scope to match them exactly.
Workflow validation and GPU execution
.github/workflows/community-ci.yml, tools/tests/test_community_ci.py
The workflow publishes and validates direct families, reports them in GPU summaries, and passes them to smoke tests through TRTMC_GPU_DIRECT_FAMILIES.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Bug fix

Sequence Diagram(s)

sequenceDiagram
  participant ImpactClassifier
  participant CommunityCI
  participant CommunityGPUCI
  participant GPUSmokeTest
  ImpactClassifier->>CommunityCI: Publish direct_families
  CommunityCI->>CommunityCI: Validate direct family scope
  CommunityCI->>CommunityGPUCI: Pass TRTMC_GPU_DIRECT_FAMILIES
  CommunityGPUCI->>GPUSmokeTest: Select direct GPU families
Loading

Merge Risk: ⚪ Minimal · up to 9c5e1

This change only refines which model families the optional, currently disabled GPU smoke-test path reports and executes, and it keeps the family list bounded to the trusted baseline inventory. Accompanying tests cover the new classification, validation, and execution paths, so no merge-blocking risk remains.

🚥 Pre-merge checks | ✅ 8 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 45.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 20 functions across 5 files. (1 skipped: … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (8 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and accurately identifies the primary CI change: retaining directly changed GPU families.
Description check ✅ Passed The description completes the required sections with the problem, exit criteria, implementation, change category, validation results, environment, remaining gaps, self-review, notes, and risk rational…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Family Ownership Boundary ✅ Passed No family ownership boundary violation is introduced. The authoritative diff changes only .github/workflows/community-ci.yml, tools/community_gpu_ci.py, tools/test_impact.py, and tooling tests; …
Shared Semantic Neutrality ✅ Passed PASS. The pull request changes CI impact classification and GPU test selection, not model semantics. tools/test_impact.py adds a path classification for apps/benchmark/performance/release.yaml and…
Benchmark Validation Integrity ✅ Passed PASS. The pull request changes CI impact accounting, not benchmark measurement or validation semantics. The reviewed diff contains no benchmark implementation, reference runner, metric, workload, repo…
Shared Change Blast Radius ✅ Passed The check criteria are satisfied. The description identifies the model-agnostic need: shared impact classification must preserve any directly changed existing family when a shared change selects all f…
Full details: Docstring Coverage

Explanation

Docstring coverage is 45.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 20 functions across 5 files. (1 skipped: 1 unsupported.)


Comment @coderabbitai help to get the list of available commands.

@chaofengw-nv chaofengw-nv added the run-internal-ci Maintainer-approved dispatch to internal CI label Sep 12, 2026
@github-actions github-actions Bot removed the run-internal-ci Maintainer-approved dispatch to internal CI label Sep 12, 2026
@chaofengw-nv
chaofengw-nv merged commit f236846 into NVIDIA:main Sep 12, 2026
19 checks passed
zhenshanx-nv added a commit to zhenshanx-nv/TensorRT-Model-Connect that referenced this pull request Sep 14, 2026
…ared change

No functional change. Touches families/sam3/support.py (a specific
family) and .dockerignore (a shared file) in the same commit, so
tools.test_impact resolves scope: "all" while direct_families still
lists sam3. Verified locally: selected_families('all', ..., ...)
returns ('bert', 'gpt2', 'qwen', 'sam3', 'timm_vit', 'whisper') -
the 5-family smoke set plus sam3 retained, confirming NVIDIA#1277's fix
for the case Chaofeng and Zhenshan discussed (family + shared-dir
change in one PR should not drop the touched family).

Signed-off-by: Zhenshan Xie <zhenshanx@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant