top of page

データプロジェクトのソース管理を最大限に活用するデータセットの効果的なバージョン管理パイプラインモデルとMLワークフロー

データプロジェクトの管理は、コードを書くだけではありません。データセット、パイプライン、データモデル、機械学習(ML)モデルを綿密に追跡することで、一貫性を維持し、信頼性の高い結果を確保する必要があります。データ指向プロジェクトにおいてソース管理を効果的に活用することで、チームは明確な変更履歴を維持し、実験を再現し、共同作業をサポートできるようになります。この記事では、ソース管理を使用してMLワークフローのすべてのコンポーネントのバージョン管理を行い、強力なテストサイクルとスムーズなプロジェクト開発を実現する方法について説明します。


ソース管理ワークフロー

データプロジェクトでソース管理が重要な理由

ソース管理はソフトウェア開発における標準的な手法ですが、データプロジェクトにおけるその役割はしばしば誤解されたり、十分に活用されなかったりします。従来のコードとは異なり、データプロジェクトには複数の可動部分が含まれます。


  • 時間とともに進化するデータセット

  • 生データを変換するデータパイプライン

  • 構造と関係を定義するデータモデル

  • データでトレーニングされ、パフォーマンスが調整されたML モデル


適切なバージョン管理がないと、どのデータセットまたはモデルのバージョンが特定の結果を生成したかを把握できなくなり、混乱やエラー、そして無駄な労力につながる可能性があります。ソース管理は、変更の追跡、バージョンの比較、そして必要に応じてロールバックを行うための単一の場所を提供します。


信頼性の高いデータ管理のためのデータセットのバージョン管理

データセットはあらゆるMLプロジェクトの基盤です。データセットをバージョン管理することで、実験の再現性を確保し、データの品質やコンテンツの変更を文書化することができます。


データセットのバージョン管理戦略


  • DVC や Git LFS などのデータ バージョン管理ツールを使用して、従来の Git では効率的に管理できない大きなファイルを処理します。

  • ソース、日付、前処理手順などのメタデータをデータセットと一緒に保存します

  • データセットのバージョンに意味のある名前やタイムスタンプを明確にタグ付けして、さまざまな段階 (例: 生データ、クリーニング済み、拡張済み) を識別します。

  • 変更を記録し、新しいバージョンを自動的に作成するパイプラインを使用して、データセットの更新を自動化します


顧客離脱予測に取り組むチームは、DVCを使用して月次顧客データエクスポートのバージョン管理を行っています。各データセットのバージョンは対応するMLモデルのバージョンにリンクされているため、モデルのパフォーマンスを、使用したデータにまで簡単に遡って追跡できます。


変換を追跡するためのデータパイプラインのバージョン管理

データパイプラインは、モデリングのためのデータのクリーニング、変換、準備のプロセスを自動化します。パイプラインの変更は結果に大きな影響を与える可能性があるため、これらの変更を追跡することが重要です。


パイプラインのバージョン管理のベストプラクティス


  • パイプライン コードを他のプロジェクト ファイルと一緒にソース管理リポジトリに保存します

  • 構成ファイルを使用してパイプライン パラメータを定義します。これらのパラメータは個別にバージョン管理できます。

  • モジュール式のパイプライン コンポーネントを実装して、変更を分離し、テストを簡素化します。

  • ログ パイプラインは、入力データ、パラメーター、および出力に関するメタデータを使用して実行されます


MLチームはApache Airflowを使用してパイプラインを管理しています。DAG定義と変換スクリプトはGitに保存されています。パイプラインのステップが変更されると、新しいブランチを作成し、変更内容をテストし、検証後にのみマージすることで、安定した本番環境ワークフローを実現しています。


構造と一貫性を維持するためのデータモデルのバージョン管理

データモデルは、データがどのように整理され、関連付けられるかを定義します。モデルを変更すると、データの整合性や下流のプロセスに影響を及ぼす可能性があります。


データモデルのバージョン管理方法


  • モデル定義をコードまたはスキーマ ファイルとしてソース管理に保存します

  • 移行スクリプトを使用して、変更を段階的に適用し、スキーマの進化を追跡します。

  • 明確なコミット メッセージとバージョン タグを使用してモデルの変更を文書化します

  • 互換性を確認するために、サンプル データに対してモデルの変更をテストします


製品カタログを管理するチームは、Gitに保存されたJSONスキーマファイルを使用して製品属性を定義しています。新しいフィールドを追加したり、タイプを変更したりする際には、移行スクリプトを作成し、テストを実行してカタログデータベースの一貫性を確保しています。


実験の追跡と展開のための ML モデルのバージョン管理

MLモデルは、トレーニング、チューニング、そして再トレーニングを通じて進化します。モデルのバージョン管理は、パフォーマンスの向上を追跡し、必要に応じてロールバックするのに役立ちます。


MLモデルのバージョン管理へのアプローチ


  • モデル成果物 (重み、構成) をバージョン管理されたファイル名またはハッシュで保存します

  • MLflow や Weights & Biases などのML 実験追跡ツールを使用して、パラメーター、メトリック、モデル バージョンを記録します。

  • モデル ファイルまたはメタデータをコード コミットにリンクすることで、モデルのバージョン管理とソース管理を統合します

  • テストされたモデル バージョンを本番環境に昇格するデプロイメント パイプラインを自動化します


不正検出チームは、MLflowを使用して実験を追跡しています。各モデルバージョンは、トレーニングに使用したデータセットとパイプラインのバージョンに関連付けられています。この連携により、結果を再現し、モデルを簡単に比較できます。



データセットとモデルファイルのバージョン管理インターフェースが表示されているコンピュータ画面の目線の高さのビュー


MLワークフロー全体にわたるバージョン管理の統合

堅牢なテスト サイクルを確保するには、チームはデータセット、パイプライン、データ モデル、ML モデルのバージョン管理を統一されたワークフローに統合する必要があります。


統合のヒント


  • すべてのコンポーネントに対して単一のソース管理リポジトリまたは緊密にリンクされたリポジトリを使用します

  • バージョンとブランチに一貫した命名規則を採用します

  • 特定のバージョンの組み合わせでエンドツーエンドのテストを実行するテスト パイプラインを自動化します

  • データセット、パイプライン、モデル間の依存関係を明確に文書化します

  • 変更に対するプル リクエストとコード レビューを使用してコラボレーションを促進します


ヘルスケア分析チームは、データセット、パイプラインスクリプト、データモデル、機械学習モデル用のフォルダを含むモノレポジトリを管理しています。CI/CDツールを使用して、コンポーネントが変更されるたびにテストを実行し、更新によってワークフローが中断されないよう徹底しています。



bottom of page