PAI-EAS は、DeepSeek や Qwen などの一般的な大規模言語モデル (LLM) をワンクリックでデプロイするためのソリューションを提供します。これにより、手動デプロイで必要となる複雑な環境構成、パフォーマンスチューニング、コスト管理が不要になります。
クイックスタート:オープンソースモデルのデプロイ
この例では、オープンソースモデルの Qwen3-8B をデプロイします。サポートされている他のモデルにも同じプロセスが適用されます。
ステップ 1:サービスの作成
-
PAI コンソールにログインします。ページ上部でリージョンを選択します。次に、目的のワークスペースを選択し、Elastic Algorithm Service (EAS) をクリックします。
Deploy Service をクリックします。Scenario-based Model Deployment セクションで、LLM Deployment をクリックします。
以下の主要なパラメーターを設定します。
パラメーター
値
Model Settings
Public Model を選択し、Qwen3-8B を検索して選択します。
Inference Engine
vLLM (推奨、OpenAI API 互換) を選択します。
Deployment Template
[単一マシン] を選択します。システムが推奨のインスタンスタイプとイメージを自動的に入力します。
Deploy をクリックします。デプロイには約 5 分かかります。サービスステータスが Running に変わると、デプロイは成功です。
説明サービスのデプロイに失敗した場合は、「サービスのデプロイとステータスの問題」をご参照ください。
ステップ 2:オンラインデバッグによる検証
サービスが正常にデプロイされた後、オンラインデバッグを使用して正しく実行されていることを確認します。
サービス名をクリックして詳細ページに移動し、Online Debugging タブに切り替えます。
以下のリクエストパラメーターを設定します。
パラメーター
値
リクエストメソッド
POST
URL パス
既存の URL に
/v1/chat/completionsを追加します。例:/api/predict/llm_qwen3_8b_test/v1/chat/completions本文
{ "model": "Qwen3-8B", "messages": [ {"role": "user", "content": "Hello!"} ], "max_tokens": 1024 }ヘッダー
リクエストヘッダーに
Content-Type: application/jsonが含まれていることを確認します。Send Request をクリックします。モデルの返信を含む応答を受け取るはずです。
ステータスコード 200 と、chat.completion JSON オブジェクトを含むレスポンスボディは、サービスが正しく実行されていることを示します。モデルの返信は content フィールドにあります。
API 経由でのサービス呼び出し
呼び出しを行う前に、サービス詳細ページの [概要] タブに移動し、View Endpoint Information をクリックして、エンドポイントとトークンを取得します。
以下のコードは、サービスを呼び出す方法を示しています。
cURL
curl -X POST <EAS_ENDPOINT>/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: <EAS_TOKEN>" \
-d '{
"model": "<model_name>",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "hello"
}
],
"max_tokens":1024,
"temperature": 0.7,
"top_p": 0.8,
"stream":true
}'ここで:
<EAS_ENDPOINT>と<EAS_TOKEN>を、ご利用のサービスのエンドポイントとトークンに置き換えます。<model_name>をモデル名に置き換えます。vLLM/SGLang の場合、<EAS_ENDPOINT>/v1/modelsAPI エンドポイントを呼び出してモデル名を取得します。curl -X GET <EAS_ENDPOINT>/v1/models -H "Authorization: <EAS_TOKEN>"
OpenAI SDK
サービスと対話するには、公式の Python SDK を使用することを推奨します。OpenAI SDK がインストールされていることを確認してください:pip install openai
from openai import OpenAI
# 1. クライアントを設定します
# <EAS_TOKEN> をデプロイしたサービスのトークンに置き換えます。
openai_api_key = "<EAS_TOKEN>"
# <EAS_ENDPOINT> をデプロイしたサービスのエンドポイントに置き換えます。
openai_api_base = "<EAS_ENDPOINT>/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
# 2. モデル名を取得します。
# BladeLLM の場合、model = "" と設定します。BladeLLM は model パラメーターを使用せず、client.models.list() による取得をサポートしていません。
# このパラメーターは、OpenAI SDK の要件を満たすために空の文字列に設定されます。
models = client.models.list()
model = models.data[0].id
print(model)
# 3. チャットリクエストを送信します。
# ストリーミング (stream=True) と非ストリーミング (stream=False) の出力がサポートされています。
stream = True
chat_completion = client.chat.completions.create(
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "hello"},
],
model=model,
top_p=0.8,
temperature=0.7,
max_tokens=1024,
stream=stream,
)
if stream:
for chunk in chat_completion:
print(chunk.choices[0].delta.content, end="")
else:
result = chat_completion.choices[0].message.content
print(result)Python requests ライブラリ
OpenAI SDK を使用したくない場合は、requests ライブラリを使用できます。
import json
import requests
# <EAS_ENDPOINT> をデプロイしたサービスのエンドポイントに置き換えます。
EAS_ENDPOINT = "<EAS_ENDPOINT>"
# <EAS_TOKEN> をデプロイしたサービスのトークンに置き換えます。
EAS_TOKEN = "<EAS_TOKEN>"
# <model_name> をモデル名に置き換えます。モデル名は <EAS_ENDPOINT>/v1/models API エンドポイントを呼び出すことで取得できます。
# (BladeLLM の場合、この API はサポートされていません。"model" フィールドを省略するか、"" に設定できます。)
model = "<model_name>"
url = f"{EAS_ENDPOINT}/v1/chat/completions"
headers = {
"Content-Type": "application/json",
"Authorization": EAS_TOKEN,
}
stream = True
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "hello"},
]
req = {
"messages": messages,
"stream": stream,
"temperature": 0.7,
"top_p": 0.8,
"max_tokens": 1024,
"model": model,
}
response = requests.post(
url,
json=req,
headers=headers,
stream=stream,
)
if stream:
for chunk in response.iter_lines(chunk_size=8192, decode_unicode=False):
msg = chunk.decode("utf-8")
# 以下のコードは、Server-Sent Events (SSE) 形式のストリーミング応答を処理します。
if msg.startswith("data:"):
info = msg[6:]
if info == "[DONE]":
break
else:
resp = json.loads(info)
if resp["choices"][0]["delta"].get("content") is not None:
print(resp["choices"][0]["delta"]["content"], end="", flush=True)
else:
resp = json.loads(response.text)
print(resp["choices"][0]["message"]["content"])Gradio を使用したローカル Web UI の構築
Gradio は、機械学習モデル用のインタラクティブなユーザーインターフェースを迅速に作成するための、ユーザーフレンドリな Python ライブラリです。
コードのダウンロード
環境の準備
Python 3.10 以降が必要です。依存関係をインストールします:
pip install openai gradioWeb アプリケーションの起動
ターミナルで次のコマンドを実行します。
<EAS_ENDPOINT>と<EAS_TOKEN>を、デプロイしたサービスのエンドポイントとトークンに置き換えます。python webui_client.py --eas_endpoint "<EAS_ENDPOINT>" --eas_token "<EAS_TOKEN>"アプリケーションが起動すると、ローカル URL (通常は
http://127.0.0.1:7860) が提供されます。この URL をブラウザで開いて Web UI にアクセスします。
サードパーティアプリケーションとの連携
PAI-EAS サービスは、OpenAI API をサポートするさまざまなクライアントや開発ツールと連携できます。主要な設定パラメーターは、サービスのエンドポイント、トークン、およびモデル名です。
Dify
OpenAI-API-compatible モデルプロバイダーのインストール
ページの右上隅にあるプロフィール画像をクリックし、[設定] を選択します。左側のナビゲーションウィンドウで、[モデルプロバイダー] をクリックします。[モデルリスト] に OpenAI-API-compatible がない場合は、下のリストから見つけて [インストール] をクリックします。
モデルの追加
OpenAI-API-compatible カードの右下隅にある [モデルを追加] をクリックし、次のパラメーターを設定します。
モデルタイプ:LLM を選択します。
モデル名:vLLM デプロイの場合、
/v1/modelsAPI エンドポイントに GET リクエストを送信してモデル名を取得します。この例では、Qwen3-8B と入力します。API キー:PAI-EAS サービスのトークンを入力します。
API エンドポイント URL:PAI-EAS サービスのパブリックエンドポイントを入力します。注:URL は /v1 で終わる必要があります。
サービスのテスト
Dify のメインページで [空のアプリを作成] をクリックし、Chatflow タイプを選択し、アプリケーション名などの情報を入力して、[作成] をクリックします。
LLM ノードをクリックし、追加したモデルを選択します。ノードを設定するには、OpenAI-API-compatible カテゴリから Qwen3-8B CHAT を選択します。SYSTEM プロンプトに、ロールの説明を入力し、コンテキスト変数 sys.query を参照します。USER エリアに、sys.query と sys.files 変数を追加します。Max Tokens (デフォルトは 512)、Presence Penalty、Thought Mode などのモデルパラメーターは必要に応じて調整できます。
右上隅の [プレビュー] をクリックし、質問を入力します。
ボットは ワークフロー を通じて質問を処理し、返信を返します。会話エリアの上部には Deeply thought と処理時間が表示されます。
Chatbox
Chatbox にアクセスして、ご利用のデバイス用のクライアントをダウンロードしてインストールするか、[Web アプリを起動] をクリックして Web 版を使用します。この例では、M3 チップを搭載した Mac を使用します。
モデルプロバイダーの追加。[設定] をクリックし、モデルプロバイダーを追加し、pai などの名前を入力して、API モードとして OpenAI API Compatible を選択します。
pai モデルプロバイダーを選択し、次のパラメーターを設定します。
API キー:PAI-EAS サービスのトークンを入力します。
API ホスト:PAI-EAS サービスのパブリックエンドポイントを入力します。注:URL は /v1 で終わる必要があります。
API パス:空のままにします。
モデル:[取得] をクリックしてモデルを追加します。推論エンジンが BladeLLM で、API 取得をサポートしていない場合は、[新規] をクリックしてモデル名を手動で入力します。
会話のテスト。[新規チャット] をクリックし、テキスト入力ボックスの右下隅でモデルサービスを選択します。
会話インターフェイスの上部には、
You are a helpful assistant.などのシステムプロンプトが表示されます。テキスト入力ボックスに「あなたは誰ですか?」などの質問を入力して送信します。アシスタントの返信エリアの上部に、折りたたみ可能な Deeply thought エリアと処理時間が表示され、その後にモデルの返信が続きます。
Cherry Studio
クライアントのインストール
Cherry Studio にアクセスしてクライアントをダウンロードし、インストールします。
https://github.com/CherryHQ/cherry-studio/releasesからもダウンロードできます。モデルサービスの設定
左下隅の設定アイコンをクリックします。[モデルサービス] セクションで、[追加] をクリックします。[プロバイダー名] に、PAI などのカスタム名を入力し、プロバイダータイプを OpenAI に設定します。[OK] をクリックします。
[API キー] フィールドに、PAI-EAS サービスのトークンを入力します。[API アドレス] フィールドに、PAI-EAS サービスのパブリックエンドポイントを入力します。
[追加] をクリックします。[モデル ID] フィールドに、モデル名を入力します。vLLM デプロイの場合、
/v1/modelsAPI エンドポイントに GET リクエストを送信してモデル名を取得します。この例では、Qwen3-8Bと入力します。名前は大文字と小文字が区別されることに注意してください。[API アドレス] を入力するときは、/v1 サフィックスを含めないでください。URL が#で終わる場合、クライアントは自動的に/v1/chat/completionsパスを使用します。設定が完了すると、[モデル] エリアは利用可能なモデル (Qwen3-8B など) を自動的に識別して一覧表示します。[API キー] 入力ボックスの横にある [テスト] をクリックして、接続性を確認します。
モデルのクイックテスト
ダイアログボックスに戻り、上部でモデルを選択して会話を開始します。
たとえば、「あなたは誰ですか?」と入力してメッセージを送信します。Qwen3-8B モデルが自己紹介で応答し、モデルが準備完了であることを確認します。
課金
料金には以下が含まれますが、これらに限定されません。詳細については、「Elastic Algorithm Service (EAS) の課金」をご参照ください。
コンピューティング料金:これは主要なコストコンポーネントです。PAI-EAS サービスを作成する際、ニーズに応じてリソースの従量課金またはサブスクリプションの課金方法を選択します。
ストレージ料金:カスタムモデルを使用する場合、モデルファイルは Object Storage Service (OSS) に保存されます。ストレージ使用量に基づいて OSS の料金が請求されます。
本番環境での利用
適切なモデルの選択
ユースケースの定義:
一般的な会話:モデルが指示を理解し、従うことができるように、ベースモデルではなく、指示チューニングモデルを選択してください。
コード生成:
Qwen3-Coderシリーズのモデルなど、専門のコードモデルを選択します。これらのモデルは通常、コード関連のタスクで汎用モデルよりも優れたパフォーマンスを発揮します。ドメイン固有のタスク:金融や法律など、タスクが高度に専門化されている場合は、そのドメインでファインチューニングされたモデルを見つけるか、自分で汎用モデルをファインチューニングすることを検討してください。
パフォーマンスとコスト:パラメーターが多いモデルは一般的に強力ですが、デプロイにはより多くのコンピューティングリソースが必要となり、推論コストも高くなります。まず、7B パラメーターモデルなどの小規模なモデルから始めて、そのパフォーマンスを検証することを推奨します。パフォーマンスが要件を満たさない場合は、徐々に大規模なモデルを試すことができます。
信頼できるベンチマークの参照:OpenCompass や LMSys Chatbot Arena などの業界で認められたベンチマークを参照してください。これらは、推論、コーディング、数学など、さまざまな側面からモデルを評価しており、モデル選択の指針となります。
適切な推論エンジンの選択
vLLM/SGLang:オープンソースコミュニティでの主流の選択肢として、これらのエンジンは幅広いモデルサポートと豊富なコミュニティドキュメントを備えており、統合やトラブルシューティングが容易です。
BladeLLM:これは Alibaba Cloud PAI チームが開発した独自の推論エンジンです。特定のモデル、特に Qwen シリーズに対して深く最適化されており、より高いパフォーマンスと低い GPU メモリ使用量を実現する可能性があります。
推論の最適化
LLM インテリジェントルーティングデプロイ:この機能は、トークンスループットや GPU メモリ使用率などのリアルタイムメトリックに基づいてリクエストを動的に分散します。複数の推論インスタンス間でコンピューティング能力とメモリ割り当てのバランスを取ります。この機能は、複数の推論インスタンスと不均一なリクエスト負荷を持つデプロイに最適であり、クラスターリソース使用率とシステムの安定性を向上させます。
エキスパート並列化と Prefill-Decode 分離に基づく MoE モデルのデプロイ:Mixture-of-Experts (MoE) モデルの場合、エキスパート並列化 (EP) や Prefill-Decode (PD) 分離などの技術を使用して、推論スループットを向上させ、デプロイコストを削減できます。
よくある質問
Q:サービスが「保留中」の状態でスタックする
この問題をトラブルシューティングするには、次の手順に従ってください。
インスタンスステータスの確認:サービスリストページで、サービス名をクリックしてサービス詳細ページを開きます。Service Instance セクションで、インスタンスステータスを確認します。[在庫切れ] と表示されている場合、パブリックリソースグループのリソースが不足していることを示します。
ソリューション (優先度順):
オプション 1:インスタンスタイプを変更する。デプロイページに戻り、別の GPU モデルを選択します。
オプション 2:専用リソースを使用する。Resource Type で、専用リソースグループを選択します。このリソースグループは事前に作成しておく必要があります。
予防策:
エンタープライズユーザーは、パブリックリソースグループの可用性の問題を避けるために、専用リソースグループを作成することを推奨します。
ピーク時には、複数のリージョンでテストすることを推奨します。
Q:API 呼び出しエラー
API 呼び出しでエラーが返される
Unsupported Media Type: Only 'application/json' is allowedリクエストヘッダーに
Content-Type: application/jsonが含まれていることを確認してください。API 呼び出しでエラーが返される
The model '<model_name>' does not exist.vLLM 推論エンジンでは、
modelフィールドを正しく指定する必要があります。/v1/modelsエンドポイントに GET リクエストを送信して、モデル名を取得してください。
その他の質問については、「EAS よくある質問」をご参照ください。