全部產品
Search
文件中心

Container Compute Service:使用ACS GPU算力構建DeepSeek滿血版模型推理服務

更新時間:Apr 09, 2025

在使用Container Compute Service (ACS)算力時,您無需深入瞭解底層硬體,也無需涉及GPU節點管理和配置即可開箱即用。ACS部署簡單、支援隨用隨付,非常適合用於LLM推理任務,可以有效降低推理成本。本文介紹如何使用ACS算力部署生產可用的DeepSeek滿血版模型推理服務。

背景介紹

DeepSeek-R1模型

DeepSeek-R1模型是DeepSeek推出的第一代推理模型,旨在通過大規模強化學習提升大語言模型的推理能力。實驗結果表明,DeepSeek-R1在數學推理、編程競賽等多個任務上表現出色,不僅超過了其他閉源模型,而且在某些任務上接近或超越了OpenAI-O1系列模型。DeepSeek-R1在知識類任務和其他廣泛的任務類型中也表現出色,包括創意寫作、一般問答等。更多關於DeepSeek模型的資訊,請參見DeepSeek AI GitHub倉庫

vLLM

vLLM是一個高效易用的大語言模型推理服務架構,vLLM支援包括通義千問在內的多種常見大語言模型。vLLM通過PagedAttention最佳化、動態批量推理(continuous batching)、模型量化等最佳化技術,可以取得較好的大語言模型推理效率。更多關於vLLM架構的資訊,請參見vLLM GitHub程式碼程式庫

容器計算服務ACS

容器計算服務ACS從2023年推出至今,持續打造更普惠易用、更柔性、更彈性的新一代容器算力。 ACS是以Kubernetes為使用介面的Container Service產品,提供符合容器規範的通用算力和異構算力。容器算力交付模式為Serverless形態,使用者無需關注底層節點及叢集的營運管理。 通過ACS整合調度、容器運行時、儲存、網路等能力,降低了客戶使用k8s的營運複雜度,最佳化了容器算力彈性及柔性使用體驗。 通過隨用隨付、執行個體彈性和柔效能力,可以極大降低資源使用成本。在大語言模型推理情境中,ACS快速的資料和鏡像加速方案,可以進一步最佳化模型啟動時間和資源使用成本。

前提條件

  • 首次使用阿里雲Container Compute Service (ACS)時,需要為服務帳號授予系統預設角色。若且唯若該角色被正確授予後,ACS才能正常地調用相關服務(ECS、OSS、NAS、CPFS、SLB等),建立叢集以及儲存日誌等。具體操作,請參見首次使用容器計算服務

  • 已使用kubectl串連Kubernetes叢集。具體操作,請參見擷取叢集kubeconfig並通過kubectl工具串連叢集

GPU執行個體規格和成本預估

DeepSeek-R1滿血版模型在ACS上不加任何加速,通過消耗16卡時即可完成推理服務部署。ACS GPU單一實例部署推薦使用96 GiB顯存的資源配置:GPU:16卡(單卡96G顯存), CPU:64 vCPU,Memory:512 GiB。您可以參考規格推薦表GPU計算類型卡型規格來選擇合適的執行個體規格。關於如何計算ACS GPU執行個體產生的費用,請參見計費說明

說明
  • 在使用ACS GPU執行個體時,執行個體規格同樣遵循ACS Pod規格規整邏輯

  • ACS Pod預設提供30 GiB的免費的臨時儲存空間(EphemeralStorage),本文中使用的推理鏡像佔用空間較大。如果該儲存空間大小無法滿足您的需求,您可以自訂增加臨時儲存空間大小。詳細操作,請參見增加臨時儲存空間大小

操作步驟

步驟一:準備DeepSeek-R1-GPTQ-INT8模型檔案

大語言模型因其龐大的參數量,需要佔用大量的磁碟空間來儲存模型檔案。建議您使用NAS儲存卷或OSS儲存捲來持久化儲存模型檔案,以下步驟以使用OSS儲存DeepSeek-R1-GPTQ-INT8模型檔案作為樣本。

說明

提交工單,擷取模型檔案和YAML部署配置資訊

  • 模型檔案:DeepSeek-R1-GPTQ-INT8。

  • GPU型號:請將標籤alibabacloud.com/gpu-model-series: <example-model>替換為ACS支援的GPU具體型號。詳細內容,請參見指定ACS GPU算力

  • 基礎鏡像:請將containers[].image: <從PDSA擷取基礎鏡像>替換為實際鏡像地址。

  • 拉取鏡像所需的Secret:擷取並建立Secret,再將imagePullSecrets[].name: <從PDSA擷取Secret>替換為實際Secret名稱。

  • 高效能網路RDMA:與TCP/IP相比,RDMA實現了零拷貝和核心旁路等特性,避免了資料拷貝和頻繁的環境切換,從而實現了更低的延遲、更高的輸送量和更低的CPU佔用。ACS支援在YAML中配置標籤alibabacloud.com/hpn-type: "rdma"來使用RDMA,支援RDMA的GPU型號請提交工單諮詢。

  1. (可選)若通過本地下載的方式擷取模型檔案,在OSS中建立目錄,將模型上傳至OSS。

    說明

    關於ossutil工具的安裝和使用方法,請參見安裝ossutil

    ossutil mkdir oss://<your-bucket-name>/models/DeepSeek-R1-GPTQ-INT8
    ossutil cp -r /mnt/models/DeepSeek-R1-GPTQ-INT8 oss://<your-bucket-name>/models/DeepSeek-R1-GPTQ-INT8
  2. 建立PV和PVC:為目的地組群配置名為llm-model的儲存卷PV和儲存聲明PVC。具體操作,請參見靜態掛載OSS儲存卷

    控制台操作樣本

    以下為樣本PV的基本配置資訊:

    配置項

    說明

    儲存卷類型

    OSS

    名稱

    llm-model

    訪問認證

    配置用於訪問OSS的AccessKey ID和AccessKey Secret。

    Bucket ID

    選擇上一步所建立的OSS Bucket。

    OSS Path

    選擇模型所在的路徑,如/models/DeepSeek-R1-GPTQ-INT8

    以下為樣本PVC的基本配置資訊:

    配置項

    說明

    儲存宣告類型

    OSS

    名稱

    llm-model

    分配模式

    選擇已有儲存卷。

    已有儲存卷

    單擊選擇已有儲存卷連結,選擇已建立的儲存卷PV。

    kubectl操作樣本

    以下為樣本YAML:

    apiVersion: v1
    kind: Secret
    metadata:
      name: oss-secret
    stringData:
      akId: <your-oss-ak> # 配置用於訪問OSS的AccessKey ID
      akSecret: <your-oss-sk> # 配置用於訪問OSS的AccessKey Secret
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: llm-model
      labels:
        alicloud-pvname: llm-model
    spec:
      capacity:
        storage: 30Gi 
      accessModes:
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: llm-model
        nodePublishSecretRef:
          name: oss-secret
          namespace: default
        volumeAttributes:
          bucket: <your-bucket-name> # bucket名稱
          url: <your-bucket-endpoint> # Endpoint資訊,如oss-cn-hangzhou-internal.aliyuncs.com
          otherOpts: "-o umask=022 -o max_stat_cache_size=0 -o allow_other"
          path: <your-model-path> # 本樣本中為/models/DeepSeek-R1-GPTQ-INT8/
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: llm-model
    spec:
      accessModes:
        - ReadOnlyMany
      resources:
        requests:
          storage: 30Gi
      selector:
        matchLabels:
          alicloud-pvname: llm-model

步驟二:基於ACS GPU算力部署模型檔案

  1. 執行下列命令,基於vLLM模型推理架構、使用RDMA加速部署DeepSeek-R1-GPTQ-INT8模型的推理服務。

    該推理服務暴露與OpenAI相容的HTTP API。下列命令將模型參數檔案視作是一種特殊類型的資料集合,掛載到推理服務容器的指定位置(/data/DeepSeek-R1-GPTQ-INT8)。--max-model-len設定了該模型最大可處理的Token長度,增大該配置項可獲得更好的模型對話效果,但是可能會佔用更多GPU顯存資源(使用DeepSeek-R1-GPTQ-INT8模型建議上下文最大長度在128000左右,並結合--gpu-memory-utilization進行調整)。

    kubectl apply -f- <<EOF
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: deepseek-r1
      namespace: default
      labels:
        app: deepseek-r1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: deepseek-r1
      strategy:
        type: RollingUpdate
        rollingUpdate:
          maxSurge: 25%
          maxUnavailable: 25%
      template:
        metadata:
          labels:
            app: deepseek-r1
            alibabacloud.com/compute-class: gpu
            # 指定GPU型號為example-model,請按實際情況填寫,如T4
            alibabacloud.com/gpu-model-series: <example-model>
            # 指定讓應用運行在高效能網路RDMA中,支援RDMA的GPU型號請提交工單諮詢
            alibabacloud.com/hpn-type: "rdma"
        spec:
          imagePullSecrets:
          - name: <從PDSA擷取Secret>
          containers:
          - name: llm-ds-r1
            image: <從PDSA擷取基礎鏡像>
            imagePullPolicy: IfNotPresent
            command:
            - sh
            - -c
            - "vllm serve /data/DeepSeek-R1-GPTQ-INT8 --port 8000 --trust-remote-code --served-model-name ds --max-model-len 128000 --quantization moe_wna16 --gpu-memory-utilization 0.98 --tensor-parallel-size 16"
            resources:
              limits:
                alibabacloud.com/gpu: "16"
                cpu: "64"
                memory: 512Gi
              requests:
                alibabacloud.com/gpu: "16"
                cpu: "64"
                memory: 512Gi
            volumeMounts:
            - name: llm-model
              mountPath: /data/DeepSeek-R1-GPTQ-INT8
            - name: shm
              mountPath: /dev/shm
          restartPolicy: Always
          terminationGracePeriodSeconds: 30
          volumes:
          - name: llm-model
            persistentVolumeClaim:
              claimName: llm-model
          - name: shm
            emptyDir:
              medium: Memory
              sizeLimit: 32Gi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: deepseek-r1
    spec:
      type: ClusterIP
      selector:
        app: deepseek-r1
      ports:
        - protocol: TCP
          port: 8000
          targetPort: 8000
    EOF

步驟三:驗證推理服務

  1. 使用kubectl port-forward在推理服務與本地環境間建立連接埠轉寄。

    說明

    請注意kubectl port-forward建立的連接埠轉寄不具備生產層級的可靠性、安全性和擴充性,因此僅適用於開發和調試目的,不適合在生產環境使用。更多關於Kubernetes叢集內生產可用的網路方案的資訊,請參見Ingress管理

    kubectl port-forward svc/deepseek-r1 8000:8000

    預期輸出:

    Forwarding from 127.0.0.1:8000 -> 8000
    Forwarding from [::1]:8000 -> 8000
  2. 發送模型推理請求。

    curl http://localhost:8000/v1/chat/completions \
      -H "Content-Type: application/json" \
      -d '{
        "model": "ds",
        "messages": [
          {
            "role": "user",
            "content": "給閨女寫一份來自未來2035的信,同時告訴她要好好學習科技,做科技的主人,推動科技,經濟發展;她現在是3年級"
          }
        ],
        "max_tokens": 1024,
        "temperature": 0.7,
        "top_p": 0.9,
        "seed": 10
      }'

    預期輸出:

    {"id":"chatcmpl-53613fd815da46df92cc9b92cd156146","object":"chat.completion","created":1739261570,"model":"deepseek-r1","choices":[{"index":0,"message":{"role":"assistant","content":"<think>\n好的,使用者需要給他的3年級女兒寫一份來自未來的2035年的信,同時傳達三個關鍵資訊:好好學習科技,做科技的主人,推動科技,經濟發展。首先,我得考慮信的語氣應該是溫暖而充滿希望的,同時又要體現出未來的科技感。\n\n考慮到女兒現在是三年級,內容不能太複雜,語言要簡單易懂。同時,要讓女兒感受到科技的重要性,激發她對科技的興趣。可能需要從她日常生活出發,舉一些她可能接觸過的例子,比如電子產品、互連網等,這樣她更容易產生共鳴。\n\n接下來,我得思考如何結構這封信。可能從歡迎她收到這封信開始,然後介紹未來科技的發展,比如智能機器人、智能家居等。然後重點強調學習科技的重要性,鼓勵她成為科技的主人,參與科技發展。最後,表達對她的期望和祝福。\n\n在內容上,要突出科技對生活的影響,比如智能助手、智能家居、新能源汽車等,這些都是孩子可能聽說過的,但具體細節可能需要簡化,避免過於技術化,保持趣味性。\n\n同時,信中要提到科技對經濟的影響,比如經濟增長、創造就業機會等,但要以一種積極、鼓勵的方式呈現,讓女兒感受到科技帶來的好處,而不是單純的數字遊戲。\n\n最後,結尾部分要溫暖,表達對她的驕傲和期待,鼓勵她勇敢追求未來,成為科技的引領者。\n\n總的來說,這封信需要兼顧教育性、趣味性和鼓勵性,用簡單明了的語言,結合具體的未來科技例子,讓女兒在輕鬆的閱讀中感受到科技的魅力和學習的重要性。\n</think>\n\n親愛的未來2035年的你:\n\n你好!\n\n首先,我要告訴你一個好訊息——地球已經進入了一個全新的時代!2035年,科技已經不再是科幻小說裡的故事,而是我們 everyday life 的一部分。今天,我寫這封信,想告訴你一些關於未來的秘密,以及你應該如何在這個科技飛速發展的世界裡生活和學習。\n\n### 1. **科技就在你身邊**\n   在2035年,科技已經無處不在。我們每個人都能擁有一台智能助手,就像一個 always-available 的老師,隨時為你解答問題。你可以用一個簡單的應用程式,就能控制家裡的智能家居裝置——開關燈、調節溫度、甚至做飯,全靠你的指令!\n   \n   還有,你可能已經聽說到了——智能機器人。這些機器人不僅能協助我們完成繁瑣的工作,還能在學習和娛樂中大顯身手。它們可以陪你聊天、陪你學習,甚至還能幫你解決數學難題!想象一下,當你遇到一道難題時,機器人會耐心地一步一步地教你解題方法,是不是很棒?\n\n### 2. **學習科技的重要性**\n   在未來的2035年,科技已經成為了推動社會發展的主要動力。每一個行業都在被科技改變:醫生可以用先進的醫療設備 early detect 病症;教師可以通過線上課堂讓學生們足不出戶就能學習全球的知識;農民可以用智慧型裝置精準地管理田地,確保每一棵樹都得到最好的照顧。\n\n   所以,我要告訴你,學習科技是每一個孩子最重要的任務。科技不僅能讓你掌握更多的知識,還能讓你成為未來的主人。你將有機會去創造新的科技,改變我們的生活!\n\n### 3. **做科技的主人**\n   在2035年,科技的世界需要每個人的力量。你不需要是某個公司的高管,只需要是你自己。你可以用你的智慧和雙手,去推動科技的發展。比如,你可以在學校裡參與科技創新比賽,設計出更智能的機器人;你可以在家裡發明一些小發明,讓生活更方便。\n\n   重要的是,你要有勇氣去嘗試新事物,去探索未知的世界。科技的世界是無限廣闊的,每一個人都能在這裡找到自己的位置。\n\n### 4. **關於經濟**\n   未來的2035年,經濟會因為科技的發展而變得更加繁榮。智能城市將會讓我們的生活更加高效,新能源汽車將會讓我們的出行更加環保,醫學科技將會讓我們的健康得到更好的保障。\n\n   所以,當你站在這個時代的起點時,你要知道,科技不僅是改變我們生活的方式,更是創造未來的機會。\n\n### 5. **我的期望**\n   我希望未來的你能夠熱愛科技,理解科技,掌握科技。你不僅要學會使用科技,還要理解其中的原理,知道它背後的故事。當你長大後,你可能會成為科技領域的領軍人物,引領我們走向一個更加光明的未來。\n\n   未來的世界需要你!你準備好迎接挑戰了嗎?\n\n最後,我要告訴你,你已經比現在的任何人都更聰明,更勇敢,更有潛力。未來的路雖然很長,但只要你願意努力,就一定能夠實現自己的夢想。\n\n親愛的未來2035年的你,加油!\n\n你的爺爺","tool_calls":[]},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"usage":{"prompt_tokens":40,"total_tokens":1034,"completion_tokens":994,"prompt_tokens_details":null},"prompt_logprobs":null}

(可選)步驟四:清理環境

如果不再需要使用本文檔中部署的模型推理服務,請及時清理環境。

  1. 清理模型推理工作負載和服務。

    kubectl delete deployment deepseek-r1
    kubectl delete service deepseek-r1
  2. 清理PV和PVC。

    kubectl delete pvc llm-model
    kubectl delete pv llm-model

    預期輸出:

    persistentvolumeclaim "llm-model" deleted
    persistentvolume "llm-model" deleted

相關文檔