From d3b9eaaf577090f0c6f92ca4d0f9177ffc349055 Mon Sep 17 00:00:00 2001 From: Jingkun Zhang Date: Sun, 20 Sep 2026 13:18:08 -0700 Subject: [PATCH 1/3] feat(qwen_vl): add Qwen3-VL-8B-Instruct manifest Qwen3-VL-8B-Instruct shares the same architecture class (Qwen3VLForConditionalGeneration, model_type qwen3_vl) as the already-supported 2B checkpoint, scaled up (28->36 text layers, 2048->4096 hidden, 24->27 vision depth). config.py reads these dimensions from the checkpoint's own config.json rather than hardcoding the 2B shape, so this is a scale-up within the existing family. No shared-file or task changes. Closes #1388. Signed-off-by: Jingkun Zhang --- .../qwen_vl/tests/manifests/qwen3-vl-8b.json | 21 +++++++++++++++++++ website/data/hf-model-metadata.json | 11 ++++++++++ 2 files changed, 32 insertions(+) create mode 100644 families/qwen_vl/tests/manifests/qwen3-vl-8b.json diff --git a/families/qwen_vl/tests/manifests/qwen3-vl-8b.json b/families/qwen_vl/tests/manifests/qwen3-vl-8b.json new file mode 100644 index 0000000000..c35110e1dd --- /dev/null +++ b/families/qwen_vl/tests/manifests/qwen3-vl-8b.json @@ -0,0 +1,21 @@ +{ + "name": "qwen3-vl-8b", + "hf_id": "Qwen/Qwen3-VL-8B-Instruct", + "bundle": "qwen3-vl-8b.bundle", + "family": "qwen_vl", + "task": "vision_language_generation", + "precision": "bf16", + "reference_precision": "bf16", + "testcases": [ + { + "name": "qwen3-vl-8b", + "premerge": true, + "prompt": "What color is the vehicle in this image? Answer in one word.", + "max_new_tokens": 10, + "test_image": "data/test_img.jpeg", + "reference_precision": "bf16" + } + ], + "tensor_parallel_size": 1, + "max_sequence_length": 256 +} diff --git a/website/data/hf-model-metadata.json b/website/data/hf-model-metadata.json index 9df7612df0..667a3ea048 100644 --- a/website/data/hf-model-metadata.json +++ b/website/data/hf-model-metadata.json @@ -300,6 +300,17 @@ ], "architecture_source": "config.architectures" }, + { + "hf_id": "Qwen/Qwen3-VL-8B-Instruct", + "revision": "0c351dd01ed87e9c1b53cbc748cba10e6187ff3b", + "revision_source": "resolved", + "metadata_file": "config.json", + "model_type": "qwen3_vl", + "architectures": [ + "Qwen3VLForConditionalGeneration" + ], + "architecture_source": "config.architectures" + }, { "hf_id": "Qwen/Qwen3.5-9B", "revision": "c202236235762e1c871ad0ccb60c8ee5ba337b9a", From 6211a144cb15e605c5e9885a47ce9a1e056fa756 Mon Sep 17 00:00:00 2001 From: Jingkun Zhang Date: Sun, 20 Sep 2026 17:16:42 -0700 Subject: [PATCH 2/3] fix(qwen_vl): exclude qwen3-vl-8b from the release-performance suite The new manifest is "ready" per the perf-matrix coverage check (test_release_suite_expands_profiles_and_covers_ready_catalog), which requires every ready manifest to have either a release-suite entry or an excluded_profiles entry. Functional and Hugging Face reference-parity qualification is present (this PR's E2E run), but no release-performance workload or receipt was collected for the 8B width specifically -- only for the 2B, which exercises the same qwen_vl builder and runtime path. Follows the same precedent as the existing qwen36-27b/gemma-3-4b entries. Verified: apps/benchmark/trtmc_benchmark/tests/test_perf_matrix.py 209/209. Signed-off-by: Jingkun Zhang --- .../benchmark_qualification/performance/config/release.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/qualification_tests/benchmark_qualification/performance/config/release.yaml b/qualification_tests/benchmark_qualification/performance/config/release.yaml index f891fda4be..5ebbc0e3ee 100644 --- a/qualification_tests/benchmark_qualification/performance/config/release.yaml +++ b/qualification_tests/benchmark_qualification/performance/config/release.yaml @@ -137,6 +137,11 @@ excluded_profiles: nano width, which is the only one whose class-attention norm covers a single token, but the release-performance workload and receipt were collected only for xcit_tiny_12_p16_224. + - model: qwen3-vl-8b + reason: >- + Functional and Hugging Face reference-parity qualification is present, + but the release-performance workload and receipt were collected only for + qwen3-vl-2b, which exercises the same builder and runtime path. entries: - id: detr.detect From 08ea6b216434a110d3d9b43c0f1b63ee3a0f9ab1 Mon Sep 17 00:00:00 2001 From: Jingkun Zhang Date: Sun, 20 Sep 2026 18:26:28 -0700 Subject: [PATCH 3/3] fix(qwen_vl): pin hf_revision so the E2E harness resolves cached checkpoints Internal Community GPU CI stages checkpoints by exact commit hash (never by the "main" ref), but families/qwen_vl/tests/test_e2e.py's _model_dir() falls back to snapshot_download(revision=manifest.get("hf_revision"), local_files_only=True) whenever TRTMC_QWEN_VL_MODEL_DIR isn't set -- which is exactly what real CI does. With no hf_revision in the manifest, revision defaults to "main", and local_files_only=True then requires a resolved refs/main entry that a hash-only staged checkpoint never creates, so lookup fails with LocalEntryNotFoundError regardless of which manifest is selected. This is not specific to the new 8B manifest -- qwen3-vl-2b's existing manifest has the identical gap and hits the same failure the moment the family's real GPU E2E lane actually runs (verified by reproducing PR #1390's internal CI failure: running --e2e-model qwen3-vl-2b,qwen3-vl-8b together in one process failed on model_dir resolution for *both* cases, not just the new one). Pin the exact resolved revision for both manifests so snapshot_download's commit-hash short-circuit finds the already-staged snapshot directly. Verified on a rented L40S: reproduced the exact failure pre-fix (LocalEntryNotFoundError for both cases), then re-ran post-fix with the same staged checkpoints -- all 7 tests pass in 543.69s, including both test_official_checkpoint_e2e[qwen3-vl-2b] and [qwen3-vl-8b] in the same process (GPU memory fully released between cases, no leak, no OOM). Also re-ran tools/tests/test_architecture.py + families/qwen_vl/tests (76 passed, 5 skipped). Note: families/qwen_vl/tests/manifests/qwen25vl-3b.json, qwen25vl-3b-tp2.json, and qwen3-vl-2b-tp4.json have the same latent gap but are outside this PR's CI scope (not selected by the run that surfaced this), so left as a follow-up rather than fixed here. Signed-off-by: Jingkun Zhang --- families/qwen_vl/tests/manifests/qwen3-vl-2b.json | 1 + families/qwen_vl/tests/manifests/qwen3-vl-8b.json | 1 + 2 files changed, 2 insertions(+) diff --git a/families/qwen_vl/tests/manifests/qwen3-vl-2b.json b/families/qwen_vl/tests/manifests/qwen3-vl-2b.json index aeb9cd5921..f6f97eee3e 100644 --- a/families/qwen_vl/tests/manifests/qwen3-vl-2b.json +++ b/families/qwen_vl/tests/manifests/qwen3-vl-2b.json @@ -1,6 +1,7 @@ { "name": "qwen3-vl-2b", "hf_id": "Qwen/Qwen3-VL-2B-Instruct", + "hf_revision": "89644892e4d85e24eaac8bacfd4f463576704203", "bundle": "qwen3-vl-2b.bundle", "family": "qwen_vl", "task": "vision_language_generation", diff --git a/families/qwen_vl/tests/manifests/qwen3-vl-8b.json b/families/qwen_vl/tests/manifests/qwen3-vl-8b.json index c35110e1dd..a53531251a 100644 --- a/families/qwen_vl/tests/manifests/qwen3-vl-8b.json +++ b/families/qwen_vl/tests/manifests/qwen3-vl-8b.json @@ -1,6 +1,7 @@ { "name": "qwen3-vl-8b", "hf_id": "Qwen/Qwen3-VL-8B-Instruct", + "hf_revision": "0c351dd01ed87e9c1b53cbc748cba10e6187ff3b", "bundle": "qwen3-vl-8b.bundle", "family": "qwen_vl", "task": "vision_language_generation",