全部產品
Search
文件中心

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

更新時間:Mar 15, 2025

在使用Container Compute Service (ACS)算力時,您無需深入瞭解底層硬體,也無需涉及GPU節點管理和配置即可開箱即用。ACS部署簡單、支援隨用隨付,非常適合用於LLM推理任務,可以有效降低推理成本。DeepSeek-R1是一個參數量較大的模型,部分單機GPU無法支援完全載入或高效運行,因此我們推薦使用雙容器執行個體部署方案以及多容器執行個體分布式推理部署方案,能夠更好地支援大規模模型的推理、輸送量提升和效能保障。本文介紹如何使用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快速的資料和鏡像加速方案,可以進一步最佳化模型啟動時間和資源使用成本。

LeaderWorkerSet(以下簡稱LWS)

LWS是Kubernetes社區下特別興趣小組(SIG)提出的一種新的工作負載類型。它與Deployment、StatefulSet等Kubernetes原生工作負載的核心區別在於,LeaderWorkerSet將一組Pod而不是一個Pod看作一個副本。副本的一次擴容通常意味著一次性擴容多個Pod,並且一個副本內的多個Pod存在Leader Pod和Worker Pod的主從關係。這種工作負載類型有利於更好地支撐AI/ML的多機分布式推理任務。更多關於LWS的資訊,請參見LWS GitHub程式碼程式庫

Fluid

Fluid通過管理和調度JindoRuntime實現資料集的可見度、Auto Scaling和資料移轉。通過Fluid可以完成模型訪問加速。它的核心原理是通過緩衝的方式來突破大模型情境下的訪問速度瓶頸。比如有10個推理服務執行個體同時啟動,需要從Object Storage Service中拉取資料,這時由於總的可用頻寬是固定的,每個執行個體只能分到總頻寬的十分之一,這就會導致資料拉取的延時顯著增加,進而影響效能。為了Auto Scaling計算側的分布式緩衝,我們可以將底層儲存系統的有限頻寬擴充到ACS叢集內,讓叢集內的可用頻寬取決於分布式緩衝節點數,這樣我們就能根據業務需求靈活伸縮,大幅縮短模型載入時間長度。

方案介紹

模型切分

DeepSeek-R1模型共有671B參數,單張GPU顯存最大一般只有96GB,無法載入全部模型,因此需要將模型切分。本文基於雙GPU容器執行個體分布式部署,採用模型並行(PP=2)和資料並行(TP=8)的切分方式,模型切分示意圖如下。

image

模型並行(PP=2)將模型切分為兩個階段,每個階段運行在一個GPU容器執行個體上。例如有一個模型M,我們可以將其切分為M1和M2,M1在第一個GPU容器執行個體上處理輸入,完成後將中間結果傳遞給M2,M2在第二個GPU容器執行個體上進行後續操作。

資料並行(TP=8)在模型的每個階段內(例如M1和M2),將計算操作分配到8個GPU上進行。比如在M1階段,當輸入資料傳入時,這些資料將被分割為8份,並分別在8個GPU上同時處理。每個GPU處理一小部分資料,計算擷取的結果然後合并。

分布式部署架構

本方案使用ACS快速部署分布式DeepSeek滿血版推理服務,選擇vLLM + Ray的方式分布式部署DeepSeek-R1模型。同時通過社區LWS來管理DeepSeek在分布式中的Leader-Worker部署模式,通過Fluid在ACS叢集中提供分布式緩衝提高模型的載入速度。vLLM分別部署在兩個ACS GPU Pod執行個體中,每個Pod有8張GPU卡。每個Pod作為一個Ray Group可以提高輸送量和並發,每個Ray Group由Ray head和Ray worker組成,可以將模型進行拆分處理。需要注意的是,不同的分布式部署架構會影響YAML中tensor-parallel-sizeLWS_GROUP_SIZE等變數的取值。

前提條件

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

ACS GPU雙執行個體或多執行個體部署中的單個執行個體推薦使用96 GiB顯存的資源配置:GPU:8卡(單卡96G顯存), CPU:64 vCPU,Memory:512 GiB。您可以參考規格推薦表GPU計算類型卡型規格來選擇合適的執行個體規格。關於如何計算ACS GPU執行個體產生的費用,請參見計費說明

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

  • ACS Pod預設提供30 GiB的免費的臨時儲存空間(EphemeralStorage),本文中使用的推理鏡像registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/vllm:v0.7.2佔用約9.5 GiB。如果該儲存空間大小無法滿足您的需求,您可以自訂增加臨時儲存空間大小。詳細操作,請參見增加臨時儲存空間大小

操作步驟

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

大語言模型因其龐大的參數量,需要佔用大量的磁碟空間來儲存模型檔案,建議您建立NAS儲存卷或OSS儲存捲來持久化儲存模型檔案,本文推薦使用OSS。

說明

模型檔案下載和上傳比較慢,您可以通過提交工單快速將模型檔案複製到您的OSS Bucket。

  1. 執行以下命令,從ModelScope下載DeepSeek-R1模型。

    說明

    請確認是否已安裝git-lfs外掛程式,如未安裝可執行yum install git-lfs或者apt-get install git-lfs安裝。更多的安裝方式,請參見安裝git-lfs

    git lfs install
    GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/deepseek-ai/DeepSeek-R1.git
    cd DeepSeek-R1/
    git lfs pull
  2. 在OSS中建立目錄,將模型上傳至OSS。

    說明

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

    ossutil mkdir oss://<your-bucket-name>/models/DeepSeek-R1
    ossutil cp -r ./DeepSeek-R1 oss://<your-bucket-name>/models/DeepSeek-R1
  3. 將模型儲存到OSS後,有兩種方式載入模型。

    1. 直接使用PVC&PV掛載模型:適用於一些較小的模型,對於Pod啟動、載入模型速度沒有過多要求的應用。

      控制台操作樣本

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

      配置項

      說明

      儲存卷類型

      OSS

      名稱

      llm-model

      訪問認證

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

      Bucket ID

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

      OSS Path

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

      以下為樣本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/
      ---
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: llm-model
      spec:
        accessModes:
          - ReadOnlyMany
        resources:
          requests:
            storage: 30Gi
        selector:
          matchLabels:
            alicloud-pvname: llm-model
    2. 使用Fluid加速模型載入:適用於一些較大的模型,對於Pod啟動、載入模型速度有要求的應用。詳細操作,請參見使用Fluid實現資料加速訪問

      1. 在ACS應用市場通過Helm安裝ack-fluid組件,組件版本需要1.0.11-*及以上。詳細操作,請參見使用Helm建立應用

      2. ACS Pod開啟特權模式。可以通過提交工單進行開啟。

      3. 建立一個用來訪問OSS的Secret。

        apiVersion: v1
        kind: Secret
        metadata:
          name: mysecret
        stringData:
          fs.oss.accessKeyId: xxx
          fs.oss.accessKeySecret: xxx

        其中,fs.oss.accessKeyIdfs.oss.accessKeySecret是用來訪問上述OSS的AccessKey IDAccessKey Secret

      4. 建立Dataset和JindoRuntime。

        apiVersion: data.fluid.io/v1alpha1
        kind: Dataset
        metadata:
          name: deepseek
        spec:
          mounts:
            - mountPoint:  oss://<your-bucket-name>       # 請按實際情況修改<your-bucket-name>
              options:
                fs.oss.endpoint: <your-bucket-endpoint>    # 請按實際情況修改<your-bucket-endpoint>
              name: deepseek
              path: "/"
              encryptOptions:
                - name: fs.oss.accessKeyId
                  valueFrom:
                    secretKeyRef:
                      name: mysecret
                      key: fs.oss.accessKeyId
                - name: fs.oss.accessKeySecret
                  valueFrom:
                    secretKeyRef:
                      name: mysecret
                      key: fs.oss.accessKeySecret
        ---
        apiVersion: data.fluid.io/v1alpha1
        kind: JindoRuntime
        metadata:
          name: deepseek
        spec:
          replicas: 16    # 可以按需調整
          master:
            podMetadata:
              labels:
                alibabacloud.com/compute-class: performance
                alibabacloud.com/compute-qos: default
          worker:
            podMetadata:
              labels:
                alibabacloud.com/compute-class: performance
                alibabacloud.com/compute-qos: default
              annotations:
                kubernetes.io/resource-type: serverless
            resources:
              requests:
                cpu: 16
                memory: 128Gi
              limits:
                cpu: 16
                memory: 128Gi
          tieredstore:
            levels:
              - mediumtype: MEM
                path: /dev/shm
                volumeType: emptyDir
                ## 按需調整
                quota: 128Gi
                high: "0.99"
                low: "0.95"

        建立完成後可以通過kubectl get pod | grep jindo命令檢查Pod是否為Running狀態。預期輸出:

        deepseek-jindofs-master-0    1/1     Running   0          3m29s
        deepseek-jindofs-worker-0    1/1     Running   0          2m52s
        deepseek-jindofs-worker-1    1/1     Running   0          2m52s
        ...
      5. 通過建立DataLoad緩衝模型。

        apiVersion: data.fluid.io/v1alpha1
        kind: DataLoad
        metadata:
          name: deepseek
        spec:
          dataset:
            name: deepseek
            namespace: default
          loadMetadata: true
      6. 通過以下命令檢查緩衝狀態。

        kubectl get dataload

        預期輸出:

        NAME       DATASET    PHASE       AGE     DURATION
        deepseek   deepseek   Executing   4m30s   Unfinished

        當前的PHASEExecuting狀態,說明正在執行中。等待約20分鐘後再次執行命令,如果狀態改為Complete,說明已經緩衝成功。您可以使用kubectl logs $(kubectl get pods --selector=job-name=deepseek-loader-job -o jsonpath='{.items[0].metadata.name}') | grep progress命令擷取Job名稱並查看日誌擷取執行進度。

        Fluid DataLoad資源情況參數說明

        參數名

        說明

        取值範例

        Name

        資料載入任務的名稱

        deepseek

        Dataset

        關聯的資料集名稱

        deepseek

        Phase

        資料載入任務的狀態(如Complete表示完成)

        ExecutingComplete

        Age

        資料載入任務建立的時間

        4m30s

        Duration

        資料載入任務的耗時

        Unfinished16m29s

      7. 通過以下命令檢查Dataset資源。

        kubectl get datasets

        預期輸出:

        NAME       UFS TOTAL SIZE   CACHED    CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
        deepseek   1.25TiB          1.25TiB   2.00TiB          100.0%              Bound   21h

        Fluid Dataset資源情況參數說明

        參數名

        說明

        取值範例

        Name

        資料集的名稱

        deepseek

        UFS Total Size

        資料集在底層儲存中的總大小

        1.25TiB

        Cached

        當前已緩衝的資料量

        1.25TiB

        Cache Capacity

        緩衝的總容量

        2.00TiB

        Cached %

        緩衝完成的百分比

        100.0%

        Phase

        資料集的狀態(如Bound表示已綁定)

        Bound

        Age

        資料集資源建立的時間

        21h

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

  1. 在ACS應用市場通過Helm安裝lws組件。詳細操作,請參見使用Helm建立應用

  2. 使用LeaderWorkerSet部署模型。

    說明
    • 請將YAML中的alibabacloud.com/gpu-model-series: <example-model>替換為ACS支援的GPU具體型號。目前支援的GPU型號列表請諮詢PDSA或提交工單

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

    • 如果使用Fluid載入模型,需要修改兩處PVC的claimName為Fluid Dataset名稱。

    • 不同的分布式部署架構會影響YAML中tensor-parallel-sizeLWS_GROUP_SIZE等變數的取值。

    標準部署樣本

    apiVersion: leaderworkerset.x-k8s.io/v1
    kind: LeaderWorkerSet
    metadata:
      name: deepseek-r1-671b-fp8-distrubution
    spec:
      replicas: 1
      leaderWorkerTemplate:
        size: 2 #leader和worker的總數量
        restartPolicy: RecreateGroupOnPodRestart
        leaderTemplate:
          metadata:
            labels: 
              role: leader
              alibabacloud.com/compute-class: gpu  #指定GPU類型 
              alibabacloud.com/compute-qos: default #指定acs qos等級
              alibabacloud.com/gpu-model-series: <example-model> ##指定GPU型號
          spec:
            volumes:
              - name: llm-model
                persistentVolumeClaim:
                  ## 如果使用fluid,此處應填寫 fluid dataset 名字,比如:deepseek
                  claimName: llm-model
              - name: shm
                emptyDir:
                  medium: Memory
                  sizeLimit: 32Gi
            containers:
              - name: deepseek-r1-671b-leader
                image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/vllm:v0.7.2
                env:
                  - name: NCCL_SOCKET_IFNAME #指定網卡
                    value: eth0
                command:
                  - sh
                  - -c
                  - "/vllm-workspace/ray_init.sh leader --ray_cluster_size=$(LWS_GROUP_SIZE);vllm serve /models/DeepSeek-R1/ --port 8000 --trust-remote-code --served-model-name ds --max-model-len 2048 --gpu-memory-utilization 0.95 --tensor-parallel-size 8 --pipeline-parallel-size 2 --enforce-eager"
    #tensor-parallel-size設定為leader和worker各個pod的總卡數
                resources:
                  limits:
                    nvidia.com/gpu: "8"
                    cpu: "64"
                    memory: 512G
                  requests:
                    nvidia.com/gpu: "8"
                    cpu: "64"
                    memory: 512G           
                ports:
                  - containerPort: 8000
                volumeMounts:
                  - mountPath: /models/DeepSeek-R1
                    name: llm-model
                  - mountPath: /dev/shm
                    name: shm
        workerTemplate:
          metadata:
            labels: 
              alibabacloud.com/compute-class: gpu  #指定GPU類型 
              alibabacloud.com/compute-qos: default #指定acs qos等級
              alibabacloud.com/gpu-model-series: <example-model> ##指定GPU型號
          spec:
            volumes:
              - name: llm-model
                persistentVolumeClaim:
                  ## 如果使用fluid,此處應填寫 fluid dataset 名字,比如:deepseek
                  claimName: llm-model
              - name: shm
                emptyDir:
                  medium: Memory
                  sizeLimit: 32Gi
            containers:
              - name: deepseek-r1-671b-worker
                image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/vllm:v0.7.2
                env:
                  - name: NCCL_SOCKET_IFNAME #指定網卡
                    value: eth0
                command:
                  - sh
                  - -c
                  - "/vllm-workspace/ray_init.sh worker --ray_address=$(LWS_LEADER_ADDRESS)"
                resources:
                  limits:
                    nvidia.com/gpu: "8"
                    cpu: "64"
                    memory: 512G
                  requests:
                    nvidia.com/gpu: "8"
                    cpu: "64"
                    memory: 512G
                ports:
                  - containerPort: 8000
                volumeMounts:
                  - mountPath: /models/DeepSeek-R1
                    name: llm-model
                  - mountPath: /dev/shm
                    name: shm

    使用RDMA加速樣本

    如果使用開源基礎鏡像(如vLLM等),需要在YAML中增加以下env參數:

    Name

    Value

    NCCL_SOCKET_IFNAME

    eth0

    NCCL_IB_TC

    136

    NCCL_IB_SL

    5

    NCCL_IB_GID_INDEX

    3

    NCCL_DEBUG

    INFO

    NCCL_IB_HCA

    mlx5

    NCCL_NET_PLUGIN

    none

    apiVersion: leaderworkerset.x-k8s.io/v1
    kind: LeaderWorkerSet
    metadata:
      name: deepseek-r1-671b-fp8-distrubution
    spec:
      replicas: 1
      leaderWorkerTemplate:
        size: 2 #leader和worker的總數量
        restartPolicy: RecreateGroupOnPodRestart
        leaderTemplate:
          metadata:
            labels: 
              role: leader
              alibabacloud.com/compute-class: gpu  #指定GPU類型 
              alibabacloud.com/compute-qos: default #指定acs qos等級
              alibabacloud.com/gpu-model-series: <example-model> ##指定GPU型號
              # 指定讓應用運行在高效能網路RDMA中,支援RDMA的GPU型號請提交工單諮詢
              alibabacloud.com/hpn-type: "rdma"
          spec:
            volumes:
              - name: llm-model
                persistentVolumeClaim:
                  ## 如果使用fluid,此處應填寫 fluid dataset 名字,比如:deepseek
                  claimName: llm-model
              - name: shm
                emptyDir:
                  medium: Memory
                  sizeLimit: 32Gi
            containers:
              - name: deepseek-r1-671b-leader
                image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/vllm:v0.7.2
                env:
                  - name: NCCL_SOCKET_IFNAME #指定網卡
                    value: eth0
                  - name: NCCL_IB_TC
                    value: "136"
                  - name: NCCL_IB_SL
                    value: "5"
                  - name: NCCL_IB_GID_INDEX
                    value: "3"
                  - name: NCCL_DEBUG
                    value: "INFO"
                  - name: NCCL_IB_HCA
                    value: "mlx5"
                  - name: NCCL_NET_PLUGIN
                    value: "none"                
                command:
                  - sh
                  - -c
                  - "/vllm-workspace/ray_init.sh leader --ray_cluster_size=$(LWS_GROUP_SIZE);vllm serve /models/DeepSeek-R1/ --port 8000 --trust-remote-code --served-model-name ds --max-model-len 2048 --gpu-memory-utilization 0.95 --tensor-parallel-size 8 --pipeline-parallel-size 2 --enforce-eager"
    #tensor-parallel-size設定為leader和worker各個pod的總卡數
                resources:
                  limits:
                    nvidia.com/gpu: "8"
                    cpu: "64"
                    memory: 512G
                  requests:
                    nvidia.com/gpu: "8"
                    cpu: "64"
                    memory: 512G           
                ports:
                  - containerPort: 8000
                volumeMounts:
                  - mountPath: /models/DeepSeek-R1
                    name: llm-model
                  - mountPath: /dev/shm
                    name: shm
        workerTemplate:
          metadata:
            labels: 
              alibabacloud.com/compute-class: gpu  #指定GPU類型 
              alibabacloud.com/compute-qos: default #指定acs qos等級
              alibabacloud.com/gpu-model-series: <example-model> ##指定GPU型號
              # 指定讓應用運行在高效能網路RDMA中,支援RDMA的GPU型號請提交工單諮詢
              alibabacloud.com/hpn-type: "rdma"
          spec:
            volumes:
              - name: llm-model
                persistentVolumeClaim:
                  ## 如果使用fluid,此處應填寫 fluid dataset 名字,比如:deepseek
                  claimName: llm-model
              - name: shm
                emptyDir:
                  medium: Memory
                  sizeLimit: 32Gi
            containers:
              - name: deepseek-r1-671b-worker
                image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/vllm:v0.7.2
                env:
                  - name: NCCL_SOCKET_IFNAME #指定網卡
                    value: eth0
                  - name: NCCL_IB_TC
                    value: "136"
                  - name: NCCL_IB_SL
                    value: "5"
                  - name: NCCL_IB_GID_INDEX
                    value: "3"
                  - name: NCCL_DEBUG
                    value: "INFO"
                  - name: NCCL_IB_HCA
                    value: "mlx5"
                  - name: NCCL_NET_PLUGIN
                    value: "none"      
                command:
                  - sh
                  - -c
                  - "/vllm-workspace/ray_init.sh worker --ray_address=$(LWS_LEADER_ADDRESS)"
                resources:
                  limits:
                    nvidia.com/gpu: "8"
                    cpu: "64"
                    memory: 512G
                  requests:
                    nvidia.com/gpu: "8"
                    cpu: "64"
                    memory: 512G
                ports:
                  - containerPort: 8000
                volumeMounts:
                  - mountPath: /models/DeepSeek-R1
                    name: llm-model
                  - mountPath: /dev/shm
                    name: shm
  3. 通過Service暴露推理服務。

    apiVersion: v1
    kind: Service
    metadata:
      name: ds-leader
    spec:
      ports:
        - name: http
          port: 8000
          protocol: TCP
          targetPort: 8000
      selector:
        leaderworkerset.sigs.k8s.io/name: deepseek-r1-671b-fp8-distrubution
        role: leader
      type: ClusterIP

步驟三:驗證推理服務

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

    說明

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

    kubectl port-forward svc/ds-leader 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": "system", 
            "content": "你是個友善的AI助手。"
          },
          {
            "role": "user",
            "content": "介紹一下深度學習。"
          }
        ],
        "max_tokens": 1024,
        "temperature": 0.7,
        "top_p": 0.9,
        "seed": 10
      }'

    預期輸出:

    {"id":"chatcmpl-4bc78b66e2a4439f8362bd434a60be57","object":"chat.completion","created":1739501401,"model":"ds","choices":[{"index":0,"message":{"role":"assistant","reasoning_content":null,"content":"嗯,使用者讓我介紹一下深度學習,我得仔細想想怎麼回答才好。首先,我得明確深度學習的基本定義,它是機器學習的一個分支,對吧?然後要跟傳統的機器學習方法對比,說明深度學習的優勢在哪裡,比如自動特徵提取之類的。可能需要提到神經網路,尤其是深度神經網路的結構,比如多層隱藏層。\n\n接下來應該講一下深度學習的核心組件吧,比如啟用函數、損失函數、最佳化器這些。可能使用者對這些術語不熟悉,所以需要簡單解釋一下每個部分的作用。比如ReLU作為啟用函數,Adam作為最佳化器,交叉熵損失函數這些例子。\n\n然後應用領域,電腦視覺、自然語言處理這些應該都是比較常見的,可能需要舉幾個實際的例子,比如Image Recognition、機器翻譯,使用者可能更容易理解。另外行業應用,像醫學、金融這些,使用者可能會感興趣這些實際的應用情境。\n\n還要提到流行的架構,比如TensorFlow、PyTorch,這些架構的使用讓深度學習更易於實現。還有就是硬體加速比如GPU的重要性,說明為什麼深度學習現在發展得這麼快。\n\n另外,可能得討論一下深度學習的挑戰和限制,比如資料依賴、計算資源需求高、可解釋性差這些,這樣使用者能全面瞭解優缺點。可能還需要提到一些未來的發展方向,比如高效訓練演算法、可解釋性研究這些。\n\n使用者的需求可能是想瞭解深度學習的基本概念,可能有一些技術背景,但不太深入。他們可能想快速掌握關鍵點和應用,所以回答需要結構清晰,重點突出,不用太深入技術細節,但也不能太簡略。需要平衡專業性和易懂性。\n\n要避免使用太多術語,或者在用術語時稍作解釋,比如“神經網路”、“卷積神經網路”等。可能使用者是學生或者剛入行的從業者,需要用平實的語言讓他們理解。同時要舉一些例子協助他們聯絡實際應用,這樣更容易記憶。\n\n還要注意深度學習和機器學習的關係,需要明確區分兩者的不同,說明深度學習屬於機器學習,但層次更深,處理更複雜的問題。可能還要提到反向傳播演算法,作為訓練的關鍵技術之一。\n\n最後做一個總結,強調深度學習的影響和潛力,未來的發展方向,這樣能讓使用者有一個全面的認識。檢查一下有沒有遺漏的重要點,比如常見的模型結構如CNN、RNN這些,可能也需要簡要提及,以展示多樣性。\n\n有時候使用者可能對原理感興趣,但在這裡保持簡潔比較重要,重點是概述而非深入的技術細節。確保回答的邏輯流暢,從定義開始,到核心組件,應用,架構,挑戰,未來方向,這樣的結構比較合理。\n</think>\n\n深度學習是機器學習的一個分支,旨在通過構建多層的神經網路(稱為“深度”網路)來類比人腦的學習機制。它通過從大量資料中自動學習複雜的特徵和模式,廣泛應用於Image Recognition、語音處理、自然語言處理等領域。\n\n### 核心概念\n1. **人工神經網路(ANN)**:\n   - 由輸入層、多個隱藏層和輸出層組成,每層包含多個神經元。\n   - 通過類比神經元的啟用和傳遞實現資訊處理。\n\n2. **特徵自動提取**:\n   - 傳統機器學習依賴人工設計特徵,而深度學習通過多層網路自動提取資料的抽象特徵(如從像素到物體的邊緣、形狀等)。\n\n3. **關鍵組成部分**:\n   - **啟用函數**(如ReLU、Sigmoid):引入非線性,增強模型表達能力。\n   - **損失函數**(如交叉熵、均方誤差):衡量預測值與真實值的差距。\n   - **最佳化器**(如SGD、Adam):通過反向傳播最佳化網路參數,最小化損失。\n\n---\n\n### 典型模型\n- **卷積神經網路(CNN)**:  \n  專為映像設計,通過卷積核提取空間特徵。經典模型如ResNet、VGG。\n- **迴圈神經網路(RNN)**:  \n  處理序列資料(文本、語音),引入記憶機制,改進版如LSTM、GRU。\n- **Transformer**:  \n  基於自注意力機制,大幅提升自然語言處理效能(如BERT、GPT系列)。\n\n---\n\n### 應用情境\n- **電腦視覺**:Face Service、醫學影像分析(如肺部CT病灶檢測)。\n- **自然語言處理**:智能客服、文檔摘要產生、翻譯(如DeepL)。\n- **語音技術**:語音助手(如Siri)、即時字幕產生。\n- **強化學習**:遊戲AI(AlphaGo)、機器人控制。\n\n---\n\n### 優勢與挑戰\n- **優勢**:\n  - 自動學習複雜特徵,減少人工幹預。\n  - 在巨量資料和高算力下表現遠超傳統方法。\n- **挑戰**:\n  - 依賴海量標註資料(例如需數萬張標註醫學映像)。\n  - 模型訓練成本高(如GPT-3訓練費用超千萬美元)。\n  - “黑箱”特性導致可解釋性差,在醫學等高風險領域應用受限。\n\n---\n\n### 工具與趨勢\n- **主流架構**:TensorFlow(工業部署友好)、PyTorch(研究首選)。\n- **研究方向**:\n  - 輕量化模型(如MobileNet用於移動端)。\n  - 自監督學習(減少對標註資料的依賴)。\n  - 可解釋性增強(如可視化模型決策依據)。\n\n深度學習正推動人工智慧的邊界,從產生式AI(如Stable Diffusion產生映像)到自動駕駛,持續改變技術生態。其未來發展可能在降低計算成本、提升效率及可解釋性方面取得突破。","tool_calls":[]},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"usage":{"prompt_tokens":17,"total_tokens":1131,"completion_tokens":1114,"prompt_tokens_details":null},"prompt_logprobs":null}

    模型參數說明

    本文僅說明驗證使用到的參數資訊,更多參數請參見DeepSeek API文檔

    參數名

    說明

    取值範例

    model

    使用的模型。

    ds

    messages

    對話的訊息列表。

    • role:該訊息的發起角色。

    • content:訊息的內容。

    -

    max_tokens

    指定一次請求中模型產生Completion的最大Token數。取值:

    • 介於1 到 8192 間的整數。

    • 如未指定max_tokens參數,預設值為4096。

    1024

    temperature

    採樣溫度,值越高(例如1)會使輸出更隨機,而值越低(例如0.2)會使其更加集中和確定。取值:介於0和2之間。

    0.7

相關文檔