MLflowは、機械学習ライフサイクルを管理するために設計されたオープンソースプラットフォームであり、実験、再現性、デプロイメントを網羅しています。2018年にDatabricksによって導入され、以来、機械学習コミュニティで広く採用されるツールとなっています。このプラットフォームは、軽量なAPI群と集中型サーバーを提供し、データサイエンティストとエンジニア間のコラボレーションを促進します。
MLflowの核となる哲学は、ライブラリやフレームワークに対して不可知論的であることです。TensorFlow、PyTorch、scikit-learnなどの一般的なツールをサポートしています。既存のワークフローに統合できるよう設計されており、コードへの大幅な変更は必要ありません。MLflowはPython、Java、JavaScriptで記述されており、そのコンポーネントは個別に、または組み合わせて使用できます。
コンポーネント
MLflowは、Tracking、Projects、Models、Registryの4つの主要コンポーネントで構成されています。各コンポーネントは、MLライフサイクルの特定の側面に対応しています。
MLflow Trackingは、各実行のパラメータ、メトリクス、アーティファクトを記録するロギングシステムです。実験を比較し、結果を可視化するためのWebベースのUIを提供します。Trackingはローカルまたはリモートサーバーで使用でき、Amazon Web ServicesやAzureなどのクラウドストレージサービスとの統合をサポートしています。
MLflow Projectsは、コードを再利用可能で再現可能な形式にパッケージ化します。プロジェクトは、依存関係、エントリポイント、環境を指定するYAMLファイルによって定義されます。これにより、Google Cloudや他のクラウドプラットフォームを含む、異なるマシン間で実行を一貫して行うことができます。
MLflow Modelsは、機械学習モデルをパッケージ化するための標準形式を提供します。この形式には、モデルの依存関係とスコアリング関数が含まれており、さまざまなサービング環境へのデプロイを可能にします。モデルは、Python関数、R、Javaなどの複数のフレーバーで保存できます。
MLflow Model Registryは、モデルバージョン、ステージ遷移、アノテーションを管理する集中型モデルストアです。チームがモデルを登録、共有、デプロイを管理された方法で行えるようにすることで、コラボレーションを促進します。
歴史と開発
MLflowの最初のバージョンは、2018年6月にDatabricksによってオープンソースプロジェクトとしてリリースされました。初期リリースは、TrackingとProjectsコンポーネントに焦点を当てていました。Model Registryは、2019年6月にリリースされたバージョン1.0で追加されました。それ以来、プロジェクトは定期的なアップデートが行われ、幅広い開発者コミュニティからの貢献があります。
MLflowは2020年にLinux Foundationプロジェクトとなり、長期的なガバナンスと中立性を確保するのに役立ちました。この移行は、オープンソースのMLツールが制度的なサポートを得るという広範なトレンドの一部でした。2023年時点で、MLflowは最も広く使用されているオープンソースのMLライフサイクルプラットフォームの1つであり、数千の組織が本番環境で使用しています。
ユースケース
MLflowは、研究開発環境での実験追跡に一般的に使用されています。データサイエンティストは、各トレーニング実行のハイパーパラメータとメトリクスをログに記録し、結果を比較して最適なモデルを選択できます。これは、多くの構成がテストされる深層学習プロジェクトで特に役立ちます。
もう1つの主要なユースケースは、モデルのデプロイです。MLflow Modelsは、組み込みのサービングツールを使用してRESTエンドポイントとして提供したり、AWS TrainiumやOracle Cloudなどのクラウドプラットフォームにエクスポートしたりできます。これにより、実験から本番への移行が簡素化されます。
このプラットフォームは、コラボレーティブなワークフローもサポートしています。チームはModel Registryを使用してモデルバージョンを管理し、承認されたモデルのみがデプロイされるようにできます。これは、監査可能性が要求される規制産業で不可欠です。
統合とエコシステム
MLflowは、幅広いMLおよびデータツールと統合します。scikit-learnやXGBoostなどの一般的なライブラリ、および深層学習フレームワークをネイティブにサポートしています。このプラットフォームは、大規模なデプロイメントのためにApache AirflowやKubernetesなどのオーケストレーションツールとも連携します。
クラウドプロバイダーは、マネージドMLflowサービスを提供しています。たとえば、Databricksは完全にマネージドなバージョンを提供し、AzureやGoogle CloudはMLflowをMLプラットフォームに統合しています。これらのサービスは、MLflowインフラストラクチャを実行する運用オーバーヘッドを削減します。
MLflowの拡張性は重要な機能です。ユーザーは、新しいライブラリやストレージバックエンドをサポートするカスタムプラグインを作成できます。コミュニティは、モデル説明可能性やデータバージョニングなど、さまざまなユースケース向けのプラグインのリポジトリを維持しています。
代替手段との比較
MLライフサイクルにおける同様のニーズに対応する他のツールがいくつかあります。Kubeflowはエンドツーエンドのパイプラインに焦点を当てたKubernetesネイティブプラットフォームであり、tensorflow-extended(TFX)は本番MLパイプライン向けに調整されています。MLflowは、そのシンプルさとフレームワークに依存しない設計で好まれることがよくあります。
neptune-aiやweights-and-biasesなどの商用製品と比較して、MLflowはオープンソースで自己ホスト可能であり、組織にデータの完全な制御を提供します。ただし、完全にマネージドな代替手段よりもセットアップに手間がかかる場合があります。
制限と考慮事項
MLflowは強力ですが、いくつかの制限があります。Trackingコンポーネントは、非常に多くの実行があると遅くなる可能性があり、UIは大規模な実験にはうまくスケールしない場合があります。Model Registryには、商用ツールに見られる高度なガバナンス機能がいくつか欠けています。
セキュリティももう1つの考慮事項です。リモートトラッキングサーバーを実行する場合、管理者は認証と暗号化を構成する必要があります。デフォルトのセットアップはマルチテナント環境には安全ではないため、本番使用には追加の対策が必要です。
これらの課題にもかかわらず、MLflowは多くの組織にとって堅牢な選択肢であり続けています。その活発なコミュニティと継続的な開発により、人工知能の状況における新たな需要に応えるために進化し続けています。
今後の方向性
MLflowプロジェクトは進化を続けています。最近のリリースでは、パフォーマンスの向上、新しいモデルフレーバーのサポート追加、UIの強化に焦点が当てられています。大規模言語モデルのワークフローとの統合、ファインチューニングと評価の追跡を含む作業が進行中です。
生成AIの分野が成長するにつれて、MLflowは基盤モデルを管理するための機能を拡大する可能性があります。これには、プロンプト追跡とモデル評価の機能が含まれます。Linux Foundationの下でのプロジェクトのガバナンスは、これらの開発に安定した基盤を提供します。