jepacpp/lewm-pusht-GGUF

Model

LeWorldModel Push-T β€” GGUF for jepa.cpp

0

12 commits

2 linked in READMEs

updated Sep 1, 2026

See the code

README

LeWorldModel Push-T β€” GGUF for jepa.cpp

LeWorldModel Push-T: a ViT-Ti/14 image encoder plus a latent, action-conditioned world-model predictor, 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 encoder's CLS token is projected to a world-model state, and six AdaLN-zero causal blocks conditioned on a 10-d action roll that state forward.

18 M parameters; D = 192, 12 layers, 3 heads, patch 14, 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.

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/lewm-pusht-GGUF lewm-pusht-f16.gguf --local-dir models/gguf

# one image -> a world-model state, then 8 random action steps
build/jepa-embed      -m lewm-pusht-f16.gguf -i photo.jpg --pool lewm -t 32
build/jepa-worldmodel -m lewm-pusht-f16.gguf --image photo.jpg --random-actions 8 -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

filesizesha256 (first 16)tiermeasured against the PyTorch reference
lewm-pusht-f32.gguf68.8 MiB30cc97fdbde7129fexactcos mean 1.000000, worst 1.000000, rel_max 1.0e-06 α΅–
lewm-pusht-f16.gguf37.7 MiB24f0a647b4ce1385paritycos mean 1.000000, worst 1.000000 α΅–
lewm-pusht-q8_0.gguf23.1 MiB3cadd1cb7d57ecd8paritycos mean 0.999913, worst 0.999895 α΅–
lewm-pusht-q4_0.gguf15.3 MiBf29b58b62455a7a1advisorycos mean 0.998547, worst 0.995504, cls 0.998194, emb 0.992647, pred_next 0.991251 ᡈ
lewm-pusht-q4_k.gguf15.3 MiB0c03dc7c38181d56advisorycos mean 0.998779, worst 0.996803, cls 0.998297, emb 0.993206, pred_next 0.991625 ᡈ

α΅– 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.

Full checksums:

30cc97fdbde7129f1f545a670253c0a0630308cec0645550ec181987bc0f210e  lewm-pusht-f32.gguf
24f0a647b4ce1385ac9e52a596db07befd5f67f4f175fd68c615c03447d6ccd3  lewm-pusht-f16.gguf
3cadd1cb7d57ecd8078776e4b414ff9a2c48ba28e26f9127038306268a042c38  lewm-pusht-q8_0.gguf
f29b58b62455a7a1197596112941f5518b819376af052ee0c38473c214757a11  lewm-pusht-q4_0.gguf
0c03dc7c38181d56f26efd8ce960414f675d675f845ee7df7353ac373010c6fd  lewm-pusht-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 lewm-pusht-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.

Imagenette k-NN β€” 1000 queries against a gallery of 2000 (train2000), the frozen emb feature, k = 20 cosine vote. Nothing is trained.

backenddtypek-NN top-1 %centroid top-1 %agreement with PyTorch %mean feature cosine
pytorchf3227.0024.10β€”1
jepa.cppf3226.7024.0097.400.999994
jepa.cppf1626.6024.0097.400.999994
jepa.cppq8_026.7024.0094.400.999929
jepa.cppq4_k28.2024.6083.400.994496

Speed β€” the encoder graph at f16 on 32 threads (AMD Ryzen Threadripper PRO 7995WX 96-Cores): 10 ms per image against PyTorch's 17 ms. The same shape on NVIDIA RTX 4500 Ada Generation: 0.9 ms. Peak RSS at f16: 47 MiB.

The most quantization-robust model in the set β€” narrow, shallow, with BatchNorm folded into the MLPs β€” and the only one whose predictor tests/test-predictor gates with a bit-exactness causality check: perturbing step t leaves every prediction before t bit-identical.

Source, licence and attribution

Converted from quentinll/lewm-pusht.

MIT. The source checkpoint is published by quentinll for the le-wm project (github.com/lucas-maes/le-wm, MIT); license: mit on the model card. These GGUF files are the same weights re-serialised into the GGUF container, quantized where the file name says so, and carry the MIT notice. Cite the LeWorldModel paper.

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 lewm
python scripts/convert.py --family lewm --src models/quentinll/lewm-pusht --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/lewm-pusht-f32.gguf \
      models/gguf/lewm-pusht-$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.

ggml
gguf
image-feature-extraction
jepa
jepa.cpp
robotics
world-model

jepacpp/lewm-pusht-GGUF

Model

LeWorldModel Push-T β€” GGUF for jepa.cpp

0

12 commits

2 linked in READMEs

updated Sep 1, 2026

See the code

README

LeWorldModel Push-T β€” GGUF for jepa.cpp

LeWorldModel Push-T: a ViT-Ti/14 image encoder plus a latent, action-conditioned world-model predictor, 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 encoder's CLS token is projected to a world-model state, and six AdaLN-zero causal blocks conditioned on a 10-d action roll that state forward.

18 M parameters; D = 192, 12 layers, 3 heads, patch 14, 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.

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/lewm-pusht-GGUF lewm-pusht-f16.gguf --local-dir models/gguf

# one image -> a world-model state, then 8 random action steps
build/jepa-embed      -m lewm-pusht-f16.gguf -i photo.jpg --pool lewm -t 32
build/jepa-worldmodel -m lewm-pusht-f16.gguf --image photo.jpg --random-actions 8 -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

filesizesha256 (first 16)tiermeasured against the PyTorch reference
lewm-pusht-f32.gguf68.8 MiB30cc97fdbde7129fexactcos mean 1.000000, worst 1.000000, rel_max 1.0e-06 α΅–
lewm-pusht-f16.gguf37.7 MiB24f0a647b4ce1385paritycos mean 1.000000, worst 1.000000 α΅–
lewm-pusht-q8_0.gguf23.1 MiB3cadd1cb7d57ecd8paritycos mean 0.999913, worst 0.999895 α΅–
lewm-pusht-q4_0.gguf15.3 MiBf29b58b62455a7a1advisorycos mean 0.998547, worst 0.995504, cls 0.998194, emb 0.992647, pred_next 0.991251 ᡈ
lewm-pusht-q4_k.gguf15.3 MiB0c03dc7c38181d56advisorycos mean 0.998779, worst 0.996803, cls 0.998297, emb 0.993206, pred_next 0.991625 ᡈ

α΅– 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.

Full checksums:

30cc97fdbde7129f1f545a670253c0a0630308cec0645550ec181987bc0f210e  lewm-pusht-f32.gguf
24f0a647b4ce1385ac9e52a596db07befd5f67f4f175fd68c615c03447d6ccd3  lewm-pusht-f16.gguf
3cadd1cb7d57ecd8078776e4b414ff9a2c48ba28e26f9127038306268a042c38  lewm-pusht-q8_0.gguf
f29b58b62455a7a1197596112941f5518b819376af052ee0c38473c214757a11  lewm-pusht-q4_0.gguf
0c03dc7c38181d56f26efd8ce960414f675d675f845ee7df7353ac373010c6fd  lewm-pusht-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 lewm-pusht-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.

Imagenette k-NN β€” 1000 queries against a gallery of 2000 (train2000), the frozen emb feature, k = 20 cosine vote. Nothing is trained.

backenddtypek-NN top-1 %centroid top-1 %agreement with PyTorch %mean feature cosine
pytorchf3227.0024.10β€”1
jepa.cppf3226.7024.0097.400.999994
jepa.cppf1626.6024.0097.400.999994
jepa.cppq8_026.7024.0094.400.999929
jepa.cppq4_k28.2024.6083.400.994496

Speed β€” the encoder graph at f16 on 32 threads (AMD Ryzen Threadripper PRO 7995WX 96-Cores): 10 ms per image against PyTorch's 17 ms. The same shape on NVIDIA RTX 4500 Ada Generation: 0.9 ms. Peak RSS at f16: 47 MiB.

The most quantization-robust model in the set β€” narrow, shallow, with BatchNorm folded into the MLPs β€” and the only one whose predictor tests/test-predictor gates with a bit-exactness causality check: perturbing step t leaves every prediction before t bit-identical.

Source, licence and attribution

Converted from quentinll/lewm-pusht.

MIT. The source checkpoint is published by quentinll for the le-wm project (github.com/lucas-maes/le-wm, MIT); license: mit on the model card. These GGUF files are the same weights re-serialised into the GGUF container, quantized where the file name says so, and carry the MIT notice. Cite the LeWorldModel paper.

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 lewm
python scripts/convert.py --family lewm --src models/quentinll/lewm-pusht --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/lewm-pusht-f32.gguf \
      models/gguf/lewm-pusht-$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.

ggml
gguf
image-feature-extraction
jepa
jepa.cpp
robotics
world-model