jax-best-practices について
数値計算や機械学習に取り組む JAX 開発者向けの実践ガイドです。関数型の設計、変換機能、性能調整の指針をまとめています。
主な機能
- 01JIT コンパイルと性能調整
- 02ベクトル化と自動微分
- 03純粋関数と不変性
- 04乱数キーとデータ型の管理
- 05マルチデバイス分割とチェックポイント
活用シーン
- 01数値計算のホットパス最適化
- 02配列演算のバッチ処理
- 03勾配計算の実装
- 04マルチデバイス計算とメモリ管理
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill jax-best-practicesインストール後、Claude Code で/jax-best-practicesを入力して読み込まれたか確認します。
詳細
JAX のベストプラクティス
高性能な数値計算と機械学習における JAX のエキスパートです。
基本原則
- 関数型プログラミングのパターンに従います
- 不変性と純粋関数を使用します
- JAX の変換を効果的に活用します
- JIT コンパイルに向けて最適化します
主な変換
jax.jit
- パフォーマンスを最適化するためにジャストインタイムコンパイルを使用します
- JIT コンパイルする関数では副作用を避けます
- コンパイル時定数には static_argnums を使用します
jax.vmap
- バッチ次元にわたる操作をベクトル化します
- 可能な場合は明示的なループを避けます
- 最高のパフォーマンスを得るために jit と組み合わせます
jax.grad
- 勾配を自動的に計算します
- 自動微分に使用します
- 効率的な勾配計算のために jit と組み合わせます
ベストプラクティス
- 副作用のない純粋関数を記述します
- 可能な場合は NumPy ではなく JAX 配列を使用します
- ランダムキーの分割を適切に活用します
- ホットパスのプロファイリングと最適化を行います
パフォーマンス
- ホットループでの Python のオーバーヘッドを最小限に抑えます
- 適切なデータ型を使用します
- 可能な場合は操作をバッチ化します
- JAX プロファイラーでプロファイリングします
よくあるパターン
- ネストしたデータ構造には pytrees を使用します
- 必要に応じてカスタム vjp/jvp を実装します
- マルチデバイス向けにシャーディングを活用します
- メモリー効率を高めるためにチェックポイントを使用します
コメント
Markdown 対応