fix(ai): rebuild the amd64-gpu bundle closure and widen the compat gate (#694)

The published amd64-gpu set carried huggingface_hub at four versions, the tokenizers 0.23.1 breaker, background-removal's scipy strand, and a live #490 flavor mix from transcription's CPU onnxruntime. Six bundles rebuilt at r2 paths under the constrained closure; gpu pins move to 1.20.2 (PyPI dropped 1.20.1); verify-bundle-compatibility.sh gains the any-package multi-version scan. Fixes #692.
This commit is contained in:
SnapOtter
2026-07-31 00:22:36 +08:00
committed by GitHub
parent 44348e6e07
commit 44b1aa9767
2 changed files with 72 additions and 29 deletions
+29 -29
View File
@@ -29,10 +29,10 @@
"estimatedSize": "4-5 GB", "estimatedSize": "4-5 GB",
"archives": { "archives": {
"amd64-gpu": { "amd64-gpu": {
"file": "v2.0.0/background-removal-amd64-gpu.tar.gz", "file": "v2.0.0/background-removal-amd64-gpu-r2.tar.gz",
"sha256": "a1dfbdd5862fd32c7719ca79b0c7e4b76a327330a5991ddad98a2761abca10cb", "sha256": "61a7036d3c78a410b2237bd158b8f9d6ac51c38a623f3506243b608e62f92d33",
"compressedSize": 4808242472, "compressedSize": 4826542966,
"extractedSize": 0 "extractedSize": 7177444273
}, },
"arm64-cpu": { "arm64-cpu": {
"file": "v2.0.0/background-removal-arm64-cpu-r2.tar.gz", "file": "v2.0.0/background-removal-arm64-cpu-r2.tar.gz",
@@ -43,7 +43,7 @@
}, },
"packages": { "packages": {
"common": ["rembg==2.0.62"], "common": ["rembg==2.0.62"],
"amd64": ["onnxruntime-gpu==1.20.1", "mediapipe>=0.10.21"], "amd64": ["onnxruntime-gpu==1.20.2", "mediapipe>=0.10.21"],
"arm64": ["onnxruntime==1.20.1", "mediapipe>=0.10.18"] "arm64": ["onnxruntime==1.20.1", "mediapipe>=0.10.18"]
}, },
"pipFlags": {}, "pipFlags": {},
@@ -114,10 +114,10 @@
"estimatedSize": "200-300 MB", "estimatedSize": "200-300 MB",
"archives": { "archives": {
"amd64-gpu": { "amd64-gpu": {
"file": "v2.0.0/face-detection-amd64-gpu.tar.gz", "file": "v2.0.0/face-detection-amd64-gpu-r2.tar.gz",
"sha256": "0ee28b86dac88c60e005604ba0595746f455ec97f08d0c8307ba9b57e131bc7f", "sha256": "ff242709bd03befe424fa5096a9d60c6b70f22fcef8af803a1c86838140832be",
"compressedSize": 75358868, "compressedSize": 88895081,
"extractedSize": 209838080 "extractedSize": 260502197
}, },
"arm64-cpu": { "arm64-cpu": {
"file": "v2.0.0/face-detection-arm64-cpu-r2.tar.gz", "file": "v2.0.0/face-detection-arm64-cpu-r2.tar.gz",
@@ -158,10 +158,10 @@
"estimatedSize": "1-2 GB", "estimatedSize": "1-2 GB",
"archives": { "archives": {
"amd64-gpu": { "amd64-gpu": {
"file": "v2.0.0/object-eraser-colorize-amd64-gpu.tar.gz", "file": "v2.0.0/object-eraser-colorize-amd64-gpu-r2.tar.gz",
"sha256": "a3f6cd2eca9e5dd907497d0d58ca5f6532887bb748e4062de0f4fb9815782c31", "sha256": "0d858f287b9ab57a60e9e3209eae1c14a6a0792687f7105d40b1f4c2a19ef102",
"compressedSize": 1545472964, "compressedSize": 1532343662,
"extractedSize": 2249379840 "extractedSize": 2204704276
}, },
"arm64-cpu": { "arm64-cpu": {
"file": "v2.0.0/object-eraser-colorize-arm64-cpu-r3.tar.gz", "file": "v2.0.0/object-eraser-colorize-arm64-cpu-r3.tar.gz",
@@ -172,7 +172,7 @@
}, },
"packages": { "packages": {
"common": ["huggingface-hub[hf_xet]==0.36.2"], "common": ["huggingface-hub[hf_xet]==0.36.2"],
"amd64": ["onnxruntime-gpu==1.20.1"], "amd64": ["onnxruntime-gpu==1.20.2"],
"arm64": ["onnxruntime==1.20.1"] "arm64": ["onnxruntime==1.20.1"]
}, },
"pipFlags": {}, "pipFlags": {},
@@ -279,10 +279,10 @@
"estimatedSize": "4-5 GB", "estimatedSize": "4-5 GB",
"archives": { "archives": {
"amd64-gpu": { "amd64-gpu": {
"file": "v2.0.0/upscale-enhance-amd64-gpu.tar.gz", "file": "v2.0.0/upscale-enhance-amd64-gpu-r2.tar.gz",
"sha256": "b725a0b18a8295cb87e15f79b31c294f1de98101dedd76389728300a8d377a15", "sha256": "81f0c688abcdd277fbcdd5501aa22a4fe789e08fe9822811ea326a3de1a8b15d",
"compressedSize": 5358573124, "compressedSize": 5371590150,
"extractedSize": 8406943960 "extractedSize": 8454624391
}, },
"arm64-cpu": { "arm64-cpu": {
"file": "v2.0.0/upscale-enhance-arm64-cpu-r2.tar.gz", "file": "v2.0.0/upscale-enhance-arm64-cpu-r2.tar.gz",
@@ -403,10 +403,10 @@
"estimatedSize": "800 MB - 1 GB", "estimatedSize": "800 MB - 1 GB",
"archives": { "archives": {
"amd64-gpu": { "amd64-gpu": {
"file": "v2.0.0/photo-restoration-amd64-gpu.tar.gz", "file": "v2.0.0/photo-restoration-amd64-gpu-r2.tar.gz",
"sha256": "4747953db35c71b83db19ce12cc6c591730f0cb9f64621f239db17ae3e3563fd", "sha256": "38c82e61acf03980b97f6f2a4754dd7cdbc3d4d64f864bf2776168fc8fb91eea",
"compressedSize": 4680254837, "compressedSize": 4693244387,
"extractedSize": 8172949791 "extractedSize": 8220630756
}, },
"arm64-cpu": { "arm64-cpu": {
"file": "v2.0.0/photo-restoration-arm64-cpu-r2.tar.gz", "file": "v2.0.0/photo-restoration-arm64-cpu-r2.tar.gz",
@@ -418,7 +418,7 @@
"packages": { "packages": {
"common": ["codeformer-pip==0.0.4", "huggingface-hub[hf_xet]==0.36.2", "setuptools<75"], "common": ["codeformer-pip==0.0.4", "huggingface-hub[hf_xet]==0.36.2", "setuptools<75"],
"amd64": [ "amd64": [
"onnxruntime-gpu==1.20.1", "onnxruntime-gpu==1.20.2",
"mediapipe>=0.10.21", "mediapipe>=0.10.21",
"torch==2.7.0+cu126 torchvision==0.22.0+cu126 --index-url https://download.pytorch.org/whl/cu126", "torch==2.7.0+cu126 torchvision==0.22.0+cu126 --index-url https://download.pytorch.org/whl/cu126",
"lpips", "lpips",
@@ -553,10 +553,10 @@
"estimatedSize": "~600 MB", "estimatedSize": "~600 MB",
"archives": { "archives": {
"amd64-gpu": { "amd64-gpu": {
"file": "v2.0.0/transcription-amd64-gpu.tar.gz", "file": "v2.0.0/transcription-amd64-gpu-r2.tar.gz",
"sha256": "3033d480c6183df66855d78c355233dbc86a754d07414e544e1df1038337c9e1", "sha256": "6229180f698d1ceb0866df4b1c091ed4a89f6324427d373dbbc13a763ae26ce2",
"compressedSize": 559189061, "compressedSize": 845757082,
"extractedSize": 845987840 "extractedSize": 1647328796
}, },
"arm64-cpu": { "arm64-cpu": {
"file": "v2.0.0/transcription-arm64-cpu-r3.tar.gz", "file": "v2.0.0/transcription-arm64-cpu-r3.tar.gz",
@@ -567,8 +567,8 @@
}, },
"packages": { "packages": {
"common": ["faster-whisper>=1.0.0", "huggingface-hub[hf_xet]==0.36.2"], "common": ["faster-whisper>=1.0.0", "huggingface-hub[hf_xet]==0.36.2"],
"amd64": [], "amd64": ["onnxruntime-gpu==1.20.2"],
"arm64": [] "arm64": ["onnxruntime==1.20.1"]
}, },
"pipFlags": {}, "pipFlags": {},
"postInstall": [], "postInstall": [],
+43
View File
@@ -187,6 +187,49 @@ if [[ $? -ne 0 ]]; then
fail "Constrained-package consistency check failed -- see violations above" 2 fail "Constrained-package consistency check failed -- see violations above" 2
fi fi
log "Scanning every package for multi-version disagreement (not just constrained)"
# The tokenizers conflict behind #669 lived outside the constraints list, so
# the constrained check above sailed past it. This scan reports ANY package
# left at more than one version after layering. Default is a warning (patch
# drift like filelock is normal); set COMPAT_STRICT_ANY=1 to make it fatal.
set +e
"${VENV}/bin/python3" - "${SITE_PACKAGES}" "${MANIFEST}" <<'PYANYVER'
import json, os, re, sys
sp, manifest_path = sys.argv[1], sys.argv[2]
with open(manifest_path) as f:
constrained = {re.sub(r"[-_.]+", "_", c.split("==")[0]).lower()
for c in json.load(f).get("constraints", [])}
by_name = {}
for entry in os.listdir(sp):
m = re.match(r"(.+)-([0-9][^-]*)\.dist-info$", entry)
if not m:
continue
key = re.sub(r"[-_.]+", "_", m.group(1)).lower()
by_name.setdefault(key, set()).add(m.group(2))
offenders = {k: sorted(v) for k, v in by_name.items()
if len(v) > 1 and k not in constrained}
if not offenders:
print(" No unconstrained package is present at more than one version.")
sys.exit(0)
print(" WARNING: unconstrained packages at multiple versions after layering:")
for pkg, vers in sorted(offenders.items()):
print(f" {pkg}: {vers}")
sys.exit(3)
PYANYVER
ANYVER_RC=$?
set -e
if [[ ${ANYVER_RC} -ne 0 ]]; then
if [[ "${COMPAT_STRICT_ANY:-0}" == "1" ]]; then
fail "Unconstrained multi-version packages present and COMPAT_STRICT_ANY=1" 2
fi
echo " (warning only; triage each entry by consumer strictness before publishing)"
fi
log "Checking ONNX Runtime flavor consistency" log "Checking ONNX Runtime flavor consistency"
"${VENV}/bin/python3" - "${SITE_PACKAGES}" <<'PYFLAVOR' || fail "ONNX Runtime flavor check failed" 2 "${VENV}/bin/python3" - "${SITE_PACKAGES}" <<'PYFLAVOR' || fail "ONNX Runtime flavor check failed" 2