チュートリアル: Azure Machine Learning Visual Studio Code 拡張機能 (プレビュー) を使用して画像分類 TensorFlow モデルをトレーニングする

適用対象: Azure CLI ML 拡張機能 v2 (現行)

TensorFlow と Azure Machine Learning Visual Studio Code 拡張機能を使用して、手書きの数字を認識する画像分類モデルをトレーニングおよびデプロイする方法について説明します。

重要

現在、この機能はパブリック プレビュー段階にあります。 このプレビュー バージョンはサービス レベル アグリーメントなしで提供されており、運用環境のワークロードに使用することは推奨されません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。

詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

このチュートリアルでは、以下のタスクについて学習します。

  • コードの理解
  • ワークスペースの作成
  • モデルをトレーニングする

前提条件

コードの理解

このチュートリアルのコードでは、0 から 9 の手書きの数字を分類する画像分類機械学習モデルを TensorFlow を使用してトレーニングします。 それを行うには、28 ピクセル x 28 ピクセルの画像のピクセル値を入力として受け取り、10 個の確率 (分類の対象となる数字ごとに 1 つ) の一覧を出力するニューラル ネットワークを作成します。 これは、データの体裁を示すサンプルです。

MNIST Digits

ワークスペースの作成

Azure Machine Learning でアプリケーションを作成する際に最初に行うべきことは、ワークスペースの作成です。 ワークスペースには、モデルをトレーニングするためのリソースと、トレーニング済みのモデル自体が含まれます。 詳細については、ワークスペースの概要に関するページを参照してください。

  1. Visual Studio Code のコミュニティ主導リポジトリから、azureml-examples/cli/jobs/single-step/tensorflow/mnist ディレクトリを開きます。

  2. Visual Studio Code のアクティビティ バーで、Azure アイコンを選択して Azure Machine Learning ビューを開きます。

  3. Azure Machine Learning ビューで、自分のサブスクリプション ノードを右クリックし、 [ワークスペースの作成] を選択します。

    Create workspace

  4. 仕様ファイルが表示されます。 次のオプションを使用して、仕様ファイルを構成します。

    $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 という名前のワークスペースが作成されます。 仕様ファイルに定義されている残りのオプションによって、ワークスペースのフレンドリ名、説明、およびタグが指定されます。

  5. 仕様ファイルを右クリックし、[AzureML: YAML の実行] を選択します。 リソースを作成するには、YAML 仕様ファイルで定義されている構成オプションを使用し、CLI (v2) を使用してジョブを送信します。 この時点で、Azure に対して、新しいワークスペースと依存リソースをアカウントに作成するように要求が行われます。 数分後、ご利用のサブスクリプションのノードに新しいワークスペースが表示されます。

  6. 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 のキュレーションされた環境」を参照してください。

トレーニング ジョブを送信するには:

  1. job.yml ファイルを開きます。
  2. テキスト エディターでファイルを右クリックし、[AzureML: YAML の実行] を選択します。

この時点で、ワークスペースで選択したコンピューティング先で実験を実行するための要求が Azure に送信されます。 このプロセスには数分かかります。 トレーニング ジョブの実行にかかる時間は、コンピューティングの種類やトレーニング データのサイズなど、いくつかの要因によって左右されます。 実験の進行状況を追跡するには、現在の実行ノードを右クリックし、[View Job in Azure portal](Azure portal でジョブを表示する) を選択します。

外部の Web サイトを開くよう要求するダイアログが表示されたら、 [開く] を選択します。

Track experiment progress

モデルのトレーニングが完了すると、実行ノードの横にある状態ラベルが "完了" に更新されます。

次のステップ