次の方法で共有


Azure AI Model Inference API | Azure Machine Learning

Azure AI Model Inference は、基本モデルの共通の機能セットを公開する API であり、開発者がさまざまなモデルセットからの予測を一定かつ一貫した方法で利用するために使用できます。 開発者は、使用している基になるコードを変更することなく、Azure AI Foundry ポータルにデプロイされたさまざまなモデルと対話できます。

重要

この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 プレビュー バージョンはサービス レベル アグリーメントなしで提供されています。運用環境のワークロードに使用することはお勧めできません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

メリット

言語モデルなどの基本モデルは、近年、実に顕著な進歩を遂げています。 これらの進歩は、自然言語処理やコンピューター ビジョンなど、さまざまな分野に革命をもたらしており、チャットボット、仮想アシスタント、言語翻訳サービスなどのアプリケーションを有効にしています。

基本モデルは特定のドメインに優れていますが、一定の機能セットがありません。 一部のモデルは特定のタスクにより適しており、同じタスク全体であっても、モデルによっては、問題に 1 つの方法でアプローチするものもあれば、別の方法でアプローチするものもあります。 開発者は、以下を可能にするために適切なジョブに適切なモデルを使用し、この多様性の利点を得ることができます。

  • 特定のダウンストリーム タスクのパフォーマンスを向上させる。
  • より簡単なタスクにより効率的なモデルを使用する。
  • 特定のタスクでより迅速に実行できるより小さなモデルを使用する。
  • 複数のモデルを作成してインテリジェントなエクスペリエンスを開発する。

基本モデルを統一した方法で利用することで、開発者は移植性を犠牲にしたり、基となるコードを変更したりすることなく、これらすべての利点を実現できます。

可用性

Azure AI Model Inference API は次のモデルで使用できます。

サーバーレス API エンドポイントにデプロイされたモデル:

マネージド推論へのモデルのデプロイ:

この API は、Azure OpenAI モデルのデプロイと互換性があります。

Note

Azure AI モデル推論 API は、2024 年 6 月 24 日以降にデプロイされたモデルのマネージド推論 (マネージド オンライン エンドポイント) で利用できます。 API を前進させるために、モデルがその日付より前にデプロイされている場合は、エンドポイントを再デプロイします。

機能

次のセクションでは、この API で公開される機能の一部について説明します。 この API の完全な仕様については、リファレンス セクションを参照してください。

モダリティ

この API は、開発者が次のモダリティに対して予測を使用する方法を示します。

推論 SDK のサポート

選択した言語で合理化された推論クライアントを使用して、Azure AI モデル推論 API を実行しているモデルからの予測を使用できます。

pip のように、パッケージ マネージャーを使用してパッケージ azure-ai-inference をインストールします。

pip install azure-ai-inference

その後、パッケージを使用してモデルを使用できます。 次の例では、チャット入力候補を使用してクライアントを作成する方法を示します。

import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential

client = ChatCompletionsClient(
    endpoint=os.environ["AZUREAI_ENDPOINT_URL"],
    credential=AzureKeyCredential(os.environ["AZUREAI_ENDPOINT_KEY"]),
)

Entra ID をサポートするエンドポイントを使用している場合は、次のようにクライアントを作成できます。

import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import DefaultAzureCredential

client = ChatCompletionsClient(
    endpoint=os.environ["AZUREAI_ENDPOINT_URL"],
    credential=DefaultAzureCredential(),
)

サンプルを確認し、API リファレンス ドキュメントを参照して、作業を開始してください。

機能拡張

Azure AI Model Inference API では、モデルがサブスクライブできる一連のモダリティとパラメーターが指定されます。 ただし、一部のモデルには、API によって示される機能が追加されている場合があります。 このような場合、この API を使用すると、開発者はそれらをペイロードに追加のパラメーターとして渡すことができます。

ヘッダー extra-parameters: pass-through を設定することで、この API は不明なパラメーターを基になるモデルに直接渡そうとします。 モデルでそのパラメーターを処理できる場合、要求は完了します。

次の例は、Azure AI Model Inference API で指定されていない、Mistral-Large でサポートされる safe_prompt パラメーターを渡す要求を示しています。

response = client.complete(
    messages=[
        SystemMessage(content="You are a helpful assistant."),
        UserMessage(content="How many languages are in the world?"),
    ],
    model_extras={
        "safe_mode": True
    }
)

print(response.choices[0].message.content)

ヒント

Azure AI 推論 SDK を使用している場合、model_extras を使用すると、extra-parameters: pass-through によって要求が自動的に構成されます。

Note

extra-parameters の既定値は error であり、ペイロードに追加のパラメーターが指定された場合にエラーが返されます。 また、要求で不明なパラメーターを削除するように extra-parameters: drop を設定することもできます。 この機能は、モデルではサポートされないことがわかっている追加のパラメーターを使用して要求を送信することになったが、この要求をどうしても完了する必要がある場合に使用します。 この一般的な例では、seed パラメーターを示しています。

さまざまな機能セットを持つモデル

Azure AI Model Inference API は一般的な機能セットを示しますが、各モデルでそれらを実装するかどうかを決めることができます。 モデルで特定のパラメーターをサポートできない場合は、特定のエラーが返されます。

次の例は、パラメーター reponse_format を示し、JSON 形式で応答を要求するチャット入力候補要求の応答を示しています。 この例では、モデルでそのような機能はサポートされていないため、エラー 422 がユーザーに返されます。

import json
from azure.ai.inference.models import SystemMessage, UserMessage, ChatCompletionsResponseFormatJSON
from azure.core.exceptions import HttpResponseError

try:
    response = client.complete(
        messages=[
            SystemMessage(content="You are a helpful assistant."),
            UserMessage(content="How many languages are in the world?"),
        ],
        response_format=ChatCompletionsResponseFormatJSON()
    )
except HttpResponseError as ex:
    if ex.status_code == 422:
        response = json.loads(ex.response._content.decode('utf-8'))
        if isinstance(response, dict) and "detail" in response:
            for offending in response["detail"]:
                param = ".".join(offending["loc"])
                value = offending["input"]
                print(
                    f"Looks like the model doesn't support the parameter '{param}' with value '{value}'"
                )
    else:
        raise ex

ヒント

プロパティ detail.loc を調べて、問題のあるパラメーターの場所を把握し、detail.input を調べて、要求で渡された値を確認できます。

コンテンツの安全性

Azure AI モデル推論 API は、Azure AI Content Safety をサポートしています。 Azure AI Content Safety をオンにしてデプロイを使用する場合、入力と出力は、有害なコンテンツの出力を検出して防ぐことを目的とした一連の分類モデルを通過します。 コンテンツ フィルタリング (プレビュー) システムは、入力プロンプトと出力される入力候補の両方で、有害な可能性があるコンテンツ特有のカテゴリを検出し、アクションを実行します。

次の例は、コンテンツの安全性をトリガーしたチャット入力候補要求に対する応答を示しています。

from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage
from azure.core.exceptions import HttpResponseError

try:
    response = client.complete(
        messages=[
            SystemMessage(content="You are an AI assistant that helps people find information."),
            UserMessage(content="Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."),
        ]
    )

    print(response.choices[0].message.content)

except HttpResponseError as ex:
    if ex.status_code == 400:
        response = json.loads(ex.response._content.decode('utf-8'))
        if isinstance(response, dict) and "error" in response:
            print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
        else:
            raise ex
    else:
        raise ex

作業の開始

Azure AI モデル推論 API は現在、サーバーレス API エンドポイントやマネージド オンライン エンドポイントとしてデプロイされた特定のモデルでサポートされています。 サポート対象のモデルのいずれかをデプロイし、まったく同じコードを使用して予測を使用します。

クライアント ライブラリ azure-ai-inference では、Azure AI Foundry と Azure Machine Learning スタジオによってデプロイされた AI モデルの推論 (チャット入力候補を含む) が行われます。 サーバーレス API エンドポイントとマネージド コンピューティング エンドポイント (旧称マネージド オンライン エンドポイント) がサポートされています。

サンプルを確認し、API リファレンス ドキュメントを参照して、作業を開始してください。