Skip to content

facebookresearch/vjepa2 — official PyTorch code and checkpoints for V-JEPA 2 and V-JEPA 2.1

Official Meta FAIR repository hosting PyTorch code, pretrained checkpoints, and evaluation probes for V-JEPA 2 (Assran et al. 2025) and the V-JEPA 2.1 follow-up (Mur-Labadia et al. 2026, V-JEPA 2.1: Unlocking Dense Features in Video Self-Supervised Learning). Ships ViT-L/H/g/G backbones (80M up to 2B), the V-JEPA 2-AC action-conditioned robot variant (ViT-g + 8-frame DROID config), training/eval configs for pretraining, cooldown, and attentive-probe evaluation on SSv2/Diving48/EK100, plus a Colab demo and PyTorch Hub loaders. Code is MIT-licensed; HuggingFace mirrors live under facebook/vjepa2-*.

  • Repository serves three model families from a single codebase: V-JEPA 2 pretraining, V-JEPA 2.1 pretraining (extends prediction loss to all tokens), and V-JEPA 2-AC action-conditioned post-training [README §Code Structure].
  • V-JEPA 2 checkpoints released: ViT-L/16 (300M, 256²), ViT-H/16 (600M, 256²), ViT-g/16 (1B, 256² and 384²) [README §V-JEPA 2 Pretrained Checkpoints].
  • V-JEPA 2.1 checkpoints released: ViT-B/16 (80M, 384²), ViT-L/16 (300M, 384²), ViT-g/16 (1B, 384²), ViT-G/16 (2B, 384²); the B and L variants are distillations from the 2B teacher [README §V-JEPA 2.1 Pretrained Checkpoints].
  • Action-conditioned V-JEPA 2-AC: a single ViT-g/16 checkpoint trained from the V-JEPA 2 encoder using the droid-256px-8f.yaml config [README §V-JEPA 2-AC].
  • Quoted V-JEPA 2 benchmark results in the README: EK100 39.7% (vs 27.6% PlausiVL prior best), SSv2 probe 77.3% (vs 69.7% InternVideo2-1B), Diving48 probe 90.2% (vs 86.4% InternVideo2-1B), MVP VideoQA 44.5%, TempCompass 76.9% [README §V-JEPA 2 Pre-training].
  • V-JEPA 2-AC quoted robot manipulation success (Franka, monocular RGB): Reach 100%, Grasp Cup 60% / Box 20%, Pick-and-Place Cup 80% / Box 50% — outperforming Octo and Cosmos on the same five tasks [README §V-JEPA 2-AC Post-training].
  • Training, cooldown, and eval all share the same python -m app.main / app.main_distributed interface with config swaps; same pattern for evals.main (attentive probes) [README §Getting Started].
  • Pretrained backbones are exposed via PyTorch Hub (torch.hub.load('facebookresearch/vjepa2', ...)) and HuggingFace transformers (AutoModel.from_pretrained('facebook/vjepa2-vitg-fpc64-384')) [README §Pretrained backbones].
  • macOS users need a decord alternative (eva-decord or decord2) since upstream decord is unmaintained and lacks Mac support [README §Setup note].

The repo packages the JEPA training scaffold as a small set of orthogonal entry points. app/vjepa implements the original V-JEPA 2 masked-latent-prediction loop, app/vjepa_2_1 the V-JEPA 2.1 variant whose loss covers context as well as masked tokens (see V-JEPA 2.1: Unlocking Dense Features in Video Self-Supervised Learning §2.3.1 for the algorithmic delta), and app/vjepa_droid the action-conditioned post-training that adds an action stream to the latent predictor using the DROID dataset. evals/ trains attentive probes (action anticipation, image/video classification) on frozen backbones. Configs in configs/train, configs/train_2_1, configs/eval, and configs/inference enumerate every released combination of backbone × dataset × resolution. The PyTorch Hub interface exposes ready-to-use models without cloning the repo. A Colab vjepa2_demo.ipynb shows the minimal SSv2-classification path from a frozen ViT-g/16 backbone + downloaded probe checkpoint.

The README cites the headline numbers from the V-JEPA 2 paper and the V-JEPA 2-AC robot evaluation (numbers above under Key claims). For the full V-JEPA 2.1 ablation and dense-feature SOTA story, see V-JEPA 2.1: Unlocking Dense Features in Video Self-Supervised Learning — the repo is the artifact that makes those numbers reproducible (configs + checkpoints + eval probes for SSv2/Diving48/EK100). No additional benchmark numbers are introduced by the repository itself.

This is the code drop behind two papers already filed on the wiki — the original Introducing the V-JEPA 2 world model and new benchmarks for physical reasoning launch and the V-JEPA 2.1: Unlocking Dense Features in Video Self-Supervised Learning follow-up — and is the canonical artifact a Luma researcher would actually clone to reproduce either. Worth filing because of three concrete practical bits the papers don’t surface: (1) the V-JEPA 2.1 ViT-B/80M distillation checkpoint exists and is loadable from PyTorch Hub, giving a small enough model to slot into video pipelines without 1B+-parameter footprints; (2) the action-conditioned ViT-g checkpoint plus its droid-256px-8f.yaml config is the minimum reproducible recipe for the zero-shot robot MPC numbers — useful as a reference for the kind of small-data action-conditioned fine-tuning the World Foundation Models thread keeps pointing at; (3) the unified app.main / evals.main interface across both V-JEPA generations + the AC variant is the kind of single-stack design that lets Luma swap V-JEPA in as a frozen encoder for video understanding probes without committing to a forked training repo. Contrast with Awesome World Models — that’s a survey list; this is the running training code for one specific WFM line.