Repository navigation
fix(diffusion): load serialized H3 INT8 in ComfyUI integrated mode - #42121
Conversation
|
The failing gate jobs stop at Local validation on the submitted commit: 28 passed, 1 skipped, 3 xfailed; real H3 INT8 safetensors loading and full Larry8 sampling complete on RTX 5090 D v2. Changed-file pre-commit passes. This PR fixes checkpoint loading only; it does not claim cross-framework output equivalence or a kernel speedup. Test evidence. |
|
/tag-and-rerun-ci |
|
Thank you for the review and CI authorization. I inspected the rerun failures: all four NPU diffusion jobs stop during dependency installation because the triton-ascend 3.2.2 wheel URL returns HTTP 403, before tests execute (run). The Extra workflows still stop at the separate I have left the loader patch unchanged; there is no test failure pointing to it in these logs. The baseline GPU workflows remain queued. |
|
Follow-up on the newly completed main GPU run: I inspected attempt 2 of run 36918637044. This is separate from the earlier NPU wheel-download failures.
The H3 server log explicitly records I have kept the quality/performance thresholds unchanged. A matching base-commit run on the same CI runner would distinguish reference/runtime drift from a PR regression; I do not have a 2×H100 reproduction locally. Could the failed GPU shard be compared with the base commit or rerun on a clean runner? The earlier single-GPU loader regression and exact serialized INT8 checks remain documented above. AMD job logs are now available too:
These logs do not establish a base-commit pass or fail, so I am not claiming that CI is green or that all failures are environmental. The changed loader regression is passing; a base comparison remains needed for the broader CUDA/ROCm suites. |
Signed-off-by: Tokha233 <61346912+Tokha233@users.noreply.github.com>
|
Updated this branch with upstream The production loader fix still uses the shared checkpoint quantization resolver. Updated the regression's renamed Kitchen import and parametrized real safetensors loading for both Validation in an isolated checkout with Python sources verified against the local tree: 29 passed, 1 skipped, 3 xfailed (3.78 s), on the RTX 5090 D v2 test host with compatible Torch/ComfyUI installed. Changed-file pre-commit passed. python -m pytest -q python/sglang/multimodal_gen/test/unit/test_comfyui_h3.pyThe earlier full Larry8 timing is historical Kitchen-backend evidence, not a new automatic-JIT measurement. No quality/performance thresholds were changed; latest CI results are recorded below. Latest-head NPU follow-up ( Latest CUDA/AMD follow-up (2026-10-03, UTC+8), still on
Could a maintainer help with matching-base/same-runner comparison for the remaining CUDA LTX and AMD failures, and restoring the NPU wheel access? No test thresholds, skips, or expected outputs were changed to make CI green. AMD follow-up at 2026-10-03 01:49 UTC+8: 1-GPU partition 1 has now completed: 4 passed, 1 failed, 1 skipped. The failure is I also grouped the 27 unit failures in partition 0: 16 performance/memory-guard tests, 4 FP8 dtype failures (including two subtests), and 7 Qwen Image 2.1 LoRA/fusion tests. There is a concrete platform-policy mismatch in the guard tests: The validator, the relevant guard/Qwen tests, Flux3 model and JoyEcho pipeline are byte-identical to the merged upstream base The AMD 2-GPU partition 1 is now complete as well. Its server suite reports 11 passed, 2 failed, 1 skipped, 1 error:
The H3 denoise/material validation and these circular-import source files are also byte-identical to |
|
I reproduced and submitted two independent fixes for concrete failures in this CI run, keeping the approved H3 loader patch unchanged:
Both were tested against isolated Python source trees checked against upstream hashes, with stale source files removed before final revalidation. Relevant pre-commit checks pass. Could a maintainer authorize The remaining failures need separate actions: the CUDA LTX timing checks still need same-runner comparison against Further concrete fixes submitted (2026-10-03, UTC+8):
Final revalidation used three independent upstream The two earlier PRs' lint checks have passed. New GPU gates report All three new PRs have now passed GitHub lint as well. Native GPU jobs remain gated on |
|
Synced this branch with upstream #42240's upstream investigation specifically identifies dispatch overhead affecting Validation on the submitted source ( Also submitted #42359 for a separate AMD unit-timeout contributor: batching performance-guard scenarios reduces 63 pytest startups to 7, retaining all nine scenarios over seven attempts and per-case JUnit failure assertions. Same-host full-file runtime: 888.28 s -> 117.36 s; native AMD rerun remains needed. The test change is not bundled into this loader PR. Please evaluate the updated CUDA/AMD checks with these merged upstream fixes; remaining unmerged platform fixes are tracked in #42250, #42256 and #42257. |
|
Additional evidence for the native H3 Ref2VA SSIM failure, from four completed CUDA jobs:
I downloaded failure artifact The parsed H3 This correlation is not proof of a Python-version cause or a controlled base/head comparison. The next useful check is base |
|
/rerun-failed-ci |
Motivation
Loading an H3 single-file INT8 ConvRot checkpoint through the ComfyUI integrated path currently fails with
Parameter ...comfy_quant not found in custom model state dict. The loader reads the H3 metadata but discards its per-layer quantization markers, so it builds ordinary floating-point Linear parameters.Modifications
Resolve the serialized INT8 config using the existing H3 loader utilities, pass it into model construction, and filter metadata-only keys. Preserve CPU checkpoint placement for layerwise offload. Reject conflicting runtime quantization, FSDP, and unsupported serialized formats explicitly. The existing ComfyUI QKV layout remains unchanged.
Compatibility after upstream #38040
The loader fix uses the shared checkpoint quantization resolver, which now returns
ConvRotInt8Config. The regression covers bothcomfy_kitchenandjitserialized loading with their kernel initialization mocked; this validates metadata, weight and scale loading, not JIT inference. The full Larry8 GPU timing below was measured on the earlier Kitchen-backed revision and is not a benchmark of the new automatic JIT backend.Accuracy Tests
proj.comfy_quanterror, and passes with this change.Speed Tests and Profiling
This is a loading correctness fix, not a kernel performance claim. Successful native SGLang sampling with SDPA measured 32.905 / 32.916 / 32.947 seconds after warmup; excludes condition encoders, VAE and export. The original integrated loader fails before sampling, so there is no valid speedup ratio. No experimental attention or row-splitting changes are included in this PR.
Checklist
Codex assisted with implementation and testing. The reported GPU runs were actually executed; no human review is implied.
CI States
Latest PR Test (Base): ✅ Run #37113105032
Latest PR Test (Extra): ❌ Run #37113104859
Latest PR Test (AMD ROCm 10): ❌ Run #37113105086