orbitquant 0.1.2__tar.gz → 0.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {orbitquant-0.1.2 → orbitquant-0.1.4}/.github/workflows/publish-pypi.yml +1 -1
- {orbitquant-0.1.2 → orbitquant-0.1.4}/PKG-INFO +42 -2
- {orbitquant-0.1.2 → orbitquant-0.1.4}/README.md +40 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/docs/kernel-audit.md +10 -3
- {orbitquant-0.1.2 → orbitquant-0.1.4}/docs/kernel-hub-approval-request.md +10 -0
- orbitquant-0.1.4/docs/release-0.1.3.md +25 -0
- orbitquant-0.1.4/docs/release-0.1.4.md +36 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/docs/release-gates.md +110 -8
- {orbitquant-0.1.2 → orbitquant-0.1.4}/pyproject.toml +2 -2
- {orbitquant-0.1.2 → orbitquant-0.1.4}/scripts/run_cuda_kernel_checks.sh +2 -2
- {orbitquant-0.1.2 → orbitquant-0.1.4}/scripts/run_mps_kernel_checks.sh +1 -1
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/__init__.py +1 -1
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/artifacts/benchmark.py +5 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/artifacts/model_card.py +110 -9
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/cli/main.py +614 -1
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/eval/external_export.py +2 -1
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/eval/external_metrics.py +20 -9
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/eval/external_plan.py +1 -1
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/kernels/native_packed_matmul.py +4 -6
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/layers.py +11 -1
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_artifact_writer.py +45 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_cli.py +545 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_external_eval_plan.py +10 -1
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_external_export.py +26 -5
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_model_card.py +69 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_native_packed_matmul.py +81 -3
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_optional_dependencies.py +11 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_orbit_linear.py +30 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_readme.py +5 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_release_gates.py +145 -2
- {orbitquant-0.1.2 → orbitquant-0.1.4}/uv.lock +3 -3
- {orbitquant-0.1.2 → orbitquant-0.1.4}/.github/workflows/ci.yml +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/.gitignore +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/LICENSE +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/docs/paper-methodology-audit.md +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/docs/publication-checklist.md +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/docs/release-0.1.0.md +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/docs/release-0.1.1.md +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/docs/release-0.1.2.md +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/native-kernels/orbitquant-packed-matmul/CARD.md +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/native-kernels/orbitquant-packed-matmul/benchmarks/benchmark.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/native-kernels/orbitquant-packed-matmul/build.toml +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/native-kernels/orbitquant-packed-matmul/example.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/native-kernels/orbitquant-packed-matmul/flake.lock +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/native-kernels/orbitquant-packed-matmul/flake.nix +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/native-kernels/orbitquant-packed-matmul/orbitquant_packed_matmul_cuda/packed_matmul.cu +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/native-kernels/orbitquant-packed-matmul/orbitquant_packed_matmul_metal/packed_matmul.metal +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/native-kernels/orbitquant-packed-matmul/orbitquant_packed_matmul_metal/packed_matmul.mm +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/native-kernels/orbitquant-packed-matmul/tests/__init__.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/native-kernels/orbitquant-packed-matmul/tests/test_packed_matmul.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/native-kernels/orbitquant-packed-matmul/torch-ext/orbitquant_packed_matmul/__init__.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/native-kernels/orbitquant-packed-matmul/torch-ext/torch_binding.cpp +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/native-kernels/orbitquant-packed-matmul/torch-ext/torch_binding.h +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/scripts/run_hf_compat_checks.sh +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/scripts/run_paper_methodology_checks.sh +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/scripts/runpod_ssh_health.sh +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/scripts/verify_hf_kernel_model_artifact.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/adaln.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/artifacts/__init__.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/artifacts/assets.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/artifacts/checksums.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/artifacts/comparisons.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/artifacts/loader.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/artifacts/manifest.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/artifacts/refresh.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/artifacts/repair.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/artifacts/validator.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/artifacts/writer.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/benchmarks.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/cli/__init__.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/codebooks/__init__.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/codebooks/lloyd_max.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/config.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/errors.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/eval/__init__.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/eval/assets.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/eval/metrics.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/eval/native_plan.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/eval/native_runner.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/eval/native_settings.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/eval/prompts.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/eval/report.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/functional.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/hub.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/kernels/__init__.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/kernels/dispatch.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/kernels/mps.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/kernels/triton_cuda.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/modeling.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/packing/__init__.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/packing/bitpack.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/pipeline.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/policies/__init__.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/policies/flux.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/policies/flux2.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/policies/generic_dit.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/policies/wan.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/policies/z_image.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/quantizer.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/rotations/__init__.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/rotations/fwht.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/rotations/rpbh.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/src/orbitquant/transformers_ops.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_adaln_rtn.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_benchmarks.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_bitpack.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_ci.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_cli_report.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_codebooks.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_config.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_diffusers_modelmixin_integration.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_distribution.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_eval_assets.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_eval_prompts.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_eval_report.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_hub.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_kernel_model_verifier.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_kernels.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_manifest.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_model_quantization.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_native_kernel_package.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_native_runner.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_native_settings.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_paper_alignment.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_paper_methodology.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_pipeline_helpers.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_policies.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_prompt_jobs.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_prompt_selection.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_quantizer_adapter.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_rpbh.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_target_policies.py +0 -0
- {orbitquant-0.1.2 → orbitquant-0.1.4}/tests/test_transformers_pretrained_integration.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: orbitquant
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: Clean-room OrbitQuant implementation for diffusion transformers
|
|
5
5
|
Project-URL: Homepage, https://github.com/iamwavecut/OrbitQuant
|
|
6
6
|
Project-URL: Repository, https://github.com/iamwavecut/OrbitQuant
|
|
@@ -39,7 +39,7 @@ Requires-Dist: diffusers>=0.35; extra == 'hf'
|
|
|
39
39
|
Requires-Dist: transformers>=4.53; extra == 'hf'
|
|
40
40
|
Provides-Extra: kernels
|
|
41
41
|
Requires-Dist: kernels>=0.16; extra == 'kernels'
|
|
42
|
-
Requires-Dist: triton>=3.5; extra == 'kernels'
|
|
42
|
+
Requires-Dist: triton>=3.5; (platform_system == 'Linux') and extra == 'kernels'
|
|
43
43
|
Description-Content-Type: text/markdown
|
|
44
44
|
|
|
45
45
|
# OrbitQuant
|
|
@@ -402,6 +402,42 @@ reproduction targets:
|
|
|
402
402
|
User-facing comparison assets are generated at the native settings above. Small
|
|
403
403
|
low-resolution checks are not accepted as published quality evidence.
|
|
404
404
|
|
|
405
|
+
To create a local original-vs-OrbitQuant evidence bundle without writing raw
|
|
406
|
+
samples into the model artifact repository, run `compare-native` against a local
|
|
407
|
+
OrbitQuant artifact:
|
|
408
|
+
|
|
409
|
+
```bash
|
|
410
|
+
orbitquant compare-native \
|
|
411
|
+
--suite flux2-native \
|
|
412
|
+
--artifact ./artifacts/flux2-klein-w4a4 \
|
|
413
|
+
--prompt-id simple-object \
|
|
414
|
+
--output ./reports/native/flux2-klein-w4a4-comparison \
|
|
415
|
+
--device cuda \
|
|
416
|
+
--dtype bfloat16 \
|
|
417
|
+
--runtime-mode auto_fused
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
The output directory contains the BF16 sample, the OrbitQuant sample, a
|
|
421
|
+
side-by-side WebP comparison, per-split metadata, and `summary.json` with native
|
|
422
|
+
settings, wall time, peak VRAM, requested runtime mode, and available local
|
|
423
|
+
kernel backends. By default `compare-native` validates the completed bundle
|
|
424
|
+
before returning and includes the validation report in its JSON output. Use
|
|
425
|
+
`--skip-comparison-validation` only when you intentionally want to inspect or
|
|
426
|
+
repair an incomplete bundle.
|
|
427
|
+
|
|
428
|
+
Validate a copied or previously generated comparison bundle before using it as
|
|
429
|
+
evidence:
|
|
430
|
+
|
|
431
|
+
```bash
|
|
432
|
+
orbitquant validate-comparison \
|
|
433
|
+
--input ./reports/native/flux2-klein-w4a4-comparison
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
The validator accepts bundles copied from a remote GPU host, checks native
|
|
437
|
+
settings and metadata, resolves remote absolute paths by local filename, rejects
|
|
438
|
+
blank-like images, and reports timing, VRAM, and selected OrbitQuant runtime
|
|
439
|
+
counts when the bundle was generated by a recent `compare-native`.
|
|
440
|
+
|
|
405
441
|
## Release Metrics
|
|
406
442
|
|
|
407
443
|
Full GenEval and VBench runs are release evidence for paper reproduction,
|
|
@@ -443,6 +479,10 @@ orbitquant external-eval-script \
|
|
|
443
479
|
For Wan, use the same `external-eval-script` path with `--suite wan-native` to
|
|
444
480
|
run VBench custom-input dimensions against the native 832x480, 81-frame videos.
|
|
445
481
|
|
|
482
|
+
Imported GenEval `geneval_overall` follows upstream GenEval semantics: average
|
|
483
|
+
over task scores. Image-level and prompt-level hit rates are imported as
|
|
484
|
+
`geneval_image_accuracy` and `geneval_prompt_accuracy` when present.
|
|
485
|
+
|
|
446
486
|
Final publication gates are tracked in
|
|
447
487
|
[docs/release-gates.md](docs/release-gates.md).
|
|
448
488
|
|
|
@@ -358,6 +358,42 @@ reproduction targets:
|
|
|
358
358
|
User-facing comparison assets are generated at the native settings above. Small
|
|
359
359
|
low-resolution checks are not accepted as published quality evidence.
|
|
360
360
|
|
|
361
|
+
To create a local original-vs-OrbitQuant evidence bundle without writing raw
|
|
362
|
+
samples into the model artifact repository, run `compare-native` against a local
|
|
363
|
+
OrbitQuant artifact:
|
|
364
|
+
|
|
365
|
+
```bash
|
|
366
|
+
orbitquant compare-native \
|
|
367
|
+
--suite flux2-native \
|
|
368
|
+
--artifact ./artifacts/flux2-klein-w4a4 \
|
|
369
|
+
--prompt-id simple-object \
|
|
370
|
+
--output ./reports/native/flux2-klein-w4a4-comparison \
|
|
371
|
+
--device cuda \
|
|
372
|
+
--dtype bfloat16 \
|
|
373
|
+
--runtime-mode auto_fused
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
The output directory contains the BF16 sample, the OrbitQuant sample, a
|
|
377
|
+
side-by-side WebP comparison, per-split metadata, and `summary.json` with native
|
|
378
|
+
settings, wall time, peak VRAM, requested runtime mode, and available local
|
|
379
|
+
kernel backends. By default `compare-native` validates the completed bundle
|
|
380
|
+
before returning and includes the validation report in its JSON output. Use
|
|
381
|
+
`--skip-comparison-validation` only when you intentionally want to inspect or
|
|
382
|
+
repair an incomplete bundle.
|
|
383
|
+
|
|
384
|
+
Validate a copied or previously generated comparison bundle before using it as
|
|
385
|
+
evidence:
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
orbitquant validate-comparison \
|
|
389
|
+
--input ./reports/native/flux2-klein-w4a4-comparison
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
The validator accepts bundles copied from a remote GPU host, checks native
|
|
393
|
+
settings and metadata, resolves remote absolute paths by local filename, rejects
|
|
394
|
+
blank-like images, and reports timing, VRAM, and selected OrbitQuant runtime
|
|
395
|
+
counts when the bundle was generated by a recent `compare-native`.
|
|
396
|
+
|
|
361
397
|
## Release Metrics
|
|
362
398
|
|
|
363
399
|
Full GenEval and VBench runs are release evidence for paper reproduction,
|
|
@@ -399,6 +435,10 @@ orbitquant external-eval-script \
|
|
|
399
435
|
For Wan, use the same `external-eval-script` path with `--suite wan-native` to
|
|
400
436
|
run VBench custom-input dimensions against the native 832x480, 81-frame videos.
|
|
401
437
|
|
|
438
|
+
Imported GenEval `geneval_overall` follows upstream GenEval semantics: average
|
|
439
|
+
over task scores. Image-level and prompt-level hit rates are imported as
|
|
440
|
+
`geneval_image_accuracy` and `geneval_prompt_accuracy` when present.
|
|
441
|
+
|
|
402
442
|
Final publication gates are tracked in
|
|
403
443
|
[docs/release-gates.md](docs/release-gates.md).
|
|
404
444
|
|
|
@@ -21,9 +21,9 @@ for the current artifact format and runtime modes.
|
|
|
21
21
|
the current environment.
|
|
22
22
|
- `scripts/run_cuda_kernel_checks.sh` is the CUDA correctness and benchmark
|
|
23
23
|
gate for GPU hosts. It first tries to load a prebuilt
|
|
24
|
-
`native_packed_matmul` package
|
|
25
|
-
|
|
26
|
-
is available, it fails before starting a source build unless
|
|
24
|
+
`native_packed_matmul` package from an importable `orbitquant_packed_matmul`
|
|
25
|
+
module, then through Hugging Face `kernels`/`LOCAL_KERNELS`. If no compatible
|
|
26
|
+
prebuilt package is available, it fails before starting a source build unless
|
|
27
27
|
`ORBITQUANT_ALLOW_NATIVE_KERNEL_BUILD=1` is set. With that explicit opt-in,
|
|
28
28
|
it builds the exact
|
|
29
29
|
`native-kernels/orbitquant-packed-matmul` kernel-builder redistributable
|
|
@@ -284,6 +284,13 @@ for the current artifact format and runtime modes.
|
|
|
284
284
|
snapshot model repo resolved to commit
|
|
285
285
|
`cb0ceb1a4d070556c52cfba691aba3f6647c246b`. The native loader therefore
|
|
286
286
|
still requires `LOCAL_KERNELS`, an importable package, or Kernel Hub approval.
|
|
287
|
+
- A 2026-07-09T15:06Z live refresh found no new reviewer reply after the
|
|
288
|
+
2026-07-09T14:00Z model-artifact numbers. Discussion 15 remains open,
|
|
289
|
+
`repo_info("WaveCut/orbitquant-packed-matmul", repo_type="model")` resolves
|
|
290
|
+
to commit `cb0ceb1a4d070556c52cfba691aba3f6647c246b`, and
|
|
291
|
+
`repo_info("WaveCut/orbitquant-packed-matmul", repo_type="kernel")` still
|
|
292
|
+
returns 404. Do not describe the native package as remotely loadable until a
|
|
293
|
+
kernel-type repository exists and `get_kernel(...)` has been verified.
|
|
287
294
|
|
|
288
295
|
## Packaging Boundary
|
|
289
296
|
|
|
@@ -170,6 +170,16 @@ approval blocker.
|
|
|
170
170
|
On 2026-07-09T14:00Z, `WaveCut` posted those actual model artifact numbers in
|
|
171
171
|
discussion 15.
|
|
172
172
|
|
|
173
|
+
Live status refresh:
|
|
174
|
+
|
|
175
|
+
On 2026-07-09T15:06Z, discussion 15 was still open and no newer reviewer reply
|
|
176
|
+
was present after the 2026-07-09T14:00Z model-artifact numbers. The public
|
|
177
|
+
source snapshot repo still resolved as a model repo at commit
|
|
178
|
+
`cb0ceb1a4d070556c52cfba691aba3f6647c246b`; the kernel-type repository still
|
|
179
|
+
returned 404. The remaining action is Hugging Face Kernel Hub publish approval,
|
|
180
|
+
followed by `kernel-builder build-and-upload` and `get_kernel(...)`
|
|
181
|
+
verification.
|
|
182
|
+
|
|
173
183
|
## Title
|
|
174
184
|
|
|
175
185
|
Request Kernel Hub publish access for `WaveCut/orbitquant-packed-matmul`
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# OrbitQuant 0.1.3 Release Notes
|
|
2
|
+
|
|
3
|
+
OrbitQuant 0.1.3 is a packaging patch for cross-platform kernel extras.
|
|
4
|
+
|
|
5
|
+
## Changes
|
|
6
|
+
|
|
7
|
+
- The `kernels` extra remains the default install target for optimized
|
|
8
|
+
packed-weight inference support:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
pip install "orbitquant[kernels]==0.1.3"
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
- `triton>=3.5` is now constrained to Linux installs of the `kernels` extra.
|
|
15
|
+
This keeps CUDA/Triton support available on Linux while allowing macOS/MPS
|
|
16
|
+
users to install `orbitquant[kernels]` for Hugging Face `kernels` package
|
|
17
|
+
support without trying to resolve an unavailable Triton wheel.
|
|
18
|
+
- The package version, CLI version, and `orbitquant.__version__` are aligned at
|
|
19
|
+
`0.1.3`.
|
|
20
|
+
|
|
21
|
+
## Claim Boundary
|
|
22
|
+
|
|
23
|
+
This release does not change quantization math, artifact format, model cards,
|
|
24
|
+
runtime dispatch policy, or kernel implementations. It only fixes optional
|
|
25
|
+
dependency resolution for platforms where Triton is not published.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# OrbitQuant 0.1.4 Release Notes
|
|
2
|
+
|
|
3
|
+
OrbitQuant 0.1.4 is a release-metrics patch for external GenEval and VBench
|
|
4
|
+
metric import.
|
|
5
|
+
|
|
6
|
+
## Install
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
pip install "orbitquant[hf]==0.1.4"
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
For optimized packed-weight inference dependencies:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pip install "orbitquant[kernels]==0.1.4"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Changes
|
|
19
|
+
|
|
20
|
+
- Imported GenEval `geneval_overall` now follows upstream GenEval semantics:
|
|
21
|
+
average over task scores.
|
|
22
|
+
- GenEval image-level and prompt-level hit rates are imported as
|
|
23
|
+
`geneval_image_accuracy` and `geneval_prompt_accuracy` when they are present
|
|
24
|
+
in the external results.
|
|
25
|
+
- VBench external eval commands now pass requested dimensions as separate CLI
|
|
26
|
+
arguments, matching upstream `--dimension` parsing.
|
|
27
|
+
- VBench prompt files now use exported video filenames as keys for custom input
|
|
28
|
+
evaluation.
|
|
29
|
+
- README and generated model cards document GenEval and VBench release metric
|
|
30
|
+
semantics.
|
|
31
|
+
|
|
32
|
+
## Claim Boundary
|
|
33
|
+
|
|
34
|
+
This release does not change quantization math, artifact format, runtime
|
|
35
|
+
dispatch, kernel implementations, or published model weights. Release-grade
|
|
36
|
+
GenEval/VBench runs remain separate from this package patch.
|
|
@@ -196,7 +196,13 @@ URL, or signed-off audit note.
|
|
|
196
196
|
source build unless `ORBITQUANT_ALLOW_NATIVE_KERNEL_BUILD=1` is set. A
|
|
197
197
|
2026-07-09 prebuilt-only loader check still returned 404 for the Kernel Hub
|
|
198
198
|
repo while the public source snapshot model repo resolved to commit
|
|
199
|
-
`cb0ceb1a4d070556c52cfba691aba3f6647c246b`.
|
|
199
|
+
`cb0ceb1a4d070556c52cfba691aba3f6647c246b`. A 2026-07-09T15:06Z live
|
|
200
|
+
refresh confirmed discussion 15 remains open, the public source snapshot
|
|
201
|
+
model repo still resolves to commit
|
|
202
|
+
`cb0ceb1a4d070556c52cfba691aba3f6647c246b`, and
|
|
203
|
+
`repo_info("WaveCut/orbitquant-packed-matmul", repo_type="kernel")` still
|
|
204
|
+
returns 404. The loadable Kernel Hub package therefore remains an external
|
|
205
|
+
approval gate, not a completed release artifact.
|
|
200
206
|
- [x] Final paper conformance audit is complete against arXiv 2607.02461, with
|
|
201
207
|
documented deviations, implementation notes, and evidence that accepted
|
|
202
208
|
deviations are intentional. The required audit checklist is
|
|
@@ -228,7 +234,11 @@ URL, or signed-off audit note.
|
|
|
228
234
|
metadata, zero remote checksum mismatches, zero README mismatches, and zero
|
|
229
235
|
forbidden remote files. It also reported `public_count=14`,
|
|
230
236
|
`private_count=0`, 14/14 policy-inventory-ready, and 144 missing
|
|
231
|
-
release-grade metrics.
|
|
237
|
+
release-grade metrics. A 2026-07-09T15:06Z rerun with `--summary-only` and
|
|
238
|
+
the same policy inventory root again passed `--fail-on-artifact-regression`
|
|
239
|
+
with 14/14 artifact-ready, native-smoke-ready, metadata-complete, and
|
|
240
|
+
policy-inventory-ready; it reported `release_eval_applicable_count=10`,
|
|
241
|
+
`release_eval_ready_count=0`, and `missing_required_metric_count=144`.
|
|
232
242
|
- [x] Full-model module classification inventories are captured for FLUX.2
|
|
233
243
|
Klein, FLUX.1-schnell, Z-Image-Turbo, and Wan2.1. Raw inventory JSON may
|
|
234
244
|
remain unpublished, but each published artifact manifest must be
|
|
@@ -244,9 +254,9 @@ URL, or signed-off audit note.
|
|
|
244
254
|
`scripts/run_hf_compat_checks.sh --mode all`, using the current Torch base.
|
|
245
255
|
This gate uses registration, pipeline quantization config, and mini
|
|
246
256
|
integration tests; it does not download model weights or generate samples.
|
|
247
|
-
Evidence: passed on 2026-07-
|
|
248
|
-
Diffusers 0.39.0 and Transformers 5.13.0, and dev Diffusers 0.40.0.dev0
|
|
249
|
-
Transformers 5.14.0.dev0
|
|
257
|
+
Evidence: passed on 2026-07-09T17:18Z with Torch 2.12.1, current/release
|
|
258
|
+
Diffusers 0.39.0 and Transformers 5.13.0, and dev Diffusers 0.40.0.dev0
|
|
259
|
+
at `208704a` plus Transformers 5.14.0.dev0 at `0bc3554`.
|
|
250
260
|
- [x] Checkpoint and model repositories are published with artifact-focused
|
|
251
261
|
model cards, complete file manifests, checksums where applicable, and native
|
|
252
262
|
comparison assets for the advertised targets. Cards must describe the
|
|
@@ -258,7 +268,9 @@ URL, or signed-off audit note.
|
|
|
258
268
|
`repo_count=14`, `artifact_ready_count=14`, `metadata_complete_ready_count=14`,
|
|
259
269
|
`native_smoke_ready_count=14`, `remote_checksum_mismatch_count=0`,
|
|
260
270
|
`readme_mismatch_count=0`, `forbidden_file_count=0`, `public_count=14`, and
|
|
261
|
-
`private_count=0`.
|
|
271
|
+
`private_count=0`. A 2026-07-09T15:06Z `--summary-only` rerun preserved the
|
|
272
|
+
same compact artifact counts and still reported `forbidden_file_count=0`,
|
|
273
|
+
`remote_checksum_mismatch_count=0`, and `readme_mismatch_count=0`.
|
|
262
274
|
- [x] The GitHub repository is public, tagged, released, and includes the
|
|
263
275
|
release docs, license, source distribution expectations, and reproducible
|
|
264
276
|
verification commands.
|
|
@@ -289,7 +301,27 @@ URL, or signed-off audit note.
|
|
|
289
301
|
`5972b6cfd1d89653fb9ac17668f72818c61a0e3cc5ea1cdd46e59d54405dc1ff` and
|
|
290
302
|
`orbitquant-0.1.1-py3-none-any.whl` SHA256
|
|
291
303
|
`b829c5df00093e697872ca24104e6ef38dbe7e7d70b2c2e33560bfaec224cde1`.
|
|
292
|
-
|
|
304
|
+
Patch release notes for compact artifact audit output are
|
|
305
|
+
[release-0.1.2.md](release-0.1.2.md). GitHub CI for commit `f18feb9`
|
|
306
|
+
passed as run `29025114082`, tag `v0.1.2` points at commit
|
|
307
|
+
`f18feb95f7595965f046b3455997d6ce9b8e8e4a`, and GitHub Release
|
|
308
|
+
`https://github.com/iamwavecut/OrbitQuant/releases/tag/v0.1.2` was published
|
|
309
|
+
on 2026-07-09 with exact PyPI-matching assets:
|
|
310
|
+
`orbitquant-0.1.2.tar.gz` SHA256
|
|
311
|
+
`4afc15589fe713345dfa47be30dc078d943484a1f4bbd4861a413532a6ec8377` and
|
|
312
|
+
`orbitquant-0.1.2-py3-none-any.whl` SHA256
|
|
313
|
+
`3bdddebaa46f60307ed50e2ebf4b7ff4fef7817845b512ecfbb6fbf8ba71c91c`.
|
|
314
|
+
Patch release notes for the cross-platform kernel-extra dependency fix are
|
|
315
|
+
[release-0.1.3.md](release-0.1.3.md). GitHub CI for commit `02166ec`
|
|
316
|
+
passed as run `29034308427`, tag `v0.1.3` points at commit
|
|
317
|
+
`02166ec6bdcd8920b0012a1ff930dce8dd976fdb`, and GitHub Release
|
|
318
|
+
`https://github.com/iamwavecut/OrbitQuant/releases/tag/v0.1.3` was published
|
|
319
|
+
on 2026-07-09 with exact PyPI-matching assets:
|
|
320
|
+
`orbitquant-0.1.3.tar.gz` SHA256
|
|
321
|
+
`008f949641d00df46f840580c424b9e9fad0d853b4345d454a0b8042c61f3366` and
|
|
322
|
+
`orbitquant-0.1.3-py3-none-any.whl` SHA256
|
|
323
|
+
`181e9b532a07312ec47b54091d651b5a62d5aefd32c88d40830bd8529a0fdc53`.
|
|
324
|
+
- [x] The PyPI package is published as `orbitquant==0.1.3`.
|
|
293
325
|
Evidence: commit `ce5c232` added the manual
|
|
294
326
|
`.github/workflows/publish-pypi.yml` Trusted Publishing workflow. A PyPI
|
|
295
327
|
pending publisher was registered for project `orbitquant`, owner
|
|
@@ -316,6 +348,30 @@ URL, or signed-off audit note.
|
|
|
316
348
|
`OrbitQuantConfig().runtime_mode == "auto_fused"`,
|
|
317
349
|
`OrbitQuantConfig().packed_matmul_block_n == 128`, and
|
|
318
350
|
`orbitquant --version == "0.1.1"`.
|
|
351
|
+
Patch publish run `29025225397` completed successfully on 2026-07-09 from
|
|
352
|
+
head SHA `f18feb95f7595965f046b3455997d6ce9b8e8e4a`, including full pytest,
|
|
353
|
+
`ruff check`, package build, `twine check`, wheel smoke, OIDC publication,
|
|
354
|
+
and PyPI digital attestations. The PyPI JSON API reports version `0.1.2` with
|
|
355
|
+
`orbitquant-0.1.2.tar.gz` SHA256
|
|
356
|
+
`4afc15589fe713345dfa47be30dc078d943484a1f4bbd4861a413532a6ec8377` and
|
|
357
|
+
`orbitquant-0.1.2-py3-none-any.whl` SHA256
|
|
358
|
+
`3bdddebaa46f60307ed50e2ebf4b7ff4fef7817845b512ecfbb6fbf8ba71c91c`; a fresh
|
|
359
|
+
venv installed `orbitquant==0.1.2` from PyPI and verified
|
|
360
|
+
`orbitquant.__version__ == "0.1.2"`,
|
|
361
|
+
`OrbitQuantConfig().runtime_mode == "auto_fused"`,
|
|
362
|
+
`orbitquant --version == "0.1.2"`, and `orbitquant audit-hf-artifacts --help`
|
|
363
|
+
includes `--summary-only`.
|
|
364
|
+
Patch publish run `29034405916` completed successfully on 2026-07-09 from
|
|
365
|
+
head SHA `02166ec6bdcd8920b0012a1ff930dce8dd976fdb`, including full pytest,
|
|
366
|
+
`ruff check`, package build, `twine check`, wheel smoke, OIDC publication,
|
|
367
|
+
and PyPI digital attestations. The PyPI JSON API reports version `0.1.3` with
|
|
368
|
+
`orbitquant-0.1.3.tar.gz` SHA256
|
|
369
|
+
`008f949641d00df46f840580c424b9e9fad0d853b4345d454a0b8042c61f3366` and
|
|
370
|
+
`orbitquant-0.1.3-py3-none-any.whl` SHA256
|
|
371
|
+
`181e9b532a07312ec47b54091d651b5a62d5aefd32c88d40830bd8529a0fdc53`; a fresh
|
|
372
|
+
venv installed `orbitquant[kernels]==0.1.3` from PyPI on macOS and verified
|
|
373
|
+
`orbitquant.__version__ == "0.1.3"`, installed `kernels==0.16.0`, and did
|
|
374
|
+
not install Triton because the `triton>=3.5` extra is Linux-only.
|
|
319
375
|
- [x] ComfyUI compatibility is verified after the relevant schema stabilizes,
|
|
320
376
|
including load, graph execution, artifact metadata behavior, and kernel extra
|
|
321
377
|
install guidance for the default `auto_fused` runtime.
|
|
@@ -332,7 +388,53 @@ URL, or signed-off audit note.
|
|
|
332
388
|
`ruff`, package build, and `twine check`, and passed GitHub CI run
|
|
333
389
|
`29020564152` on 2026-07-09. A live GitHub check then reported
|
|
334
390
|
`iamwavecut/ComfyUI-OrbitQuant` as `PUBLIC`, Apache-2.0 licensed, with
|
|
335
|
-
default branch `main`.
|
|
391
|
+
default branch `main`. Follow-up commit `85527ee` required
|
|
392
|
+
`orbitquant>=0.1.1` after the packed-matmul default update and passed
|
|
393
|
+
GitHub CI run `29022774661`. Commit `4832d4a` requires
|
|
394
|
+
`orbitquant>=0.1.2`, updates the README install commands for both
|
|
395
|
+
`orbitquant>=0.1.2` and `orbitquant[kernels]>=0.1.2`, refreshes `uv.lock`
|
|
396
|
+
to the PyPI `orbitquant` 0.1.2 release hashes, and passed GitHub CI run
|
|
397
|
+
`29027011708` on 2026-07-09. GitHub Release
|
|
398
|
+
`https://github.com/iamwavecut/ComfyUI-OrbitQuant/releases/tag/v0.1.0` was
|
|
399
|
+
published on 2026-07-09T15:12Z from commit
|
|
400
|
+
`4832d4addb39681e82f38e07627a2bb682e4332d` with assets
|
|
401
|
+
`comfyui_orbitquant-0.1.0.tar.gz` SHA256
|
|
402
|
+
`630628c56e5ed35626cd7cca6749c51056cb78a0041b7c1268cf0b5e995d28c0` and
|
|
403
|
+
`comfyui_orbitquant-0.1.0-py3-none-any.whl` SHA256
|
|
404
|
+
`0c774c20a6759bea18d5d02b598035c3446a72ee4efaa0be6c1f325f4b3e928b`.
|
|
405
|
+
Before release, local `uv run pytest -q`, `uv run ruff check .`, package
|
|
406
|
+
build, and `twine check` passed for the node pack. Follow-up commit
|
|
407
|
+
`ca62b7a` added the manual `.github/workflows/publish-pypi.yml` Trusted
|
|
408
|
+
Publishing workflow for a future `comfyui-orbitquant` PyPI release. GitHub
|
|
409
|
+
reported both `CI` and `Publish PyPI` workflows as active, and ComfyUI CI run
|
|
410
|
+
`29028857599` passed on 2026-07-09 with node-pack tests, lint, package
|
|
411
|
+
build, package metadata check, and wheel smoke. The GitHub `pypi`
|
|
412
|
+
environment was created on 2026-07-09T15:21Z. After PyPI password
|
|
413
|
+
confirmation, the pending publisher for `comfyui-orbitquant` was registered
|
|
414
|
+
and workflow run `29029534070` published `comfyui-orbitquant==0.1.0` through
|
|
415
|
+
Trusted Publishing on 2026-07-09. The PyPI version JSON for `0.1.0` reports
|
|
416
|
+
`comfyui_orbitquant-0.1.0-py3-none-any.whl` SHA256
|
|
417
|
+
`0c774c20a6759bea18d5d02b598035c3446a72ee4efaa0be6c1f325f4b3e928b` and
|
|
418
|
+
`comfyui_orbitquant-0.1.0.tar.gz` SHA256
|
|
419
|
+
`9a2c1e23e7c7674bb8fb7c350473c9ad636c952c5495b71d805a91996a00b51f`. A fresh
|
|
420
|
+
venv installed `comfyui-orbitquant==0.1.0` from PyPI and imported
|
|
421
|
+
`comfyui_orbitquant.NODE_CLASS_MAPPINGS`.
|
|
422
|
+
Current commit `7e5fc4c` requires `orbitquant>=0.1.3`, exposes the
|
|
423
|
+
`comfyui-orbitquant[kernels]` extra through `orbitquant[kernels]>=0.1.3`,
|
|
424
|
+
refreshes `uv.lock` to the PyPI OrbitQuant 0.1.3 release, and passed GitHub
|
|
425
|
+
CI run `29034705959` on 2026-07-09. Publish run `29034761024` published
|
|
426
|
+
`comfyui-orbitquant==0.1.2` from head SHA
|
|
427
|
+
`7e5fc4c0f74dbcb341b755b2b53cb0edf40cb311`. GitHub Release
|
|
428
|
+
`https://github.com/iamwavecut/ComfyUI-OrbitQuant/releases/tag/v0.1.2` was
|
|
429
|
+
published on 2026-07-09 with exact PyPI-matching assets:
|
|
430
|
+
`comfyui_orbitquant-0.1.2.tar.gz` SHA256
|
|
431
|
+
`48ea3909f96620baba3f2acf52532b15330fc89cb847557f13da915969f4e42b` and
|
|
432
|
+
`comfyui_orbitquant-0.1.2-py3-none-any.whl` SHA256
|
|
433
|
+
`2fbcf8a4fecb7d4384d2461001fa33b291a02720d20cf465e7e2669ad145fd83`. A fresh
|
|
434
|
+
venv installed `comfyui-orbitquant[kernels]==0.1.2` from PyPI on macOS and
|
|
435
|
+
verified `comfyui-orbitquant==0.1.2`, `orbitquant==0.1.3`,
|
|
436
|
+
`kernels==0.16.0`, no Triton install, and exported FLUX, Z-Image, Wan,
|
|
437
|
+
generic component-loader, and artifact-inspector nodes.
|
|
336
438
|
- [x] MPS shader-only gate can be run independently from the native packed
|
|
337
439
|
matmul package gate. Evidence: on 2026-07-09,
|
|
338
440
|
`ORBITQUANT_RUN_NATIVE_KERNEL_PACKAGE_CI=0` with tiny benchmark dimensions
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "orbitquant"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.4"
|
|
8
8
|
description = "Clean-room OrbitQuant implementation for diffusion transformers"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -38,7 +38,7 @@ hf = [
|
|
|
38
38
|
]
|
|
39
39
|
kernels = [
|
|
40
40
|
"kernels>=0.16",
|
|
41
|
-
"triton>=3.5",
|
|
41
|
+
"triton>=3.5; platform_system == 'Linux'",
|
|
42
42
|
]
|
|
43
43
|
eval = [
|
|
44
44
|
"imageio>=2.37",
|
|
@@ -237,14 +237,14 @@ PY
|
|
|
237
237
|
printf '%s\n' \
|
|
238
238
|
"native kernel package CI could not load a compatible prebuilt native packed-matmul kernel." \
|
|
239
239
|
"The script will not start a kernel-builder/Nix source build unless ORBITQUANT_ALLOW_NATIVE_KERNEL_BUILD=1 is set, because uncached CUDA builds can compile the CUDA/NCCL stack on paid GPU hosts." \
|
|
240
|
-
"
|
|
240
|
+
"Make a compatible orbitquant_packed_matmul package importable, use a loadable Hugging Face Kernel Hub artifact, set LOCAL_KERNELS to a compatible built CUDA variant, or rerun with ORBITQUANT_ALLOW_NATIVE_KERNEL_BUILD=1 only on a host where the build cache/toolchain is intentional." \
|
|
241
241
|
>&2
|
|
242
242
|
exit 1
|
|
243
243
|
fi
|
|
244
244
|
if ! command -v nix >/dev/null 2>&1; then
|
|
245
245
|
printf '%s\n' \
|
|
246
246
|
"native kernel package CI requires either a loadable prebuilt native packed-matmul kernel or nix for kernel-builder." \
|
|
247
|
-
"Install nix,
|
|
247
|
+
"Install nix, make a compatible orbitquant_packed_matmul package importable, set LOCAL_KERNELS to a compatible built variant, wait for the Hugging Face kernel repo to become loadable, or set ORBITQUANT_RUN_NATIVE_KERNEL_PACKAGE_CI=0 only when intentionally skipping native package closure." \
|
|
248
248
|
>&2
|
|
249
249
|
exit 1
|
|
250
250
|
fi
|
|
@@ -94,7 +94,7 @@ if [[ "$RUN_NATIVE_KERNEL_PACKAGE_CI" == "1" && -z "${LOCAL_KERNELS:-}" ]]; then
|
|
|
94
94
|
stage "native-packed-matmul-local-variant-missing status=$native_kernel_variant_status"
|
|
95
95
|
printf '%s\n' \
|
|
96
96
|
"native packed matmul local variant was not found for this MPS runtime." \
|
|
97
|
-
"
|
|
97
|
+
"Make a compatible orbitquant_packed_matmul package importable, set LOCAL_KERNELS=$NATIVE_KERNEL_REPO_ID=/absolute/path/to/a/built/variant containing metadata.json, build the matching kernel-builder variant, or set ORBITQUANT_RUN_NATIVE_KERNEL_PACKAGE_CI=0 to run only the inline Metal shader checks." \
|
|
98
98
|
>&2
|
|
99
99
|
fi
|
|
100
100
|
fi
|
|
@@ -11,6 +11,7 @@ from orbitquant.artifacts.checksums import (
|
|
|
11
11
|
write_sha256sums_from_manifest,
|
|
12
12
|
)
|
|
13
13
|
from orbitquant.artifacts.manifest import OrbitQuantManifest
|
|
14
|
+
from orbitquant.artifacts.model_card import render_model_card
|
|
14
15
|
from orbitquant.artifacts.validator import validate_required_artifact_files
|
|
15
16
|
|
|
16
17
|
_VALID_METRIC_SPLITS = {"original", "orbitquant"}
|
|
@@ -126,6 +127,10 @@ def record_artifact_metrics(
|
|
|
126
127
|
)
|
|
127
128
|
if not refresh_checksums_enabled:
|
|
128
129
|
return record
|
|
130
|
+
(artifact_path / "README.md").write_text(
|
|
131
|
+
render_model_card(manifest, benchmark_summary=summary),
|
|
132
|
+
encoding="utf-8",
|
|
133
|
+
)
|
|
129
134
|
checksums = _write_manifest_with_refreshed_checksums(
|
|
130
135
|
artifact_path, manifest, changed_paths
|
|
131
136
|
)
|
|
@@ -5,6 +5,31 @@ from typing import Any
|
|
|
5
5
|
from orbitquant.artifacts.manifest import OrbitQuantManifest
|
|
6
6
|
from orbitquant.eval.native_settings import NativeSuite, list_native_suites
|
|
7
7
|
|
|
8
|
+
_GENEVAL_METRICS = (
|
|
9
|
+
"geneval_overall",
|
|
10
|
+
"geneval_per_task_single_object",
|
|
11
|
+
"geneval_per_task_two_object",
|
|
12
|
+
"geneval_per_task_counting",
|
|
13
|
+
"geneval_per_task_colors",
|
|
14
|
+
"geneval_per_task_position",
|
|
15
|
+
"geneval_per_task_color_attr",
|
|
16
|
+
)
|
|
17
|
+
_VBENCH_METRICS = (
|
|
18
|
+
"vbench_imaging_quality",
|
|
19
|
+
"vbench_aesthetic_quality",
|
|
20
|
+
"vbench_motion_smoothness",
|
|
21
|
+
"vbench_dynamic_degree",
|
|
22
|
+
"vbench_background_consistency",
|
|
23
|
+
"vbench_subject_consistency",
|
|
24
|
+
"vbench_scene",
|
|
25
|
+
"vbench_overall_consistency",
|
|
26
|
+
)
|
|
27
|
+
_RELEASE_METRICS_BY_MODEL = {
|
|
28
|
+
"black-forest-labs/FLUX.1-schnell": ("GenEval", _GENEVAL_METRICS),
|
|
29
|
+
"Tongyi-MAI/Z-Image-Turbo": ("GenEval", _GENEVAL_METRICS),
|
|
30
|
+
"Wan-AI/Wan2.1-T2V-1.3B-Diffusers": ("VBench", _VBENCH_METRICS),
|
|
31
|
+
}
|
|
32
|
+
|
|
8
33
|
|
|
9
34
|
def _comparison_assets(checksums: dict[str, str]) -> list[str]:
|
|
10
35
|
assets = []
|
|
@@ -168,18 +193,70 @@ def _native_settings_section(source_model_id: str) -> list[str]:
|
|
|
168
193
|
return lines
|
|
169
194
|
|
|
170
195
|
|
|
171
|
-
def
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
196
|
+
def _latest_metrics_by_split(
|
|
197
|
+
benchmark_summary: dict[str, Any] | None,
|
|
198
|
+
) -> dict[str, dict[str, Any]]:
|
|
199
|
+
if not isinstance(benchmark_summary, dict):
|
|
200
|
+
return {}
|
|
201
|
+
split_payload = benchmark_summary.get("metrics")
|
|
202
|
+
if not isinstance(split_payload, dict):
|
|
203
|
+
return {}
|
|
204
|
+
metrics_by_split: dict[str, dict[str, Any]] = {}
|
|
205
|
+
for split in ("original", "orbitquant"):
|
|
206
|
+
latest = split_payload.get(split, {}).get("latest")
|
|
207
|
+
if not isinstance(latest, dict):
|
|
208
|
+
continue
|
|
209
|
+
metrics = latest.get("metrics")
|
|
210
|
+
if isinstance(metrics, dict):
|
|
211
|
+
metrics_by_split[split] = metrics
|
|
212
|
+
return metrics_by_split
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
def _format_metric_value(value: Any) -> str:
|
|
216
|
+
if isinstance(value, bool) or not isinstance(value, int | float):
|
|
217
|
+
return ""
|
|
218
|
+
return f"`{value:.4g}`"
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
def _release_metric_rows(
|
|
222
|
+
source_model_id: str,
|
|
223
|
+
benchmark_summary: dict[str, Any] | None,
|
|
224
|
+
) -> tuple[str | None, list[tuple[str, str, str]]]:
|
|
225
|
+
release = _RELEASE_METRICS_BY_MODEL.get(source_model_id)
|
|
226
|
+
if release is None:
|
|
227
|
+
return None, []
|
|
228
|
+
release_metric, metric_names = release
|
|
229
|
+
metrics_by_split = _latest_metrics_by_split(benchmark_summary)
|
|
230
|
+
rows = []
|
|
231
|
+
for metric in metric_names:
|
|
232
|
+
original = metrics_by_split.get("original", {}).get(metric)
|
|
233
|
+
orbitquant = metrics_by_split.get("orbitquant", {}).get(metric)
|
|
234
|
+
if original is None and orbitquant is None:
|
|
235
|
+
continue
|
|
236
|
+
rows.append(
|
|
237
|
+
(
|
|
238
|
+
metric,
|
|
239
|
+
_format_metric_value(original),
|
|
240
|
+
_format_metric_value(orbitquant),
|
|
241
|
+
)
|
|
242
|
+
)
|
|
243
|
+
return release_metric, rows
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
def _validation_status_section(
|
|
247
|
+
source_model_id: str,
|
|
248
|
+
benchmark_summary: dict[str, Any] | None,
|
|
249
|
+
) -> list[str]:
|
|
250
|
+
release_metric, release_rows = _release_metric_rows(source_model_id, benchmark_summary)
|
|
177
251
|
release_line = (
|
|
178
|
-
f"- Release-grade {release_metric} metrics:
|
|
252
|
+
f"- Release-grade {release_metric} metrics: included below."
|
|
253
|
+
if release_metric
|
|
254
|
+
and release_rows
|
|
255
|
+
else f"- Release-grade {release_metric} metrics: not included in this artifact."
|
|
179
256
|
if release_metric
|
|
180
257
|
else "- Release-grade paper metrics: not applicable to this extra target."
|
|
181
258
|
)
|
|
182
|
-
|
|
259
|
+
lines = [
|
|
183
260
|
"## Validation Status",
|
|
184
261
|
"",
|
|
185
262
|
"- Native BF16-vs-OrbitQuant comparison: included when the visual matrix "
|
|
@@ -188,6 +265,28 @@ def _validation_status_section(source_model_id: str) -> list[str]:
|
|
|
188
265
|
"- The model card reports artifact-level validation status only.",
|
|
189
266
|
"",
|
|
190
267
|
]
|
|
268
|
+
if release_rows:
|
|
269
|
+
lines.extend(
|
|
270
|
+
[
|
|
271
|
+
f"### Release-Grade {release_metric} Metrics",
|
|
272
|
+
"",
|
|
273
|
+
(
|
|
274
|
+
"GenEval `geneval_overall` follows upstream GenEval semantics: "
|
|
275
|
+
"average over task scores."
|
|
276
|
+
if release_metric == "GenEval"
|
|
277
|
+
else "VBench metrics follow the upstream dimension names."
|
|
278
|
+
),
|
|
279
|
+
"",
|
|
280
|
+
"| Metric | BF16 source | OrbitQuant |",
|
|
281
|
+
"| --- | ---: | ---: |",
|
|
282
|
+
]
|
|
283
|
+
)
|
|
284
|
+
lines.extend(
|
|
285
|
+
f"| `{metric}` | {original or '-'} | {orbitquant or '-'} |"
|
|
286
|
+
for metric, original, orbitquant in release_rows
|
|
287
|
+
)
|
|
288
|
+
lines.append("")
|
|
289
|
+
return lines
|
|
191
290
|
|
|
192
291
|
|
|
193
292
|
def _native_validation_proof_section(
|
|
@@ -253,7 +352,9 @@ def render_model_card(
|
|
|
253
352
|
bits = f"W{data['weight_bits']}A{data['activation_bits']}"
|
|
254
353
|
comparison_assets = _comparison_assets(data["checksums"])
|
|
255
354
|
native_settings_lines = _native_settings_section(data["source_model_id"])
|
|
256
|
-
validation_status_lines = _validation_status_section(
|
|
355
|
+
validation_status_lines = _validation_status_section(
|
|
356
|
+
data["source_model_id"], benchmark_summary
|
|
357
|
+
)
|
|
257
358
|
native_validation_proof_lines = _native_validation_proof_section(benchmark_summary)
|
|
258
359
|
adaln_group_size = int(data.get("adaln_group_size", 64))
|
|
259
360
|
adaln_default_note = (
|