当前位置: 首页 > news >正文

使用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标签选择管理Pod

Pod模板

  • 特殊标签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 存储(持久化模型文件)  

http://www.dtcms.com/a/312959.html

相关文章:

  • 如何在不停机的情况下,将MySQL单库的数据迁移到分库分表的架构上?
  • 【前端安全】聊聊 HTML 闭合优先级和浏览器解析顺序
  • [AI8051U入门第十五步]W5500实现DHCP自动获取IP
  • SpringBoot+Vue高校实验室预约管理系统 附带详细运行指导视频
  • Matlab算法编程示例4:数值解法求解常微分方程的代码实例
  • Python类与对象指南
  • java贪吃蛇小程序
  • 个人项目介绍:STM32F407核心多层电路板
  • Java试题-选择题(8)
  • 25 渗透测试培训课程第一部分 - 信息收集 内容概要
  • 江协科技STM32 14-1 WDG看门狗
  • Flask ORM 模型(轻松版)
  • 08.Redis 持久化
  • UniApp 实现顶部固定导航栏 Tab 及滚动变色效果
  • Python篇--- Python 的加载、缓存、覆盖机制
  • 复现cacti的RCE
  • 版本升级到V1.17.1后多了哪些便捷操作
  • [论文阅读] 人工智能 + 软件工程 | 英国研究软件追踪:为何大量代码成了“失踪人口”?
  • Mysql 9.4主从复制部署(传统文件日志位置mysqldump)
  • 【暑期每日一题】洛谷 P1749 [入门赛 #19] 分饼干 II
  • Python中的import和from...import有什么区别?
  • Python篇---PyPI
  • 自私挖矿攻击
  • 安卓audio 架构解析
  • 决策树的实际案例
  • Ethereum: 了解炙手可热 Layer 2 解决方案 Base
  • C++手撕基于ID3算法的决策树
  • 玩转 Playwright 有头与无头模式:消除差异,提升爬虫稳定性
  • Linux 系统调用 stat 完全用例
  • Memcached Slab分配器:零碎片的极速内存管理