によって Matei Zaharia による投稿
MLflow とは、実験の追跡、モデルの管理やデプロイメントといった、機械学習におけるライフサイクルを管理するためのオープンソースのプラットフォームです。機械学習(ML)の開発を経験した人は誰でも、その複雑さを知っています。ソフトウェア開発における通常の懸念事項に加えて、機械学習開発には、複数の新たな懸念が伴います。データブリックスの数百社のお客様に共通する課題として、次のような事柄が挙げられます。
機械学習開発のこれらの課題を解決し、従来のソフトウェア開発のように堅牢で、予測可能となり、広く普及するためには、多くの進化を遂げなくてはならないことは明らかです。またこの目的を達成するため、多くの組織が機械学習(ML)ライフサイクルを管理し、簡素化するための社内機械学習プラットフォームの開発を始めました。たとえば、Facebook、Google、Uber は、データの準備、モデルのトレーニング、デプロイを管理するために FBLearner Flow、TFX、Michelangelo を開発してきました。しかし、これらの社内プラットフォームでさえ、制限があります。一般的な機械学習プラットフォームは、少数の組み込みアルゴリズムや単一の機械学習ライブラリしかサポートせず、社内のインフラストラクチャに縛られています。そのためユーザーは、新しい機械学習ライブラリを簡単に活用したり、より広いコミュニティで作業を共有したりすることはできません。
データブリックスは、機械学習ライフサイクルを管理するより良い方法があるという信念のもとに、モジュラープラットフォームとして、MLflow:オープンソースの機械学習プラットフォームを開発しました。MLflow は、本日現在アルファ版としてリリースされています。
MLflow は、既存の機械学習プラットフォームにインスパイアされているオープンソースのモジュラープラットフォームであり、次の 2 つの意味でオープンであるように設計されています。
MLflow は、現時点ではまだアルファ版ですが、すでに機械学習コードを扱う便利なフレームワークを提供しています。お客様のフィードバックをぜひお聞せください。このブログ投稿では、MLflow の詳細を紹介し、そのコンポーネントについて説明します。
この最初の MLflow のアルファ版には次の 3 つのコンポーネントがあります。

MLflow Tracking 機能は、機械学習コードの実行時にパラメータ、コードバージョン、メトリック、結果ファイルを記録するための API と UI を提供し、実験の追跡・可視化を支援します。シンプルな数行のコードで、パラメータ、メトリック、アーティファクトを追跡できます。
MLflow Tracking を使用することで、さまざまな環境(スタンドアロンスクリプトやノートブックなど)で、結果をローカルファイルまたはサーバーにログとして記録し、複数の実行を比較できます。また、Web UI を使用して、複数の実行の結果を表示および比較したり、部門内でツールを使用して、異なるユーザーの結果を比較したりすることも可能です。

MLflow プロジェクトは、再利用可能なデータサイエンスコードをパッケージ化する標準形式を提供します。各プロジェクトは、コードまたは Git リポジトリを含むディレクトリであり、ファイル記述子を使用して、その依存関係とコードの実行方法を指定します。MLflow プロジェクトは、MLproject と呼ばれるシンプルな YAML ファイルによって定義されます。
プロジェクトは、Conda 環境を介して依存関係を指定できます。また、プロジェクトは名前付きパラメータを使用して、実行を呼び出すための複数のエントリポイントを持つことも可能です。mlflow run コマンドラインツールを使用して、ローカルファイルまたは Git リポジトリからプロジェクトを実行できます。
MLflow は、プロジェクトに適した環境を自動的に設定し、実行します。さらに、プロジェクトで MLflow Tracking API を使用すると、MLflow は実行されたプロジェクトのバージョン(すなわち Git commit)とパラメータを記憶するため、その後、同じコードを簡単に再実行できます。
プロジェクト形式を利用することにより、社内でもオープンソースコミュニティでも、再現可能なデータサイエンスコードを容易に共有できます。MLflow プロジェクトは MLflow Tracking と組み合わせることで、機械学習の構築を効率化し、再現性、拡張性、実験において優れたツールを提供します。
MLflow モデルは、「フレーバー」と呼ばれる複数の形式で機械学習モデルをパッケージ化するための規則で す。MLflow には、異なるモデルのフレーバーをデプロイするのに役立つさまざまなツールが用意されています。各 MLflow モデルは、任意のファイルと MLmodel で使用できるフレーバーをリストしたファイル記述子を含むディレクトリとして保存されます。
この例では、モデルは sklearn または python_function のいずれかをサポートするツールで使用できます。
MLflow は、多数の一般的なモデルタイプをさまざまなプラットフォームにデプロイするためのツールを提供します。たとえば、python_function フレーバーをサポートするモデルは、Docke rベースの REST サーバー、Azure ML や Amazon SageMaker などのクラウドプラットフォームに対して、Apache Spark のユーザー定義関数としてバッチやストリーミング推論にデプロイできます。Tracking API を使用し、MLflow モデルをアーティファクトとして出力すると、MLflow は、どのプロジェクトから派生したプロジェクトであるのかを自動的に記憶し、実行します。
MLflow は、mlflow.org でインストール、または Github のアルファ版コードから使用を開始できます。是非、コンセプトやコードに関するご意見をお聞かせください。
If you would like to run a hosted version of MLflow, we are also now accepting signups at databricks.com/product/managed-mlflow. MLflow on Databricks integrates with the complete Databricks Unified Analytics Platform, including Notebooks, Jobs, Databricks Delta, and the Databricks security model, enabling you to run your existing MLflow jobs at scale in a secure, production-ready manner.
MLflow はまだ始まったばかりで、今後さらに展開していきます。まずは、プロジェクトのアップデート以外にも、主要な新しいコンポーネント(監視など)、ライブラリの統合、および既にリリースしたコンポーネントへの拡張機能(たとえば、より多くの環境の種類のサポート)を導入する予定です。今後の MLflow の更新の詳細は、ブログで紹介していく予定です。どうぞご期待ください。
ブログを購読して、最新の投稿を受信トレイにお届けします。