Azure Machine Learning のしくみ: リソースとアセット

適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)

この記事は、Azure Machine Learning CLI と Python SDK (v2) の 2 番目のバージョンに適用されます。 バージョン 1 (v1) については、「Azure Machine Learning のしくみ: アーキテクチャと概念 (v1)」を参照してください

Azure Machine Learning には、機械学習タスクを実行するためのリソースとアセットがいくつか含まれています。 これらのリソースとアセットは、あらゆるジョブを実行するうえで必要となります。

  • リソース: 機械学習ワークフローを実行するために必要なセットアップ リソースやインフラストラクチャ リソース。 リソースには以下が含まれます。
  • アセット: Azure Machine Learning コマンドを使用して、またはトレーニング/スコアリングの実行の一部として作成されます。 アセットはバージョン管理され、Azure Machine Learning ワークスペースに登録できます。 具体的な内容を次に示します。

このドキュメントでは、これらのリソースとアセットの概要を簡単に説明します。

前提条件

この記事の Python SDK のコード例を使用するには:

  1. Python SDK v2 をインストールします

  2. Azure Machine Learning サブスクリプションへの接続を作成します。 例はすべて ml_client に依存しています。 ワークスペースを作成するには、接続にワークスペース名は必要ありません。まだない可能性があるためです。 この記事の他のすべての例では、ワークスペース名が接続に含まれている必要があります。

    # import required libraries
    from azure.ai.ml import MLClient
    from azure.ai.ml.entities import Workspace
    from azure.identity import DefaultAzureCredential
    
    # Enter details of your subscription
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
    
    # get a handle to the subscription (use this if you haven't created a workspace yet)
    ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group)
    
    # all other examples in this article require the connection to include workspace name
    workspace_name = "<WORKSPACE_NAME>"
    ml_client = ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace_name)
    

ワークスペース

ワークスペースは、Azure Machine Learning の最上位のリソースで、Azure Machine Learning を使用するときに作成するすべての成果物を操作するための一元的な場所を提供します。 ワークスペースには、スクリプトのログ、メトリック、出力、スナップショットなど、すべてのジョブの履歴が保持されます。 ワークスペースには、データストアやコンピューティングなどのリソースへの参照が格納されます。 また、モデル、環境、コンポーネント、データ アセットなど、すべてのアセットも保持されます。

ワークスペースを作成する

Python SDK v2 を使用してワークスペースを作成するには、次のコードを使用できます。

適用対象: Python SDK azure-ai-ml v2 (現行)

# specify the workspace details
ws = Workspace(
    name="my_workspace",
    location="eastus",
    display_name="My workspace",
    description="This example shows how to create a workspace",
    tags=dict(purpose="demo"),
)

ml_client.workspaces.begin_create(ws) # use MLClient to connect to the subscription and resource group and create workspace

この Jupyter Notebook では、SDK v2 を使用して Azure Machine Learning ワークスペースを作成する方法がさらに示されています。

Compute

コンピューティングとは、ジョブを実行したり、エンドポイントをホストしたりする、指定されたコンピューティング リソースのことです。 Azure Machine Learning は、次の種類のコンピューティングをサポートしています。

  • コンピューティング インスタンス - 完全に構成および管理される、クラウド上の開発環境。 このインスタンスは、トレーニングまたは推論コンピューティングとして、開発やテストに使用できます。 これは、クラウド上の仮想マシンのようなものです。
  • コンピューティング クラスター - クラウド上に CPU または GPU コンピューティング ノードのクラスターを簡単に作成できる、マネージド コンピューティング インフラストラクチャ。
  • サーバーレス コンピューティング - 即時にアクセスするコンピューティング クラスター。 サーバーレス コンピューティングを使うと、独自のクラスターを作成する必要がありません。 すべてのコンピューティング ライフサイクル管理は、Azure Machine Learning にオフロードされます。
  • 推論クラスター - トレーニング済みの機械学習モデルを Azure Kubernetes Service にデプロイするために使用されます。 Azure Machine Learning ワークスペースから Azure Kubernetes Service (AKS) クラスターを作成するか、既存の AKS クラスターをアタッチすることができます。
  • アタッチ型コンピューティング - 独自のコンピューティング リソースをワークスペースにアタッチし、トレーニングと推論に使用できます。

コンピューティング

Python SDK v2 を使用してコンピューティング クラスターを作成するには、次のコードを使用できます。

適用対象: Python SDK azure-ai-ml v2 (現行)

cluster_basic = AmlCompute(
    name="basic-example",
    type="amlcompute",
    size="STANDARD_DS3_v2",
    location="westus",
    min_instances=0,
    max_instances=2,
    idle_time_before_scale_down=120,
)
ml_client.begin_create_or_update(cluster_basic)

この Jupyter Notebook では、SDK v2 を使用してコンピューティングを作成する方法がさらに示されています。

データストア

Azure Machine Learning データストアでは、Azure のデータ ストレージへの接続情報が安全に保持されるため、ご自身のスクリプトでそのコードを書く必要はありません。 データストアを登録および作成すると、ストレージ アカウントに簡単に接続し、基になるストレージ サービスのデータにアクセスできます。 CLI v2 と SDK v2 では、次の種類のクラウドベース ストレージ サービスがサポートされています。

  • Azure BLOB コンテナー
  • Azure ファイル共有
  • Azure Data Lake
  • Azure Data Lake Gen2

データストアを作成する

Python SDK v2 を使用してデータストアを作成するには、次のコードを使用できます。

適用対象: Python SDK azure-ai-ml v2 (現行)

import AzureBlobDatastore

blob_datastore1 = AzureBlobDatastore(
    name="blob_example",
    description="Datastore pointing to a blob container.",
    account_name="mytestblobstore",
    container_name="data-container",
    credentials={
        "account_key": "XXXxxxXXXxXXXXxxXXXXXxXXXXXxXxxXxXXXxXXXxXXxxxXXxxXXXxXxXXXxxXxxXXXXxxxxxXXxxxxxxXXXxXXX"
    },
)
ml_client.create_or_update(blob_datastore1)

この Jupyter Notebook では、SDK v2 を使用してデータストアを作成する方法がさらに示されています。

データストアの使用の詳細については、「データ資産の作成と管理」を参照してください。

モデル

Azure Machine Learning モデルは、機械学習モデルと対応するメタデータを表すバイナリ ファイルで構成されます。 モデルは、ローカルまたはリモートのファイルやディレクトリから作成できます。 リモートの場所としては、httpswasbs、およびazureml がサポートされています。 作成されたモデルは、指定された名前とバージョンでワークスペース内で追跡されます。 Azure Machine Learning では、モデルのストレージ形式として次の 3 種類がサポートされています。

  • custom_model
  • mlflow_model
  • triton_model

モデル レジストリでのモデルの作成

モデルの登録によって、モデルを Azure クラウドに格納し、ワークスペースでバージョン管理できます。 モデルのレジストリは、トレーニングしたモデルの整理と追跡に役立ちます。

レジストリでモデルを作成する方法の詳細については、「Azure Machine Learning でモデルを操作する」をご覧ください。

環境

Azure Machine Learning 環境は、機械学習タスクが行われる環境をカプセル化したものです。 そこでは、トレーニングとスコアリングのスクリプトに関連する、ソフトウェア パッケージ、環境変数、およびソフトウェア設定を指定します。 環境は、Machine Learning ワークスペース内で管理およびバージョン管理されるエンティティです。 環境を使用することで、さまざまなコンピューティング先で再現、監査、移植できる機械学習ワークフローを実現できます。

環境の種類

Azure Machine Learning では、キュレーション環境とカスタム環境の 2 種類がサポートされています。

キュレートされた環境は Azure Machine Learning から提供され、既定でお使いのワークスペースで利用できます。 これらには、現状のまま使用する目的で、Python のパッケージと設定のコレクションが含まれていて、さまざまな機械学習フレームワークの使用を開始する助けとなります。 これらの事前に作成された環境を利用すると、デプロイ時間の短縮も可能です。 完全な一覧については、キュレーションされた環境に関する記事を参照してください。

カスタム環境では、ユーザーが環境を設定し、トレーニング スクリプトやスコアリング スクリプトに必要なパッケージとその他すべての依存関係をコンピューティングにインストールする必要があります。 Azure Machine Learning では以下のものを使用して独自の環境を作成できます

  • Docker イメージ
  • さらにカスタマイズするための conda YAML を含んだ基本 Docker イメージ
  • Docker ビルドのコンテキスト

Azure Machine Learning カスタム環境を作成する

Python SDK v2 を使用して環境を作成するには、「環境の作成」を参照してください。

この Jupyter Notebook では、SDK v2 を使用してカスタム環境を作成する方法がさらに示されています。

データ​​

Azure Machine Learning では、さまざまな種類のデータを利用できます。

  • URI (ローカル/クラウド ストレージ内の場所)
    • uri_folder
    • uri_file
  • テーブル (表形式データの抽象化)
    • mltable
  • プリミティブ
    • string
    • boolean
    • number

ほとんどのシナリオでは、URI (uri_folder および uri_file) を使用します。これは、ストレージをマウントするか、ノードにダウンロードすることで、ジョブ内のコンピューティング ノードのファイルシステムに簡単にマップできるストレージ内の場所です。

mltable は、AutoML ジョブ、並列ジョブ、およびいくつかの高度なシナリオで使用される表形式データの抽象化です。 Azure Machine Learning を使用し始めたばかりで、AutoML を使用していない場合は、URI から始めることを強くお勧めします。

コンポーネント

Azure Machine Learning コンポーネントは、機械学習パイプラインで 1 つのステップを実行する自己格納型のコードです。 コンポーネントは、高度な機械学習パイプラインの構成要素です。 コンポーネントは、データ処理、モデル トレーニング、モデル スコアリングなどのタスクを実行できます。 コンポーネントは関数に類似しており、名前とパラメーターを持ち、入力を予想し、出力を返します。

次の手順