GitHub - keon/jepa: 实现联合嵌入预测架构(JEPA)的极简版本
摘要
一个 GitHub 仓库,提供 JEPA 系列模型(I-JEPA、V-JEPA、V-JEPA 2、C-JEPA)的极简、独立 PyTorch 重新实现,供教育用途,包含教程和可视化工具。
我创建了 JEPA 系列的极简实现版本,代码不足 200 行,旨在帮助我自己理解和教育。将论文提炼为算法的本质,并使用玩具数据集运行,确实有助于理解。它非常轻量,你可以直接在 Mac 上运行。我在实现中添加了教程。请告诉我你们对此的看法!
查看缓存全文
缓存时间: 2026/05/13 00:36
keon/jepa 源地址: https://github.com/keon/jepa # jepa JEPA 系列模型的最小化、单文件 PyTorch 重新实现,附带配套教程。 | 文件 | 方法 | 数据集 | 代码行数 (LOC) | 教程 | |—|—|—|—:|—| | ijepa.py | I-JEPA | CIFAR-10 | 160 | ijepa_tutorial.md | | vjepa.py | V-JEPA | Moving MNIST | 188 | vjepa_tutorial.md | | vjepa2.py | V-JEPA 2 + V-JEPA 2-AC | 合成运动数字 | 278 | vjepa2_tutorial.md | | cjepa.py | C-JEPA | 3位数字弹跳视频 | 174 | cjepa_tutorial.md | 每个算法文件都是独立的——仅依赖 torch 和 torchvision,不共享任何工具类。对应的 _extras.py 文件添加了可视化功能(掩码网格、损失曲线、PCA/LDA/t-SNE 演化过程、线性探针)。 ## 快速开始 bash git clone [email protected]:keon/jepa.git cd jepa python -m venv .venv && source .venv/bin/activate pip install -r requirements.txt # 固定版本,见下文 python ijepa.py # 仅训练 I-JEPA(无绘图) python ijepa_extras.py # 训练 + 生成所有可视化图表 + 线性探针 支持 CUDA、MPS 或 CPU 运行。CIFAR-10 / MNIST 数据集会自动下载至 ./data/。 ### 可复现性 仓库在 requirements.txt 和 pyproject.toml 中固定了确切版本: python >= 3.10 (已在 3.13.5 上测试) torch == 2.11.0 torchvision == 0.26.0 matplotlib == 3.10.9 scikit-learn == 1.8.0 # ijepa_extras 中使用 scikit-learn 进行 t-SNE numpy == 2.4.4 pillow == 12.2.0 也可以将其作为包安装,而不是直接安装依赖项: bash pip install -e . ## 文件结构 . ├── ijepa.py / ijepa_extras.py # 基于 CIFAR-10 的 I-JEPA ├── vjepa.py / vjepa_extras.py # 基于 Moving MNIST 的 V-JEPA ├── vjepa2.py / vjepa2_extras.py # 基于合成数据的 V-JEPA 2 + V-JEPA 2-AC ├── cjepa.py / cjepa_extras.py # 基于 3位数字弹跳视频的 C-JEPA ├── ijepa_tutorial.md # 与代码对应的逐步教程 ├── vjepa_tutorial.md ├── vjepa2_tutorial.md ├── cjepa_tutorial.md ├── papers/ # 四篇源论文的 PDF 文件 ├── samples/ # 掩码网格、损失曲线、PCA/LDA/t-SNE 图表 └── figs/ # 教程中引用的论文插图 ## 方法概述(每段介绍一种方法) I-JEPA (Assran et al. 2023 (https://arxiv.org/abs/2301.08243)) —— 根据可见图像块的嵌入预测被保留图像块的嵌入。采用指数移动平均 (EMA) 目标编码器、多块掩码机制以及平滑 L1 损失。这是经典的自监督 JEPA。 V-JEPA (Bardes et al. 2024 (https://arxiv.org/abs/2404.08471)) —— 配方相同,但针对视频使用 3D 管状块 (tubelet patches)。包含两个掩码组(短程 + 长程管状结构),使用 L1 损失,EMA 系数从 0.998 逐渐增加到 1.0。 V-JEPA 2 (Assran et al. 2025 (https://arxiv.org/abs/2506.09985)) —— 分为两个阶段:先进行 V-JEPA 预训练,随后进行 V-JEPA 2-AC,这是一种基于冻结编码器隐空间、采用教师强制 (teacher forcing) 和展开 (rollout) 训练的动作条件预测器。第二阶段编码器保持冻结;不使用 EMA。 C-JEPA (Nam et al. 2026 (https://arxiv.org/abs/2602.11389)) —— 在 t=0 时刻使用身份锚点 (identity anchor) 的对象级轨迹掩码。不使用 EMA。在扁平化的槽位令牌 (slot tokens) 上使用双向 Transformer。构建于预训练的对象中心编码器之上(论文中为 VideoSAUR;我们使用固定的嵌入查找作为文档记录的替代方案)。 ## 注意事项 这些是教育性质的重新实现: - 使用 ViT-tiny 而非 ViT-Huge。数据集为 CIFAR-10 / Moving MNIST / 合成视频,而非 ImageNet / Kinetics。 - I-JEPA 在 CIFAR-10 上训练 100 个 epoch 后,线性探针准确率约为 52.7%。论文中的数据来自在 ImageNet 上训练 300 个 epoch 的 ViT-H/14 —— 计算规模完全不同。 - C-JEPA 跳过了槽位发现过程(使用已知位置)。真正的 C-JEPA 需要在冻结的 DINOv2 特征基础上,使用 VideoSAUR 进行预训练(约 10 万步)。 - 在我们的玩具数据集中,由于数据过于简单,V-JEPA 2-AC 的动作条件差距保持较小;机制是正确的,但需要更丰富的数据才能显现出信号。 每个教程都披露了与其源论文的具体偏差。 ## 许可 MIT 许可证。
相似文章
我构建了Micro-JEPA:一个轻量级的JEPA(联合嵌入预测架构)Python实现
Micro-JEPA 是一个轻量级的JEPA(联合嵌入预测架构)Python实现,使智能体能够学习环境表征、在潜在空间中预测未来状态,并规划动作以避开障碍物。
@AbdelStark: 是时候让世界服下JEPA药丸了!awesome-jepa:一份精心整理的论文、模型、代码、数据集和学习资源列表……
一份精心整理的关于Joint Embedding Predictive Architectures(JEPA)的论文、模型、代码、数据集和学习资源列表,这是Yann LeCun提出的用于世界模型的自监督方法。
DVD-JEPA:一个开源、完全可复现的JEPA世界模型 [P]
DVD-JEPA 是一个开源、极简的 JEPA 世界模型,它通过预测未来嵌入而非像素来从视频中学习表示。它使用弹跳的 DVD 标志来演示位置恢复、梦境生成和异常检测,所有这些都在浏览器中运行。
@iScienceLuvr:学习稀疏潜在预测基础模型用于多模态神经影像 本文介绍了Neuro-JEPA,一个基…
本文介绍了Neuro-JEPA,一个基础模型,它使用潜在预测目标和混合专家架构来编码跨T1w、T2w和FLAIR序列的脑部MRI扫描,并在包含155万次扫描的大型数据集上进行了预训练。
JEPA模型背后已有90年历史的想法:典型相关分析
这篇博文解释了JEPA(联合嵌入预测架构)模型与典型相关分析(CCA)之间的联系,典型相关分析是一种源于1936年的统计方法,文章认为CCA是JEPA的概念前身,并指出在嵌入空间中最大化相关性的思想可追溯到Hotelling。