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

Platform For AI:DeepSeek-V4 および DeepSeek-R1 のデプロイメント

最終更新日:Aug 13, 2026

DeepSeek モデルを手動でデプロイする場合、コンピューティング環境の設定、モデルのロード、推論の最適化といった複雑なタスクが含まれます。PAI モデルギャラリーは、ワンクリックデプロイメント機能により、このプロセスを簡素化します。わずか数ステップで、OpenAI API 互換のモデルサービスを作成し、お使いのアプリケーションに統合できます。

ソリューションアーキテクチャ

コアコンポーネント

このソリューションは Platform for AI (PAI) をベースに構築されており、次のコアコンポーネントで構成されています:

  • モデルギャラリー:モデルの配布とデプロイのエントリポイントとして機能します。事前設定済みの DeepSeek モデルと、対応するデプロイ設定を提供します。

  • Elastic Algorithm Service (EAS):モデルのデプロイと推論をホストするコアサービスです。GPU などの基盤となるコンピューティングリソースを自動的に管理し、モデルサービスのインスタンスを起動します。

  • 推論アクセラレーションエンジン (SGLang/vLLM/BladeLLM):モデルの推論パフォーマンスを最適化します。

    • SGLang/vLLM:OpenAI API と完全互換のインターフェイスを提供し、既存アプリケーションの移行を簡素化します。

    • BladeLLM:特定のシナリオで優れた推論パフォーマンスを提供する、独自の高性能推論フレームワークです。

  • API ゲートウェイ:モデルサービスにアクセスするためのセキュアなチャネルを提供します。サービスエンドポイントと認証トークンを使用したモデルサービスの呼び出しをサポートします。

デプロイ方法

大規模モデルでは、単一ノードデプロイメントに加えて、モデルギャラリーでは分散デプロイメントEP+PD 分離などのワンクリックデプロイメントソリューションも提供しています。

たとえば、DeepSeek-V4-Pro-FP8 と DeepSeek-V4-Flash-FP8 は、どちらも EP+PD 分離方式でデプロイできます。

迅速なデプロイと検証

ステップ1:モデルサービスのデプロイ

  1. PAI コンソールにログインし、左上でターゲットリージョンを選択します。左側のナビゲーションペインで ワークスペース一覧 に移動し、ターゲットワークスペースを選択します。

  2. ワークスペースで、クイックスタート > [Model Gallery] に移動します。

  3. モデルリストで、ターゲットモデル (例: DeepSeek-R1-Distill-Qwen-7B) を検索して選択し、モデル詳細ページを開きます。

  4. 右上の デプロイメント をクリックし、次のパラメーターを設定します。

    • 推論エンジン:SGLang または vLLM を推奨します。

    • デプロイリソース:パブリックリソースまたは専用リソースを選択し、モデルの要件に基づいて適切な GPU 仕様を選択します。

      • デフォルトでは、パブリックリソースが使用され、推奨仕様が表示されます。仕様が利用できない場合は、リージョンの切り替えを試してください。

        重要

        パブリックリソースを使用してデプロイする場合、サービスインスタンスがリソースをプロビジョニングするとすぐに課金が開始され、呼び出しがない場合でも利用時間に応じて料金が発生します。テスト後は、速やかにサービスを停止してください。

      • [Resource Quota] を選択した場合は、インスタンスタイプに対応する推論エンジンとデプロイテンプレートを必ず選択してください。たとえば、GP7V インスタンスタイプを使用する場合、[Inference Engine][SGLang] を選択でき、[Deployment Template] には [Single-Node-GP7V] を選択する必要があります。

    [Deployment Template] は、デフォルトで [Single-Node] に設定されています。推奨される GPU 仕様の例は ecs.gn7i-c16g1.4xlarge (16 vCPU、60 GiB、1 × NVIDIA A10) で、料金は 1 時間あたり約 11.1 人民元です。

  5. すべての設定が正しいことを確認した後、[Deploy] をクリックします。システムがサービスの作成を開始します。

    説明

    フルバージョンの DeepSeek-R1 のような大規模モデルの場合、モデルのロードに 20 分から 30 分かかることがあります。

  6. [Model Gallery] > タスク管理 > タスクのデプロイメント ページでデプロイジョブのステータスを確認できます。サービス名をクリックしてサービス詳細ページを開きます。右上の もっと見る > 詳細を見る をクリックして、EAS のモデルサービス詳細ページを表示することもできます。

    サービス詳細ページで、[Status] フィールドの横にある [View Deployment Events] をクリックすると、詳細が表示されます。サービスエンドポイントとトークンを取得するには、[Call Information] セクションの [View Call Information] をクリックします。

ステップ2:オンラインデバッグ

[Model Gallery] > タスク管理 > タスクのデプロイメント ページで、デプロイしたサービスの名前をクリックし、オンラインデバッグ タブに切り替えます。このタブは 対話のデバッグAPI デバッグ の両方をサポートしています。

説明

DeepSeek-R1 モデルシリーズの公式な使用推奨事項は次のとおりです:

  • temperature を 0.5 から 0.7 の間の値に設定します。推奨値は 0.6 です。これにより、反復的または一貫性のない出力を防ぎます。

  • システムプロンプトを追加しないでください。すべての指示はユーザープロンプトに含めてください。

  • 数学関連の質問については、プロンプトに「Please reason step by step and put the final answer in a \boxed{}.」を含めてください。

API デバッグページのみが利用可能な場合、以下の手順では、大規模言語モデル (LLM) サービスのチャット API を使用した例を説明します:

  1. リクエストパスの確認<EAS_ENDPOINT>/v1/chat/completions。このパスの <EAS_ENDPOINT> はサービスエンドポイントで、通常は自動入力されます。

    http://<uid>.<region-id>.pai-eas.aliyuncs.com/api/predict/<service-name>.

    SGLang/vLLM でデプロイされたサービスの場合、<EAS_ENDPOINT>/openapi.json からサポートされている他の API を取得できます。
  2. リクエストボディの作成

    プロンプトが「What is 3 + 5?」の場合、リクエストボディは次のように作成します。

    model パラメーターの値は、モデルリスト API<EAS_ENDPOINT>/v1/models から取得したモデル名です。この例では DeepSeek-R1-Distill-Qwen-7B を使用します。

    {
        "model": "DeepSeek-R1-Distill-Qwen-7B",
        "messages": [
            {
                "role": "user",
                "content": "What is 3 + 5?"
            }
        ]
    }
  3. リクエストの送信

    [Online Debugging] タブで、HTTP メソッドとして [POST] を選択し、URL フィールドにサービスエンドポイント (例: http://<service_address>/v1/chat/completions) を入力します。[Body] セクションで [raw] を選択し、model (例: DeepSeek-R1-Distill-Qwen-7B) と messages フィールドを含む JSON リクエストボディを入力します。[Send Request] をクリックします。右側の [Response] エリアにステータスコード 200 が表示され、モデルのレスポンスがボディに JSON 形式で表示されます。

BladeLLM API リクエストのサンプル

重要

BladeLLM 高速化デプロイ方法を使用する場合、max_tokens パラメーターを指定しないと、出力はデフォルトで 16 トークンに切り捨てられます。必要に応じて max_tokens リクエストパラメーターを調整してください。

{
    "model": "DeepSeek-R1-Distill-Qwen-7B",
    "messages": [
        {
            "role": "user",
            "content": "What is 3 + 5?"
        }
    ],
    "max_tokens": 2000
}

API 呼び出し

  1. サービスエンドポイントとトークンを取得します。

    1. [モデルギャラリー] > タスク管理 > タスクのデプロイメント ページで、デプロイ済みサービスの名前をクリックしてサービス詳細ページに移動します。

    2. サービスエンドポイントとトークンを取得するには、エンドポイント情報の表示 をクリックします。

  2. 以下の例は、チャット API を呼び出す方法を示しています。

    <EAS_ENDPOINT> をサービスエンドポイントに、<EAS_TOKEN> をサービストークンに置き換えてください。

    OpenAI SDK

    注意:

    • エンドポイントの末尾に/v1を追加してください。

    • BladeLLM で高速化されたデプロイでは、client.models.list() をサポートしていません。回避策として、model パラメーターを空の文字列 ("") に設定します。

    SGLang/vLLM
    from openai import OpenAI
    # 1. クライアントを設定します
    # <EAS_ENDPOINT> と <EAS_TOKEN> を実際のサービスエンドポイントとトークンに置き換えます。
    openai_api_key = "<EAS_TOKEN>"
    openai_api_base = "<EAS_ENDPOINT>/v1"
    client = OpenAI(
        api_key=openai_api_key,
        base_url=openai_api_base,
    )
    # 2. モデル名を取得します
    try:
        model = client.models.list().data[0].id
        print(model)
    except Exception as e:
        print(f"モデルリストの取得に失敗しました。エンドポイントとトークンを確認してください。エラー: {e}")
    # 3. リクエストを構築して送信します
    stream = True
    chat_completion = client.chat.completions.create(
        messages=[
            {"role": "user", "content": "こんにちは、自己紹介してください。"}
        ],
        model=model,
        max_tokens=2048,
        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)
    BladeLLM
    from openai import OpenAI
    ##### API 設定 #####
    # <EAS_ENDPOINT> をデプロイされたサービスのエンドポイントに、<EAS_TOKEN> をデプロイされたサービスのトークンに置き換えます。
    openai_api_key = "<EAS_TOKEN>"
    openai_api_base = "<EAS_ENDPOINT>/v1"
    client = OpenAI(
        api_key=openai_api_key,
        base_url=openai_api_base,
    )
    # BladeLLM アクセラレーションデプロイメントは現在、`client.models.list()` を使用したモデル名の取得をサポートしていません。互換性のために `model` 値を `""` に設定します。
    model=""
    stream = True
    chat_completion = client.chat.completions.create(
        messages=[
                  {"role": "user", "content": "こんにちは、自己紹介してください。"}
        ],
         model=model,
         max_tokens=2048,
         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)

    HTTP

    SGLang/vLLM

    [モデルリスト API] <EAS_ENDPOINT>/v1/models から取得したモデル名で <model_name> を置き換えます。

    curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: <EAS_TOKEN>" \
        -d '{
            "model": "<model_name>",
            "messages": [
            {
                "role": "user",
                "content": "hello!"
            }
            ]
        }' \
        <EAS_ENDPOINT>/v1/chat/completions
    
    import json
    import requests
    # <EAS_ENDPOINT> をデプロイされたサービスのエンドポイントに、<EAS_TOKEN> をデプロイされたサービスのトークンに置き換えます。
    EAS_ENDPOINT = "<EAS_ENDPOINT>"
    EAS_TOKEN = "<EAS_TOKEN>"
    url = f"{EAS_ENDPOINT}/v1/chat/completions"
    headers = {
        "Content-Type": "application/json",
        "Authorization": EAS_TOKEN,
    }
    # <model_name> をモデルリスト API `/v1/models` から取得したモデル名に置き換えます。
    model = "<model_name>"
    stream = True
    messages = [
        {"role": "user", "content": "こんにちは、自己紹介してください。"},
    ]
    req = {
        "messages": messages,
        "stream": stream,
        "temperature": 0.6,
        "top_p": 0.5,
        "top_k": 10,
        "max_tokens": 300,
        "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")
            if msg.startswith("data"):
                info = msg[6:]
                if info == "[DONE]":
                    break
                else:
                    resp = json.loads(info)
                    print(resp["choices"][0]["delta"]["content"], end="", flush=True)
    else:
        resp = json.loads(response.text)
        print(resp["choices"][0]["message"]["content"])
    
    BladeLLM
    curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: <EAS_TOKEN>" \
        -d '{
            "messages": [
            {
                "role": "user",
                "content": "hello!"
            }
            ]
        }' \
        <EAS_ENDPOINT>/v1/chat/completions
    
    import json
    import requests
    # <EAS_ENDPOINT> をデプロイされたサービスのエンドポイントに、<EAS_TOKEN> をデプロイされたサービスのトークンに置き換えます。
    EAS_ENDPOINT = "<EAS_ENDPOINT>"
    EAS_TOKEN = "<EAS_TOKEN>"
    url = f"{EAS_ENDPOINT}/v1/chat/completions"
    headers = {
        "Content-Type": "application/json",
        "Authorization": EAS_TOKEN,
    }
    stream = True
    messages = [
        {"role": "user", "content": "こんにちは、自己紹介してください。"},
    ]
    # BladeLLM をアクセラレーションデプロイメントに使用する場合、`max_tokens` パラメーターを指定しないと、出力はデフォルトで 16 トークンに切り捨てられます。必要に応じて `max_tokens` リクエストパラメーターを調整することを推奨します。
    req = {
        "messages": messages,
        "stream": stream,
        "temperature": 0.6,
        "top_p": 0.5,
        "top_k": 10,
        "max_tokens": 300,
    }
    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")
            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"])
  3. モデルやデプロイメントフレームワークによって動作が異なるため、モデルギャラリーのモデルの紹介ページで、詳細な API 呼び出し手順を確認してください。

    例えば、Model Gallery の DeepSeek-R1-Distill-Qwen-7B モデルの紹介ページでは、BladeLLM 高速デプロイのリソース要件が指定されています。このデプロイでは 24 GB の GPU メモリが必要であり、ecs.gn7 以降のインスタンスファミリーのみをサポートします。このページには、モデルが OpenAI の v1/completions および v1/chat/completions エンドポイントと互換性があること、および curl コマンドと Python スクリプトを使用した呼び出し例も記載されています。

サードパーティ統合

ChatboxDify、または Cherry Studio に接続するには、「サードパーティクライアントを統合する」をご参照ください。

ローカル Web UI

詳細については、「Gradio を使用したローカル Web UI の構築」をご参照ください。

リソースのクリーンアップ

パブリックリソースを使用してデプロイしたインスタンスは、リソースがプロビジョニングされた時点から使用期間に基づいて課金されます。1 時間未満の使用量は分単位で課金されます。

  1. [ジョブ管理] > [デプロイメントジョブ] ページに移動します。

  2. 停止するサービスを見つけ、[操作] 列で [停止] または [削除] をクリックします。

    • [停止] :サービスインスタンスが解放されて課金が停止します。サービス設定は保持されるため、後からサービスを再起動できます。

    • [削除] :サービス設定とインスタンスの両方が完全に削除されます。

モデルとリソースの選択

どのモデルを選択するかによって、必要なコンピューティングリソースとデプロイコストが決まります。DeepSeek モデルには「フルバージョン」と「蒸留版」のバリエーションがあり、リソース要件が大きく異なります。

  • 開発およびテスト: 蒸留版モデル、たとえば DeepSeek-R1-Distill-Qwen-7B の使用を推奨します。これらのモデルは、通常 24 GB の GPU メモリを搭載した単一の GPU で済むほどリソースフットプリントが小さく、迅速にデプロイでき、コスト効率も高いため、迅速な機能検証に最適です。

  • 本番環境: パフォーマンスとコストのバランスに基づいて評価します。DeepSeek-R1-Distill-Qwen-32B モデルは、効果とコストのバランスが優れています。より高いモデルパフォーマンスが必要な場合は、フルバージョンモデルを選択してください。これには、それぞれ 96 GB の GPU メモリを搭載した 8 台の GPU など、複数のハイエンド GPU が必要となり、コストが大幅に増加します。

以下の表は、モデルバージョンごとの最小構成と、インスタンスタイプおよび推論エンジンごとにサポートされる最大トークン数を示しています。

フルバージョンモデル

モデル

デプロイ方法

最大トークン数

最小構成

SGLang

vLLM

DeepSeek-V4-Pro

シングルノード / 分散

1M

1M

8 × H20-3e を搭載したシングルノード (8 × 141 GB の GPU メモリ)

DeepSeek-V4-Flash

シングルノード

1M

1M

8 × H20-3e を搭載したシングルノード (8 × 141 GB の GPU メモリ)

DeepSeek-V4-Pro-FP8

シングルノード / PD 分離

1M

/

8 × H20-3e を搭載したシングルノード (8 × 141 GB の GPU メモリ)

DeepSeek-V4-Flash-FP8

シングルノード / PD 分離

1M

/

4 × H20-3e を搭載したシングルノード (4 × 141 GB の GPU メモリ)

DeepSeek-V3

シングルノード - NVIDIA GPU

56,000

65,536

8 × GU120 を搭載したシングルノード (8 × 96 GB の GPU メモリ)

シングルノード - GP7V インスタンスタイプ

56,000

16,384

分散 - PAI Lingjun AI 計算サービス

163,840

163,840

DeepSeek-R1

シングルノード - NVIDIA GPU

56,000

65,536

8 × GU120 を搭載したシングルノード (8 × 96 GB の GPU メモリ)

シングルノード - GP7V インスタンスタイプ

56,000

16,384

分散 - PAI Lingjun AI 計算サービス

163,840

163,840

シングルノードデプロイのインスタンスタイプに関する注意事項:

  • NVIDIA GPU

    • ml.gu8v.c192m1024.8-gu120ecs.gn8v-8x.48xlarge はパブリックリソースとして利用可能ですが、在庫に限りがある場合があります。

    • ecs.ebmgn8v.48xlarge はパブリックリソースとして使用できません。 専用 EAS リソースを購入する必要があります。

  • GP7V インスタンスタイプ: ml.gp7vf.16.40xlarge はパブリックリソースであり、プリエンプティブルインスタンスとしてのみ使用できます。 NVIDIA GPU リソースが不足している場合は、中国 (ウランチャブ) リージョンに切り替えて GP7V インスタンスタイプのリソースを探してください。 デプロイする際には VPC を設定する必要があります。

分散デプロイのインスタンスタイプに関する注意事項 (高性能が必要な場合に推奨):

分散デプロイは高速ネットワーキングに依存しており、高性能で柔軟なヘテロジニアスコンピューティングパワーを提供する PAI Lingjun AI 計算サービス を使用する必要があります。また、デプロイ時に VPC を設定する必要があります。PAI Lingjun AI 計算サービス を使用するには、リージョンを China (Ulanqab) に切り替えてください。

  • Lingjun パブリックリソース

    • ml.gu7xf.8xlarge-gu108: 単一インスタンスのデプロイには 4 台のマシンが必要で、プリエンプティブルインスタンスとしてのみ使用できます。

    • GP7V インスタンスタイプ:単一インスタンスのデプロイには 2 台のマシンが必要です。

  • Lingjun プリペイドリソース:これらのリソースを使用するには、ホワイトリストへの登録が必要です。営業担当者に連絡するか、チケットを送信してご相談ください。

蒸留版モデル

モデル

最大トークン数

最小構成

SGLang

vLLM

BladeLLM

DeepSeek-R1-Distill-Qwen-1.5B

131,072

131,072

131,072

1 × A10 GPU (24 GB の GPU メモリ)

DeepSeek-R1-Distill-Qwen-7B

131,072

32,768

131,072

1 × A10 GPU (24 GB の GPU メモリ)

DeepSeek-R1-Distill-Llama-8B

131,072

32,768

131,072

1 × A10 GPU (24 GB の GPU メモリ)

DeepSeek-R1-Distill-Qwen-14B

131,072

32,768

131,072

1 × GPU L (48 GB の GPU メモリ)

DeepSeek-R1-Distill-Qwen-32B

131,072

32,768

131,072

2 × GPU L (2 × 48 GB の GPU メモリ)

DeepSeek-R1-Distill-Llama-70B

131,072

32,768

131,072

2 × GU120 (2 × 96 GB の GPU メモリ)

DeepSeek-R1-0528-Qwen3-8B:DeepSeek-R1 から Qwen3-8B に蒸留された、80 億パラメーターのモデルです。このモデルはデプロイのみをサポートしています。ファインチューニングとトレーニングはサポートされていません。

PAI 最適化モデル

モデルギャラリーでは、以下の PAI に最適化された DeepSeek 関連モデルのワンクリックデプロイを提供しています。

  • DeepSeek-R1-PAI-optimized

  • DeepSeek-R1-0528-PAI-optimized

  • DeepSeek-V3-0324-PAI-optimized

コストとリスク

コストの内訳

パブリックリソースを使用するサービスは、インスタンスがプロビジョニングされてから停止または削除されるまで、分単位で課金されます。請求は 1 時間単位で精算されます。サービスがアイドル状態でも料金は発生します。サービスを停止すると、課金が停止します。

詳細については、「Elastic Algorithm Service (EAS) の課金」をご参照ください。

コスト管理

  • 迅速なクリーンアップ:開発とテストの後は、コストを効果的に管理するため、サービスをすぐに [停止] または [削除] してください。

  • 適切なモデルの選択:本番環境以外では、低コストの蒸留版モデルを優先してください。

  • プリエンプティブルインスタンスの使用:本番環境以外のタスクでは、デプロイ時に プリエンプティブル モードを有効にできます。入札を成功させるには特定の条件を満たす必要があり、リソースが不安定になるリスクがある点に注意してください。

  • 長期利用割引:長時間稼働する本番サービスでは、Savings Plan または前払いリソースを購入することで、コストを削減できます。

主なリスク

  • 予期しないコスト:サービスの停止を忘れると課金が継続します。使用後は常にリソースをすぐにクリーンアップしてください。

  • BladeLLM の出力の切り捨て:BladeLLM エンジンを使用する場合、API リクエストで max_tokens パラメーターを指定しないと、出力が 16 トークンに切り捨てられ、機能が想定どおりに動作しない可能性があります。

  • 誤った API の使用

    • DeepSeek-R1 シリーズモデルを呼び出すと、messagessystem プロンプトを含めることで、予期しない動作が発生する可能性があります。

    • API リクエスト URL は、/v1/chat/completions などのパスで終わる必要があります。そうでない場合、404 エラーが返されます。

  • リソース在庫:特定のリージョンで高性能 GPU リソースの在庫が限られていると、デプロイに失敗したり、待ち時間が長くなったりする場合があります。別のリージョンへの切り替えをお試しください。

モデルデプロイ FAQ

推論エンジンの選定

  • 推奨: SGLang。OpenAI API 標準との完全な互換性を維持しつつ高い推論パフォーマンスを提供するため、主流のアプリケーションエコシステムに適しています。多くのシナリオで、vLLM より長い最大コンテキスト長をサポートします。

  • 代替: vLLM。業界で広く利用されているフレームワークで、優れた API 互換性も提供します。

  • 特定のシナリオ: BladeLLM。より高い推論パフォーマンスが必要で、かつ client.models.list() をサポートしないことや、max_tokens パラメーターのデフォルト動作が切り捨てであることなど、OpenAI 標準との API 差分を許容できる場合にのみ、Alibaba Cloud の Platform for AI (PAI) が開発した高性能推論フレームワークである BladeLLM を使用してください。

サービスの待機スタック

考えられる原因は次のとおりです:

  • 現在のリージョンでマシンリソースが不足しています。

  • モデルが大きく、モデルの読み込みに時間がかかっています。DeepSeek-R1 や DeepSeek-V3 などの大規模モデルでは、20~30 分かかる場合があります。

しばらくお待ちください。長時間経過してもサービスが起動しない場合は、次の手順をお試しください:

  1. タスク管理 > タスクのデプロイメント ページに移動し、デプロイジョブの詳細を確認します。右上隅で もっと見る > 詳細を見る をクリックして、PAI-EAS のモデルサービス詳細ページに移動し、サービスインスタンスのステータスを確認します。

    [Instance Status] 列に [Insufficient Inventory] と表示される場合、リソース不足によりインスタンスをスケジューリングできないことを意味します。

  2. 現在のサービスを停止し、コンソール左上隅で別のリージョンに切り替えて、サービスを再度デプロイしてください。

    説明

    DeepSeek-R1 や DeepSeek-V3 などの非常に大きなパラメーターを持つモデルでは、サービスを起動するために 8 GPU が必要です (リソース在庫が逼迫しています)。DeepSeek-R1-Distill-Qwen-7B などの小規模な蒸留版モデルをデプロイすることも検討してください (リソース在庫が豊富です)。

モデル呼び出し FAQ

API 呼び出しで 404 が返される

URL に v1/chat/completions などの OpenAI API サフィックスが追加されているか確認してください。詳細については、モデル紹介ページにある API 呼び出し手順をご参照ください。

vLLM のアクセラレーションデプロイを使用している場合は、会話 API のリクエストボディ内の model パラメーターに、正しいモデル名が設定されていることを確認してください。モデル名は v1/models から取得できます。

リクエストタイムアウト

デフォルトのゲートウェイのリクエストタイムアウトは 180 秒です。延長するには、専用ゲートウェイを設定し、チケットを起票してタイムアウトの調整を依頼してください。最大は 600 秒です。

「web search」機能がない

「web search」機能は、モデルサービスをデプロイするだけでは有効になりません。サービス上に別途 AI アプリケーション (Agent) を構築する必要があります。

モデルが思考をスキップする

DeepSeek-R1 モデルが思考プロセスを時々スキップする場合は、思考を強制する DeepSeek の更新済み chat テンプレートを使用してください:

  1. 起動コマンドを変更します

    サービス設定で JSON 設定を編集します。containers-script フィールドを変更し、--served-model-name DeepSeek-R1 の後ろに --chat-template /model_dir/template_force_thinking.jinja を追加します。

    すでにデプロイ済みのサービスの場合は、[モデルギャラリー] > タスク管理 > タスクのデプロイメント に移動し、デプロイ済みのサービスの名前をクリックしてから、右上隅の サービスの更新 をクリックして設定ページに移動します。

  2. リクエストボディを変更します。各リクエストで、messages 配列の末尾に {"role": "assistant", "content": "<think>\n"} を追加します。

思考モードの無効化

DeepSeek-R1 シリーズモデルは、思考プロセスの無効化をサポートしていません。

マルチターン会話

モデルサービスは会話履歴を保存しません。クライアントアプリケーション側で履歴を保存し、後続のリクエストに含める必要があります。次の例は、SGLang を使用してデプロイしたサービスでのマルチターン会話を示しています。

curl -X POST \
    -H "Content-Type: application/json" \
    -H "Authorization: <EAS_TOKEN>" \
    -d '{
        "model": "<model_name>",
        "messages": [
         {
            "role": "user", 
            "content": "Hello"
        },
        {
            "role": "assistant",
            "content": "Hello! I''m glad to see you. What can I help you with?"
        },
        {
            "role": "user",
            "content": "What was my previous question?"
        }
        ]
    }' \
    <EAS_ENDPOINT>/v1/chat/completions

関連ドキュメント