コードを使用してマネージド コンピューティング デプロイをデプロイおよび推論する方法

AI Studio モデルカタログには 1,600 を超えるモデルが用意されており、これらのモデルをデプロイする最も一般的な方法は、マネージド オンライン デプロイとも呼ばれるマネージド コンピューティング デプロイ オプションを使用することです。

大規模言語モデル (LLM) をデプロイすると、Web サイト、アプリケーション、またはその他の運用環境で使用できるようになります。 デプロイには通常、サーバーまたはクラウドでモデルをホストし、ユーザーがモデルと対話するための API またはその他のインターフェイスを作成することが含まれます。 Chat や Copilot などの生成 AI アプリケーションのリアルタイム推論のためにデプロイを呼び出すことができます。

この記事では、Azure Machine Learning SDK を使用してモデルをデプロイする方法について説明します。 この記事では、デプロイされたモデルで推論を実行する方法についても説明します。

モデル ID を取得する

Azure Machine Learning SDK を使用してマネージド コンピューティング モデルをデプロイできますが、まず、モデルカタログを参照し、デプロイに必要なモデル ID を取得しましょう。

  1. AI Studio にサインインし、[ホーム] ページに移動します。

  2. 左側のサイドバーから [モデルカタログ] を選択します。

  3. [デプロイ オプション] フィルターで、[マネージド コンピューティング] を選択します。

    カタログ内のマネージド コンピューティング モデルでフィルター処理する方法を示すスクリーンショット。

  4. モデルを選択します。

  5. 選択したモデルの詳細ページからモデル ID をコピーします。 次のようになります。azureml://registries/azureml/models/deepset-roberta-base-squad2/versions/16

モデルをデプロイする

モデルをデプロイしましょう。

まず、Azure Machine Learning SDK をインストールする必要があります。

pip install azure-ai-ml
pip install azure-identity

このコードを使用して、Azure Machine Learning で認証し、クライアント オブジェクトを作成します。 プレースホルダーを、サブスクリプション ID、リソース グループ名、AI Studio プロジェクト名に置き換えます。

from azure.ai.ml import MLClient
from azure.identity import InteractiveBrowserCredential

client = MLClient(
    credential=InteractiveBrowserCredential,
    subscription_id="your subscription name goes here",
    resource_group_name="your resource group name goes here",
    workspace_name="your project name goes here",
)

マネージド コンピューティング デプロイ オプションでは、モデル デプロイの前にエンドポイントを作成する必要があります。 エンドポイントは、複数のモデル デプロイを格納できるコンテナーと考えることができます。 エンドポイント名はリージョン内で一意である必要があるため、この例ではタイムスタンプを使用して一意のエンドポイント名を作成します。

import time, sys
from azure.ai.ml.entities import (
    ManagedOnlineEndpoint,
    ManagedOnlineDeployment,
    ProbeSettings,
)

# Make the endpoint name unique
timestamp = int(time.time())
online_endpoint_name = "customize your endpoint name here" + str(timestamp)

# Create an online endpoint
endpoint = ManagedOnlineEndpoint(
    name=online_endpoint_name,
    auth_mode="key",
)
workspace_ml_client.begin_create_or_update(endpoint).wait()

デプロイを作成します。 モデル ID はモデルカタログで確認できます。

model_name = "azureml://registries/azureml/models/deepset-roberta-base-squad2/versions/16" 

demo_deployment = ManagedOnlineDeployment(
    name="demo",
    endpoint_name=online_endpoint_name,
    model=model_name,
    instance_type="Standard_DS3_v2",
    instance_count=2,
    liveness_probe=ProbeSettings(
        failure_threshold=30,
        success_threshold=1,
        timeout=2,
        period=10,
        initial_delay=1000,
    ),
    readiness_probe=ProbeSettings(
        failure_threshold=10,
        success_threshold=1,
        timeout=10,
        period=10,
        initial_delay=1000,
    ),
)
workspace_ml_client.online_deployments.begin_create_or_update(demo_deployment).wait()
endpoint.traffic = {"demo": 100}
workspace_ml_client.begin_create_or_update(endpoint).result()

デプロイを推論する

推論をテストするには、サンプル json データが必要です。 次の例を参考にして、sample_score.json を作成します。

{
  "inputs": {
    "question": [
      "Where do I live?",
      "Where do I live?",
      "What's my name?",
      "Which name is also used to describe the Amazon rainforest in English?"
    ],
    "context": [
      "My name is Wolfgang and I live in Berlin",
      "My name is Sarah and I live in London",
      "My name is Clara and I live in Berkeley.",
      "The Amazon rainforest (Portuguese: Floresta Amaz\u00f4nica or Amaz\u00f4nia; Spanish: Selva Amaz\u00f3nica, Amazon\u00eda or usually Amazonia; French: For\u00eat amazonienne; Dutch: Amazoneregenwoud), also known in English as Amazonia or the Amazon Jungle, is a moist broadleaf forest that covers most of the Amazon basin of South America. This basin encompasses 7,000,000 square kilometres (2,700,000 sq mi), of which 5,500,000 square kilometres (2,100,000 sq mi) are covered by the rainforest. This region includes territory belonging to nine nations. The majority of the forest is contained within Brazil, with 60% of the rainforest, followed by Peru with 13%, Colombia with 10%, and with minor amounts in Venezuela, Ecuador, Bolivia, Guyana, Suriname and French Guiana. States or departments in four nations contain \"Amazonas\" in their names. The Amazon represents over half of the planet's remaining rainforests, and comprises the largest and most biodiverse tract of tropical rainforest in the world, with an estimated 390 billion individual trees divided into 16,000 species."
    ]
  }
}

sample_score.json を使用して推論してみましょう。 サンプル json ファイルを保存した場所に基づいて場所を変更します。

scoring_file = "./sample_score.json" 
response = workspace_ml_client.online_endpoints.invoke(
    endpoint_name=online_endpoint_name,
    deployment_name="demo",
    request_file=scoring_file,
)
response_json = json.loads(response)
print(json.dumps(response_json, indent=2))

デプロイ エンドポイントを削除する

AI Studio でデプロイを削除するには、デプロイの詳細ページの上部パネルにある [削除] ボタンを選択します。

クォータの考慮事項

リアルタイム エンドポイントを使用した推論のデプロイと実行には、リージョンごとにサブスクリプションに割り当てられている仮想マシン (VM) コア クォータを使用します。 AI Studio にサインアップすると、リージョンで使用可能な複数の VM ファミリに対する既定の VM クォータを受け取ります。 クォータ制限に達するまで、デプロイを作成し続けることができます。 その後は、クォータの引き上げを要求できます。

次のステップ