课程进度 课程大纲 已发布 34/34 课
第 0 部分——先拿到地图
第 1 部分——为什么简单目标会学会看视频
第 2 部分——把一段视频送进单编码器
第 3 部分——会读实验,才算读懂论文
第 4 部分——从官方仓库到自己的实验
第 5 部分——把表征接回世界模型路线
附录——随用随查的技术背包
先给工具箱的抽屉贴标签
- README先看入口与边界
- main.py把零件接起来
- module.py编码器与 SIGReg
- data/把长视频变成 clip
- conf/保存实验配方
报错时,地图比乱拧螺丝有用
拿到一只“会看视频”的工具箱,先给抽屉贴标签:main.py 是总开关,module.py 放核心计算,data/loader.py 管食材,conf/ 是菜谱。这样遇到报错,能先判断它来自数据、模型还是配方,而不是把所有螺丝都拧一遍。
先把仓库地址钉在 3ea0dda
本系列核对的是 2026-09-02 的提交 3ea0dda。复制下面命令会得到可追踪的代码,而不是随时间变化的 main:
git clone https://github.com/MLO-lab/LeVJEPA.git
cd LeVJEPA
git checkout 3ea0dda16030bc0fd6472bf809fc0a0ad836a812
git rev-parse HEAD
uv sync
最后一条输出应完整等于上述哈希。项目要求 Python 3.12+,uv.lock 固定依赖;构建数据另用 uv sync --extra data,运行两个 notebook 用 uv sync --extra notebook。仓库不是 Python 包,命令应从根目录运行。
地图如下:main.py 组装 loader、共享 encoder、projector、SIGReg、优化器和 Lightning trainer;module.py 实现 ViT、随机 token dropping、RoPE、块因果 mask、projector 与 SIGReg;data/loader.py 从 Lance 抽 clip 并生成一张全局视图和多张局部视图;callbacks.py 保存 weight decay 调度与只供评估的 EMA 权重;conf/config.yaml 是 Hydra 默认配方,conf/data/ 保存数据路径;scripts/ 下载、转码,slurm/ 是集群入口。training_workshop.ipynb 用小模型拆开训练,feature_visualization.ipynb 查看发布权重的 patch 特征。
第一次追代码只走一条主路:main() 先调用 build_video_loader();transform 产出 [B,T,C,H,W] 的全局与 [B,V,T,C,H,W] 的局部张量;multiview_forward() 把它们换轴成 [B,C,T,H,W],局部视图折进 batch,共享 encoder 后只拿索引 0 的 [CLS];projector 映射所有摘要,最后算视图 MSE 与 0.02 × SIGReg。沿这条链下断点,能分辨“数据错位”“编码器错误”和“loss 错误”,也能亲眼确认 global 没有 .detach()。
两个 notebook 是学习入口,不是论文评估脚本。workshop 把完整默认值缩成 tiny 模型、少帧和较高保留率;feature notebook 只展示冻结特征。若实验从 notebook 起步,把被缩小的设置写进报告,读者就能分清教学运行与论文复现。paper.md 是论文源稿副本,其中仍有草案 TODO;正式主张要回到 arXiv v1 与发布页面交叉核对。
许可证要按文件看:仓库主体是 MIT;由 Meta V-JEPA 改写的 module.py 明示 CC BY-NC 4.0,公开模型权重同样标为 CC BY-NC 4.0。依赖、Walking Tours 的链接视频还有各自条款,所以根目录的 MIT 文件只覆盖它实际授权的部分。
做一次只证明“环境能导入”的检查
运行 git status --short,刚 checkout 后应无输出;再运行 uv run python -c "from module import SIGReg, vit_tiny; print('imports ok')",预期打印 imports ok。这只证明环境与导入成功,不证明模型训练结果。
这张仓库地图的图例
离开工具箱前记住
- 完整提交哈希让实验代码可以被精确重访;“最新 main”会随时间移动。
main.py管组装,module.py管核心计算,conf/管可变配方。- 仓库并非所有文件都由 MIT 覆盖;模型与核心改写文件是非商业 CC BY-NC 4.0。
找到该开的抽屉
- 为什么要记录完整提交哈希?
- EMA 代码在哪一类文件里,它是不是 target encoder?
- 根目录有 MIT 文件,能否据此宣布权重可商用?
查看答案
- 它让代码、配置和结论能被精确重访。
- 在
callbacks.py;它保存评估用权重平均,不产生训练目标。 - 不能;
module.py与发布权重另标 CC BY-NC 4.0,还要核对数据和依赖条款。