AI + Machine Learning, Azure Databricks, Azure Kubernetes Service (AKS), Azure Machine Learning, Best practices, Container Services
MLflow を使用してデータ サイエンス ワークフローの効率性と再現可能性を確保
Posted on
3 min read
今回は、Applied AI Developer COGS のシニア プログラム マネージャーを務める Parashar Shah と共同執筆した記事をご紹介します。
データ サイエンティストが機械学習モデルの構築に取り組む際には、多くの場合、実験によって大量のメタデータが生成されます。たとえば、テストしたモデルのメトリック、実際のモデル ファイル、プロットやログ ファイルなどのアーティファクトが挙げられます。また、多数のモデルやパラメーターを試すことも少なくありません。たとえば、ランダム フォレストの深さを変えたり、線形モデルの正則化率を変えたり、ディープ ラーニング モデルの各アーキテクチャをトレーニングする学習率を変えたりといったケースです。さまざまなブックキーピングが必要となるため、テスト ケースの作成漏れや、不必要な実験を繰り返して時間を無駄にするといったことがよくあります。予測に使用するモデルを完成させたら、デプロイ環境を作成し、モデルから Web サービス (HTTP エンドポイント) を作成するために複数の作業を行う必要があります。
概念実証のための小規模な機械学習プロジェクトであれば、スプレッドシートとトレーニング スクリプトのバージョン付きコピーなど、手動のブックキーピングによってプロジェクトを追跡できる場合もあります。しかし、プロジェクトの規模が拡大し、チームとして他のデータ サイエンティストと協力する場合には、以下を行うために適切な追跡ソリューションが必要になります。
- モデルのパフォーマンスを分析してパラメーターをチューニングする
- 実験の履歴に対してクエリを実行し、運用化に最適なモデルを決定する
- 有望な実験スレッドを再検討してフォローアップする
- トレーニングの実行と関連するメタデータを自動的にリンクする
- スナップショットを確認して、以前のトレーニングの実行を監査する
モデルを作成したら、モデル管理およびモデル デプロイ ソリューションが必要になります。このソリューションを使用して、以下を行う必要があります。
- 共通のワークスペースに、複数のモデルと、同一モデルの複数のバージョンを保存する
- スケーラブルな Web サービスを簡単にデプロイ、作成する
- デプロイした Web サービスを監視する
Azure Machine Learning と MLflow
Azure Machine Learning サービスは、データ サイエンティストや開発者向けに、実験を追跡し、モデルを Web サービスとしてデプロイして、既存の Python SDK、CLI、Azure Portal の各インターフェイスを通じて Web サービスを監視する機能を提供します。
MLflow (英語) は、データ サイエンティストや開発者が機械学習コードのインストルメント化を行い、メトリックやアーティファクトを追跡できるオープン ソース プロジェクトです。MLflow との統合により、トレーニング コードを任意のクラウドで実行できます。同時に、Azure Machine Learning サービスにより、スケーラブルなコンピューティングが提供され、実行とアーティファクトを安全に一元管理、追跡することができます。
データ サイエンティストや開発者が行う作業は、MLflow を使用してインストルメント化した既存のコードをトレーニングの実行として Azure Machine Learning に送信するだけです。このとき、MLflow 用 Azure Machine Learning プラグインは、管理対象のトレーニングの実行であることを認識し、MLflow Tracking を Azure Machine Learning ワークスペースに接続します。トレーニングの実行が完了したら、Azure Portal の実行からメトリックとアーティファクトを表示できます。その後、実験の履歴に対してクエリを実行し、モデルを比較して、最適なモデルを決定することができます。
最適なモデルを特定したら、同じ環境内から MLflow を使用して Kubernetes クラスター (Azure Kubernetes Service) にデプロイすることができます。
ユース ケースの例
Spark + AI Summit 2019 (英語) において、私たちのチームは、Azure Machine Learning と統合された MLflow を使用して、画像分類モデルをトレーニング、デプロイする例のプレゼンテーションを行いました。この例では、PyTorch (英語) のディープ ラーニング ライブラリを使用して、MNIST データによって数字分類モデルのトレーニングを実行すると共に、MLflow を使用してメトリックを追跡し、Azure Machine Learning ワークスペースで監視しました。さらに、MLflow の PyTorch 用フレームワーク対応 API を使用してモデルを保存し、Azure Machine Learning Model Management API を使用して Azure Container Instances にデプロイしました。
MLflow と Azure Machine Learning を使用できる場所
Azure Machine Learning サービスのメリットの 1 つは、データ サイエンティストや開発者が Azure クラウドのコンピューティング リソースを使用して、トレーニングをスケールアップおよびスケールアウトできることです。MLflow と Azure Machine Learning を使用すると、以下の場所の実行を追跡できます。
- ローカル コンピューター
- Azure Databricks
- Machine Learning コンピューティング クラスター
- CPU または GPU 対応 VM
MLflow と Azure Machine Learning を使用して、以下の場所にモデルをデプロイできます。
- Azure Container Instances (ACI)
- Azure Kubernetes Service (AKS)
使用を開始する
使用を開始する手順と例については、以下のリソースをご覧ください。
- マイクロソフトのドキュメント (英語)「Azure Machine Learning サービスで MLflow を使用する方法 (プレビュー)」
- MLflow のドキュメント (英語): クイック スタート ガイド、チュートリアル、その他の重要なコンセプトに関する情報が含まれます。
- Azure GitHub リポジトリで公開されている Jupyter Notebook のサンプル (英語)