次の方法で共有


モデルをプロファイルしてリソース使用状況を判断する

適用対象:Azure CLI ml 拡張機能 v1Python SDK azureml v1

重要

この記事では、Azure Machine Learning SDK v1 の使用に関する情報を提供します。 SDK v1 は 2025 年 3 月 31 日の時点で非推奨となり、サポートは 2026 年 6 月 30 日に終了します。 SDK v1 は、その日付までインストールして使用できます。

2026 年 6 月 30 日より前に SDK v2 に移行することをお勧めします。 SDK v2 の詳細については、「 Azure Machine Learning Python SDK v2SDK v2 リファレンスとは」を参照してください。

この記事では、モデルを Web サービスとしてデプロイするときにモデルに割り当てる必要がある CPU とメモリの量を判断するために、モデルに機械学習をプロファイリングする方法について説明します。

重要

この記事は、CLI v1 と SDK v1 に適用されます。 このプロファイリング手法は、CLI または SDK の v2 では使用できません。

重要

この記事の Azure CLI コマンドの一部では、Azure Machine Learning 用に azure-cli-ml、つまり v1 の拡張機能を使用しています。 v1 拡張機能のサポートは、2025 年 9 月 30 日に終了します。 その日付まで、v1 拡張機能をインストールして使用できます。

2025 年 9 月 30 日より前に、ml (v2) 拡張機能に移行することをお勧めします。 v2 拡張機能の詳細については、「Azure Machine Learning CLI 拡張機能と Python SDK v2」を参照してください。

前提条件

この記事では、モデルをトレーニングして Azure Machine Learning に登録することを前提としています。 Azure Machine Learning での scikit-learn モデルのトレーニングと登録の例については、こちらのサンプル チュートリアルを参照してください。

制限事項

  • ワークスペースの Azure Container Registry (ACR) が仮想ネットワークの背後にある場合、プロファイリングは機能しません。

プロファイラーの実行

モデルを登録し、デプロイに必要なその他のコンポーネントを準備したら、デプロイされたサービスに必要な CPU とメモリを決定できます。 モデルを実行して CPU 使用率、メモリ使用率、応答の待機時間などの情報を返す、サービスのプロファイル テストを行います。 また、リソースの使用状況に基づいて CPU とメモリに関する推奨事項も提示されます。

モデルをプロファイリングするには、次のものが必要です。

  • 登録済みのモデル。
  • エントリ スクリプトと推論環境の定義に基づく推論構成。
  • 単一列の表形式のデータセット。各行には、サンプルの要求データを表す文字列が含まれています。

重要

Azure Machine Learning では、要求データが文字列であると想定されるサービスのプロファイリングのみがサポートされています。たとえば、文字列シリアル化された json、テキスト、文字列シリアル化されたイメージなどです。データセット (文字列) の各行の内容が HTTP 要求の本文に格納され、スコア付けのためにモデルをカプセル化するサービスに送信されます。

重要

ChinaEast2 リージョンと USGovArizona リージョンでは、最大 2 つの CPU のプロファイルのみがサポートされています。

次に示す例は、入力データセットを構築して、受信要求データにシリアル化された json が含まれるサービスをプロファイリングする方法を示しています。 ここでは、要求データの内容が同じである 100 個のインスタンスに基づくデータセットを作成しました。 実際のシナリオでは、モデル リソースの使用状況/動作が入力に依存している場合は特に、さまざまな入力を含むより規模の大きいデータセットを使用することをお勧めします。

適用対象:Azure Machine Learning SDK v1 for Python

import json
from azureml.core import Datastore
from azureml.core.dataset import Dataset
from azureml.data import dataset_type_definitions

input_json = {'data': [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
                       [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]]}
# create a string that can be utf-8 encoded and
# put in the body of the request
serialized_input_json = json.dumps(input_json)
dataset_content = []
for i in range(100):
    dataset_content.append(serialized_input_json)
dataset_content = '\n'.join(dataset_content)
file_name = 'sample_request_data.txt'
f = open(file_name, 'w')
f.write(dataset_content)
f.close()

# upload the txt file created above to the Datastore and create a dataset from it
data_store = Datastore.get_default(ws)
data_store.upload_files(['./' + file_name], target_path='sample_request_data')
datastore_path = [(data_store, 'sample_request_data' +'/' + file_name)]
sample_request_data = Dataset.Tabular.from_delimited_files(
    datastore_path, separator='\n',
    infer_column_types=True,
    header=dataset_type_definitions.PromoteHeadersBehavior.NO_HEADERS)
sample_request_data = sample_request_data.register(workspace=ws,
                                                   name='sample_request_data',
                                                   create_new_version=True)

サンプル要求データを含むデータセットを準備したら、推論構成を作成します。 推論構成は、score.py と環境定義に基づきます。 次の例に、推論構成を作成してプロファイリングを実行する方法を示します。

from azureml.core.model import InferenceConfig, Model
from azureml.core.dataset import Dataset


model = Model(ws, id=model_id)
inference_config = InferenceConfig(entry_script='path-to-score.py',
                                   environment=myenv)
input_dataset = Dataset.get_by_name(workspace=ws, name='sample_request_data')
profile = Model.profile(ws,
            'unique_name',
            [model],
            inference_config,
            input_dataset=input_dataset)

profile.wait_for_completion(True)

# see the result
details = profile.get_details()

適用対象:Azure CLI ml 拡張機能 v1

次のコマンドでは、CLI を使用してモデルをプロファイルする方法を示します。

az ml model profile -g <resource-group-name> -w <workspace-name> --inference-config-file <path-to-inf-config.json> -m <model-id> --idi <input-dataset-id> -n <unique-name>

ヒント

プロファイリングによって返された情報を保持するには、モデルのタグまたはプロパティを使用します。 タグまたはプロパティを使用すると、データがモデルと共にモデル レジストリに格納されます。 次の例は、requestedCpu および requestedMemoryInGb 情報を含む新しいタグを追加する方法を示しています。

model.add_tags({'requestedCpu': details['requestedCpu'],
                'requestedMemoryInGb': details['requestedMemoryInGb']})
az ml model profile -g <resource-group-name> -w <workspace-name> --i <model-id> --add-tag requestedCpu=1 --add-tag requestedMemoryInGb=0.5

次のステップ