m3dev/gokart

Gokart solves reproducibility, task dependencies, constraints of good code, and ease of use for Machine Learning Pipeline.

何を解決するか

Gokartは再現性のある機械学習パイプラインの作成を簡素化します。ML開発における一般的な課題、たとえばタスクの依存関係の管理、シード固定による一貫した結果の確保、SOLID原則を促進することでコードベースをクリーンに保つことを解決します。

動作方法

Luigiのラッパーとして構築されたGokartは、MLワークフローを一連のタスクに整理します。各タスクのメタデータ(出力データ、モジュールバージョン、処理時間、ランダムシードなど)を自動で追跡し、ハッシュ値付きの別々のpickleファイルに保存します。タスクパラメータが変更されると、パイプラインは影響を受ける部分を自動的に再実行します。メモリ使用量を抑えるために、中間結果はファイルとしてやり取りされ、これらの結果のためのクラウドストレージ(GCSおよびS3)もサポートしています。また、I/O時にpandas DataFrameのカラムチェックを組み込みサポートしており、並列実行時にタスクをロックするためにRedisを使用します。

対象ユーザー

バッチ処理およびチーム開発に再現性の高い環境が必要な機械学習エンジニアおよびデータサイエンティスト。

特徴

  • 自動再現性: numpyとrandomのシードを自動で固定し、すべてのモジュールバージョンとパラメータを追跡します。
  • スマートな再実行: タスクパラメータが変更されると、パイプラインの再実行を自動的にトリガーします。
  • クラウド統合: 中間結果のデータストアとしてS3およびGCSをネイティブにサポートしています。
  • 型安全性: 型アノテーションとmypyプラグインをサポートし、パイプラインの堅牢性を確保し、タスク間の型エラーを防止します。
  • メモリ効率: すべてのデータをメモリに保持するのではなく、中間ファイルを介してタスク間でデータをやり取りします。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト