V-JEPA 2 ViT-L/16 SSv2 classifier โ GGUF for jepa.cpp
Meta's V-JEPA 2 ViT-L/16 encoder with its Something-Something-v2 attentive-pooler head โ 174 action classes from one clip โ converted to GGUF for jepa.cpp, a ggml C/C++ engine that runs it on a plain CPU with no Python and no PyTorch. The 174 label strings travel inside the GGUF, so no side file is needed.
375 M parameters; D = 1024, 24 layers, 16 heads, patch 16, tubelet 2, 256x256. Everything the engine needs โ dimensions, positional scheme, preprocessing recipe, and class labels where there are any โ travels inside the file, so inference needs one binary and one GGUF and nothing else.
Run it
git clone --recursive https://github.com/aselimc/jepa.cpp && cd jepa.cpp
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release && cmake --build build -j
hf download jepacpp/vjepa2-vitl-fpc16-256-ssv2-GGUF vjepa2-vitl-fpc16-256-ssv2-f16.gguf --local-dir models/gguf
# a 16-frame clip -> the top 5 of 174 actions, or the pooled feature
build/jepa-classify -m vjepa2-vitl-fpc16-256-ssv2-f16.gguf --frames-npy clip.npy -k 5 -t 32
build/jepa-embed -m vjepa2-vitl-fpc16-256-ssv2-f16.gguf --frames-npy clip.npy --pool mean -t 32
--pool selects mean, cls, lewm or none (the full token map); -o writes a .npy.
scripts/download_models.sh fetches whole sets at once. The C API is one header,
include/jepa.h โ full reference on the C API page.
Files
| file | size | sha256 (first 16) | tier | measured against the PyTorch reference |
|---|---|---|---|---|
vjepa2-vitl-fpc16-256-ssv2-f32.gguf |
1432.4 MiB | 4eb87e2691f68bcd |
exact | cos mean 1.000000, median 1.000000, worst 0.999999, pooled_mean 1.000000, logits 1.000000, top-1/top-5 2/2 ยท 5/5, rel_max 7.5e-04 แต |
vjepa2-vitl-fpc16-256-ssv2-f16.gguf |
717.1 MiB | 9c85a9abe92fa8c4 |
parity | cos mean 0.997144, median 0.999897, worst 0.5088, pooled_mean 0.999897, logits 0.999935, top-1/top-5 2/2 ยท 5/5 แต |
vjepa2-vitl-fpc16-256-ssv2-q8_0.gguf |
383.2 MiB | a0fa64702b6a8dbc |
parity | cos mean 0.966128, median 0.996770, worst 0.2305, pooled_mean 0.996645, logits 0.998501, top-1/top-5 2/2 ยท 5/5 แต |
vjepa2-vitl-fpc16-256-ssv2-q4_0.gguf |
205.1 MiB | a004c349542957fd |
advisory | cos mean 0.915000, worst 0.200962, logits 0.988118, top-1/top-5 2/2 / 0.90 แต |
vjepa2-vitl-fpc16-256-ssv2-q4_k.gguf |
205.1 MiB | 2221adb97d4a3541 |
advisory, below the bar | cos mean 0.931075, worst 0.220083, logits 0.985617, top-1/top-5 2/2 / 0.90 แต |
แต tests/test-parity on the CPU backend, stored reference input, 32 threads, worst sample โ docs/parity.md. แต scripts/gguf_dequant_selftest.py: the dequantized weights through the numpy reference graph at f32 activations, so the figure is the weight error alone โ docs/quantization.md. cos mean is the mean per-token cosine of last_hidden_state, worst its single worst token.
Tiers. exact โ reproduces the PyTorch reference to the printed precision on the CPU. parity โ
passes its family's test-parity thresholds. advisory โ below 8 bits per weight, which is not a parity
configuration: the results are reported, only the derived tensors and the top-1 are gated. Which file to
ship: Accuracy โ which dtype.
vjepa2-vitl-fpc16-256-ssv2-q4_k.gguf misses even the advisory derived-tensor bar (logits and pooled), on the CPU and on CUDA alike.
Full checksums:
4eb87e2691f68bcdc2ab5f2640031cfa1c1b1996e8ec54ed8b5ff400a83c4f52 vjepa2-vitl-fpc16-256-ssv2-f32.gguf
9c85a9abe92fa8c416f76528dcc26bfefed63920d38e5f6cdaf34f9d84575141 vjepa2-vitl-fpc16-256-ssv2-f16.gguf
a0fa64702b6a8dbc5efb163f9135242db622cb81ef5f74520f5bd9152a16f481 vjepa2-vitl-fpc16-256-ssv2-q8_0.gguf
a004c349542957fd64c53af2d97d6b840f8c498ea36305146c6e4d26d7a67cd9 vjepa2-vitl-fpc16-256-ssv2-q4_0.gguf
2221adb97d4a3541343a641fb45bd0d1a6a96ca90c15af9a4d7e7c32923cc113 vjepa2-vitl-fpc16-256-ssv2-q4_k.gguf
Verify a download with sha256sum -c. The other types jepa-quantize can produce (q4_1, q5_0,
q5_1, q5_k, q6_k, measured in quantization) are not published here; make
them locally with build/jepa-quantize vjepa2-vitl-fpc16-256-ssv2-f16.gguf out.gguf q6_k -t 32.
Measured
Every figure below is read from a committed artifact of jepa.cpp 00bfd4e by scripts/hf_publish.py โ parity, quantization, accuracy, performance and tests/results/*.json.
Something-Something-v2 validation, all 24,777 clips, 174 classes, one view per clip and no test-time augmentation. Both engines read the same uniformly sampled frames and each runs the preprocessing itself.
| backend | dtype | top-1 % | top-5 % | top-1 agreement with PyTorch % | logit cosine, mean / worst clip |
|---|---|---|---|---|---|
| PyTorch (float32, TF32 off) | f32 | 72.39 | 94.11 | โ | โ |
| jepa.cpp CUDA | f32 | 72.39 | 94.10 | 99.66 | 0.9999628 / 0.98586241 |
| jepa.cpp CUDA | f16 | 72.39 | 94.11 | 99.66 | 0.9999628 / 0.98559944 |
| jepa.cpp CUDA | q8_0 | 72.47 | 94.07 | 97.97 | 0.9991721 / 0.94188198 |
| jepa.cpp CUDA | q4_k | 72.52 | 94.02 | 94.19 | 0.9930669 / 0.79476574 |
On the CPU, over a fixed 2,478-clip subset (every 10th clip of the validation order):
| backend | dtype | top-1 % | top-5 % | top-1 agreement with PyTorch % | logit cosine, mean / worst clip |
|---|---|---|---|---|---|
| PyTorch | f32 | 72.84 | 94.35 | โ | โ |
| jepa.cpp CPU, 32 threads | f32 | 72.84 | 94.35 | 100.00 | 1.0000000 / 0.99999997 |
| jepa.cpp CPU, 32 threads | f16 | 72.92 | 94.39 | 99.72 | 0.9999734 / 0.99736205 |
Speed โ the encoder graph at f16 on 32 threads (AMD Ryzen Threadripper PRO 7995WX 96-Cores): 823 ms per 16-frame clip. Peak RSS at f16: 808 MiB.
f16 is the recommendation for classifier work. Quantization moves decisions without moving the score: read the agreement column, not the top-1 delta, as the cost of a low-bit file. The full argument, with the per-clip breakdown, is in accuracy.
Source, licence and attribution
Converted from facebook/vjepa2-vitl-fpc16-256-ssv2.
MIT. The source checkpoint is published by Meta AI (FAIR): license: mit on the model card and
LICENSE in facebookresearch/vjepa2
(Copyright (c) Meta Platforms, Inc. and affiliates). There is no separate weights licence, no gating and
no acceptable-use policy. These GGUF files are the same weights re-serialised into the GGUF container,
quantized where the file name says so. Cite the V-JEPA 2 paper. The
head was fine-tuned on
Something-Something v2,
whose dataset terms are a separate matter from this weight licence.
The licence travels inside every GGUF as general.license and the origin as general.source_url;
build/jepa-info <file> --kv prints them. jepa.cpp's own code is MIT.
Conversion
Produced by jepa.cpp 00bfd4e:
scripts/download_models.sh --convert vjepa2-ssv2
python scripts/convert.py --family vjepa2 --src models/facebook/vjepa2-vitl-fpc16-256-ssv2 --ftype f16
# ... and again with --ftype f32 for the f32 file
for q in q8_0 q4_0 q4_k; do
build/jepa-quantize models/gguf/vjepa2-vitl-fpc16-256-ssv2-f16.gguf \
models/gguf/vjepa2-vitl-fpc16-256-ssv2-$q.gguf $q -t 32
done
jepa-quantize re-types only the 2-D attention / FFN / projection / classifier matrices; patch
embeddings, position tables, norms and biases keep the source type. The rules are in
docs/gguf-schema.md.
Links
- Code: https://github.com/aselimc/jepa.cpp
- Documentation: https://aselimc.github.io/jepa.cpp/
- Parity fixtures: https://huggingface.co/datasets/jepacpp/jepa.cpp-fixtures
- All jepa.cpp GGUFs: https://huggingface.co/jepacpp
- Downloads last month
- 60
4-bit
8-bit
16-bit
32-bit
Model tree for jepacpp/vjepa2-vitl-fpc16-256-ssv2-GGUF
Base model
facebook/vjepa2-vitl-fpc64-256