基于ACK Serverless集群快速部署FastChat应用

本文介绍如何基于ACK Serverless集群快速部署FastChat应用。本教程中,您可以通过控制台或kubectl两种方式来部署应用,并在部署完成后通过外部端点访问FastChat,开启AIGC体验。

前提条件

已创建ACK Serverless集群并为集群开启公网访问能力,且集群所在地域为华北2(北京)、华东1(杭州)、华东2(上海)、华南1(深圳)。具体操作,请参见创建ASK集群

FastChat介绍

FastChat是一个智能易用的聊天机器人,支持大型语言模型的训练、服务和评估。 FastChat基于先进的大语言模型(例如Vicuna、FastChat-T5)实现,拥有Web UIOpenAI,兼容RESTful API的分布式多模型服务系统。

重要
  • 阿里云不对第三方模型“FastChat”的合法性、安全性、准确性进行任何保证,阿里云不对由此引发的任何损害承担责任。

  • 您应自觉遵守第三方模型“FastChat”的用户协议、使用规范和相关法律法规,并就使用第三方模型的合法性、合规性自行承担相关责任。

步骤一:部署FastChat应用

您可以通过控制台部署FastChat应用,也可以通过kubectl连接Kubernetes集群,然后创建YAML文件部署应用。

控制台

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载 > 无状态

  3. 在无状态页面,单击使用镜像创建

  4. 应用基本信息页面,设置应用名称fastchat,副本数量1,然后单击下一步

  5. 容器配置页面,依次设置以下参数,然后单击下一步

    以下为容器参数配置示例,未提及的配置项请保持默认。

    配置区域

    配置项

    示例值

    基本配置

    镜像名称

    yunqi-registry.cn-shanghai.cr.aliyuncs.com/lab/fastchat:v1.1.0

    所需资源

    • CPU:8Core

    • 内存:32GB

    重要

    后续步骤会添加Pod注解指定ECI Pod所使用的ECS规格,此处配置实际不会生效。

    健康检查

    就绪检查

    选中就绪检查,然后选择TCP连接,并配置端口为7860。

    生命周期

    启动执行

    设置容器的启动命令为 ["sh","-c","/root/webui.sh"]

  6. 高级配置页面,单击服务(Service)右侧的创建,并完成服务参数的配置,以通过该服务公开FastChat应用。

    以下为服务参数配置示例,未提及的配置项请保持默认。

    配置项

    示例值

    名称

    fastchat-svc

    服务类型

    选择负载均衡 (LoadBalancer)

    • 负载均衡类型:传统型负载均衡 CLB

    • 选择资源:新建资源

    端口映射

    • 名称:example-port

    • 服务端口:7860

    • 容器端口:7860

    • 协议:TCP

  7. 高级配置页面,在标签和注解区域,添加下表中的Pod注释,然后单击创建

    名称

    k8s.aliyun.com/eci-use-specs

    ecs.gn6i-c8g1.2xlarge,ecs.gn5-c8g1.2xlarge,ecs.gn6v-c8g1.8xlarge,ecs.gn6i-c16g1.4xlarge

    k8s.aliyun.com/eci-extra-ephemeral-storage

    100Gi

    image.png

  8. 返回无状态页面,单击应用名称进入应用详情页面,在容器组页签下,等待容器组的状态变为Running,然后单击访问方式页签,在外部端点处获取外部访问服务的IP地址。

kubectl

  1. 通过kubectl连接ACK Serverless集群。具体操作,请参见通过kubectl连接Kubernetes集群

  2. 复制以下示例代码,创建FastChat应用的fastchat.yaml文件。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: fastchat
      name: fastchat
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: fastchat
      template:
        metadata:
          labels:
            app: fastchat
            alibabacloud.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.4xlarge
            k8s.aliyun.com/eci-extra-ephemeral-storage: 100Gi
        spec:
          dnsPolicy: Default
          containers:
          - command:
            - sh
            - -c 
            - "/root/webui.sh"
            image: yunqi-registry.cn-shanghai.cr.aliyuncs.com/lab/fastchat:v1.1.0
            imagePullPolicy: IfNotPresent
            name: fastchat
            ports:
            - containerPort: 7860
              protocol: TCP
            readinessProbe:
              failureThreshold: 3
              initialDelaySeconds: 5
              periodSeconds: 10
              successThreshold: 1
              tcpSocket:
                port: 7860
              timeoutSeconds: 1
            resources:
              requests:
                cpu: "8"
                memory: 16Gi
              limits:
                nvidia.com/gpu: 1
    ---
    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: PayByCLCU
      name: fastchat-svc
      namespace: default
    spec:
      externalTrafficPolicy: Local
      ports:
      - port: 7860
        protocol: TCP
        targetPort: 7860
      selector:
        app: fastchat
      type: LoadBalancer
  3. 执行以下命令,部署FastChat应用fastchat。

    kubectl apply -f fastchat.yaml
  4. 执行以下命令,确认应用状态正常。

    kubectl get deployment fastchat

    预期输出:

    NAME       READY   UP-TO-DATE   AVAILABLE   AGE
    fastchat   1/1     1            1           38m

步骤二:访问服务

在浏览器中输入获取的服务外部IP地址(EXTERNAL-IP)并前往,即可开始访问和体验FastChat应用。

image.png

步骤三:释放资源

实践教程完成后,请务必注意及时删除资源,避免额外资损。

删除已创建的应用和服务

  1. 容器服务管理控制台集群列表页面,单击目标集群名称。

  2. 在左侧导航栏选择工作负载 > 无状态,然后选中已创建的fastchat应用,单击批量删除,并按界面提示完成后续确认操作。

删除集群

ACK Serverless集群目前不收取集群管理费用,但在使用ACK Serverless集群过程中用到的其他阿里云云产品资源(如ECI),您需要按照各云产品规定的计费规则,为您使用的资源付费,费用由各云产品收取。完成教程后,请参考以下场景处理集群:

  • 如果不再继续使用集群,请在容器服务管理控制台集群列表页面,找到目标集群并单击对应的更多 > 删除,在弹出面板阅读提示信息,选中要同时删除的相关云产品资源,然后单击删除,并按页面提示完成后续操作。更多信息,请参见删除集群

  • 如果需要继续使用集群,请及时为阿里云账号充值,确保余额充足。如需了解使用ACK Serverless集群Pro过程中用到的其他阿里云云产品资源的计费信息,请参见云产品资源计费

联系我们

如果您在ACK AIGC教程实践过程中有任何疑问或建议,欢迎您加入钉群(钉群号:31850017754)交流。