JEPA4Japan · チュートリアル

第21章―公式リポジトリの見取り図

1,390文字 4分で読めます #LeVJEPA#JEPA#自己教師あり動画学習#SIGReg

main.py、module.py、data/loader.py、Hydra 設定、二つのノートブック、ライセンス、固定コミットを探します。

コース進捗 コース目次 34レッスン中 34件を公開中

第0部―まず地図を広げる

  1. 01 第0章―始める前に:この講座でできるようになること 公開中
  2. 02 第1章―同じ動画を、二つの窓から見る 公開中
  3. 03 第2章―Yann LeCun の研究路線をたどる 公開中
  4. 04 第3章―名前に迷わないための JEPA 家系図 公開中

第1部―簡単な目的で、なぜ動画が分かるのか

  1. 05 第4章―動画は自分で問題を作れる 公開中
  2. 06 第5章―全ピクセルではなく、意味を残す 公開中
  3. 07 第6章―二枚は同じに。でも全部を白紙にはしない 公開中
  4. 08 第7章―SIGReg:点の雲を影から調べる 公開中
  5. 09 第8章―一行の目的関数で LeVJEPA を読む 公開中

第2部―一本の動画を一台のエンコーダーへ

  1. 10 第9章―大域ビューと局所ビューの作り方 公開中
  2. 11 第10章―動画を時空間の小片に切る 公開中
  3. 12 第11章―一台のエンコーダー、一つの投影ヘッド、一枚の要約札 公開中
  4. 13 第12章―一回の前向き計算を端から端まで 公開中
  5. 14 第13章―95%捨てると、なぜかよく見える 公開中
  6. 15 第14章―ブロック因果注意:同じ時刻は見える、未来は見えない 公開中
  7. 16 第15章―RoPE、1フレーム tubelet、思いがけない密特徴 公開中

第3部―実験を読めてこそ、論文を読んだと言える

  1. 17 第16章―五段のアブレーションが答えること 公開中
  2. 18 第17章―同じ周回数は、同じ費用ではない 公開中
  3. 19 第18章―ImageNet、K400、SSv2 は何を試すか 公開中
  4. 20 第19章―論文の結果を帳簿にする 公開中
  5. 21 第20章―まだ言ってはいけない結論 公開中

第4部―公式リポジトリから自分の実験へ

  1. 22 第21章―公式リポジトリの見取り図 現在のレッスン
  2. 23 第22章―Walking Tours:10本の長編を学習データにするまで 公開中
  3. 24 第23章―既定設定を読み、学習を始める 公開中
  4. 25 第24章―うそをつかない小さな動作確認から始める 公開中
  5. 26 第25章―学習なしで公開重みから特徴を出す 公開中
  6. 27 第26章―自分の動画を凍結評価する 公開中

第5部―表現を世界モデル構想へ戻す

  1. 28 第27章―大事な境界:LeVJEPA は計画器ではない 公開中
  2. 29 第28章―LeVJEPA を次の世界モデルへつなぐ 公開中
  3. 30 第29章―入門から論文まで、10の研究プロジェクト 公開中

付録―必要なときに開く技術リュック

  1. 31 付録A―これだけは要る数学道具箱 公開中
  2. 32 付録B―完全テンソル形状表 公開中
  3. 33 付録C―用語集と論文年表 公開中
  4. 34 付録D―再現とレビューのチェックリスト 公開中

リポジトリを五つの引き出しへ

  1. README入口と範囲
  2. main.py部品をつなぐ
  3. module.pyエンコーダーと SIGReg
  4. data/長編から動画窓
  5. conf/実験設定
台所を見学するように、参照先を固定し、設定、道具、材料、会計を分けて読みます。

先に引き出しへラベルを貼る

「動画を見られる工具箱」を開けても、いきなりねじは回しません。main.py は主電源、module.py は中核、data/loader.py は材料係、conf/ は設定表です。故障したとき、闇雲に全部を触らず、正しい引き出しから調べられます。

動く main より固定住所

本シリーズが確認したリポジトリの HEAD は、**2026-09-05時点でもコミット 3ea0dda**です。次で同じコードへ戻れます。

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、二つのノートブックは uv sync --extra notebook。Python パッケージではないため、コマンドはリポジトリ最上位から実行します。

main.py はデータ読み込み器、共有エンコーダー、投影器、SIGReg、最適化器、Lightning の学習器を組み立てます。module.py は ViT、無作為トークン削減、RoPE、ブロック因果マスク、投影器、SIGReg を定義します。data/loader.py は Lance から動画窓を取り、一つの大域と複数の局所視点を作ります。callbacks.py は重み減衰スケジュールと評価専用 EMAを扱います。conf/config.yaml は Hydra の既定設定、conf/data/ はデータの場所、scripts/ は取得と変換、slurm/ は計算クラスタの入口です。training_workshop.ipynb は小モデルで学習をほどき、feature_visualization.ipynb は公開重みのパッチ特徴を見せます。

最初のコード読解は一本に絞ります。main() → build_video_loader()。変換後は大域 [B,T,C,H,W]、局所 [B,V,T,C,H,W]。multiview_forward() が [B,C,T,H,W] へ移し、局所視点を標本軸へ畳み、共有エンコーダーの0番、つまり [CLS] だけを取ります。投影器後に視点 MSE と 0.02 × SIGReg。この道にブレークポイントを置けば、データ整合、エンコーダー、損失のどこが壊れたか分けられ、大域側に .detach() がないことも見えます。

ノートブックは学習入口であって論文評価スクリプトではありません。実習版は小型モデル、少フレーム、高い保持率へ縮小します。特徴ノートブックは凍結特徴の可視化です。変更値を実験記録へ残し、教材出力を大見出しに掲げる再現と呼びません。paper.md は原稿の複製で TODO が残ることもあるため、正式な主張は arXiv v1 と公開ページへ戻って照合します。

ライセンスはファイルごとに確認します。リポジトリ本体は MIT ですが、Meta V-JEPA を改変した module.py は CC BY-NC 4.0、公開モデル重みも同じです。依存物と Walking Tours のリンク先動画にも別条項があります。最上位の MIT だけで商用可能とは判断できません。

最初の二コマンド

チェックアウト直後の git status --short は空のはずです。続いて:

uv run python -c "from module import SIGReg, vit_tiny; print('imports ok')"

imports ok は環境と読み込みの確認にすぎず、学習結果の証明ではありません。

地図の原本

三枚の道標

  1. 再現ではコミット全長を固定し、「最新 main」だけを書きません。
  2. main.py は組み立て、module.py は中核計算、conf/ は変更可能な設定です。
  3. 全ファイルが MIT ではなく、中核改変ファイルと重みは非商用 CC BY-NC 4.0 です。

地図を閉じる前に

  1. 完全なコミットハッシュを記録する理由は。
  2. EMA はどのファイル群にあり、目標エンコーダーですか。
  3. 最上位に MIT があれば重みも商用にできますか。
答え
  1. コード、設定、結論へ正確に戻るためです。
  2. callbacks.py。評価重みの平均で、学習目標ではありません。
  3. 判断できません。module.py と公開重みは CC BY-NC 4.0 で、データ/依存物も別途確認します。