為了整合DeepSeek系列大模型的能力,需搭建一個穩定、可擴充的後端模型服務。通過Model Gallery可一鍵部署DeepSeek-V3和DeepSeek-R1系列模型,無需處理底層計算環境配置、模型載入和推理最佳化等基礎設施管理工作。最終獲得一個相容標準API的模型服務終端節點,並可將其整合到應用程式中。
方案架構
方案基於PAI平台實現,其核心架構包括以下組件:
Model Gallery:作為模型的分發與部署入口,提供了預置的DeepSeek系列模型及相應的部署配置。
模型線上服務 (EAS):承載模型部署與推理的核心服務。它負責自動化地管理底層計算資源(如GPU),並根據配置啟動模型服務執行個體。
推理加速引擎 (SGLang/vLLM/BladeLLM):用於最佳化模型推理效能。
SGLang/vLLM:提供與OpenAI API完全相容的介面,便於現有應用遷移。
BladeLLM:自研的高效能推理架構,在特定情境下可提供更優的推理效能。
API Gateway:EAS將部署好的模型服務通過一個安全的API Gateway暴露出來,提供服務訪問地址(Endpoint)和認證令牌(Token)。
步驟一:模型與資源規劃
1. 選擇推理引擎
2. 選擇模型與資源
模型的選擇決定了所需的計算資源和部署成本。DeepSeek模型分為“滿血版”和“蒸餾版”,其資源需求差異巨大。
開發測試:推薦使用蒸餾版模型,如
DeepSeek-R1-Distill-Qwen-7B。此類模型資源佔用小(通常為單張24GB顯存的GPU),部署快,成本低,適合快速驗證功能。生產環境:根據效果和成本綜合評估。
DeepSeek-R1-Distill-Qwen-32B在效果和成本之間取得了較好的平衡。如需更強的模型效果,可選擇滿血版,但這需要多卡高端GPU(如8卡96GB顯存的GPU),成本會顯著增加。
下表列出了不同模型版本所需的最低配置,以及使用不同機型和推理引擎時支援的最大Token數。
滿血版模型
模型 | 部署方式 | 支援的最大Token數(輸入+輸出) | 最低配置 | |
SGLang(推薦) | vLLM | |||
DeepSeek-R1 | 單機-Nvidia GPU | 56000 | 65536 | 單機8卡GU120(8 * 96 GB顯存) |
單機-GP7V機型 | 56000 | 16384 | ||
分布式-靈駿資源 | 163840 | 163840 | ||
DeepSeek-V3 | 單機-Nvidia GPU | 56000 | 65536 | 單機8卡GU120(8 * 96 GB顯存) |
單機-GP7V機型 | 56000 | 16384 | ||
分布式-靈駿智算資源 | 163840 | 163840 | ||
單機部署機型說明:
Nvidia GPU:
ml.gu8v.c192m1024.8-gu120、ecs.gn8v-8x.48xlarge:公用資源,庫存可能較緊張。ecs.ebmgn8v.48xlarge:無法通過公用資源使用,請購買EAS專屬資源。
GP7V機型:
ml.gp7vf.16.40xlarge為公用資源,僅可競價使用。當Nvidia GPU資源緊張時,可切換至華北6(烏蘭察布)尋找GP7V資源,部署時請務必配置VPC。
分布式部署(對效能要求較高時推薦使用)機型說明:
分布式部署依賴高速網路,故必須使用PAI靈駿智算資源(提供高效能、高彈性異構算力服務)且部署時務必配置VPC。使用靈駿智算資源請切換地區至華北6(烏蘭察布)。
靈駿公用資源:
ml.gu7xf.8xlarge-gu108:單一實例部署需機器數4,僅可競價使用。GP7V機型:單一實例部署需機器數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-R1-Distill-Qwen-7B,進入模型詳情頁。單擊頁面右上方部署,在部署配置頁面,參考步驟一的規劃設定配置以下參數。
推理引擎:推薦使用SGLang或vLLM。
部署資源:選擇公用資源或專屬資源,並根據模型要求選擇合適的GPU規格。
預設使用公用資源,並給出了推薦規格。若庫存不足,可嘗試切換地區。
重要使用公用資源部署,服務進入運行中狀態即開始按時間長度計費,即使無調用。測試後請及時停止服務。
若選擇資源配額,請注意根據機型選擇對應的推理引擎和部署模板。如使用GP7V機型,推理引擎可選擇SGLang,部署模板可選擇單機-GP7V機型。

確認所有配置無誤後,單擊部署。系統將開始建立服務。
說明對於大型模型(如DeepSeek-R1滿血版),模型載入過程可能需要20-30分鐘。
部署任務的狀態可在Model Gallery > 任務管理 > 部署任務頁面查看。單擊服務名稱可進入服務詳情頁。還可以通過右上方的更多資訊,跳轉到PAI-EAS的模型服務詳情頁,擷取更多資訊。

步驟三:線上調試
在Model Gallery > 任務管理 > 部署任務中單擊已部署的服務名稱,在線上測試模組中找到EAS線上調試的入口。
以SGLang/vLLM部署為例,可通過<EAS_ENDPOINT>/openapi.json擷取服務的API 描述檔案。以下測試對話介面POST <EAS_ENDPOINT>/v1/chat/completions。
補充請求路徑。線上調試中已經填充的路徑是
<EAS_ENDPOINT>,需補充具體API路徑v1/chat/completions。構造請求體。
如果提示詞是:請計算3+5等於幾?
請求體格式如下。其中,model參數值為模型列表介面
<EAS_ENDPOINT>/v1/models擷取的模型名稱,這裡以DeepSeek-R1-Distill-Qwen-7B為例。{ "model": "DeepSeek-R1-Distill-Qwen-7B", "messages": [ { "role": "user", "content": "請計算3+5等於幾?" } ] }發起請求。

步驟四:調用模型服務
對於DeepSeek-R1系列模型,官方給出使用建議如下:
temperature設定在0.5-0.7之間,推薦 0.6,防止輸出重複或不連貫。
不要添加system prompt,所有的指令應添加在 user prompt 中。
針對數學類問題,建議在 prompt 中包含“請逐步推理,並將最終答案放在\boxed{}中。”
使用BladeLLM加速部署方式,如果不指定max_tokens參數,預設會按照max_tokens=16進行截斷。建議您根據實際需要調整請求參數max_tokens。
API調用
擷取服務的訪問地址和Token。
在Model Gallery > 任務管理 > 部署任務中單擊已部署的服務名稱,進入服務詳情頁。
單擊查看調用資訊擷取調用的訪問地址和Token。

對話介面調用樣本。
其中, <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/completionsimport 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/completionsimport 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"])不同的模型以及不同的部署架構,在使用推理服務時也會存在區別。您可以在Model Gallery的模型介紹頁查看更多API調用方式的詳細說明。
本地構建WebUI
Gradio是一個基於Python的方便使用的介面庫,能快速建立機器學習模型的互動式介面。請參考以下步驟,在本地運行Gradio WebUI。
下載代碼:根據部署時選擇的推理引擎,下載對應代碼。如網路環境可穩定訪問GitHub,請使用GitHub連結,否則請使用OSS連結。
vLLM、SGLang:vLLM/SGLang_github、vLLM/SGLang_oss
BladeLLM:BladeLLM_github、BladeLLM_oss
環境準備:要求Python3.10 或更高版本,並安裝依賴
pip install openai gradio。啟動Web應用:在終端執行以下命令(其中<EAS_ENDPOINT>和<EAS_TOKEN> 需替換為部署服務的訪問地址和Token)。
python webui_client.py --eas_endpoint "<EAS_ENDPOINT>" --eas_token "<EAS_TOKEN>"啟動成功後,會輸出一個本地URL(通常是
http://127.0.0.1:7860),在瀏覽器中開啟該URL進行訪問。
整合第三方應用
步驟五:清理資源
使用公用資源部署的執行個體,建立成功後按執行個體運行時間長度計費,不滿1小時按具體分鐘數折算計費;為避免產生更多資源消耗,在完成使用後,應停止或刪除執行個體。
返回任務管理 > 部署任務頁面。
找到需要停止的服務,在其操作列單擊停止或刪除。
停止:服務執行個體將被釋放,停止計費,但服務配置會保留,可以稍後重新啟動。
刪除:服務配置和執行個體都將被永久刪除。

成本與風險說明
成本構成
使用公用資源部署的服務,從建立成功(狀態為“運行中”)到停止或刪除為止,按分鐘計費,賬單按小時結算。即使服務空閑,計費依然持續。停止服務即可停止計費。
更多詳情,請參見模型線上服務(EAS)計費說明。
成本控制建議
關鍵風險點
意外費用:忘記停止服務將導致持續計費。務必在使用完畢後立即清理資源。
BladeLLM輸出截斷:使用BladeLLM引擎時,若API請求中未指定
max_tokens,輸出將被截斷為16個token,導致功能不符合預期。API調用規範錯誤:
調用DeepSeek-R1系列模型時,在
messages中包含systemprompt可能會導致非預期的行為。API請求的URL必須以
/v1/chat/completions等路徑結尾,否則將返回404錯誤。
資產庫存:部署大型模型(特別是滿血版)時,特定地區的高端GPU資源可能庫存緊張,導致部署失敗或長時間等待。可嘗試切換到其他地區。
模型部署FAQ
點擊部署後服務長時間等待
可能的原因:
當前地區下機器資源不足。
由於模型較大,模型載入耗時較長(對於DeepSeek-R1、DeepSeek-V3這樣的大模型,需要20-30min)。
您可以耐心等待觀察一段時間,如果服務仍長時間無法正常啟動運行,建議嘗試以下步驟:
進入任務管理-部署任務,查看部署任務詳情頁。在頁面右上方單擊,跳轉到PAI-EAS的模型服務詳情,查看服務執行個體狀態。

關閉當前服務,並在控制台左上方切換到其他地區重新部署服務。
說明對於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模板。使用方式:
修改啟動命令。
如圖,在服務配置中,編輯JSON配置,修改containers-script欄位,加上"--chat-template /model_dir/template_force_thinking.jinja"(可以加在"--served-model-name DeepSeek-R1"之後)。

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

請求體修改。在每次請求中,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