全部產品
Search
文件中心

Platform For AI:一鍵部署DeepSeek-V4、DeepSeek-R1模型

更新時間:Jun 12, 2026

手動部署DeepSeek 系列模型需要處理計算環境配置、模型載入和推理最佳化等複雜工作。PAI Model Gallery 提供一鍵部署能力,只需幾步即可獲得相容 OpenAI API 的模型服務,快速整合到您的應用中。

方案架構

核心組件

方案基於PAI平台實現,其核心架構包括以下組件:

  • Model Gallery:作為模型的分發與部署入口,提供了預置的DeepSeek系列模型及相應的部署配置。

  • 模型線上服務 (EAS):承載模型部署與推理的核心服務,自動管理底層計算資源(如GPU)並啟動模型服務執行個體。

  • 推理加速引擎 (SGLang/vLLM/BladeLLM):用於最佳化模型推理效能。

    • SGLang/vLLM:提供與OpenAI API完全相容的介面,便於現有應用遷移。

    • BladeLLM:自研的高效能推理架構,在特定情境下可提供更優的推理效能。

  • API Gateway:提供安全的模型服務訪問通道,支援通過服務訪問地址(Endpoint)和認證令牌(Token)調用模型服務。

部署方式

針對大規模模型,除單機部署外,Model Gallery 還提供了多機分布式EP+PD分離等一鍵部署方案。

如DeepSeek-V4-Pro-FP8、DeepSeek-V4-Flash-FP8均可採用EP+PD分離方式部署。

快速部署與驗證

步驟一:部署模型服務

  1. 登入PAI控制台,在頂部左上方選擇目標地區,從左側導覽列進入工作空间列表,並選擇目標工作空間。

  2. 在工作空間內,導航至快速开始 > Model Gallery

  3. 在模型列表中搜尋並選擇目標模型,例如 DeepSeek-R1-Distill-Qwen-7B,進入模型詳情頁。

  4. 單擊頁面右上方部署,配置以下參數。

    • 推理引擎:推薦使用SGLang或vLLM。

    • 部署資源:選擇公用資源或專屬資源,並根據模型要求選擇合適的GPU規格。

      • 預設使用公用資源,並給出了推薦規格。若無可用規格,可嘗試切換地區。

        重要

        使用公用資源部署,服務執行個體拉起資源即開始按時間長度計費,即使無調用。測試後請及時停止服務。

      • 若選擇資源配額,請注意根據機型選擇對應的推理引擎和部署模板。如使用真武PPU,推理引擎可選擇SGLang,部署模板需選擇單機-真武PPU

    部署模板預設選擇單機,推薦的GPU規格樣本為 ecs.gn7i-c16g1.4xlarge(16 vCPU、60 GiB、NVIDIA A10 × 1),費用約 CNY 11.1/小時。

  5. 確認所有配置無誤後,單擊部署。系統將開始建立服務。

    說明

    對於大型模型(如DeepSeek-R1滿血版),模型載入過程可能需要20-30分鐘。

  6. 部署任務的狀態可在Model Gallery > 任务管理 > 部署任务頁面查看。單擊服務名稱可進入服務詳情頁。還可以通過右上方的更多信息,跳轉到PAI-EAS的模型服務詳情頁,擷取更多資訊。

    在服務詳情頁中,您可以在狀態欄位旁單擊查看部署事件查看詳情,在調用資訊欄位單擊查看調用資訊擷取服務調用地址與Token。您也可以通過左側導覽列的模型線上服務(EAS)進入EAS服務管理頁面。

步驟二:線上調試

Model Gallery > 任务管理 > 部署任务中單擊已部署的服務名稱,切換到在线调试頁面,支援对话调试API调试

說明

對於DeepSeek-R1系列模型,官方給出使用建議如下:

  • temperature設定在0.5-0.7之間,推薦 0.6,防止輸出重複或不連貫。

  • 不要添加system prompt,所有的指令應添加在 user prompt 中。

  • 針對數學類問題,建議在 prompt 中包含“請逐步推理,並將最終答案放在\boxed{}中。”

若僅有API調試頁面,以大語言模型服務的對話介面為例,如下進行調試:

  1. 確認請求路徑:<EAS_ENDPOINT>/v1/chat/completions。其中,<EAS_ENDPOINT>為服務訪問地址,通常已自動填滿。

    SGLang/vLLM部署的服務,可通過<EAS_ENDPOINT>/openapi.json擷取更多支援的API。
  2. 構造請求體

    如果提示詞是:請計算3+5等於幾?則請求體格式如下。

    其中,model參數值為模型列表介面<EAS_ENDPOINT>/v1/models擷取的模型名稱,這裡以DeepSeek-R1-Distill-Qwen-7B為例。

    {
        "model": "DeepSeek-R1-Distill-Qwen-7B",
        "messages": [
            {
                "role": "user",
                "content": "請計算3+5等於幾?"
            }
        ]
    }
  3. 發起請求。

    線上調試頁簽中,HTTP 方法選擇 POST,URL 填寫服務訪問地址(如 http://<服務地址>/v1/chat/completions)。在 Body 地區選取項目 raw,輸入 JSON 請求體,包含 model(如 DeepSeek-R1-Distill-Qwen-7B)和 messages 欄位。單擊發送請求,右側 Response 地區返回 Status Code 200,Body 中以 JSON 格式顯示模型的回答結果。

單擊查看BladeLLM對話介面請求資料樣本

重要

使用BladeLLM加速部署方式,如果不指定max_tokens參數,預設會按照max_tokens=16進行截斷。建議您根據實際需要調整請求參數max_tokens

{
    "messages": [
        {
            "role": "user",
            "content": "請計算3+5等於幾?"
        }
    ],
    "max_tokens": 2000
}

API調用

  1. 擷取服務的訪問地址和Token。

    1. Model Gallery > 任务管理 > 部署任务中單擊已部署的服務名稱,進入服務詳情頁。

    2. 單擊查看调用信息擷取調用的訪問地址和Token。

  2. 對話介面調用樣本。

    其中, <EAS_ENDPOINT>需替換為部署服務的訪問地址,<EAS_TOKEN>需替換為部署服務的Token。

    OpenAI SDK

    注意:

    • 需要補全endpoint最後的/v1。

    • BladeLLM加速部署不支援使用client.models.list()方式擷取模型列表,您可以直接指定model的值為""以相容使用。

    SGLang/vLLM加速部署
    from openai import OpenAI
    # 1. 配置用戶端
    # 將<<EAS_ENDPOINT>和<EAS_TOKEN>替換為實際的服務訪問地址和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"無法擷取模型列表,檢查Endpoint和Token。錯誤: {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>需替換為部署服務的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加速部署

    其中,<model_name>請替換為模型列表介面<EAS_ENDPOINT>/v1/models擷取的模型名稱。

    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>需替換為部署服務的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>請替換為模型列表介面<EAS_ENDPOINT>/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>需替換為部署服務的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參數,預設會按照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. 不同的模型以及不同的部署架構,在使用推理服務時也會存在區別。您可以在Model Gallery的模型介紹頁查看更多API調用方式的詳細說明。

    以 DeepSeek-R1-Distill-Qwen-7B 模型為例,Model Gallery 的模型介紹頁展示了 BladeLLM 加速部署的資源要求(需要 24G 顯存,僅支援 ecs.gn7 及後續型號),並說明該模型相容 OpenAI 的 v1/completionsv1/chat/completions 介面,同時提供了 curl 命令和 Python 指令碼的調用樣本。

整合第三方應用

接入ChatboxDify或Cherry Studio,請參見整合第三方用戶端

構建本地WebUI

參見使用Gradio構建本地Web UI

資源清理

使用公用資源部署的執行個體,拉起資源後即開始按資源佔用時間長度計費,不滿1小時按具體分鐘數折算計費;為避免產生更多資源消耗,在完成使用後,應停止或刪除執行個體。

  1. 返回任務管理 > 部署任務頁面。

  2. 找到需要停止的服務,在其操作列單擊停止刪除

    • 停止:服務執行個體將被釋放,停止計費,但服務配置會保留,可以稍後重新啟動。

    • 刪除:服務配置和執行個體都將被永久刪除。

選擇模型與資源

模型的選擇決定了所需的計算資源和部署成本。DeepSeek模型分為“滿血版”和“蒸餾版”,其資源需求差異巨大。

  • 開發測試:推薦使用蒸餾版模型,如DeepSeek-R1-Distill-Qwen-7B。此類模型資源佔用小(通常為單張24GB顯存的GPU),部署快,成本低,適合快速驗證功能。

  • 生產環境:根據效果和成本綜合評估。DeepSeek-R1-Distill-Qwen-32B在效果和成本之間取得了較好的平衡。如需更強的模型效果,可選擇滿血版,但這需要多卡高端GPU(如8卡96GB顯存的GPU),成本會顯著增加。

下表列出了不同模型版本所需的最低配置,以及使用不同機型和推理引擎時支援的最大Token數。

滿血版模型

模型

部署方式

支援的最大Token數(輸入+輸出)

最低配置

SGLang(推薦)

vLLM

DeepSeek-V4-Pro

單機/分布式

1M

1M

單機8卡H20-3e(8 * 141 GB顯存)

DeepSeek-V4-Flash

單機

1M

1M

單機8卡H20-3e(8 * 141 GB顯存)

DeepSeek-V4-Pro-FP8

單機/PD分離

1M

/

單機8卡H20-3e(8 * 141 GB顯存)

DeepSeek-V4-Flash-FP8

單機/PD分離

1M

/

單機4卡H20-3e(4 * 141 GB顯存)

DeepSeek-V3

單機-Nvidia GPU

56000

65536

單機8卡GU120(8 * 96 GB顯存)

單機-真武PPU

56000

16384

分布式-靈駿智算資源

163840

163840

DeepSeek-R1

單機-Nvidia GPU

56000

65536

單機8卡GU120(8 * 96 GB顯存)

單機-真武PPU

56000

16384

分布式-靈駿資源

163840

163840

單機部署機型說明:

  • Nvidia GPU

    • ml.gu8v.c192m1024.8-gu120ecs.gn8v-8x.48xlarge:公用資源,庫存可能較緊張。

    • ecs.ebmgn8v.48xlarge:無法通過公用資源使用,請購買EAS專屬資源

  • 真武PPU:ml.gp7vf.16.40xlarge為公用資源,僅可競價使用。當Nvidia GPU資源緊張時,可切換至華北6(烏蘭察布)尋找真武PPU資源,部署時請務必配置VPC。

分布式部署(對效能要求較高時推薦使用)機型說明:

分布式部署依賴高速網路,故必須使用PAI靈駿智算資源(提供高效能、高彈性異構算力服務)且部署時務必配置VPC。使用靈駿智算資源請切換地區至華北6(烏蘭察布)。

  • 靈駿公用資源

    • ml.gu7xf.8xlarge-gu108 :單一實例部署需機器數4,僅可競價使用。

    • 真武PPU:單一實例部署需機器數2。

  • 靈駿預付費資源:需開通白名單,請聯絡我們經理或提交工單諮詢。

蒸餾版模型

模型

支援的最大Token數(輸入+輸出)

最低配置

SGLang(推薦)

vLLM

BladeLLM

DeepSeek-R1-Distill-Qwen-1.5B

131072

131072

131072

1卡A10(24 GB顯存)

DeepSeek-R1-Distill-Qwen-7B

131072

32768

131072

1卡A10(24 GB顯存)

DeepSeek-R1-Distill-Llama-8B

131072

32768

131072

1卡A10(24 GB顯存)

DeepSeek-R1-Distill-Qwen-14B

131072

32768

131072

1卡GPU L(48 GB顯存)

DeepSeek-R1-Distill-Qwen-32B

131072

32768

131072

2卡GPU L(2 * 48 GB顯存)

DeepSeek-R1-Distill-Llama-70B

131072

32768

131072

2卡GU120(2 * 96 GB顯存)

PAI最佳化版模型

Model Gallery提供了DeepSeek相關的PAI最佳化版模型一鍵部署:

  • DeepSeek-R1-PAI-optimized

  • DeepSeek-R1-0528-PAI-optimized

  • DeepSeek-V3-0324-PAI-optimized

成本與風險說明

成本構成

使用公用資源部署的服務,從執行個體拉起資源到停止或刪除為止,按分鐘計費,賬單按小時結算。即使服務空閑,計費依然持續。停止服務即可停止計費。

更多詳情,請參見模型線上服務(EAS)計費說明

成本控制建議

  • 及時清理:開發測試後,立即停止刪除服務,以有效控製成本。

  • 選擇合適模型:在非生產環境,優先使用成本較低的蒸餾版模型。

  • 競價使用資源:對於非生產任務,可在部署時開啟競價模式,但注意需滿足一定條件才能競價成功,且有資源不穩定的風險。

  • 長期使用優惠:對於長期啟動並執行生產服務,可通過購買節省計劃或預付費資源來降低成本。

關鍵風險點

  • 意外費用:忘記停止服務將導致持續計費。務必在使用完畢後立即清理資源。

  • BladeLLM輸出截斷:使用BladeLLM引擎時,若API請求中未指定max_tokens,輸出將被截斷為16個token,導致功能不符合預期。

  • API調用規範錯誤

    • 調用DeepSeek-R1系列模型時,在messages中包含system prompt可能會導致非預期的行為。

    • API請求的URL必須以/v1/chat/completions等路徑結尾,否則將返回404錯誤。

  • 資產庫存:部署大型模型(特別是滿血版)時,特定地區的高端GPU資源可能庫存緊張,導致部署失敗或長時間等待。可嘗試切換到其他地區。

模型部署FAQ

如何選擇推理引擎

  • 優先推薦 SGLang:在提供高效能的同時,完全相容OpenAI API標準,適配主流應用生態,在多數情境下支援的最大上下文長度優於vLLM。

  • 備選vLLM:作為業界流行的架構,同樣提供良好的API相容性。

  • 特定情境使用 BladeLLM:僅在追求更高推理效能,且能接受API與OpenAI標準存在差異(例如,不支援通過client.models.list()max_tokens參數有預設截斷行為)時,才選用阿里雲 PAI 自研的高效能推理架構BladeLLM。

點擊部署後服務長時間等待

可能的原因:

  • 當前地區下機器資源不足。

  • 由於模型較大,模型載入耗時較長(對於DeepSeek-R1、DeepSeek-V3這樣的大模型,需要20-30min)。

您可以耐心等待觀察一段時間,如果服務仍長時間無法正常啟動運行,建議嘗試以下步驟:

  1. 進入任务管理-部署任务,查看部署任務詳情頁。在頁面右上方單擊更多 > 更多信息,跳轉到PAI-EAS的模型服務詳情,查看服務執行個體狀態。

    執行個體狀態列顯示庫存不足,表示當前資源不足導致執行個體無法正常調度。

  2. 關閉當前服務,並在控制台左上方切換到其他地區重新部署服務。

    說明

    對於DeepSeek-R1、DeepSeek-V3這樣的超大參數量模型,需要8卡GPU才能啟動服務(資產庫存較緊張),您可以選擇部署DeepSeek-R1-Distill-Qwen-7B等蒸餾小模型(資產庫存較富裕)。

模型調用FAQ

調用API返回404

請檢查調用的URL是否加上了OpenAI的API尾碼,例如v1/chat/completions。詳情可以參考模型首頁調用方式介紹。

如果是vLLM加速部署,檢查對話介面的請求體中model參數是否填寫了正確的模型名稱。可以通過v1/models擷取模型名稱。

請求太長導致網關逾時

部署使用的預設閘道請求逾時時間是180秒,如果需要延長逾時時間,可以配置專屬網關,並提交工單調整專屬網關的請求逾時時間,最大可以調整到600秒。

為何沒有“連網搜尋”

“連網搜尋”功能並不是僅通過直接部署一個模型服務就能實現的,而是需要基於該模型服務自行構建一個AI應用(Agent)來完成。

模型跳過思考怎麼辦?

如果部署DeepSeek-R1模型,針對模型有時會跳過思考過程的情況,可採用DeepSeek更新的強制思考的chat模板。使用方式:

  1. 修改啟動命令

    在服務配置中,編輯JSON配置,修改containers-script欄位,加上"--chat-template /model_dir/template_force_thinking.jinja"(可以加在"--served-model-name DeepSeek-R1"之後)。

    如果是已經部署的服務,在Model Gallery > 任务管理 > 部署任务中單擊已部署的服務名稱,在詳情頁面右上方單擊更新服务,即可進入上述頁面。

  2. 請求體修改。在每次請求中,message最後加上{"role": "assistant", "content": "<think>\n"}。

deepSeek-r1可以關閉思考模式麼?

deepseek-r1系列模型目前不支援關閉思考過程。

如何?多輪對話?

模型服務本身不會儲存歷史對話資訊,需要用戶端儲存歷史對話,再添加到模型調用的請求中。以SGLang部署的服務,樣本如下。

curl -X POST \
    -H "Content-Type: application/json" \
    -H "Authorization: <EAS_TOKEN>" \
    -d '{
        "model": "<model_name>",
        "messages": [
         {
            "role": "user", 
            "content": "你好"
        },
        {
            "role": "assistant",
            "content": "你好!很高興見到你,有什麼我可以幫忙的嗎?"
        },
        {
            "role": "user",
            "content": "我上一個問題是什麼"
        }
        ]
    }' \
    <EAS_ENDPOINT>/v1/chat/completions

相關文檔