jax-training-recipe について
jax-training-recipeは、研究者やエンジニア向けにJAXの学習実験を計画するスキルです。状態と乱数を明示し、純粋な学習ステップを設計して、単一デバイスでのデバッグから段階的に拡張する方法を扱います。
主な機能
- 01実験とデバイスの計画
- 02PRNGキーの管理方針
- 03モデルと状態の明示的な設計
- 04純粋な学習ステップの手順
- 05変換と拡張の段階的な検証
活用シーン
- 01JAX学習実験の計画
- 02PRNGやトレーサーエラーの調査
- 03jit、vmap、pmapの段階的な導入
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jurgendn/ agent-skills --skill jax-training-recipeインストール後、Claude Code で/jax-training-recipeを入力して読み込まれたか確認します。
同梱ファイルreferences/training-recipe-details.md
詳細
JAX のトレーニングレシピ
JAX は、構文が異なるだけの PyTorch ではありません。関数は純粋で、状態は明示的に扱われ、変換(jit、vmap、grad、pmap)は、関数の境界が明確な場合にのみ合成できます。
具体的な設定やチェックリストについては、references/training-recipe-details.md を参照してください。
要件の確認
以下を指定します。
- タスク、データセット、損失、評価指標;
- 対象デバイス:CPU、単一 GPU、複数 GPU、TPU;
- モデルフレームワーク:Flax/Linen、Equinox、生の JAX;
- 乱数の用途:ドロップアウト、サンプリング、データ拡張;
- 状態の要件:バッチ正規化、オプティマイザー状態、EMA、チェックポイント。
ワークフロー
- 実験と最小限のデータバッチを定義します。
- PRNG キーの所有権と分割方法を計画します。
- モデルと状態の境界を定義します。
- モデルとオプティマイザーを初期化します。
- 純粋な
train_stepを記述します。 jitなしでステップが動作することを確認してから、jitを追加します。- 単一デバイスでの動作が正しいことを確認してから、
vmap/pmapを追加します。 - チェックポイントと復元のテストを追加します。
- 初回実行時の安全性チェックを実施します。
- 小さなバッチから全体のトレーニングへと段階的に展開します。
JAX 固有のルール
- PRNG キーを再利用しないでください。
- 状態は明示的に扱い、クロージャー内に可変状態を隠さないでください。
jit内で Python の副作用を避けてください。jit下での形状変更は、設計上の判断として扱ってください。- まず
jitなしでデバッグし、その後、変換を一度に 1 つずつ再有効化してください。 - 複数デバイスでのトレーニングでは、状態を意図的に複製してください。
よくある失敗モード
- PRNG キーの再利用により、ドロップアウトやサンプリングが繰り返される。
- Python の制御フローや副作用によるトレーサーエラー。
- バッチ正規化/ドロップアウトの状態がパラメーターと分離されていない。
vmapまたはpmap下での形状不一致。- コンパイル済みループによって NaN が見えなくなる。
- チェックポイントにオプティマイザー状態またはバッチ統計状態が含まれていない。
出力
以下を返します。
- 実験の概要;
- PRNG 戦略;
- モデル/状態の設計;
- トレーニング/評価ステップの計画;
- 最小限の設定;
- 初回実行時のチェック項目;
- JAX 固有の失敗モード;
- スケールアップ計画。
コメント
Markdown 対応