全部產品
Search
文件中心

Platform For AI:通過EAS部署大語言模型

更新時間:Oct 17, 2025

手動部署大語言模型涉及複雜的環境配置、效能調優和成本管理。EAS提供了一站式LLM部署解決方案,支援DeepSeek、Qwen等熱門模型一鍵部署。

步驟一:部署LLM服務

以部署公用模型中的Qwen3-8B為例。

說明

公用模型是指已預置部署模板的模型,可一鍵部署,無需準備模型檔案。如選擇自訂模型,需通過Object Storage Service等方式掛載模型檔案。

  1. 登入PAI控制台,在頁面上方選擇目標地區,並在右側選擇目標工作空間,然後單擊進入EAS

  2. 推理服務頁簽,單擊部署服務,然後在情境化模型部署地區,單擊LLM大語言模型部署

  3. 部署LLM大語言模型頁面,配置以下關鍵參數。

    • 模型配置:選擇公用模型,在列表中搜尋並選擇Qwen3-8B

    • 推理引擎:推薦使用SGLang/vLLM(高度相容OpenAI API標準)。本文以vLLM為例,更多說明,請參見選擇合適的推理引擎

    • 部署模板:選擇單機。系統將根據模板自動填滿推薦的執行個體規格、鏡像等參數。

  4. 單擊部署,服務部署耗時約5分鐘。當服務狀態變為運行中,表示部署成功。

    說明

    若服務部署失敗,請參考服務狀態異常解決。

步驟二:線上調試

部署成功後,建議先通過線上調實驗證服務正常運行。單擊目標服務名稱進入詳情頁面,切換到線上調試頁簽,如下構造並發送請求。

  1. 選擇POST方法。

  2. 在自動填滿的URL末尾,追加路徑/v1/chat/completions

  3. 確保要求標頭(Headers)中包含Content-Type: application/json

  4. 填入請求體(Body):使用vLLM推理引擎,model值必須替換為正確的模型名稱(可通過/v1/models介面發送GET請求擷取)。按照步驟一部署Qwen3-8B此處需將<model_name>需替換為Qwen3-8B

    {
      "model": "<model_name>",
      "messages": [
        {
          "role": "user",
          "content": "Hello!"
        }
      ],
      "max_tokens": 1024
    }

image

步驟三:調用LLM服務

在調用之前,請在服務詳情頁面的概覽頁簽查看調用資訊擷取訪問地址和Token,後續使用<EAS_ENDPOINT>和<EAS_TOKEN>指代這兩個值。

API調用

不同推理引擎的model參數處理存在關鍵差異:

  • vLLM/SGLang:model值配置為模型名稱,可通過/v1/models介面發送GET請求擷取。

  • BladeLLM:BladeLLM服務端點本身無需model參數。但在使用OpenAI SDK時,由於用戶端強制要求該參數,可設定為空白字串""以作相容。詳情請參見BladeLLM服務調用參數配置說明

    重要

    使用BladeLLM時,請務必在請求中顯式設定max_tokens參數,否則輸出將預設在16個token後被截斷。

程式碼範例如下:

OpenAI SDK

推薦使用官方Python SDK與服務互動。確保已安裝OpenAI SDK:pip install openai

from openai import OpenAI

# 1. 配置用戶端
# <EAS_TOKEN>需替換為部署服務的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()方式擷取模型名稱。設定Null 字元串以相容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)

cURL

對於快速測試或指令碼整合,可使用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>需替換為部署服務的訪問地址和Token。

  • <model_name>需替換為模型名稱。對於vLLM/SGLang,可通過模型列表介面<EAS_ENDPOINT>/v1/models擷取。對於BladeLLM,不支援該介面,可省略該欄位或設為 ""。

    curl -X GET <EAS_ENDPOINT>/v1/models -H "Authorization: <EAS_TOKEN>"

Python requests庫

對於不希望引入OpenAI SDK依賴的情境,可使用requests庫。

import json
import requests

# <EAS_ENDPOINT>需替換為部署服務的訪問地址
EAS_ENDPOINT = "<EAS_ENDPOINT>"
# <EAS_TOKEN>需替換為部署服務的Token
EAS_TOKEN = "<EAS_TOKEN>"
# <model_name>需替換為模型名稱,可通過模型列表介面<EAS_ENDPOINT>/v1/models擷取(對於BladeLLM,不支援該介面,可省略 "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"])

本地構建WebUI

Gradio是一個基於Python的方便使用的介面庫,能快速建立機器學習模型的互動式介面。請參考以下步驟,在本地運行Gradio WebUI。

  1. 下載代碼:根據部署時選擇的推理引擎,下載對應代碼。如網路環境可穩定訪問GitHub,請使用GitHub連結,否則請使用OSS連結。

  2. 環境準備:要求Python3.10 或更高版本,並安裝依賴 pip install openai gradio

  3. 啟動Web應用:在終端執行以下命令(其中<EAS_ENDPOINT>和<EAS_TOKEN> 需替換為部署服務的訪問地址和Token)。

    python webui_client.py --eas_endpoint "<EAS_ENDPOINT>" --eas_token "<EAS_TOKEN>"
  4. 啟動成功後,會輸出一個本地URL(通常是 http://127.0.0.1:7860),在瀏覽器中開啟該URL進行訪問。

整合至第三方應用

EAS服務可整合至支援OpenAI API的各類用戶端和開發工具。配置的核心要素是服務訪問地址、Token和模型名稱。

Dify

  1. 安裝模型供應商OpenAI-API-compatible

    單擊頁面右上方的頭像-設定,左側選擇模型供應商。如果模型列表中沒有OpenAI-API-compatible,在下方列表尋找安裝。

    image

  2. 添加模型

    單擊OpenAI-API-compatible卡片右下角添加模型,參數如下配置:

    • 模型類型:選擇LLM。

    • 模型名稱:vLLM部署請通過/v1/models介面發送GET請求擷取。樣本填寫Qwen3-8B

    • API Key:填寫EAS服務Token。

    • API endpoint URL:填寫EAS服務公網調用地址(注意末尾加上/v1)。

  3. 測試使用

    1. 在Dify主介面單擊建立空白應用,選擇Chatflow類型,填入應用程式名稱等資訊後單擊建立。

    2. 單擊LLM節點,選擇添加的模型,並設定上下文和提示詞。image

    3. 單擊右上方預覽,輸入問題。

      image

Chatbox

  1. 前往Chatbox,根據您的裝置下載並安裝合適的版本,或直接啟動網頁版。本方案以macOS M3為例。

  2. 添加模型提供方。單擊設定,添加模型提供方,填寫名稱如pai,API模式選擇OpenAI API相容

    image

  3. 選擇模型提供方pai,配置如下參數。

    • API 金鑰:填寫EAS服務Token。

    • API 主機:填寫EAS服務公網調用地址(注意末尾加上/v1)。

    • API 路徑:無需填寫。

    • 模型:單擊擷取進行添加(若推理引擎為BladeLLM,不支援通過介面擷取,可單擊建立填寫)。

    image

  4. 對話測試。單擊新對話,文本輸入框右下角選擇模型服務。

    image

Cherry Studio

計費說明

包括但不限於以下費用,詳情請參見模型線上服務(EAS)計費說明

  • 計算費用:主要成本來源,在建立EAS服務時,根據需求選擇隨用隨付或訂用帳戶的資源。

  • 儲存費用:如果使用自訂模型,模型檔案儲存體在Object Storage Service中,會根據儲存用量產生相應的Object Storage Service費用。

應用於生產環境

選擇合適的模型

  1. 明確應用情境

    • 通用對話:請務必選擇指令微調模型,而非基本模型,以確保模型能理解並遵循您的指令。

    • 代碼產生:選擇專門的代碼模型,如 Qwen3-Coder 系列,它們在代碼相關任務上表現通常遠超通用模型。

    • 特定領域任務:如果任務非常專業(如金融、法律),可以考慮尋找在該領域微調過的模型,或者使用通用模型進行微調。

  2. 效能與成本:通常,模型參數量越大,能力越強,但部署所需的計算資源也越多,推理成本相應更高。建議您從較小的模型(如7B層級)開始驗證,若效能無法滿足需求,再逐步嘗試更大的模型。

  3. 參考權威評測:可以參考OpenCompass、LMSys Chatbot Arena等行業公認的評測榜單。這些榜單從推理、編碼、數學等多個維度對模型進行客觀評估,能提供有價值的選型依據。

選擇合適的推理引擎

  • vLLM/SGLang:作為開源社區的主流選擇,擁有廣泛的模型支援和豐富的社區文檔與樣本,易於整合和問題排查。

  • BladeLLM:阿里雲PAI團隊自研的推理引擎,針對特定模型(尤其是Qwen系列)有深度最佳化,可能獲得更高的效能和更低的顯存佔用。

推理最佳化

  • LLM智能路由:基於即時token輸送量、GPU顯存使用率等指標動態分發請求,均衡各推理執行個體的算力與顯存分配,適用於部署多個推理執行個體,且預期請求負載不均的情境,提升叢集資源使用率與系統穩定性。

  • 基於專家並行和PD分離部署MoE模型:針對專家混合(Mixture-of-Experts, MoE)模型,通過專家並行(EP)和Prefill-Decode(PD)分離部署等技術,提升推理吞吐、降低部署成本。

常見問題

  1. 調用返回錯誤Unsupported Media Type: Only 'application/json' is allowed

    請確保請求Headers中包含 Content-Type: application/json

  2. 調用返回錯誤The model '<model_name>' does not exist.

    vLLM推理引擎要求model欄位必須填寫正確。可通過調用/v1/models介面(GET請求)擷取模型名稱。

更多問題請參見EAS常見問題