使用ACS算力快速搭建生成式會(huì)話應(yīng)用
阿里云容器計(jì)算服務(wù) ACS(Container Compute Service)以Kubernetes為使用界面,采用Serverless形態(tài)提供彈性的算力資源,使您輕松高效運(yùn)行容器應(yīng)用。本文將指導(dǎo)您如何通過(guò)ACS控制臺(tái)及ACS集群證書(shū)在ACS集群中快速部署并公開(kāi)一個(gè)容器化生成式AI會(huì)話應(yīng)用,并監(jiān)控應(yīng)用的運(yùn)行情況。
使用前準(zhǔn)備
已注冊(cè)阿里云賬號(hào)并完成實(shí)名認(rèn)證。具體操作,請(qǐng)參見(jiàn)注冊(cè)阿里云賬號(hào)和個(gè)人實(shí)名認(rèn)證。
背景知識(shí)介紹
本教程所使用兩個(gè)開(kāi)源項(xiàng)目,分別是RWKV-Runner和ChatGPT-Next-Web。RWKV-Runner是一個(gè)0.1b的大模型并提供RESTful API對(duì)外提供在線推理服務(wù),ChatGPT-Next-Web是會(huì)話應(yīng)用的WebUI。RWKV-Runner與ChatGPT-Next-Web形成前后端分離架構(gòu)的生成式AI會(huì)話應(yīng)用,通過(guò)容器鏡像部署到ACS集群中。完成本教程后,您將創(chuàng)建生成式AI會(huì)話應(yīng)用。
如果您想了解更多Kubernetes相關(guān)概念,可以通過(guò)CNCF × Alibaba 云原生技術(shù)公開(kāi)課深入學(xué)習(xí)Kubernetes。
操作流程
當(dāng)您首次使用ACS時(shí),您需要開(kāi)通并授權(quán)容器計(jì)算服務(wù)ACS,然后創(chuàng)建集群,在集群中部署生成式AI應(yīng)用。
步驟一:開(kāi)通并授權(quán)容器計(jì)算服務(wù)ACS
首次使用時(shí),您需要開(kāi)通容器計(jì)算服務(wù)ACS,并為其授權(quán)相應(yīng)云資源的訪問(wèn)權(quán)限。
登錄容器計(jì)算服務(wù)控制臺(tái),單擊前往開(kāi)通。
前往容器計(jì)算服務(wù)ACS開(kāi)通頁(yè)面,按提示完成產(chǎn)品授權(quán)開(kāi)通。
返回容器計(jì)算服務(wù)管理控制臺(tái)并刷新頁(yè)面,單擊前往授權(quán)。
前往容器計(jì)算服務(wù)授權(quán)頁(yè)面,按提示完成產(chǎn)品授權(quán)。
完成以上授權(quán)后,刷新控制臺(tái)即可使用容器計(jì)算服務(wù)ACS。
步驟二:創(chuàng)建ACS集群
本步驟介紹如何通過(guò)配置主要參數(shù)快速創(chuàng)建一個(gè)ACS集群。
登錄容器計(jì)算服務(wù)控制臺(tái),在左側(cè)導(dǎo)航欄選擇集群。
在集群頁(yè)面,單擊頁(yè)面左上角的創(chuàng)建集群。
在創(chuàng)建集群頁(yè)面,進(jìn)行如下配置。未說(shuō)明的配置項(xiàng)使用默認(rèn)設(shè)置即可。
配置項(xiàng)
說(shuō)明
示例
集群名稱(chēng)
填寫(xiě)集群的名稱(chēng)。
ACS-Demo。
地域
選擇集群所在的地域。
華北2(北京)。
選擇專(zhuān)有網(wǎng)絡(luò)
設(shè)置集群的網(wǎng)絡(luò)。ACS集群僅支持專(zhuān)有網(wǎng)絡(luò)。支持自動(dòng)創(chuàng)建和使用已有的VPC。
自動(dòng)創(chuàng)建:集群會(huì)自動(dòng)新建一個(gè)VPC,并在VPC中自動(dòng)創(chuàng)建NAT網(wǎng)關(guān)以及配置SNAT規(guī)則。
使用已有:您可以在已有VPC列表中選擇所需的VPC和交換機(jī)。如需訪問(wèn)公網(wǎng),例如下載容器鏡像,則需要配置NAT網(wǎng)關(guān)。建議將容器鏡像上傳到集群所在區(qū)域的阿里云鏡像服務(wù),并通過(guò)內(nèi)網(wǎng)VPC地址拉取鏡像。
詳細(xì)信息,請(qǐng)參見(jiàn)創(chuàng)建和管理專(zhuān)有網(wǎng)絡(luò)。
選擇自動(dòng)創(chuàng)建。
API Server 訪問(wèn)配置
設(shè)置集群API Server是否可在公網(wǎng)訪問(wèn),當(dāng)您需要從公網(wǎng)遠(yuǎn)程管理集群時(shí),需要配置彈性公網(wǎng)IP(EIP)。
選中使用 EIP 暴露 API Server。
服務(wù)發(fā)現(xiàn)
單擊顯示高級(jí)選項(xiàng)下拉框,設(shè)置是否開(kāi)啟集群服務(wù)發(fā)現(xiàn)能力。當(dāng)你需要服務(wù)發(fā)現(xiàn)能力時(shí),需選擇開(kāi)啟CoreDNS。
選擇CoreDNS。
單擊確認(rèn)配置,然后選中并閱讀服務(wù)協(xié)議,單擊創(chuàng)建集群。
說(shuō)明集群的創(chuàng)建時(shí)間一般約為10分鐘。創(chuàng)建完成后,在集群頁(yè)面,可以看到新創(chuàng)建的集群。
步驟三:使用ACS控制臺(tái)部署RWKV-Runner
本步驟指導(dǎo)您如何在新創(chuàng)建的ACS集群中使用通用型實(shí)例快速部署一個(gè)無(wú)狀態(tài)應(yīng)用(Deployment)RWKV-Runner,并將該應(yīng)用RESTful API在集群內(nèi)公開(kāi)。關(guān)于創(chuàng)建Deployment的詳細(xì)參數(shù)描述,請(qǐng)參見(jiàn)創(chuàng)建無(wú)狀態(tài)工作負(fù)載Deployment。
登錄容器計(jì)算服務(wù)控制臺(tái),在集群頁(yè)面,單擊目標(biāo)集群名稱(chēng)(即ACS-Demo)。
在左側(cè)導(dǎo)航欄,選擇 。
在無(wú)狀態(tài)頁(yè)面,單擊使用鏡像創(chuàng)建。
在應(yīng)用基本信息配置向?qū)ВO(shè)置應(yīng)用名稱(chēng)為rwkv-runner,選擇實(shí)例類(lèi)型為通用型,QoS類(lèi)型為default,單擊下一步。
在容器配置向?qū)В渲萌萜鞯南嚓P(guān)信息,單擊下一步。
配置項(xiàng)
說(shuō)明
示例值
鏡像名稱(chēng)
直接輸入不包含鏡像Tag的鏡像地址或單擊選擇鏡像來(lái)選擇所需的鏡像。
registry.cn-beijing.aliyuncs.com/acs-demo-ns/rwkv-runner
鏡像Tag
單擊選擇鏡像Tag選擇鏡像的版本。
1.0.0
CPU
根據(jù)需要為該應(yīng)用指定所需的CPU核數(shù)。
1 Core
內(nèi)存
根據(jù)需要為該應(yīng)用指定所需的內(nèi)存大小。
2 GiB
端口
設(shè)置容器的端口。
名稱(chēng):runner
容器端口:8000
協(xié)議:TCP
在高級(jí)配置向?qū)В瑔螕?b data-tag="uicontrol" id="uicontrol-op6-3bx-z29" class="uicontrol">服務(wù)(Service)右側(cè)的創(chuàng)建。
在創(chuàng)建服務(wù)對(duì)話框,配置以下信息,單擊創(chuàng)建,以通過(guò)該服務(wù)集群內(nèi)發(fā)布rwkv-runner的RESTful API。
配置項(xiàng)
說(shuō)明
示例值
名稱(chēng)
輸入服務(wù)的名稱(chēng)。
rwkv-runner-svc
類(lèi)型
選擇服務(wù)類(lèi)型,即服務(wù)訪問(wèn)的方式。
虛擬集群IP
端口映射
設(shè)置服務(wù)端口和容器端口。容器端口需要與后端的Pod中暴露的容器端口一致。
名稱(chēng):runner
服務(wù)端口:80
容器端口:8000
協(xié)議:TCP
在高級(jí)配置向?qū)В瑔螕粲蚁陆堑?b data-tag="uicontrol" id="uicontrol-az0-my6-ged" class="uicontrol">創(chuàng)建。
創(chuàng)建成功后,默認(rèn)進(jìn)入創(chuàng)建完成配置向?qū)В@示應(yīng)用包含的對(duì)象。您可以單擊查看應(yīng)用詳情進(jìn)行查看。
步驟四:使用ACS集群證書(shū)部署并公開(kāi)ChatGPT-Next-Web
本步驟指導(dǎo)您如何使用ACS集群證書(shū)在新創(chuàng)建的ACS集群中使用通用型實(shí)例快速部署一個(gè)無(wú)狀態(tài)應(yīng)用(Deployment)ChatGPT-Next-Web,并將該應(yīng)用公網(wǎng)公開(kāi)。關(guān)于創(chuàng)建Deployment的詳細(xì)參數(shù)描述,請(qǐng)參見(jiàn)創(chuàng)建無(wú)狀態(tài)工作負(fù)載Deployment。
登錄容器計(jì)算服務(wù)控制臺(tái),在集群頁(yè)面,單擊目標(biāo)集群名稱(chēng)(即ACS-Demo)。
在集群信息頁(yè)面,單擊連接信息頁(yè)簽,獲取公網(wǎng)訪問(wèn)證書(shū),然后按頁(yè)面提示放置到相應(yīng)位置。
使用以下示例應(yīng)用的YAML內(nèi)容,創(chuàng)建名為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
執(zhí)行以下命令,將資源提交到ACS集群。
kubectl apply -f chat-next-web.yaml
步驟五:使用ACS集群證書(shū)創(chuàng)建應(yīng)用初始任務(wù)
本步驟指導(dǎo)您如何使用ACS集群證書(shū)在新創(chuàng)建的ACS集群中使用BestEffort 算力質(zhì)量的實(shí)例快速創(chuàng)建一個(gè)任務(wù)(Job),用于RWKV-Runner應(yīng)用大模型的初始化。關(guān)于創(chuàng)建Job的詳細(xì)參數(shù)描述,請(qǐng)參見(jiàn)創(chuàng)建任務(wù)工作負(fù)載Job。
使用以下示例應(yīng)用的YAML內(nèi)容,創(chuàng)建名為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 # 默認(rèn)型 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
執(zhí)行以下命令,確認(rèn)初始化任務(wù)。
kubectl apply -f rwkv-init-job.yaml
執(zhí)行以下命令,確認(rèn)初始化任務(wù)執(zhí)行完成。
kubectl get pod
預(yù)期輸出:
步驟六:測(cè)試應(yīng)用
本步驟指導(dǎo)您如何通過(guò)服務(wù)(Service)來(lái)訪問(wèn)新部署的容器化應(yīng)用。
登錄容器計(jì)算服務(wù)控制臺(tái),在集群頁(yè)面,單擊目標(biāo)集群名稱(chēng)(即ACS-Demo)。
在左側(cè)導(dǎo)航欄,選擇
。在服務(wù)頁(yè)面,找到新創(chuàng)建的服務(wù)(即chat-frontend-svc),單擊External IP列的IP地址,即可訪問(wèn)生成式AI會(huì)話應(yīng)用。
釋放資源
使用ACS集群所產(chǎn)生的費(fèi)用包括以下兩部分:
創(chuàng)建工作負(fù)載使用的算力,由容器計(jì)算服務(wù)ACS收取。
使用的其他阿里云云產(chǎn)品資源費(fèi)用,按照各云產(chǎn)品規(guī)定的計(jì)費(fèi)規(guī)則計(jì)費(fèi),由各云產(chǎn)品收取。
完成快速入門(mén)后,請(qǐng)參考以下場(chǎng)景處理集群:
如果無(wú)需繼續(xù)使用集群,請(qǐng)刪除集群及關(guān)聯(lián)資源。具體操作,請(qǐng)參見(jiàn)刪除集群。
如果需要繼續(xù)使用集群,請(qǐng)為阿里云賬號(hào)充值,確保賬戶金額不小于100.00元人民幣。關(guān)于使用ACS集群過(guò)程中用到的其他阿里云云產(chǎn)品資源的相關(guān)計(jì)費(fèi)說(shuō)明,請(qǐng)參見(jiàn)云產(chǎn)品資源計(jì)費(fèi)。