論文「Accelerating the Machine Learning Lifecycle with MLflow」の日本語要約

こんばんは。ここ数日Databricks社が公開する論文を追いかけています。

今日は、2023年8月に公開された「Accelerating the Machine Learning Lifecycle with MLflow」を読んでみたので、その日本語要約をメモしておきます。

論文はこちらから確認できます。

accelerating-the-machine-learning-lifecycle-with-mlflow.pdf (databricks.com)

Databricks社が公開する論文の一覧はこちらから確認できます。

Databricks Research | Databricks

Contents

論文翻訳 & 要約

Abstract

  • 機械学習の開発は、従来のソフトウェア開発ライフサイクルには存在しない多くの新たな課題を引き起こす。
  • これらの課題には、MLアプリケーションの多くの要因の追跡(データバージョン、コード、調整パラメータなど)や、結果の再現、本番展開が含まれる。
  • この論文では、Databricksの顧客との経験に基づいてこれらの課題を要約し、機械学習ライフサイクルを効率化するために最近開発されたオープンソースプラットフォームであるMLflowについて説明する。
  • MLflowは、実験、再現性、モデルの展開という3つの主要な課題をカバーし、任意のMLライブラリ、アルゴリズム、プログラミング言語で動作する汎用APIを使用している。
  • このプロジェクトは、2018年6月に開始して以来、急速に成長するオープンソースコミュニティを持ち、50人以上の貢献者が参加している。

1. Introduction

  • 機械学習(ML)の開発は、従来のソフトウェア開発ライフサイクルには存在しない新しい課題を解決する必要があります。従来のソフトウェアは構築すべき明確な製品機能があるのに対し、MLの開発は実験に重点を置いています。MLの開発者は新しいデータセット、モデル、ソフトウェアライブラリ、調整パラメータなどを絶えず試行し、モデルの精度などのビジネスメトリクスを最適化しようとします。
  • モデルのパフォーマンスは入力データとトレーニングプロセスに大きく依存するため、MLの開発全体で再現性が非常に重要です。
  • また、ビジネスへ活用する上では、MLアプリケーションは本番環境に展開される必要があります。これは、モデルを推論に使用できるように展開することと、モデルを定期的に更新するためのスケジュールジョブを展開することを意味します。これは、デプロイメントがML専門家でないアプリケーションエンジニアなど別のチームとの協力を必要とする場合、特に挑戦的です。
  • これらの課題に直面する多くの組織は、再現性と展開可能性を得るためにMLの開発プロセスを「制限」しようとします。一部の組織は、ML開発のための内部ガイドラインを開発し、本番チームがサポートするライブラリなどを指定します。他の組織は内部MLプラットフォーム(例:FacebookのFBLearner、UberのMichelangelo、GoogleのTFX)を開発します。これらは、ML開発者が新しいライブラリやモデルを使用する際に大規模なエンジニアリング作業を必要とし、アルゴリズムやライブラリの使用に制限をかけ、実験の柔軟性を低下させます。
  • この論文では、Databricksの顧客との経験をまとめ、これらの課題に対処するために開発中のオープンソースMLプラットフォームであるMLflowについて説明します。MLflowの主要な原則は、データサイエンティストとエンジニアが自分自身のトレーニングコード、メトリクス、推論ロジックを持ち込むことができ、構造化された開発プロセスの恩恵を受けることができるオープンインターフェースデザインです。現在のバージョンのMLflowは、Python、Java、Rで使用できる実験トラッキング、再現可能なラン、モデルのパッケージングと展開のAPIを提供しており、これらのAPIといくつかのサンプルMLflowのユースケースを説明しています。

2. Challenges in Machine Learning Development

  • 機械学習(ML)開発は、従来のソフトウェア開発と同様のテスト、コードレビュー、監視などの課題に直面しますが、一方で新しい問題も抱えています。
  • MLの主な違いの1つは、MLの目標が予測精度などの特定のメトリックを最適化することであり、単に一連の機能要件を満たすことではありません
  • MLアプリケーションは、トレーニングデータ、調整、過学習など、他のアプリケーションでは発生しない懸念事項に依存するため、管理がより複雑です。
  • さらに、MLアプリケーションは異なる専門知識を持つチームまたは個人によって開発されることが多く、これらの個人間での引き継ぎは難しいことがあります。
  • これに基づいて、MLユーザーが繰り返し直面する4つの課題があります:ツールの多様性、実験のトラッキング、再現性、本番展開
  • これらの問題に対処するために、MLの開発プロセスは明示的に再現性や展開可能性を促進するように設計されるべきであり、ML開発者に最大限の柔軟性を残す方法を模索しています。
  • この目標に基づいて、MLflowはオープンインターフェースデザインの哲学を採用しています。

3. MLFlow Overview

  • MLflowは、機械学習の開発プロセスを構築するためのオープンインターフェース哲学を採用しており、各抽象化(トレーニングステップ、デプロイメントツール、モデルなど)に対して一般的なインターフェースを定義します。
  • MLflowのモデルは、Python関数(およびライブラリの依存関係情報)として表現でき、Python関数を実行できる開発ツールであれば、そのようなモデルを実行できます。
  • MLflowは、MLflow Tracking、MLflow Projects、MLflow Modelsという3つのコンポーネントを提供し、それぞれ独立してまたは連携して使用できます。
  • MLflow Trackingは実験ランの記録とクエリングを行うためのAPIで、実験ランにはパラメータ、コードバージョン、メトリック、およびアーティファクトなどが含まれます。
  • MLflow Projectsは、再現可能なデータサイエンスコードをパッケージ化するための単純な形式を提供し、依存関係とコードの実行方法を指定するための記述子ファイルを使用します。
  • MLflow Modelsは、機械学習モデルを複数のフォーマットでパッケージ化するための規約であり、「フレーバー」と呼ばれる異なるレベルの抽象化でモデルを理解できるようにします。
  • MLflowは、REST APIを介してほとんどの機能を提供し、任意のプログラミング言語から呼び出すことができます。

4. Example Use Cases

MLflowの使用例を3つ紹介します。

  1. 実験のトラッキング: ヨーロッパのエネルギー会社は、MLflowを使用して数百のエネルギーグリッドモデルを追跡および更新しています。このチームの目標は、主要なエネルギー生産者(例:発電所)および消費者(例:工場)ごとに時系列モデルを構築し、これらを標準のメトリックで監視し、価格設定などのビジネスプロセスに活用することです。異なるMLライブラリを使用する可能性がある数百のモデルを1つのチームが担当しているため、標準の開発およびトラッキングプロセスが重要でした。このチームは、開発にJupyterノートブック、メトリックのトラッキングにMLflow Tracking、および推論にDatabricksジョブを使用することを標準化しています。
  2. 再現可能なプロジェクト: オンラインマーケットプレイスは、MLflow Projectsを使用してKerasを介したディープラーニングジョブをパッケージ化し、クラウドで実行しています。各データサイエンティストは、小規模なデータセットを使用してローカルでモデルを開発し、それらをMLprojectファイルを持つGitリポジトリにチェックインし、プロジェクトのリモートランをクラウドのGPUインスタンスで大規模なトレーニングやハイパーパラメータ検索に提出します。MLflow Projectsの使用により、クラウドで同じソフトウェア環境を作成し、異なるデータサイエンティスト間でプロジェクトコードを共有することが容易になりました。
  3. モデルのパッケージ化: あるeコマースサイトのデータサイエンスチームは、アプリケーションエンジニアが使用するために推薦モデルをパッケージ化するためにMLflow Modelsを使用しています。ここでの技術的な課題は、推薦アプリケーションには標準の「オフザシェルフ」の推薦モデルと、前処理および後処理のためのカスタムビジネスロジックが含まれていることです。たとえば、アプリケーションには、推奨されるアイテムが多様であることを確認するカスタムコードが含まれることがあります。このビジネスロジックはモデルと同期して変更する必要があり、データサイエンスチームはこのロジックとモデルの両方を制御し、このロジックが変更されるたびにWebアプリケーションにパッチを提出する必要はありません。さらに、チームは異なるバージョンの処理ロジックを持つ異なるモデルをA/Bテストしたいと考えています。解決策は、MLflow Model内でpython functionフレーバーを使用して推奨モデルとカスタムロジックの両方をパッケージ化し、これを単一のユニットとして展開およびテストできるようにすることでした。”

さいごに

ChatGPTから感想を貰ってみましたので共有します。

MLFlowの概念を身近な例で例えると・・・

おしまい

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。