全部產品
Search
文件中心

Container Compute Service:使用ACS算力快速搭建產生式會話應用

更新時間:Dec 11, 2024

阿里雲Container Compute Service (ACS)以Kubernetes為使用介面,採用Serverless形態提供彈性的算力資源,使您輕鬆高效運行容器應用。本文將指導您如何通過ACS控制台及ACS叢集認證在ACS叢集中快速部署並公開一個容器化產生式AI會話應用,並監控應用的運行情況。

背景知識介紹

  • 本教程所使用兩個開源專案,分別是RWKV-RunnerChatGPT-Next-Web。RWKV-Runner是一個0.1b的大模型並提供RESTful API對外提供線上推理服務,ChatGPT-Next-Web是會話應用的WebUI。RWKV-Runner與ChatGPT-Next-Web形成前後端分離架構的產生式AI會話應用,通過容器鏡像部署到ACS叢集中。完成本教程後,您將建立產生式AI會話應用。

    image.png

  • 如果您想瞭解更多Kubernetes相關概念,可以通過CNCF × Alibaba 雲原生技術公開課深入學習Kubernetes。

操作流程

當您首次使用ACS時,您需要開通並授權容器計算服務ACS,然後建立叢集,在叢集中部署產生式AI應用。

步驟一:開通並授權容器計算服務ACS

首次使用時,您需要開通容器計算服務ACS,並為其授權相應雲資源的存取權限。

  1. 登入容器計算服務控制台,單擊前往開通

  2. 前往容器計算服務ACS開通頁面,按提示完成產品授權開通。

  3. 返回容器計算服務管理主控台並重新整理頁面,單擊前往授權。

  4. 前往容器計算服務授權頁面,按提示完成產品授權。

    完成以上授權後,重新整理控制台即可使用容器計算服務ACS。

步驟二:建立ACS叢集

本步驟介紹如何通過配置主要參數快速建立一個ACS叢集。

  1. 登入容器計算服務控制台,在左側導覽列選擇叢集

  2. 叢集頁面,單擊頁面左上方的建立叢集

  3. 建立叢集頁面,進行如下配置。未說明的配置項使用預設設定即可。

    配置項

    說明

    樣本

    叢集名稱

    填寫叢集的名稱。

    ACS-Demo。

    地區

    選擇叢集所在的地區。

    華北2(北京)。

    選擇專用網路

    設定叢集的網路。ACS叢集僅支援專用網路。支援自動建立使用已有的VPC。

    • 自動建立:叢集會自動建立一個VPC,並在VPC中自動建立NAT Gateway以及配置SNAT規則。

    • 使用已有:您可以在已有VPC列表中選擇所需的VPC和交換器。如需訪問公網,例如下載容器鏡像,則需要配置NAT Gateway。建議將容器鏡像上傳到叢集所在地區的阿里雲鏡像服務,並通過內網VPC地址拉取鏡像。

    詳細資料,請參見建立和管理專用網路

    選擇自動建立

    API Server 訪問配置

    設定叢集API Server是否可在公網訪問,當您需要從公網遠端管理叢集時,需要配置Elastic IP Address(EIP)。

    選中使用 EIP 暴露 API Server

    服務發現

    單擊顯示進階選項下拉框,設定是否開啟叢集服務發現能力。當你需要服務發現能力時,需選擇開啟CoreDNS

    選擇CoreDNS。

  4. 單擊確認配置,然後選中並閱讀服務合約,單擊建立叢集

    說明

    叢集的建立時間一般約為10分鐘。建立完成後,在叢集頁面,可以看到新建立的叢集。

步驟三:使用ACS控制台部署RWKV-Runner

本步驟指導您如何在新建立的ACS叢集中使用通用型執行個體快速部署一個無狀態應用(Deployment)RWKV-Runner,並將該應用RESTful API在叢集內公開。關於建立Deployment的詳細參數描述,請參見建立無狀態工作負載Deployment

  1. 登入容器計算服務控制台,在叢集頁面,單擊目的地組群名稱(即ACS-Demo)。

  2. 在左側導覽列,選擇工作負載 > 無狀態

  3. 無狀態頁面,單擊使用鏡像建立

  4. 應用基本資料設定精靈,設定應用程式名稱rwkv-runner,選擇執行個體類型通用型QoS類型default,單擊下一步

  5. 容器配置嚮導,配置容器的相關資訊,單擊下一步

    配置項

    說明

    樣本值

    鏡像名稱

    直接輸入不包含鏡像Tag的鏡像地址或單擊選擇鏡像來選擇所需的鏡像。

    registry.cn-beijing.aliyuncs.com/acs-demo-ns/rwkv-runner

    鏡像Tag

    單擊選擇鏡像Tag選擇鏡像的版本。

    1.0.0

    CPU

    根據需要為該應用指定所需的CPU核心數。

    1 Core

    記憶體

    根據需要為該應用指定所需的記憶體大小。

    2 GiB

    連接埠

    設定容器的連接埠。

    • 名稱:runner

    • 容器連接埠:8000

    • 協議:TCP

  6. 進階配置嚮導,單擊服務(Service)右側的建立

  7. 建立服務對話方塊,配置以下資訊,單擊建立,以通過該服務叢集內發布rwkv-runner的RESTful API。

    配置項

    說明

    樣本值

    名稱

    輸入服務的名稱。

    rwkv-runner-svc

    類型

    選擇服務類型,即服務訪問的方式。

    虛擬叢集IP

    連接埠映射

    設定服務連接埠容器連接埠容器連接埠需要與後端的Pod中暴露的容器連接埠一致。

    • 名稱:runner

    • 服務連接埠:80

    • 容器連接埠:8000

    • 協議:TCP

    image

  8. 進階配置嚮導,單擊右下角的建立

    建立成功後,預設進入建立完成設定精靈,顯示應用程式套件含的對象。您可以單擊查看應用詳情進行查看。

    image.png

步驟四:使用ACS叢集認證部署並公開ChatGPT-Next-Web

本步驟指導您如何使用ACS叢集認證在新建立的ACS叢集中使用通用型執行個體快速部署一個無狀態應用(Deployment)ChatGPT-Next-Web,並將該應用公網公開。關於建立Deployment的詳細參數描述,請參見建立無狀態工作負載Deployment

  1. 登入容器計算服務控制台,在叢集頁面,單擊目的地組群名稱(即ACS-Demo)。

  2. 叢集資訊頁面,單擊串連資訊頁簽,擷取公網訪問認證,然後按頁面提示放置到相應位置。

  3. 使用以下樣本應用的YAML內容,建立名為chat-next-web.yaml的檔案。

    展開查看chat-next-web.yaml

    apiVersion: v1
    kind: Service
    metadata:
      name: chat-frontend-svc
    spec:
      ports:
        - name: chat
          port: 80
          protocol: TCP
          targetPort: 3000
      selector:
        app: chat-frontend
      type: LoadBalancer
    
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: chat-frontend
      name: chat-frontend
    spec:
      progressDeadlineSeconds: 600
      replicas: 1
      revisionHistoryLimit: 10
      selector:
        matchLabels:
          app: chat-frontend
      strategy:
        rollingUpdate:
          maxSurge: 25%
          maxUnavailable: 25%
        type: RollingUpdate
      template:
        metadata:
          labels:
            alibabacloud.com/compute-class: general-purpose  # 通用型
            #alibabacloud.com/compute-class: performance 效能型
            app: chat-frontend
        spec:
          containers:
            - env:
                - name: BASE_URL
                  value: 'http://rwkv-runner-svc'
              image: registry.cn-beijing.aliyuncs.com/acs-demo-ns/chatgpt-next-web:amd64
              imagePullPolicy: IfNotPresent
              name: chat-frontend
              ports:
                - containerPort: 3000
                  protocol: TCP
              resources:
                requests:
                  cpu: "1"
                  memory: 2Gi
              terminationMessagePath: /dev/termination-log
              terminationMessagePolicy: File
          dnsPolicy: ClusterFirst
          restartPolicy: Always
          schedulerName: default-scheduler
          securityContext: {}
          terminationGracePeriodSeconds: 30
  4. 執行以下命令,將資源提交到ACS叢集。

    kubectl apply -f chat-next-web.yaml

步驟五:使用ACS叢集認證建立應用初始任務

本步驟指導您如何使用ACS叢集認證在新建立的ACS叢集中使用BestEffort 算力品質的執行個體快速建立一個任務(Job),用於RWKV-Runner應用大模型的初始化。關於建立Job的詳細參數描述,請參見建立任務工作負載Job

  1. 使用以下樣本應用的YAML內容,建立名為rwkv-init-job.yaml的檔案。

    展開查看rwkv-init-job.yaml

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: job-demo
    spec:
      activeDeadlineSeconds: 600
      backoffLimit: 6
      completionMode: NonIndexed
      completions: 1
      parallelism: 1
      suspend: false
      template:
        metadata:
          labels:
            alibabacloud.com/compute-qos: best-effort # BestEffort型
            #alibabacloud.com/compute-qos: default  # 預設型
            app: job-demo
        spec:
          containers:
          - name: job
            image: registry.cn-beijing.aliyuncs.com/acs-demo-ns/rwkv-init-job:1.0.0
            imagePullPolicy: Always
            resources:
              requests:
                cpu: 500m
                memory: 1Gi
            terminationMessagePath: /dev/termination-log
            terminationMessagePolicy: File
          dnsPolicy: ClusterFirst
          restartPolicy: Never
          schedulerName: default-scheduler
          securityContext: {}
          terminationGracePeriodSeconds: 30
    
  2. 執行以下命令,確認初始化任務。

    kubectl apply -f rwkv-init-job.yaml
  3. 執行以下命令,確認初始化任務執行完成。

    kubectl get pod

    預期輸出:

    image.png

步驟六:測試應用

本步驟指導您如何通過服務(Service)來訪問新部署的容器化應用。

  1. 登入容器計算服務控制台,在叢集頁面,單擊目的地組群名稱(即ACS-Demo)。

  2. 在左側導覽列,選擇網路 > 服務

  3. 服務頁面,找到新建立的服務(即chat-frontend-svc),單擊External IP列的IP地址,即可訪問產生式AI會話應用。

    image.png

釋放資源

使用ACS叢集所產生的費用包括以下兩部分:

  • 建立工作負載使用的算力,由容器計算服務ACS收取。

  • 使用的其他阿里雲雲產品資源費用,按照各雲產品規定的計費規則計費,由各雲產品收取。

完成快速入門後,請參考以下情境處理叢集:

  • 如果無需繼續使用叢集,請刪除叢集及關聯資源。具體操作,請參見刪除叢集

  • 如果需要繼續使用叢集,請為阿里雲帳號儲值,確保賬戶金額不小於100.00元人民幣。關於使用ACS叢集過程中用到的其他阿里雲雲產品資源的相關計費說明,請參見雲產品資源計費