Azure Machine Learning スタジオを使用して、JAIS をデプロイする方法
この記事では、Azure Machine Learning スタジオを使用し、従量課金制の請求を利用するサービスとして JAIS モデルをデプロイする方法について説明します。
JAIS モデルは、Azure Machine Learning スタジオで、サービスとしてのモデルを使用した従量課金制トークン ベースの課金で利用できます。
JAIS コレクションをフィルター処理することで、モデル カタログ内で JAIS モデルを見つけることができます。
前提条件
有効な支払い方法を持つ Azure サブスクリプション。 無料または試用版の Azure サブスクリプションは機能しません。 Azure サブスクリプションを持っていない場合は、始めるために有料の Azure アカウントを作成してください。
Azure Machine Learning ワークスペース。 これらを所有していない場合は、クイックスタート: ワークスペース リソースの作成に関する記事の手順に従って作成してください。 JAIS 用のサーバーレス API モデル デプロイ オファリングは、次のリージョン内に作成されたワークスペースでのみ使用できます。
- 米国東部
- 米国東部 2
- 米国中北部
- 米国中南部
- 米国西部
- 米国西部 3
- スウェーデン中部
サーバーレス API エンドポイントのデプロイをサポートする各モデルが利用できるリージョンの一覧については、「サーバーレス API エンドポイントのモデルが利用できるリージョン」を参照してください。
Azure AI Studio での操作に対するアクセスを許可するには、Azure ロールベースのアクセス制御 (Azure RBAC) を使います。 この記事の手順を実行するには、ご自分のユーザー アカウントに、リソース グループの Azure AI 開発者ロールを割り当てる必要があります。 アクセス許可について詳しくは、「Azure AI Studio でのロールベースのアクセス制御」をご覧ください。
JAIS 30b チャット
JAIS 30b チャットは、アラビア語と英語の自己回帰バイリンガル LLM です。 調整バージョンは、教師あり微調整 (SFT) を使用します。 このモデルは、アラビア語と英語の両方のプロンプト応答ペアで微調整されます。 微調整データセットには、さまざまなドメインにわたる幅広い命令データが含まれていました。 このモデルは、質問への回答、コードの生成、テキスト コンテンツに対する推論などの一般的なタスクを幅広くカバーします。 アラビア語のパフォーマンスを向上させるために、Core42 チームは社内のアラビア語データセットを開発し、いくつかのオープンソースの英語命令をアラビア語に翻訳しました。
"コンテキスト長:" JAIS 30b チャットは、8K のコンテキスト長をサポートします。
"入力:" モデルの入力はテキストのみです。
"出力:" モデルはテキストのみを生成します。
重要
現在、この機能はパブリック プレビュー段階にあります。 このプレビュー バージョンはサービス レベル アグリーメントなしで提供されており、運用環境のワークロードに使用することは推奨されません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。
詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
従量課金制を使用してデプロイする
モデル カタログ内の特定のモデルは、従量課金制でサービスとしてデプロイでき、組織が必要とする企業のセキュリティとコンプライアンスを維持しながら、サブスクリプションでホストせずに API として使用する方法を提供します。 このデプロイ オプションでは、サブスクリプションからのクォータを必要としません。
前述の JAIS 30b チャット モデルは、従量課金制のサービスとしてデプロイでき、Microsoft Azure Marketplace 経由で Core42 によって提供されます。 Core42 は、このモデルの使用条件と価格を変更または更新することがあります。
新しいデプロイを作成する
デプロイを作成するには:
[Azure Machine Learning Studio] に移動します。
モデルをデプロイするワークスペースを選択します。 従量課金制のモデル デプロイのオファリングを使用するには、対象のワークスペースが EastUS2 またはスウェーデン中部リージョンに属している必要があります。
JAIS を検索し、モデル カタログから Jais-30b-chat モデルを選びます。
モデル カタログのモデルの概要ページで、[デプロイ] を選びます。
デプロイ ウィザードで、[Azure Marketplace の使用条件] へのリンクを選び、使用条件の詳細を確認します。
[Pricing and terms] (価格と条件) タブを選択して、選択したモデルの価格について確認することもできます。
ワークスペースにモデルを初めてデプロイする場合は、そのモデルの特定のオファリングに対し、ワークスペースをサブスクライブする必要があります。 この手順では、前提条件に記載されているように、ご自分のアカウントにリソース グループに対する Azure AI 開発者ロールのアクセス許可が付与されている必要があります。 各ワークスペースには、特定の Azure Marketplace オファリングへのそれぞれのサブスクリプションがあり、これにより支出を制御および監視できます。 [サブスクライブしてデプロイ] を選択します。 現在、ワークスペース内の各モデルに対して 1 つのデプロイしかできません。
特定の Azure Marketplace オファリング用にワークスペースをサブスクライブすると、"同じ" ワークスペース内の "同じ" オファリングの以降のデプロイで再度サブスクライブする必要はありません。 このシナリオが当てはまる場合は、[デプロイを続行する] オプションを選択できます。
デプロイに名前を付けます。 この名前は、デプロイ API URL の一部になります。 この URL は、Azure リージョンごとに一意である必要があります。
展開 を選択します。 デプロイが完了し、サーバーレス エンドポイント ページにリダイレクトされるまで待ちます。
エンドポイントを選択してその [詳細] ページを開きます。
[テスト] タブを選択して、モデルの操作を開始します。
エンドポイントの詳細、URL、アクセス キーは、[ワークスペース]>[エンドポイント]>[Serverless endpoints] (サーバーレス エンドポイント) に移動することでいつでも確認できます。
ターゲット URL とシークレット キーを書き留めます。 API の使用方法の詳細については、リファレンスのセクションを参照してください。
従量課金制でデプロイされたモデルの課金については、「サービスとしてデプロイされる JAIS モデルのコストとクォータに関する考慮事項」を参照してください。
JAIS 30b チャット モデルをサービスとして使用する
これらのモデルは、チャット API を使って使用できます。
ワークスペースで、左側にある [エンドポイント] タブを選びます。
[Serverless endpoints] (サーバーレス エンドポイント) タブに移動します。
JAIS 30b チャットのデプロイを選びます。
[テスト] タブでデプロイをテストします。
API を使用するために、[ターゲット] URL と [キー] の値をコピーします。
API の使用方法の詳細については、リファレンスのセクションを参照してください。
サービスとしてデプロイされた JAIS のチャット API リファレンス
v1/chat/completions
要求
POST /v1/chat/completions HTTP/1.1
Host: <DEPLOYMENT_URI>
Authorization: Bearer <TOKEN>
Content-type: application/json
v1/chat/completions の要求スキーマ
JAIS 30b チャットは、v1/chat/completions
応答推論呼び出しについて次のパラメーターを受け付けます。
プロパティ | Type | Default | 説明 |
---|---|---|---|
messages |
array |
None |
モデルが応答するテキスト入力。 |
max_tokens |
integer |
None |
モデルが応答の一部として生成するトークンの最大数。 注: 値を小さく設定すると、生成が不完全になる可能性があります。 指定しない場合、シーケンスの最後までトークンが生成されます。 |
temperature |
float |
0.3 |
モデルのランダム性を制御します。 値が小さいほどモデルが決定論的になり、値が大きいほどモデルがランダムになります。 |
top_p |
float |
None |
中核サンプリング用に保持するパラメーターである、最高確率ボキャブラリ トークンの累積確率 (既定値は null)。 |
top_k |
integer |
None |
top-k フィルタリング用に保持する最高確率のボキャブラリ トークンの数 (既定値は null)。 |
システム メッセージまたはユーザー メッセージでは次のプロパティがサポートされます。
プロパティ | Type | Default | 説明 |
---|---|---|---|
role |
enum |
必須 | role=system または role=user 。 |
content |
string |
必須 | モデルが応答するテキスト入力。 |
アシスタント メッセージでは、次のプロパティがサポートされます。
プロパティ | Type | Default | 説明 |
---|---|---|---|
role |
enum |
必須 | role=assistant |
content |
string |
必須 | アシスタント メッセージのコンテンツ。 |
v1/chat/completions の応答スキーマ
応答ペイロードは、次のフィールドを持つディクショナリです:
キー | Type | 説明 |
---|---|---|
id |
string |
チャット入力候補の一意識別子。 |
choices |
array |
入力メッセージ用にモデルが生成した入力候補の一覧。 |
created |
integer |
入力候補が作成されたときの Unix タイムスタンプ (秒単位)。 |
model |
string |
入力候補に使用される model_id。 |
object |
string |
chat.completion. |
usage |
object |
入力候補要求の使用状況の統計情報。 |
choices
オブジェクトは、次のフィールドを持つディクショナリです:
キー | Type | 説明 |
---|---|---|
index |
integer |
選択肢インデックス。 |
messages または delta |
string |
メッセージ オブジェクトのチャット入力候補の結果。 ストリーミング モードを使用する場合は、差分キーが使用されます。 |
finish_reason |
string |
モデルがトークンの生成を停止した理由。 |
usage
オブジェクトは、次のフィールドを持つディクショナリです:
キー | Type | 説明 |
---|---|---|
prompt_tokens |
integer |
プロンプト内のトークンの数。 |
completion_tokens |
integer |
入力候補に生成されたトークンの数。 |
total_tokens |
integer |
トークンの合計数。 |
例
アラビア語
要求:
"messages": [
{
"role": "user",
"content": "ما هي الأماكن الشهيرة التي يجب زيارتها في الإمارات؟"
}
]
応答:
{
"id": "df23b9f7-e6bd-493f-9437-443c65d428a1",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "هناك العديد من الأماكن المذهلة للزيارة في الإمارات! ومن أشهرها برج خليفة في دبي وهو أطول مبنى في العالم ، ومسجد الشيخ زايد الكبير في أبوظبي والذي يعد أحد أجمل المساجد في العالم ، وصحراء ليوا في الظفرة والتي تعد أكبر صحراء رملية في العالم وتجذب الكثير من السياح لتجربة ركوب الجمال والتخييم في الصحراء. كما يمكن للزوار الاستمتاع بالشواطئ الجميلة في دبي وأبوظبي والشارقة ورأس الخيمة، وزيارة متحف اللوفر أبوظبي للتعرف على تاريخ الفن والثقافة العالمية"
}
}
],
"created": 1711734274,
"model": "jais-30b-chat",
"object": "chat.completion",
"usage": {
"prompt_tokens": 23,
"completion_tokens": 744,
"total_tokens": 767
}
}
English
要求:
"messages": [
{
"role": "user",
"content": "List the emirates of the UAE."
}
]
応答:
{
"id": "df23b9f7-e6bd-493f-9437-443c65d428a1",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "The seven emirates of the United Arab Emirates are: Abu Dhabi, Dubai, Sharjah, Ajman, Umm Al-Quwain, Fujairah, and Ras Al Khaimah."
}
}
],
"created": 1711734274,
"model": "jais-30b-chat",
"object": "chat.completion",
"usage": {
"prompt_tokens": 23,
"completion_tokens": 60,
"total_tokens": 83
}
}
推論のその他の例
サンプルの種類 | サンプル ノートブック |
---|---|
CURL および Python Web 要求を使用した CLI | webrequests.ipynb |
OpenAI SDK (試験段階) | openaisdk.ipynb |
LiteLLM | litellm.ipynb |
コストとクォータ
サービスとしてデプロイされたモデルの、コストとクォータに関する考慮事項
サービスとしてデプロイされた JAIS 30b チャットは、Azure Marketplace 経由で Core42 によって提供され、使用するために Azure AI Studio と統合されます。 モデルをデプロイするときに、Azure Marketplace の価格を確認できます。
プロジェクトが Azure Marketplace から特定のオファーにサブスクライブするたびに、その消費に関連するコストを追跡するための新しいリソースが作成されます。 推論に関連するコストを追跡するために同じリソースが使用されますが、各シナリオを個別に追跡するために複数の測定値を使用できます。
コストの追跡方法について詳しくは、「Azure Marketplace を通じて提供されるモデルのコストを監視する」をご覧ください。
クォータはデプロイごとに管理されます。 各デプロイのレート制限は、1 分あたり 200,000 トークン、1 分あたり 1,000 個の API 要求です。 ただし、現在、プロジェクトのモデルごとに 1 つのデプロイに制限しています。 現在のレート制限がシナリオに十分でない場合は、Microsoft Azure サポートにお問い合わせください。
コンテンツのフィルター処理
従量課金制でサービスとしてデプロイされたモデルは、Azure AI Content Safety によって保護されます。 Azure AI Content Safety を使用すると、プロンプトと入力候補の両方が、有害なコンテンツ出力の検出と防止を目的とした一連の分類モデルを通過します。 コンテンツ フィルタリング (プレビュー) システムは、入力プロンプトと出力される入力候補の両方で、有害な可能性があるコンテンツ特有のカテゴリを検出し、アクションを実行します。 コンテンツフィルタリングの詳細については、こちらを参照してください。