使用ACK Serverless容器化部署大语言模型FastChat
核心概念
-
阿里云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 存储(持久化模型文件)