MLflow を使用してトレーニング ジョブを追跡する
MLflow は、エンド ツー エンドの機械学習ライフサイクルを管理するためのオープンソース プラットフォームです。 MLflow Tracking は、トレーニング ジョブのメトリック、パラメーター、モデル成果物のログ記録と追跡を行うコンポーネントです。
この演習では、MLflow を使用して、モデル トレーニングの実行をコマンド ジョブとして追跡します。
開始する前に
管理レベルのアクセス権を持つ Azure サブスクリプションが必要です。
Azure Machine Learning ワークスペースをプロビジョニングする
Azure Machine Learning ‘‘ワークスペース’’ では、モデルのトレーニングと管理に必要なすべてのリソースと資産を管理するための中心的な場所が提供されます。** Azure Machine Learning ワークスペースは、スタジオ、Python SDK、Azure CLI を使用して操作できます。
Azure CLI を使用してワークスペースと必要なコンピューティングをプロビジョニングし、Python SDK を使用してコマンド ジョブを実行します。
ワークスペースとコンピューティング リソースを作成する
Azure Machine Learning ワークスペース、コンピューティング インスタンス、コンピューティング クラスターを作成するには、Azure CLI を使用します。 実行するために必要なすべてのコマンドがシェル スクリプトにグループ化されます。
- ブラウザーで、Azure portal (
https://portal.azure.com/
) を開き、Microsoft アカウントでサインインします。 - ページ上部の検索ボックスの右側にある [>_] (Cloud Shell) ボタンを選びます。 これにより、ポータルの下部に Cloud Shell ペインが開きます。
- メッセージが表示されたら、 [Bash] を選択します。 Cloud Shell を初めて開いたときに、使用するシェルの種類 (Bash または PowerShell) を選択するように求められます。
- 正しいサブスクリプションが指定されていることと、[ストレージ アカウントは不要] が選択されていることを確認します。 適用を選択します。
-
ターミナルで、次のコマンドを入力して、このリポジトリをクローンします。
rm -r azure-ml-labs -f git clone https://github.com/MicrosoftLearning/mslearn-azure-ml.git azure-ml-labs
コピーしたコードを Cloud Shell に貼り付けるには、
SHIFT + INSERT
を使用します。 -
リポジトリがクローンされたら、次のコマンドを入力してこのラボ用のフォルダーに移動し、そこに含まれている setup.sh スクリプトを実行します。
cd azure-ml-labs/Labs/08 ./setup.sh
拡張機能がインストールされていないことを示す (エラー) メッセージは無視します。
-
スクリプトが完了するまで待ちます。通常、約 5 分から 10 分かかります。
トラブルシューティングのヒント: ワークスペース作成エラー
CLI を使用してセットアップ スクリプトを実行するときにエラーが発生した場合は、リソースを手動でプロビジョニングする必要があります。
- Azure portal のホーム ページで、[+ リソースの作成] を選択します。
- machine learning を検索し、Azure Machine Learning を選択します。 [作成] を選択します
- 次の設定を使用して新しい Azure Machine Learning リソースを作成します。
- [サブスクリプション]:"ご自身の Azure サブスクリプション"
- リソース グループ: rg-dp100-labs
- ワークスペース名: mlw-dp100-labs
- [リージョン]: "最も近い地理的リージョンを選択します"
- [ストレージ アカウント]: "ワークスペース用に作成される既定の新しいストレージ アカウントに注目します"
- [キー コンテナー]: ワークスペース用に作成される既定の新しいキー コンテナーです
- [Application Insights]: ワークスペース用に作成される既定の新しい Application Insights リソースです
- [コンテナー レジストリ]: なし (コンテナーにモデルを初めてデプロイするときに、自動的に作成されます)
- [確認および作成] を選択し、ワークスペースとそれに関連付けられているリソースが作成されるまで待ちます。通常、これには約 5 分かかります。
- [リソースに移動] を選択して、リソースの [概要] ページで [スタジオの起動] を選択します。 ブラウザーで別のタブが開き、Azure Machine Learning スタジオが開きます。
- スタジオに表示されるすべてのポップアップを閉じます。
- Azure Machine Learning スタジオ内で、[コンピューティング] ページに移動し、[コンピューティング インスタンス] タブの [+ 新規] を選択します。
- コンピューティング インスタンスに一意の名前を付けたあと、仮想マシンのサイズとして Standard_DS11_v2 を選択します。
- [確認および作成] を選択し、次に [作成] を選択します。
- 次に、[コンピューティング クラスター] タブを選択し、[+ 新規] を選択します。
- ワークスペースを作成したリージョンと同じリージョンを選択し、仮想マシンのサイズとして Standard_DS11_v2 を選択します。 [次へ] を選択します
- クラスターに一意の名前を付け、[作成] を選択します。 </ol> </details>
ラボの資料をクローンする
ワークスペースと必要なコンピューティング リソースを作成したら、Azure Machine Learning スタジオを開き、ラボの資料をワークスペースに複製できます。
- Azure portal で、mlw-dp100-… という名前の Azure Machine Learning ワークスペースに移動します。
- Azure Machine Learning ワークスペースを選択し、その [概要] ページで [スタジオの起動] を選択します。 ブラウザーで別のタブが開き、Azure Machine Learning スタジオが開きます。
- スタジオに表示されるすべてのポップアップを閉じます。
- Azure Machine Learning スタジオ内で、 [コンピューティング] ページに移動し、前のセクションで作成したコンピューティング インスタンスとクラスターが存在することを確認します。 コンピューティング インスタンスが実行中である必要があります。クラスターはアイドル状態で、0 個のノードが実行中であるはずです。
- [コンピューティング インスタンス] タブで、コンピューティング インスタンスを見つけて、 [ターミナル] アプリケーションを選択します。
-
ターミナルで、次のコマンドを実行して、コンピューティング インスタンスに Python SDK をインストールします。
pip uninstall azure-ai-ml pip install azure-ai-ml
パッケージが見つからず、アンインストールできなかったことを示す (エラー) メッセージは無視します。
-
次のコマンドを実行して、ノートブック、データ、その他のファイルを含む Git リポジトリをワークスペースにクローンします。
git clone https://github.com/MicrosoftLearning/mslearn-azure-ml.git azure-ml-labs
- コマンドが完了したら、 [ファイル] ペインで [↻] をクリックしてビューを更新し、新しい **Users/<自分のユーザー名>/azure-ml-labs** フォルダーが作成されていることを確認します。**自分のユーザー名>
ノートブックから MLflow ジョブを送信する
必要なすべてのリソースが揃ったので、ノートブックを実行してジョブを送信できます。このジョブでは、MLflow を使用してモデルのパラメーター、メトリック、成果物を追跡します。
-
Labs/08/Use MLflow to track jobs.ipynb ノートブックを開きます。
[認証] を選択し、認証を求める通知が表示されたら、必要な手順に従います。
- ノートブックで Python 3.8 - AzureML カーネルが使用されていることを確認します。
- ノートブック内のすべてのセルを実行します。
Azure リソースを削除する
Azure Machine Learning を調べ終わったら、不要な Azure のコストを避けるために作成したリソースを削除する必要があります。
- [Azure Machine Learning スタジオ] タブを閉じて、Azure portal に戻ります。
- Azure portal の [ホーム] ページで、[リソース グループ] を選択します。
- [rg-dp100-…] リソース グループを選択します。
- リソース グループの [概要] ページの上部で、[リソース グループの削除] を選択します。
- リソース グループ名を入力して、削除することを確認し、[削除] を選択します。