Azure Machine Learning スタジオを使用して Mistral モデルをデプロイする方法

この記事では、Azure Machine Learning スタジオを使用して、従量課金制トークンベースでサーバーレス API として Mistral モデル ファミリをデプロイする方法を学びます。

Mistral AI では、Azure Machine Learning スタジオで 2 つのモデルのカテゴリが提供されています。 これらのモデルは、モデル カタログで使用できます。

  • Premium モデル: Mistral Large (2402)、Mistral Large (2407)、Mistral Small。
  • オープン モデル: Mistral Nemo、Mixtral-8x7B-Instruct-v01、Mixtral-8x7B-v01、Mistral-7B-Instruct-v01、Mistral-7B-v01。

すべての Premium モデルとMistral Nemo (オープン モデル) は、トークンベースの従量課金制で、サーバーレス API としてデプロイできます。 その他のオープン モデルは、独自の Azure サブスクリプションのマネージド コンピューティングにデプロイできます。

Mistral コレクションでフィルターに掛けて、モデル カタログ内の Mistral モデル ファミリを閲覧できます。

Mistral モデル ファミリ

Mistral Large は、Mistral AI の最も先進的な大規模言語モデル (LLM) です。 最先端の推論機能と知識機能により、あらゆる言語ベースのタスクに使用できます。 Mistral Large モデルには次の 2 つのバリエーションがあります。

  • Mistral Large (2402)
  • Mistral Large (2407)

さらに、Mistral Large (2402) には次のいくつかの属性が含まれます。

  • RAG 専用。 長いコンテキスト ウィンドウ (最大 32K トークン) の途中で重要な情報が失われることはありません。
  • コーディングに強みがあります。 コード生成、レビュー、コメント。 すべての主要なコーディング言語をサポートしています。
  • 多言語仕様。 英語だけでなく、フランス語、ドイツ語、スペイン語、イタリア語でもクラス最高のパフォーマンスを発揮します。 他にも数十種類の言語がサポートされています。
  • 責任ある AI に準拠。 モデルに組み込まれた効率的なガードレールと、safe_mode オプションによる追加の安全層。

また、Mistral Large (2407) には次のいくつかの属性が含まれます。

  • 多言語仕様。 英語、フランス語、ドイツ語、スペイン語、イタリア語を含む数十種類の言語をサポート。
  • コーディングに習熟。 Python、Java、C、C++、JavaScript、Bash など、80 以上のコーディング言語をトレーニング済み。 また、Swift や Fortran など、より特殊な言語についてもトレーニング済み。
  • エージェント中心。 ネイティブ関数呼び出しと JSON 出力を使用したエージェント機能を所有。
  • 詳細な理由。 最先端の数学的機能と推論的機能の実証。

重要

現在、この機能はパブリック プレビュー段階にあります。 このプレビュー バージョンはサービス レベル アグリーメントなしで提供されており、運用環境のワークロードに使用することは推奨されません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。

詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

サーバーレス API として Mistral モデル ファミリをデプロイする

モデル カタログ内の特定のモデルは、従量課金制請求でサーバーレス API としてデプロイできます。 この種類のデプロイは、組織が必要とする企業レベルのセキュリティとコンプライアンスを維持しながら、サブスクリプションでホストせずに API としてモデルを使用する方法を提供します。 このデプロイ オプションでは、サブスクリプションからのクォータを必要としません。

Mistral Large (2402)Mistral Large (2407)Mistral Small、および Mistral Nemo は、Microsoft Azure Marketplace 経由で Mistral AI で提供される従量課金制のサーバーレス API としてデプロイできます。 Mistral AI は、これらのモデルの使用条件と価格を変更または更新できます。

前提条件

  • 有効な支払い方法を持つ Azure サブスクリプション。 無料または試用版の Azure サブスクリプションは機能しません。 Azure サブスクリプションを持っていない場合は、始めるために有料の Azure アカウントを作成してください。

  • Azure Machine Learning ワークスペース。 ワークスペースがない場合は、クイック スタート: ワークスペース リソースの作成に関する記事の手順を使用して作成してください。 Mistral ファミリのうちで対象になっているモデルに対するサーバーレス API のモデル デプロイ オファリングは、これらのリージョンで作成されたワークスペースでのみ利用できます。

    • 米国東部
    • 米国東部 2
    • 米国中北部
    • 米国中南部
    • 米国西部
    • 米国西部 3
    • スウェーデン中部

    サーバーレス API エンドポイントのデプロイをサポートする各モデルが利用できるリージョンの一覧については、「サーバーレス API エンドポイントのモデルが利用できるリージョン」を参照してください。

  • Azure ロールベースのアクセス制御 (Azure RBAC) は、Azure Machine Learning の操作に対するアクセスを許可するために使用されます。 この記事の手順を実行するには、ご自分のユーザー アカウントに、リソース グループの Azure AI 開発者ロールを割り当てる必要があります。 アクセス許可の詳細については、「Azure Machine Learning ワークスペースへのアクセスの管理」を参照してください。

新しいデプロイを作成する

次の手順は、Mistral Large (2402) のデプロイを示すものですが、モデル名を置き換えることで、同じ手順で Mistral Nemo や Mistral の Premium モデルもデプロイできます。

デプロイを作成するには:

  1. [Azure Machine Learning Studio] に移動します。

  2. モデルをデプロイするワークスペースを選択します。 サーバーレス API モデルのデプロイ オファリングを使用するには、ワークスペースが、前提条件にリストされているいずれかのリージョンに属している必要があります。

  3. Mistral Large (2402) モデルなど、デプロイするモデルをモデル カタログから選択します。

    別の方法として、ワークスペースに移動し、[エンドポイント]>[Serverless endpoints] (サーバーレス エンドポイント)>[作成] を選択して、デプロイを開始することもできます。

  4. モデル カタログのモデルの概要ページで [デプロイ] を選択し、そのモデルのサーバーレス API デプロイ ウィンドウを開きます。

  5. Microsoft の購入ポリシーに同意するチェック ボックスをオンにします。

    サーバーレス API としてモデルをデプロイする方法を示すスクリーンショット。

  6. デプロイ ウィザードで、[Azure Marketplace の使用条件] へのリンクを選び、使用条件の詳細を確認します。

  7. [Pricing and terms] (価格と条件) タブを選択して、選択したモデルの価格について確認することもできます。

  8. ワークスペースにモデルを初めてデプロイする場合は、特定のオファリング (たとえば、Mistral Large (2402) など) 用にワークスペースをサブスクライブする必要があります。 この手順では、前提条件に記載されているように、ご自分のアカウントにリソース グループに対する Azure AI 開発者ロールのアクセス許可が付与されている必要があります。 各ワークスペースには、特定の Azure Marketplace オファリングへのそれぞれのサブスクリプションがあり、これにより支出を制御および監視できます。 [サブスクライブしてデプロイ] を選択します。 現在、ワークスペース内の各モデルに対して 1 つのデプロイしかできません。

  9. 特定の Azure Marketplace オファリング用にワークスペースをサブスクライブすると、"同じ" ワークスペース内の "同じ" オファリングの以降のデプロイで再度サブスクライブする必要はありません。 このシナリオが当てはまる場合は、選択肢として [デプロイを続行] オプションが表示されます。

    既にオファリングに対してサブスクライブしているワークスペースを示すスクリーンショット。

  10. デプロイに名前を付けます。 この名前は、デプロイ API URL の一部になります。 この URL は、Azure リージョンごとに一意である必要があります。

    作成対象のデプロイの名前を表示する方法を示すスクリーンショット。

  11. 展開 を選択します。 デプロイが完了し、サーバーレス エンドポイント ページにリダイレクトされるまで待ちます。

  12. エンドポイントを選択してその [詳細] ページを開きます。

  13. [テスト] タブを選択して、モデルの操作を開始します。

  14. エンドポイントの詳細、URL、アクセス キーは、[ワークスペース]>[エンドポイント]>[Serverless endpoints] (サーバーレス エンドポイント) に移動することでいつでも確認できます。

従量課金制トークンベースの課金でサーバーレス API としてデプロイされる Mistral モデルの課金については、「サービスとしてデプロイされる Mistral モデル ファミリのコストとクォータに関する考慮事項」を参照してください。

サービスとして Mistral モデル ファミリを使用する

チャット API を使用して、Mistral モデルを使用できます。

  1. [ワークスペース] で、[エンドポイント]>[Serverless endpoints] (サーバーレス エンドポイント) を選択します。
  2. 作成した のデプロイを見つけて選びます。
  3. [ターゲット] URL と [キー] のトークン値をコピーします。
  4. ルート /chat/completions 上の Azure AI Model Inference API または /v1/chat/completions 上のネイティブ Mistral Chat API を使って API 要求を行います。

API の使用方法の詳細については、リファレンスのセクションを参照してください。

サービスとしてデプロイされる Mistral モデル ファミリのリファレンス

Mistral モデルは、ルート /chat/completions 上の Azure AI Model Inference API/v1/chat/completions 上のネイティブ Mistral Chat API の両方を受け入れます。

Azure AI Model Inference API

Azure AI Model Inference API スキーマについては、チャット入力候補のリファレンス記事を参照してください。OpenAPI 仕様は、エンドポイント自体から取得できます

Mistral Chat API

メソッド POST を使用して、/v1/chat/completions ルートに要求を送信します。

Request

POST /v1/chat/completions HTTP/1.1
Host: <DEPLOYMENT_URI>
Authorization: Bearer <TOKEN>
Content-type: application/json

要求スキーマ

ペイロードは、次のパラメーターを含む JSON 形式の文字列です:

キー Type Default 説明
messages string 既定値はありません。 この値は指定する必要があります。 モデルにプロンプトを表示するために使用するメッセージまたはメッセージの履歴。
stream boolean False ストリーミングを使用すると、生成されたトークンが使用可能になるたびに、データのみのサーバー送信イベントとして送信できます。
max_tokens integer 8192 完了で生成されるトークンの最大数。 プロンプトのトークン数と max_tokens の合計は、モデルのコンテキスト長を超えることはできません。
top_p float 1 核サンプリングと呼ばれる、温度によるサンプリングの代替の場合、モデルでは top_p 確率質量を持つトークンの結果が考慮されます。 したがって、0.1 は、上位 10% の確率質量を含むトークンのみが考慮されることを意味します。 一般に、top_ptemperature の両方ではなく、いずれかを変更することをお勧めします。
temperature float 1 使うサンプリング温度 (0 から 2)。 値が大きいほど、モデルはトークンの分布をより広くサンプルすることを意味します。 ゼロは、最長一致のサンプリングを意味します。 このパラメータと top_p のいずれかを変更することをお勧めしますが、両方の変更はお勧めしません。
ignore_eos boolean False EOS トークンを無視し、EOS トークンの生成後もトークンの生成を続行するかどうかを指定します。
safe_prompt boolean False すべての会話の前に安全プロンプトを挿入するかどうか。

messages オブジェクトには次のフィールドがあります:

キー Type Value
content string メッセージの内容。 すべてのメッセージにはコンテンツが必要です。
role string メッセージの作成者の役割。 systemuser、または assistant のいずれか。

要求の例

本文​​

{
    "messages":
    [
        { 
        "role": "system", 
        "content": "You are a helpful assistant that translates English to Italian."
        },
        {
        "role": "user", 
        "content": "Translate the following sentence from English to Italian: I love programming."
        }
    ],
    "temperature": 0.8,
    "max_tokens": 512,
}

応答スキーマ

応答ペイロードは、次のフィールドを持つディクショナリです。

キー Type 説明
id string チャット入力候補の一意識別子。
choices array 入力メッセージ用にモデルが生成した入力候補の一覧。
created integer 入力候補が作成されたときの Unix タイムスタンプ (秒単位)。
model string 入力候補に使用される model_id。
object string オブジェクトの種類。これは常に chat.completion です。
usage object 入力候補要求の使用状況の統計情報。

ヒント

ストリーミング モードでは、応答のチャンクごとに、ペイロード [DONE] によって終了される最後のチャンクを除き、finish_reason は常に null です。 各 choices オブジェクトで、messages のキーは delta で変更されます。

choices オブジェクトは、次のフィールドを持つディクショナリです。

キー Type 説明
index integer 選択肢インデックス。 best_of > 1 のとき、この配列内のインデックスは順序が整っていない可能性があり、0 から n-1 ではない可能性があります。
messages または delta string messages オブジェクトのチャットの入力候補結果。 ストリーミング モードを使用する場合は、 delta キーが使用されます。
finish_reason string モデルがトークンの生成を停止した理由。
- stop: モデルが自然な停止ポイント、または指定された停止シーケンスに達した場合。
- length: トークンの最大数に達した場合。
- content_filter: RAI がモデレートを行い、CMP がモデレーションを強制するとき
- content_filter_error: モデレーション中にエラーが発生し、応答を決定できなかった場合
- null: API 応答がまだ進行中であるか未完了の場合。
logprobs object 出力テキスト内の生成されたトークンのログ確率。

usage オブジェクトは、次のフィールドを持つディクショナリです。

キー Type Value
prompt_tokens integer プロンプト内のトークンの数。
completion_tokens integer 入力候補に生成されたトークンの数。
total_tokens integer トークンの合計数。

logprobs オブジェクトは、次のフィールドを持つディクショナリです:

キー Type Value
text_offsets arrayintegers 入力候補出力内の各トークンの位置またはインデックス。
token_logprobs arrayfloat top_logprobs 配列内のディクショナリから選択された logprobs
tokens arraystring 選択されたトークン。
top_logprobs arraydictionary ディクショナリの配列。 各ディクショナリでは、キーはトークンであり、値は prob です。

応答の例

次の JSON は応答の例です。

{
    "id": "12345678-1234-1234-1234-abcdefghijkl",
    "object": "chat.completion",
    "created": 2012359,
    "model": "",
    "choices": [
        {
            "index": 0,
            "finish_reason": "stop",
            "message": {
                "role": "assistant",
                "content": "Sure, I\'d be happy to help! The translation of ""I love programming"" from English to Italian is:\n\n""Amo la programmazione.""\n\nHere\'s a breakdown of the translation:\n\n* ""I love"" in English becomes ""Amo"" in Italian.\n* ""programming"" in English becomes ""la programmazione"" in Italian.\n\nI hope that helps! Let me know if you have any other sentences you\'d like me to translate."
            }
        }
    ],
    "usage": {
        "prompt_tokens": 10,
        "total_tokens": 40,
        "completion_tokens": 30
    }
}

推論のその他の例

サンプルの種類 サンプル ノートブック
CURL および Python Web 要求を使用した CLI webrequests.ipynb
OpenAI SDK (試験段階) openaisdk.ipynb
LangChain langchain.ipynb
Mistral AI mistralai.ipynb
LiteLLM litellm.ipynb

コストとクォータ

サービスとしてデプロイされる Mistral モデル ファミリのコストとクォータに関する考慮事項

サービスとしてデプロイされた Mistral モデルは、Mistral AI によって Azure Marketplace を通じて提供され、使用するために Azure Machine Learning スタジオと統合されます。 Azure Marketplace の価格は、モデルをデプロイするときに確認できます。

ワークスペースが Azure Marketplace から特定のモデル オファリングにサブスクライブするたびに、その消費に関連するコストを追跡するための新しいリソースが作成されます。 推論に関連するコストを追跡するために同じリソースが使用されますが、各シナリオを個別に追跡するために複数の測定値を使用できます。

コストを追跡する方法の詳細については、「Azure Marketplace を通じて提供されるモデルのコストを監視する」を参照してください。

クォータはデプロイごとに管理されます。 各デプロイのレート制限は、1 分あたり 200,000 トークン、1 分あたり 1,000 個の API 要求です。 ただし現在、ワークスペースのモデルごとにデプロイを 1 つに制限しています。 現在のレート制限がシナリオに十分でない場合は、Microsoft Azure サポートにお問い合わせください。

コンテンツのフィルター処理

従量課金制でサービスとしてデプロイされたモデルは、Azure AI Content Safety によって保護されます。 Azure AI Content Safety を有効にすると、プロンプトと入力候補の両方が、有害なコンテンツ出力の検出と防止を目的とした一連の分類モデルを通過します。 コンテンツ フィルタリング システムは、入力プロンプトと (出力される) 入力候補の両方で、有害な可能性があるコンテンツ特有のカテゴリを検出し、アクションを実行します。 Azure AI Content Safety の詳細を確認します。