チュートリアル: Azure Machine Learning Visual Studio Code 拡張機能 (プレビュー) を使用して画像分類 TensorFlow モデルをトレーニングする
適用対象: Azure CLI ml 拡張機能 v2 (現行)
TensorFlow と Azure Machine Learning Visual Studio Code 拡張機能を使用して、手書きの数字を認識する画像分類モデルをトレーニングおよびデプロイする方法について説明します。
重要
現在、この機能はパブリック プレビュー段階にあります。 このプレビュー バージョンはサービス レベル アグリーメントなしで提供されており、運用環境のワークロードに使用することは推奨されません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。
詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
このチュートリアルでは、以下のタスクについて学習します。
- コードの理解
- ワークスペースの作成
- モデルをトレーニングする
前提条件
- Azure のサブスクリプション。 お持ちでない場合は、無料版または有料版の Azure Machine Learning にサインアップしてお試しください。 無料のサブスクリプションを使用している場合は、CPU クラスターのみがサポートされます。
- 軽量なクロスプラットフォーム コード エディターである Visual Studio Code をインストールします。
- Azure Machine Learning スタジオ Visual Studio Code 拡張機能。 インストール手順については、Azure Machine Learning Visual Studio Code 拡張機能の設定に関するガイドを参照してください
- CLI (v2)。 インストール手順については、CLI (v2) のインストール、設定、および使用に関する記事を参照してください
- コミュニティ主導のリポジトリをクローンする
git clone https://github.com/Azure/azureml-examples.git
コードの理解
このチュートリアルのコードでは、0 から 9 の手書きの数字を分類する画像分類機械学習モデルを TensorFlow を使用してトレーニングします。 それを行うには、28 ピクセル x 28 ピクセルの画像のピクセル値を入力として受け取り、10 個の確率 (分類の対象となる数字ごとに 1 つ) の一覧を出力するニューラル ネットワークを作成します。 これは、データの体裁を示すサンプルです。
ワークスペースの作成
Azure Machine Learning でアプリケーションを作成する際に最初に行うべきことは、ワークスペースの作成です。 ワークスペースには、モデルをトレーニングするためのリソースと、トレーニング済みのモデル自体が含まれます。 詳細については、ワークスペースの概要に関するページを参照してください。
Visual Studio Code のコミュニティ主導リポジトリから、azureml-examples/cli/jobs/single-step/tensorflow/mnist ディレクトリを開きます。
Visual Studio Code のアクティビティ バーで、Azure アイコンを選択して Azure Machine Learning ビューを開きます。
Azure Machine Learning ビューで、自分のサブスクリプション ノードを右クリックし、 [ワークスペースの作成] を選択します。
仕様ファイルが表示されます。 次のオプションを使用して、仕様ファイルを構成します。
$schema: https://azuremlschemas.azureedge.net/latest/workspace.schema.json name: TeamWorkspace location: WestUS2 display_name: team-ml-workspace description: A workspace for training machine learning models tags: purpose: training team: ml-team
この仕様ファイルによって、
WestUS2
リージョン内にTeamWorkspace
という名前のワークスペースが作成されます。 仕様ファイルに定義されている残りのオプションによって、ワークスペースのフレンドリ名、説明、およびタグが指定されます。仕様ファイルを右クリックし、[AzureML: YAML の実行] を選択します。 リソースを作成するには、YAML 仕様ファイルで定義されている構成オプションを使用し、CLI (v2) を使用してジョブを送信します。 この時点で、Azure に対して、新しいワークスペースと依存リソースをアカウントに作成するように要求が行われます。 数分後、ご利用のサブスクリプションのノードに新しいワークスペースが表示されます。
TeamWorkspace
を既定のワークスペースとして設定します。 これにより、作成したリソースとジョブが既定でこのワークスペースに配置されます。 Visual Studio Code ステータス バーの [Azure Machine Learning ワークスペースの設定] ボタンを選択し、画面の指示に従ってTeamWorkspace
を既定のワークスペースとして設定します。
ワークスペースの詳細については、VS Code でリソースを管理する方法に関する記事を参照してください。
モデルをトレーニングする
トレーニング プロセス中は、トレーニング データを処理し、分類の対象となる数字ごとに、データに埋め込まれたパターンを学習することによって TensorFlow モデルがトレーニングされます。
ワークスペースやコンピューティング先と同様に、トレーニング ジョブはリソース テンプレートを使用して定義されます。 このサンプルでは、仕様は次のような job.yml ファイルに定義されています。
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >
python train.py
environment: azureml:AzureML-tensorflow-2.4-ubuntu18.04-py37-cuda11-gpu:48
resources:
instance_type: Standard_NC12
instance_count: 3
experiment_name: tensorflow-mnist-example
description: Train a basic neural network with TensorFlow on the MNIST dataset.
この仕様ファイルによって、tensorflow-mnist-example
Python スクリプト内のコードを実行する、先ほど作成された gpu-cluster
コンピューティング先に tensorflow-mnist-example
というトレーニング ジョブが送信されます。 使用される環境は、トレーニング スクリプトの実行に必要な TensorFlow とその他のソフトウェア依存関係を含む、Azure Machine Learning によって提供されるキュレーション環境の 1 つです。 キュレーション環境の詳細については、「Azure Machine Learning のキュレーションされた環境」を参照してください。
トレーニング ジョブを送信するには:
- job.yml ファイルを開きます。
- テキスト エディターでファイルを右クリックし、[AzureML: YAML の実行] を選択します。
この時点で、ワークスペースで選択したコンピューティング先で実験を実行するための要求が Azure に送信されます。 このプロセスには数分かかります。 トレーニング ジョブの実行にかかる時間は、コンピューティングの種類やトレーニング データのサイズなど、いくつかの要因によって左右されます。 実験の進行状況を追跡するには、現在の実行ノードを右クリックし、[View Job in Azure portal](Azure portal でジョブを表示する) を選択します。
外部の Web サイトを開くよう要求するダイアログが表示されたら、 [開く] を選択します。
モデルのトレーニングが完了すると、実行ノードの横にある状態ラベルが "完了" に更新されます。
次のステップ
- Azure Machine Learning と統合された Visual Studio Code を起動する (プレビュー)
- コードをローカルで編集、実行、およびデバッグする方法のチュートリアルについては、Python hello-world チュートリアルを参照してください。
- リモート Jupyter サーバーを使用して Visual Studio Code で Jupyter Notebook を実行します。
- Visual Studio Code 以外で Azure Machine Learning をトレーニングする方法のチュートリアルについては、Azure Machine Learning によるモデルのトレーニングとデプロイ チュートリアルを参照してください。