JEPA4Japan · チュートリアル

第23章―既定設定を読み、学習を始める

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

論文の比較条件と公開コードの既定値を区別し、実効バッチサイズ、学習率を徐々に上げる区間、EMA チェックポイント、設定の上書きを読み解きます。

コース進捗 コース目次 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. Hydraつまみに名前
  2. 11視点大域1 + 局所10
  3. ViT-B疎なブロック因果注意
  4. 二つの損失λ = 0.02
  5. チェックポイントオンライン + 評価 EMA
つまみを一つ替えたら、別の実験条件として記録します。

3,072人分の厨房

レシピに「3,072食」とあっても、家庭の鍋一つで同じようには作れません。元の厨房は2計算ノード × 各8基のGPU × GPUあたり96動画窓 × 勾配蓄積2回です。GPU 1基での実行コマンドは火が付くかを確かめられますが、宴会を再現したことにはなりません。

公開既定値を読む

固定版の conf/config.yaml は、Walking Tours 10本で ViT-B/16を学習します。16フレーム、2フレームおき、チューブレット幅1、95%の無作為トークン削減、注意方式は block_causal です。一つの動画窓から224画素の大域切り抜きを一つ、96画素の局所切り抜きを十個作ります。投影器は 768 → 2048 → 256。SIGReg は17個の積分点と1,024本の無作為射影を使い、損失の重みは 0.02 です。

最適化手法は AdamW、学習率は 4e-4、重み減衰は 0.04、係数 β は (0.9, 0.95) です。最初の1,200最適化ステップで学習率を 1e-4 から 4e-4 まで徐々に上げ、その後は end_lr == lr なので一定です。既定は26周で、注記の見積りは約10,000最適化ステップです。

大域視点と十個の局所視点は同じエンコーダーを使います。局所視点を読込時の [B,V,T,C,H,W] から [B×V,C,T,H,W] へ並べ替えて畳み、11個の [CLS] を同じ投影器に通して [B,11,256] にします。コードは (global_emb - embeddings).pow(2).mean() を計算し、大域表現自身との項はゼロです。SIGReg の入力は [11,B,256]。二つの損失はどちらも同じエンコーダーへ勾配を返し、教師側の前向き計算はありません。

実効バッチサイズの注釈は 2計算ノード × 各8基のGPU × GPUあたり96動画窓 × 勾配蓄積2回 = 3,072 です。計算機構成を替えて勾配蓄積を据え置けば、別の実験になります。EMA は32最適化ステップごとに減衰率0.9999でエンコーダーだけを追い、state_dict_ema として保存します。オンライン重みは state_dict です。EMA は損失に入らず、目標エンコーダーでもありません。

データ構築後、GPU 1基で2バッチだけ通す例です。

uv run python main.py \
  trainer.devices=1 trainer.num_nodes=1 trainer.strategy=auto \
  trainer.max_epochs=1 trainer.limit_train_batches=2 \
  loader.batch_size=2 loader.num_workers=0 accumulate_grad_batches=1 \
  model.name=vit_tiny augmentation.local_crops_number=2

これは実効バッチサイズ2の小型モデルによる動作確認であり、既定設定や論文の再現ではありません。Hydra は outputs/<date>/<time>/ に実行時設定とログを残します。ただし固定版設定の checkpoint.dirpath=checkpoints は起動した場所を基準に解決され、通常はリポジトリ最上位の checkpoints/ に出力されます。注記にある「Hydra の実行用ディレクトリからの相対指定」は、既定の hydra.job.chdir=false とは一致しません。hydra.job.chdir=true を明示した場合だけ、実行用ディレクトリが基準になります。train/pred_loss、train/sigreg_loss、train/loss が有限値であることを確認します。

本番前に uv run python main.py --cfg job で解決済みの YAML を保存し、data.train が期待した Lance を指すか確認します。Walking Tours には別の検証用分割がなく、設定は val を学習用データへ向けながら trainer.limit_val_batches=0 で無効にしています。学習損失は汎化の指標ではありません。最終評価には独立データ上の凍結プローブを使います。チェックポイントは2,000学習ステップごとと終了時に保存し、state_dict、state_dict_ema、実際に使ったGPU総数を記録します。

四つの実験条件を混同してはいけません。論文の統制比較はK710の20%を使い、240周学習します。公開設定の既定値はViT-B、Walking Tours、26周です。一般向けの12時間実演はViT-Tinyと8本の動画を使います。公開重みはViT-LをVideoMixの180万動画窓で学習したものです。

再開時の既定値 resume.weights_only=true は重みだけを読み、学習率スケジュールを最初から始めます。最適化手法の状態とステップ数も引き継ぐなら false を明示し、元の設定も保存します。

配置図の出典

三つの実行記録

  1. 公開既定値の3,072は、2計算ノード、各8基のGPU、GPUあたり96動画窓、勾配蓄積2回という構成に依存します。
  2. 局所環境で実効バッチサイズを2にした実行は処理経路の検査であり、論文の数値を継承しません。
  3. 同じ方法でも、データ、モデル、学習率スケジュール、計算予算が違えば別の実験です。

コマンドを実行する前に

  1. 1計算ノード × 8基のGPU、GPUあたり96動画窓で実効バッチサイズ3,072を保つには、勾配を何回蓄積すればよいでしょうか。
  2. state_dict_ema はオンラインエンコーダーの目標を作りますか。
  3. Walking Tours 既定値でK710 20%比較表を再現できますか。
解答
  1. 4です。
  2. 作りません。評価用重み平均です。
  3. できません。データと学習手順が違います。