核心概念
-
阿里云ACK Serverless:是一種基于 Kubernetes 的無服務器容器服務。用戶無需管理底層節點和服務器,即可快速部署容器化應用,并根據實際使用的 CPU 和內存資源按需付費,只專注于應用本身而非基礎設施管理。
-
FastChat(聊天機器人):https://github.com/lm-sys/FastChat
-
使用到的技術:容器服務ACK Serveless Pro 集群、彈性容器實例(Elastic Container Instance, ECI)、NAT網關、負載均衡CLB。
一、創建ACK Serveless Pro版集群
1、登錄容器服務管理控制臺,在集群列表頁面單擊創建集群。
?
2、在創建集群頁面的集群配置中,單擊ACK Serverless 集群,根據如下參數說明完成相關配置,其他配置項保持默認值,然后單擊下一步:組件配置。
參數 | 說明 | 舉例 |
---|---|---|
集群名稱 | 填寫集群的名稱。 | fastchat-demo |
集群規格 | 選擇集群規格,支持 Pro 版和標準版。 | Pro版 |
地域 | 選擇集群所在的地域。建議選擇華北2(北京)地域。 | ?華北2(北京) |
API Server 訪問 | ACK Serverless 默認為 API Server 創建一個內網 SLB 實例。設置是否開放使用 EIP 暴露 API Server。 | 選中 |
?
?
3、在組件配置頁面,根據實際需要配置日志服務。
?
4、完成購買。
二、創建FastChat應用
1、在集群列表頁面,單擊集群名稱fastchat-demo進入集群信息頁面,然后在左側導航欄,選擇工作負載 > 無狀態。
?
2、在無狀態頁面,單擊使用YAML創建資源。
?
3、在示例模板下拉列表中,選擇自定義,將如下 fastchat 應用的 YAML 示例粘貼至模板,然后單擊創建。
YAML文件定義了兩個Kubernetes資源對象:一個
Deployment
和一個Service
,用于部署FastChat應用并暴露服務。
Deployment配置詳解
API版本與類型
apiVersion: apps/v1
:使用Kubernetes Apps API穩定版本kind: Deployment
:聲明為無狀態應用部署資源元數據
labels.app: fastchat
:標記應用為FastChat組件name/namespace
:部署名為fastchat
,位于default
命名空間副本與選擇器
replicas: 1
:僅運行1個Pod實例selector.matchLabels
:通過app: fastchat
標簽選擇管理PodPod模板
- 特殊標簽
alibabacloud.com/eci: "true"
:啟用阿里云彈性容器實例(ECI)- 關鍵注解:
k8s.aliyun.com/eci-use-specs
:指定ECI可選的實例規格(GN6i/GN5等GPU機型)k8s.aliyun.com/eci-extra-ephemeral-storage
:附加100Gi臨時存儲容器配置
- 啟動命令:通過
sh -c
執行容器內的/root/webui.sh
腳本- 鏡像地址:使用阿里云上海 registry 的
fastchat:v1.1.0
鏡像- 端口暴露:容器監聽7860 TCP端口
- 就緒探針:通過TCP檢查7860端口,初始延遲5秒,超時1秒
- 資源需求:
- 請求8核CPU和16Gi內存
- 限制使用1塊NVIDIA GPU
Service配置詳解
基礎信息
type: LoadBalancer
:創建云廠商的負載均衡器- 注解配置:
- 負載均衡器類型為公網(
internet
)- 按量付費模式(
PayByCLCU
)流量路由
- 端口映射:將LB的7860端口轉發到Pod的7860端口
externalTrafficPolicy: Local
:保留客戶端源IP- 選擇器:通過
app: fastchat
標簽關聯Deployment創建的Pod
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: fastchatname: fastchatnamespace: default
spec:replicas: 1selector:matchLabels:app: fastchattemplate:metadata:labels:app: fastchatalibabacloud.com/eci: "true"?annotations:k8s.aliyun.com/eci-use-specs: ecs.gn6i-c8g1.2xlarge,ecs.gn5-c8g1.2xlarge,ecs.gn6v-c8g1.8xlarge,ecs.gn6i-c16g1.4xlargek8s.aliyun.com/eci-extra-ephemeral-storage: 100Gispec:dnsPolicy: Defaultcontainers:- command:- sh- -c?- "/root/webui.sh"image: yunqi-registry.cn-shanghai.cr.aliyuncs.com/lab/fastchat:v1.1.0imagePullPolicy: IfNotPresentname: fastchatports:- containerPort: 7860protocol: TCPreadinessProbe:failureThreshold: 3initialDelaySeconds: 5periodSeconds: 10successThreshold: 1tcpSocket:port: 7860timeoutSeconds: 1resources:requests:cpu: "8"memory: 16Gilimits:nvidia.com/gpu: 1
---
apiVersion: v1
kind: Service
metadata:annotations:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internetservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: PayByCLCUname: fastchatnamespace: default
spec:externalTrafficPolicy: Localports:- port: 7860protocol: TCPtargetPort: 7860selector:app: fastchattype: LoadBalancer
?
4、在創建頁面下方,單擊fastchat,查看應用創建進度。
?
查看創建進度。
?
三、訪問FastChat服務
注意事項
- fastchat-t5-3b-v1.0模型僅支持日常對話,不支持代碼生成等高級功能。
- 僅支持英文。
1、在左側導航欄,選擇網絡>服務,查看您創建的服務fastchat的外部端點,例如8.140.XX.XX:7860。
?
2、在您的本機瀏覽器中輸入http://8.140.XX.XX:7860,訪問和體驗fastchat應用。
通過輸入問題,然后單擊Send,即可體驗大語言模型FastChat的聊天功能。
?
四、學習總結
[用戶請求]
│
├─ [CLB (公網負載均衡)]
│ │
│ ├─ 路由到 [FastChat API Pod (ECI實例)]
│ └─ 路由到 [Web UI Pod (ECI實例)]
│
├─ [NAT網關]
│ │
│ └─ 提供 [模型推理 Pod (ECI實例)] 訪問公網的能力(如下載模型權重)
│
└─ [ACK Serverless集群] │ ├─ 自動彈性伸縮 ECI 實例組 │ ├─ FastChat API 服務 │ ├─ Web UI 服務 │ └─ 模型推理 Worker └─ 掛載 NAS/OSS 存儲(持久化模型文件)