LeJEPA ViT-S/16 (IN1k) β GGUF for jepa.cpp
0
13 commits
1 linked in READMEs
updated Sep 1, 2026
The community LeJEPA ViT-S/16 image encoder (a DINOv2-style ViTv2 backbone) pretrained on ImageNet-1k, 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 smallest and fastest model in the set.
22 M parameters; D = 384, 12 layers, 6 heads, patch 16, 224x224. 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.
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/lejepa-vits16-pretrain-in1k-GGUF lejepa-vits16-pretrain-in1k-f16.gguf --local-dir models/gguf
# one image -> a CLS feature
build/jepa-embed -m lejepa-vits16-pretrain-in1k-f16.gguf -i photo.jpg --pool cls -t 32 -o feat.npy
--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.
| file | size | sha256 (first 16) | tier | measured against the PyTorch reference |
|---|---|---|---|---|
lejepa-vits16-pretrain-in1k-f32.gguf | 82.7 MiB | 932a6be946ba5434 | exact | cos mean 1.000000, worst 1.000000, rel_max 1.2e-05 α΅ |
lejepa-vits16-pretrain-in1k-f16.gguf | 42.2 MiB | d47212196cb764f5 | parity | cos mean 0.999999, worst 0.999994 α΅ |
lejepa-vits16-pretrain-in1k-q8_0.gguf | 23.2 MiB | 5c8f5fd803b06047 | parity | cos mean 0.999263, worst 0.995193 α΅ |
lejepa-vits16-pretrain-in1k-q4_0.gguf | 13.0 MiB | 50c64f08c83754b5 | advisory | cos mean 0.965778, worst 0.830929, pooled_mean 0.992347, cls 0.987218 α΅ |
lejepa-vits16-pretrain-in1k-q4_k.gguf | 13.0 MiB | d0859db9654404f1 | advisory, below the bar | cos mean 0.970211, worst 0.843224, pooled_mean 0.993358, cls 0.988700 α΅ |
α΅ 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.
lejepa-vits16-pretrain-in1k-q4_k.gguf the derived cls feature misses the low-bit tier's 0.99 bar, on the CPU and on CUDA alike.
Full checksums:
932a6be946ba5434ade4b514d2056f8cd024a9299ac03b40e49955e31138c9d8 lejepa-vits16-pretrain-in1k-f32.gguf
d47212196cb764f5d5fd07994459f7fdd96e2d4a53a990e9555b152e555be795 lejepa-vits16-pretrain-in1k-f16.gguf
5c8f5fd803b0604732bd97f10f7a56499304ea737d32069fe03dcbfb73cf1c42 lejepa-vits16-pretrain-in1k-q8_0.gguf
50c64f08c83754b5c3c987f93cc0b06947a9a2899f705088c7a117a68375e1c7 lejepa-vits16-pretrain-in1k-q4_0.gguf
d0859db9654404f169e44f6159501702b00df3aee015f855e59abe85854be059 lejepa-vits16-pretrain-in1k-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 lejepa-vits16-pretrain-in1k-f16.gguf out.gguf q6_k -t 32.
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.
Imagenette k-NN β 3925 queries against a gallery of 9469 (train_full), the frozen cls feature, k = 20 cosine vote. Nothing is trained.
| backend | dtype | k-NN top-1 % | centroid top-1 % | agreement with PyTorch % | mean feature cosine |
|---|---|---|---|---|---|
| pytorch | f32 | 94.45 | 87.59 | β | 1 |
| jepa.cpp | f32 | 94.52 | 87.64 | 99.85 | 0.999983 |
| jepa.cpp | f16 | 94.55 | 87.64 | 99.82 | 0.999983 |
| jepa.cpp | q8_0 | 94.50 | 87.64 | 99.87 | 0.999843 |
| jepa.cpp | q4_k | 94.22 | 87.67 | 99.08 | 0.988725 |
Speed β the encoder graph at f16 on 32 threads (AMD Ryzen Threadripper PRO 7995WX 96-Cores): 13 ms per image against PyTorch's 15 ms. The same shape on NVIDIA RTX 4500 Ada Generation: 1.1 ms. Peak RSS at f16: 52 MiB.
This model's matrices are not all a multiple of the K-quant block, so q4_k falls back per tensor to
q4_0 for most of them and the two files come out the same size; general.file_type reads 2 (q4_0)
as a result. The fallback rule is in quantization.
Converted from OK-AI/lejepa-vits16-pretrain-in1k.
Apache-2.0. The source checkpoint is published by Open-Knowledge-AI (OK-AI), trained from
scratch on ImageNet-1k with their lite_ssl codebase. license: apache-2.0 in the model card's
metadata is the repository's only licence statement β it ships no LICENSE file. These GGUF files
are the same weights re-serialised into the GGUF container, quantized where the file name says so.
Cite the LeJEPA paper (Balestriero & LeCun, 2025).
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.
Produced by jepa.cpp 00bfd4e:
scripts/download_models.sh --convert lejepa
python scripts/convert.py --family hfvit --src models/OK-AI/lejepa-vits16-pretrain-in1k --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/lejepa-vits16-pretrain-in1k-f32.gguf \
models/gguf/lejepa-vits16-pretrain-in1k-$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.
LeJEPA ViT-S/16 (IN1k) β GGUF for jepa.cpp
0
13 commits
1 linked in READMEs
updated Sep 1, 2026
The community LeJEPA ViT-S/16 image encoder (a DINOv2-style ViTv2 backbone) pretrained on ImageNet-1k, 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 smallest and fastest model in the set.
22 M parameters; D = 384, 12 layers, 6 heads, patch 16, 224x224. 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.
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/lejepa-vits16-pretrain-in1k-GGUF lejepa-vits16-pretrain-in1k-f16.gguf --local-dir models/gguf
# one image -> a CLS feature
build/jepa-embed -m lejepa-vits16-pretrain-in1k-f16.gguf -i photo.jpg --pool cls -t 32 -o feat.npy
--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.
| file | size | sha256 (first 16) | tier | measured against the PyTorch reference |
|---|---|---|---|---|
lejepa-vits16-pretrain-in1k-f32.gguf | 82.7 MiB | 932a6be946ba5434 | exact | cos mean 1.000000, worst 1.000000, rel_max 1.2e-05 α΅ |
lejepa-vits16-pretrain-in1k-f16.gguf | 42.2 MiB | d47212196cb764f5 | parity | cos mean 0.999999, worst 0.999994 α΅ |
lejepa-vits16-pretrain-in1k-q8_0.gguf | 23.2 MiB | 5c8f5fd803b06047 | parity | cos mean 0.999263, worst 0.995193 α΅ |
lejepa-vits16-pretrain-in1k-q4_0.gguf | 13.0 MiB | 50c64f08c83754b5 | advisory | cos mean 0.965778, worst 0.830929, pooled_mean 0.992347, cls 0.987218 α΅ |
lejepa-vits16-pretrain-in1k-q4_k.gguf | 13.0 MiB | d0859db9654404f1 | advisory, below the bar | cos mean 0.970211, worst 0.843224, pooled_mean 0.993358, cls 0.988700 α΅ |
α΅ 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.
lejepa-vits16-pretrain-in1k-q4_k.gguf the derived cls feature misses the low-bit tier's 0.99 bar, on the CPU and on CUDA alike.
Full checksums:
932a6be946ba5434ade4b514d2056f8cd024a9299ac03b40e49955e31138c9d8 lejepa-vits16-pretrain-in1k-f32.gguf
d47212196cb764f5d5fd07994459f7fdd96e2d4a53a990e9555b152e555be795 lejepa-vits16-pretrain-in1k-f16.gguf
5c8f5fd803b0604732bd97f10f7a56499304ea737d32069fe03dcbfb73cf1c42 lejepa-vits16-pretrain-in1k-q8_0.gguf
50c64f08c83754b5c3c987f93cc0b06947a9a2899f705088c7a117a68375e1c7 lejepa-vits16-pretrain-in1k-q4_0.gguf
d0859db9654404f169e44f6159501702b00df3aee015f855e59abe85854be059 lejepa-vits16-pretrain-in1k-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 lejepa-vits16-pretrain-in1k-f16.gguf out.gguf q6_k -t 32.
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.
Imagenette k-NN β 3925 queries against a gallery of 9469 (train_full), the frozen cls feature, k = 20 cosine vote. Nothing is trained.
| backend | dtype | k-NN top-1 % | centroid top-1 % | agreement with PyTorch % | mean feature cosine |
|---|---|---|---|---|---|
| pytorch | f32 | 94.45 | 87.59 | β | 1 |
| jepa.cpp | f32 | 94.52 | 87.64 | 99.85 | 0.999983 |
| jepa.cpp | f16 | 94.55 | 87.64 | 99.82 | 0.999983 |
| jepa.cpp | q8_0 | 94.50 | 87.64 | 99.87 | 0.999843 |
| jepa.cpp | q4_k | 94.22 | 87.67 | 99.08 | 0.988725 |
Speed β the encoder graph at f16 on 32 threads (AMD Ryzen Threadripper PRO 7995WX 96-Cores): 13 ms per image against PyTorch's 15 ms. The same shape on NVIDIA RTX 4500 Ada Generation: 1.1 ms. Peak RSS at f16: 52 MiB.
This model's matrices are not all a multiple of the K-quant block, so q4_k falls back per tensor to
q4_0 for most of them and the two files come out the same size; general.file_type reads 2 (q4_0)
as a result. The fallback rule is in quantization.
Converted from OK-AI/lejepa-vits16-pretrain-in1k.
Apache-2.0. The source checkpoint is published by Open-Knowledge-AI (OK-AI), trained from
scratch on ImageNet-1k with their lite_ssl codebase. license: apache-2.0 in the model card's
metadata is the repository's only licence statement β it ships no LICENSE file. These GGUF files
are the same weights re-serialised into the GGUF container, quantized where the file name says so.
Cite the LeJEPA paper (Balestriero & LeCun, 2025).
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.
Produced by jepa.cpp 00bfd4e:
scripts/download_models.sh --convert lejepa
python scripts/convert.py --family hfvit --src models/OK-AI/lejepa-vits16-pretrain-in1k --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/lejepa-vits16-pretrain-in1k-f32.gguf \
models/gguf/lejepa-vits16-pretrain-in1k-$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.