Zero-Shot Image Classification
Transformers
Safetensors
siglip
vision

Fix model.safetensors: restore missing vision tower (was text-only)

#2
Veritone, Inc. org

What

model.safetensors in this repo was missing the entire vision tower
(all 208 vision_model.* tensors):

  • full mirrors: the file was byte-identical to text_model.safetensors
    (200 tensors: text_model.* + logit_scale/logit_bias; 1.13 GB) β€” the
    text-only blob had been uploaded under both names. The complete upstream
    checkpoint is 1.50 GB / 408 tensors.
  • vision splits: the file contained only logit_scale/logit_bias
    (144 bytes).

Impact

Anything loading the repo gets a silently random-initialized vision tower
(from_pretrained warns about missing keys and continues). Concretely: the
aiWARE siglip2-chunk engine bakes this checkpoint into its Docker image at
build time; every image/video embedding it has produced is deterministic but
meaningless noise. Verified empirically: engine-stored vectors vs true SigLIP2
embeddings of the exact same video frames give cosine ~0.06 (receipts:
services/playground/notebooks/siglip2_vector_verification.ipynb in the
Veritone agents monorepo).

Fix

model.safetensors replaced with the corresponding content of upstream
google/siglip2-base-patch16-224 (download sha256-verified against the Hub's LFS metadata;
vision splits: vision_model.* + logit scalars extracted from it, matching
the format of the working sibling -vision exports β€” 210 tensors, F32).

Verification

Structural check of every *.safetensors against upstream headers:
uv run verify_hf_mirror.py Veritone/siglip2-base-patch16-224 (script in the agents monorepo,
services/playground/scripts/siglip2/). Collection status when this PR was
prepared: these 4 repos broken, the other 47 in the collection OK.

Recommended follow-up

Consumers should fail loudly on missing tensors β€” the engine's Docker bake
step currently prints "weights baked successfully" for a checkpoint that
random-initializes half the model.

Veritone, Inc. org

main was fixed directly by re-running the exporter from a clean cache; this PR is now byte-identical to main (same LFS blob) β€” closing as a no-op.

dietmar-veri changed pull request status to closed

Sign up or log in to comment