はじめに
MLflow について、下記のリンク先の動画と記事を元に内容をまとめて翻訳しました。
■本動画リンク
MLflow: Infrastructure for a Complete Machine Learning Life Cycle with Mani Parkhe & Tomas Nykod
■本記事リンク
Introducing MLflow: an Open Source Machine Learning Platform
MLflow – 完璧な機械学習(ML)ライフサイクルのためのインフラ
ML 開発の困難さ
図は一般的な ML のライフサイクルとなります。基本的には取得したデータをチェックした後にトレーニングし、デプロイした後で、新たにデータを取り込ませたりすることで改善させる、といった形になります。
ML の開発が困難な理由としては、以下が挙げられます。
- どのライフサイクルにおいても利用できるツールが豊富にある
- それぞれのライフサイクルで使用するツールが必ずしも同じでは無い
- 次のライフサイクルにデータやモデル、コードを渡すのに苦労する
MLflow について
MLflow は、そんな ML 開発における問題点を解決するオープンソースの ML プラットフォームです。
主な特徴は以下となります。
- どの ML ライブラリや言語にも対応
- どの環境でも同じ様に実行可能
- 1人、または複数人の場合でも利用できるデザイン設計
- ビッグデータや Apache Spark に対応可能
MLflow デザインの哲学
MLflow のデザイン哲学は2つあります。
■デザイン哲学
- 「API ファースト」のオープンプラットフォーム
- どんなライブラリや言語、でも実行可能な環境
- 既存の ML プラットフォームやワークフロとの統合が可能
- モジュール設計
- 個々人で異なるコンポーネントの利用が可能
- ML ツールデベロッパが多くのユーザと簡単に繋がることが可能
MLflow コンポーネント
MLflow の主なコンポーネントは3つあります。
■コンポーネント
- MLflow Tracking
- 実験の記録やクエリを行う
- MLflow Projects
- どのプラットフォームでも再利用可能なフォーマットにパッケージング
- MLflow Models
- 様々なデプロイツールをサポートするモデルフォーマット
MLflow Tracking
MLflow Tracking は 機械学習コードを実行して視覚化した際、パラメータやコードのバージョン、そしてメトリクスなどのロギングや、ファイルのアウトプットをするための API と UI です。
■MLflow Tracking の特徴
- 簡単なコード数行で、パラメータやメトリクスなどのトラッキングが可能
- notebook やスタンドアローンなスクリプトなど、どの環境でも利用可能
- ローカル環境のファイルやサーバにログの結果を保存し、複数の実行の比較が可能
MLflow Projects
MLflow Projects は再利用可能なデータサイエンスコードをパッケージングするためのスタンダードなフォーマットを提供するサービスです。
■MLflow Projects の特徴
- Porject はそれぞれコードや Git リポジトリがついたディレクトリ
- 記述ファイルを使って依存関係とコードの実行方法を特定
MLflow Models
MLflow Models は “flavors” と呼ばれる 複数のモデルで ML モデルをパッケージングする方法です。MLFlow は、異なる flavor のモデルをユーザが開発できるよう、様々なツールを提供します。MLflow モデルは、任意のファイルを含んだディレクトリと使用可能な flavors をリストする MLmodel 記述ファイルとに保存されます。
- MLflow Models の例
1 2 3 4 5 6 7 8 |
time_created: 2018-02-21T13:21:34.12 flavors: sklearn: sklearn_version: 0.19.1 pickled_model: model.pkl python_function: loader_module: mlflow.sklearn pickled_model: model.pkl |
上記のモデルを例にすると、このモデルは sklearn モデル flavor か python_function モデル flavor をサポートするツールと使用することができます。
MLflow は、一般的なモデルを様々なプラットフォームに開発するためのツールを提供します。例えば、python_function flavor をサポートするモデルを Docker ベースの REST サーバや Azure ML、Amazonn SageMaker、そしてバッチとストリーミング推論のための Apache Spark のユーザ定義関数としてデプロイすることができます。
MLflow Models をトラッキング API を使用してアーティファクトとして出力すると、MLflow はどのプロジェクトで実行したのかを自動的に記録します。
おわりに
MLflow についてのまとめは以上となります。
本編では、より詳し解説やデモなども紹介されているので、本編もぜひ確認ください。
Azure Databricksの導入ならナレコムにおまかせください。
導入から活用方法までサポートします。お気軽にご相談ください。
Azure Databricksソリューションページはこちら