APPLIES TO:
Azure CLI ml 拡張機能 v1
Python SDK azureml v1
重要
この記事では、Azure Machine Learning SDK v1 の使用に関する情報を提供します。 SDK v1 は、2025 年 3 月 31 日の時点で非推奨です。 サポートは 2026 年 6 月 30 日に終了します。 SDK v1 は、その日付までインストールして使用できます。 SDK v1 を使用する既存のワークフローは、サポート終了日以降も引き続き動作します。 ただし、製品のアーキテクチャの変更が発生した場合に、セキュリティ リスクや破壊的変更にさらされる可能性があります。
2026 年 6 月 30 日より前に SDK v2 に移行することをお勧めします。 SDK v2 の詳細については、「Azure Machine Learning CLI と Python SDK v2」および「SDK v2 リファレンス」を参照してください。
この記事では、モデルを Web サービスとしてデプロイするときにモデルに割り当てる必要がある CPU とメモリの量を判断するために、モデルに機械学習をプロファイリングする方法について説明します。
重要
この記事は、CLI v1 と SDK v1 に適用されます。 このプロファイリング手法は、CLI または SDK の v2 では使用できません。
重要
この記事のAzure CLIコマンドの一部では、Azure Machine Learningに azure-cli-ml(v1) 拡張機能を使用します。 CLI v1 のサポートは 2025 年 9 月 30 日に終了しました。 Microsoft は、このサービスのテクニカル サポートや更新プログラムを提供しなくなります。 CLI v1 を使用する既存のワークフローは、サポート終了日以降も引き続き動作します。 ただし、製品のアーキテクチャの変更が発生した場合に、セキュリティ リスクや破壊的変更にさらされる可能性があります。
できるだけ早く ml (v2) 拡張機能に移行することをお勧めします。 v2 拡張機能の詳細については、「
前提条件
この記事では、モデルをトレーニングし、Azure Machine Learningに登録することを前提としています。 scikit-learn モデルのトレーニングとAzure Machine Learningへの登録の例については>サンプル チュートリアルを参照してください。
制限事項
- ワークスペースの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()
次のコマンドでは、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
次のステップ
- 失敗したデプロイのトラブルシューティング
Azure Kubernetes Service - Web サービスを使用するクライアント アプリケーションを作成する
- Web サービスを更新する
- カスタム Docker イメージを使用してモデルをデプロイする方法
TLS を使用して、Azure Machine Learning - Application Insights を使用してAzure Machine Learning モデルを監視します
- モデル デプロイのイベント アラートおよびトリガーを作成する