すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:PAI-EAS での大規模言語モデルのデプロイ

最終更新日:Jun 23, 2026

PAI-EAS は、DeepSeek や Qwen などの一般的な大規模言語モデル (LLM) をワンクリックでデプロイするためのソリューションを提供します。これにより、手動デプロイで必要となる複雑な環境構成、パフォーマンスチューニング、コスト管理が不要になります。

クイックスタート:オープンソースモデルのデプロイ

この例では、オープンソースモデルの Qwen3-8B をデプロイします。サポートされている他のモデルにも同じプロセスが適用されます。

ステップ 1:サービスの作成

  1. PAI コンソールにログインします。ページ上部でリージョンを選択します。次に、目的のワークスペースを選択し、Elastic Algorithm Service (EAS) をクリックします。

  2. Deploy Service をクリックします。Scenario-based Model Deployment セクションで、LLM Deployment をクリックします。

  3. 以下の主要なパラメーターを設定します。

    パラメーター

    Model Settings

    Public Model を選択し、Qwen3-8B を検索して選択します。

    Inference Engine

    vLLM (推奨、OpenAI API 互換) を選択します。

    Deployment Template

    [単一マシン] を選択します。システムが推奨のインスタンスタイプとイメージを自動的に入力します。

  4. Deploy をクリックします。デプロイには約 5 分かかります。サービスステータスが Running に変わると、デプロイは成功です。

    説明

    サービスのデプロイに失敗した場合は、「サービスのデプロイとステータスの問題」をご参照ください。

ステップ 2:オンラインデバッグによる検証

サービスが正常にデプロイされた後、オンラインデバッグを使用して正しく実行されていることを確認します。

  1. サービス名をクリックして詳細ページに移動し、Online Debugging タブに切り替えます。

  2. 以下のリクエストパラメーターを設定します。

    パラメーター

    リクエストメソッド

    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 が含まれていることを確認します。

  3. 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/models API エンドポイントを呼び出してモデル名を取得します。

    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 ライブラリです。

  1. コードのダウンロード

    GitHub リンク | OSS リンク

  2. 環境の準備

    Python 3.10 以降が必要です。依存関係をインストールします:pip install openai gradio

  3. Web アプリケーションの起動

    ターミナルで次のコマンドを実行します。<EAS_ENDPOINT><EAS_TOKEN> を、デプロイしたサービスのエンドポイントとトークンに置き換えます。

    python webui_client.py --eas_endpoint "<EAS_ENDPOINT>" --eas_token "<EAS_TOKEN>"
  4. アプリケーションが起動すると、ローカル URL (通常は http://127.0.0.1:7860) が提供されます。この URL をブラウザで開いて Web UI にアクセスします。

サードパーティアプリケーションとの連携

PAI-EAS サービスは、OpenAI API をサポートするさまざまなクライアントや開発ツールと連携できます。主要な設定パラメーターは、サービスのエンドポイント、トークン、およびモデル名です。

Dify

  1. OpenAI-API-compatible モデルプロバイダーのインストール

    ページの右上隅にあるプロフィール画像をクリックし、[設定] を選択します。左側のナビゲーションウィンドウで、[モデルプロバイダー] をクリックします。[モデルリスト]OpenAI-API-compatible がない場合は、下のリストから見つけて [インストール] をクリックします。

  2. モデルの追加

    OpenAI-API-compatible カードの右下隅にある [モデルを追加] をクリックし、次のパラメーターを設定します。

    • モデルタイプ:LLM を選択します。

    • モデル名:vLLM デプロイの場合、/v1/models API エンドポイントに GET リクエストを送信してモデル名を取得します。この例では、Qwen3-8B と入力します。

    • API キー:PAI-EAS サービスのトークンを入力します。

    • API エンドポイント URL:PAI-EAS サービスのパブリックエンドポイントを入力します。注:URL は /v1 で終わる必要があります。

  3. サービスのテスト

    1. Dify のメインページで [空のアプリを作成] をクリックし、Chatflow タイプを選択し、アプリケーション名などの情報を入力して、[作成] をクリックします。

    2. LLM ノードをクリックし、追加したモデルを選択します。ノードを設定するには、OpenAI-API-compatible カテゴリから Qwen3-8B CHAT を選択します。SYSTEM プロンプトに、ロールの説明を入力し、コンテキスト変数 sys.query を参照します。USER エリアに、sys.querysys.files 変数を追加します。Max Tokens (デフォルトは 512)、Presence PenaltyThought Mode などのモデルパラメーターは必要に応じて調整できます。

    3. 右上隅の [プレビュー] をクリックし、質問を入力します。

      ボットは ワークフロー を通じて質問を処理し、返信を返します。会話エリアの上部には Deeply thought と処理時間が表示されます。

Chatbox

  1. Chatbox にアクセスして、ご利用のデバイス用のクライアントをダウンロードしてインストールするか、[Web アプリを起動] をクリックして Web 版を使用します。この例では、M3 チップを搭載した Mac を使用します。

  2. モデルプロバイダーの追加。[設定] をクリックし、モデルプロバイダーを追加し、pai などの名前を入力して、API モードとして OpenAI API Compatible を選択します。

  3. pai モデルプロバイダーを選択し、次のパラメーターを設定します。

    • API キー:PAI-EAS サービスのトークンを入力します。

    • API ホスト:PAI-EAS サービスのパブリックエンドポイントを入力します。注:URL は /v1 で終わる必要があります。

    • API パス:空のままにします。

    • モデル:[取得] をクリックしてモデルを追加します。推論エンジンが BladeLLM で、API 取得をサポートしていない場合は、[新規] をクリックしてモデル名を手動で入力します。

  4. 会話のテスト。[新規チャット] をクリックし、テキスト入力ボックスの右下隅でモデルサービスを選択します。

    会話インターフェイスの上部には、You are a helpful assistant. などのシステムプロンプトが表示されます。テキスト入力ボックスに「あなたは誰ですか?」などの質問を入力して送信します。アシスタントの返信エリアの上部に、折りたたみ可能な Deeply thought エリアと処理時間が表示され、その後にモデルの返信が続きます。

Cherry Studio

課金

料金には以下が含まれますが、これらに限定されません。詳細については、「Elastic Algorithm Service (EAS) の課金」をご参照ください。

  • コンピューティング料金:これは主要なコストコンポーネントです。PAI-EAS サービスを作成する際、ニーズに応じてリソースの従量課金またはサブスクリプションの課金方法を選択します。

  • ストレージ料金:カスタムモデルを使用する場合、モデルファイルは Object Storage Service (OSS) に保存されます。ストレージ使用量に基づいて OSS の料金が請求されます。

本番環境での利用

適切なモデルの選択

  1. ユースケースの定義

    • 一般的な会話:モデルが指示を理解し、従うことができるように、ベースモデルではなく、指示チューニングモデルを選択してください。

    • コード生成Qwen3-Coder シリーズのモデルなど、専門のコードモデルを選択します。これらのモデルは通常、コード関連のタスクで汎用モデルよりも優れたパフォーマンスを発揮します。

    • ドメイン固有のタスク:金融や法律など、タスクが高度に専門化されている場合は、そのドメインでファインチューニングされたモデルを見つけるか、自分で汎用モデルをファインチューニングすることを検討してください。

  2. パフォーマンスとコスト:パラメーターが多いモデルは一般的に強力ですが、デプロイにはより多くのコンピューティングリソースが必要となり、推論コストも高くなります。まず、7B パラメーターモデルなどの小規模なモデルから始めて、そのパフォーマンスを検証することを推奨します。パフォーマンスが要件を満たさない場合は、徐々に大規模なモデルを試すことができます。

  3. 信頼できるベンチマークの参照: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:サービスが「保留中」の状態でスタックする

この問題をトラブルシューティングするには、次の手順に従ってください。

  1. インスタンスステータスの確認:サービスリストページで、サービス名をクリックしてサービス詳細ページを開きます。Service Instance セクションで、インスタンスステータスを確認します。[在庫切れ] と表示されている場合、パブリックリソースグループのリソースが不足していることを示します。

  2. ソリューション (優先度順):

    1. オプション 1:インスタンスタイプを変更する。デプロイページに戻り、別の GPU モデルを選択します。

    2. オプション 2:専用リソースを使用するResource Type で、専用リソースグループを選択します。このリソースグループは事前に作成しておく必要があります。

  3. 予防策

    1. エンタープライズユーザーは、パブリックリソースグループの可用性の問題を避けるために、専用リソースグループを作成することを推奨します。

    2. ピーク時には、複数のリージョンでテストすることを推奨します。

Q:API 呼び出しエラー

  1. API 呼び出しでエラーが返される Unsupported Media Type: Only 'application/json' is allowed

    リクエストヘッダーに Content-Type: application/json が含まれていることを確認してください。

  2. API 呼び出しでエラーが返される The model '<model_name>' does not exist.

    vLLM 推論エンジンでは、model フィールドを正しく指定する必要があります。/v1/models エンドポイントに GET リクエストを送信して、モデル名を取得してください。

その他の質問については、「EAS よくある質問」をご参照ください。