machine-learning について
JAX と関数型プログラミングを中心に扱う機械学習スキルです。配列操作、制御フロー、性能、メモリ管理、モデル開発の指針を提供します。
主な機能
- 01関数型・不変プログラミングのパターン
- 02jit や vmap などの JAX 変換
- 03関数型の乱数キー管理
- 04プロファイリングとメモリ管理
- 05モデルと学習ループの構成
活用シーン
- 01JAX による数値演算の実装
- 02JIT コンパイル関数の構築
- 03関数型ニューラルネットワーク学習の構成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill machine-learningインストール後、Claude Code で/machine-learningを入力して読み込まれたか確認します。
詳細
機械学習
JAX を使った機械学習の開発と関数型プログラミングのパターンに精通しています。
基本原則
- 関数型プログラミングのパターンに従います
- 不変性と純粋関数を使用します
- JAX の変換機能を効果的に活用します
- JIT コンパイル向けに最適化します
JAX の基本
配列操作
- NumPy 互換の操作には
jax.numpyを使用します jax.gradによる自動微分を活用しますjax.jitで JIT コンパイルを適用しますjax.vmapでベクトル化します
制御フロー
- 順次処理には
jax.lax.scanを使用します - 条件分岐には
jax.lax.condを適用します jax.lax.fori_loopでループを実装します- JIT コンパイルされた関数内では Python の制御フローを避けます
乱数
- JAX の関数型乱数 API を使用します
- 再現性を確保するため、キーを適切に分割します
- 乱数キーを再利用しないでください
ベストプラクティス
パフォーマンス
- 副作用のない純粋関数を記述します
- 可能な場合は NumPy の代わりに JAX 配列を使用します
- 乱数キーを適切に分割して活用します
- ホットパスのプロファイリングと最適化を行います
- ホットループでの Python のオーバーヘッドを最小限に抑えます
メモリ管理
- メモリ効率を高めるため、適切なデータ型を使用します
- 可能な場合は操作をバッチ処理します
- 大規模モデルにはチェックポイントを実装します
- JAX プロファイラーでプロファイリングします
よくあるパターン
- ネストされたデータ構造には PyTree を使用します
- 必要に応じてカスタムの vjp/jvp を実装します
- マルチデバイス学習にはシャーディングを活用します
- メモリ効率を高めるため、チェックポイントを使用します
モデル開発
- モデルを純粋関数として定義します
- ニューラルネットワーク層には Flax または Haiku を使用します
- 適切な初期化戦略を実装します
- 学習ループを関数型に構成します
コメント
Markdown 対応