使用ACS算力快速搭建生成式会话应用

更新时间:
复制为 MD 格式

本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。

场景简介

阿里云容器计算服务ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。

本教程所使用两个开源项目,分别是RWKV-RunnerChatGPT-Next-Web。RWKV-Runner是一个0.1b的大模型并提供RESTful API对外提供在线推理服务,ChatGPT-Next-Web是会话应用的WebUI。RWKV-RunnerChatGPT-Next-Web形成前后端分离架构的生成式AI会话应用,通过容器镜像部署到ACS集群中。完成本教程后,您将创建生成式AI会话应用。

image

背景知识

本场景主要涉及以下云产品和服务:

  • 容器计算服务ACS

    阿里云容器计算服务ACS (Alibaba Cloud Container Compute Service,ACS)是以K8s为使用界面供给容器算力资源的云计算服务,提供符合容器规范的算力资源。算力交付模式为Serverless形态,您无需关注底层节点及集群的运维管理。ACS支持按需弹性和资源预留的资源使用方式,以及秒级的按量付费模式。算力资源可同时支持您的容器应用负载和云产品的负载。

前提条件

本实验需要您使用阿里云账号开通本次实操资源,资源按量付费,需要您自行承担本次实操的云资源费用。

重要

本实验1个小时预计产生费用14.15元。如果您调整了资源规格、使用时长,或执行了本方案以外的操作,可能导致费用发生变化,请以控制台显示的实际价格和最终账单为准。

进入实操前,请确保阿里云账号满足以下条件:

  • 已通过实名认证并且账户余额大于100。

  • 云资源产生的费用需您自行承担,云起实验室不会向您征收额外费用。

  • 所有实验操作将保留至您的账号,请谨慎操作。

  • 实操结束后,您可以选择继续付费保留资源,或参考手册自动/手动释放资源。

开通并授权容器计算服务ACS

说明

如果您已开通容器计算服务ACS服务并授权,请您跳过此步骤。

  1. 在实验室右侧的操作区中,勾我已阅读并同意《阿里云云起实践平台服务协议》,单击免费开始实操

    image

  2. 登录容器计算服务控制台

  3. 容器计算服务(ACS)页面,单击开通服务中的前往开通

    image

  4. 在开通服务面板,单击创建服务关联角色,当服务关联角色显示已创建后,单击立即购买

    image

    image

  5. 返回容器计算服务(ACS)页面,单击刷新,当容器计算服务(ACS)服务显示为已开通状态时,单击下一步

    image

  6. 容器计算服务(ACS)页面,单击角色授权中的前往授权

    image

  7. 访问控制快速授权页面,单击确认授权

    image

  8. 返回容器计算服务(ACS)页面,单击刷新,当显示服务角色已授权时,单击下一步

    image

  9. 容器计算服务(ACS)页面,单击进入控制台

    image

    返回如下页面,表示您已成功开通并授权容器计算服务ACS。

    image

创建ACS集群本

  1. 登录容器计算服务控制台

  2. 集群页面,单击创建集群

    image

  3. 创建集群页面,根据如下说明配置参数,未提及的参数保持默认即可,单击确认配置

    配置项

    说明

    示例

    集群名称

    填写集群的名称。

    ACS-Demo

    地域

    选择集群所在的地域。

    华北2(北京)

    选择专有网络

    设置集群的网络。ACS集群仅支持专有网络。支持自动创建使用已有VPC。

    • 自动创建:集群会自动新建一个VPC,并在VPC中自动创建NAT网关以及配置SNAT规则。

    • 使用已有:您可以在已有VPC列表中选择所需的VPC和交换机。如需访问公网,例如下载容器镜像,则需要配置NAT网关。建议将容器镜像上传到集群所在区域的阿里云镜像服务,并通过内网VPC地址拉取镜像。

    详细信息,请参见创建和管理专有网络

    选择自动创建

    API Server 访问配置

    设置集群API Server是否可在公网访问,当您需要从公网远程管理集群时,需要配置弹性公网IP(EIP)。

    选中使用EIP暴露API Server

    服务发现

    设置是否开启集群服务发现能力。当你需要服务发现能力时,需选择开启CoreDNS

    选择CoreDNS

    image

    image

  4. 配置确认面板,请确认依赖检查区域中的所有项目是否都通过,若有未通过的项目,请您根据页面提示进行授权,然后单击创建集群

    image

    返回如下页面,请您耐心等待集群创建完成,集群的创建时间一般约为10分钟。当集群运行状态变为运行中时,表示ACS集群创建完成,您可以进行下一步操作。

    image

使用ACS控制台部署RWKV-Runner

本步骤指导您如何在新创建的ACS集群中使用通用型实例快速部署一个无状态应用(Deployment)RWKV-Runner,并将该应用RESTful API在集群内公开。关于创建Deployment的详细参数描述,请参见创建无状态工作负载Deployment

  1. 登录容器计算服务控制台

  2. 集群页面,单击目标集群名称(即ACS-Demo)。

    image

  3. 在左侧导航栏,选择工作负载 > 无状态

    image

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

    image

  5. 应用基本信息页面,设置应用名称rwkv-runner,选择实例类型CPU通用型QoS类型default,单击下一步

    image

  6. 容器配置页面,配置容器的相关信息,单击下一步

    配置项

    说明

    示例值

    镜像名称

    直接输入不包含镜像Tag的镜像地址或单击选择镜像来选择所需的镜像。

    registry.cn-beijing.aliyuncs.com/acs-demo-ns/rwkv-runner:1.0.0

    CPU

    根据需要为该应用指定所需的CPU核数。

    1 Core

    内存

    根据需要为该应用指定所需的内存大小。

    2 GiB

    端口

    设置容器的端口。

    在端口右侧,单击新增,根据如下说明配置端口参数。

    • 名称:runner

    • 容器端口:8000

    • 协议:TCP

    image

  7. 高级配置页面,单击服务(Service)右侧的创建

    image

  8. 创建服务对话框,配置以下信息,单击确定,以通过该服务集群内发布rwkv-runnerRESTful API。

    配置项

    说明

    示例值

    名称

    输入服务的名称。

    rwkv-runner-svc

    类型

    选择服务类型,即服务访问的方式。

    虚拟集群IP

    端口映射

    设置服务端口容器端口容器端口需要与后端的Pod中暴露的容器端口一致。

    • 名称:runner

    • 服务端口:80

    • 容器端口:8000

    • 协议:TCP

    image

  9. 高级配置页面,单击右下角的创建

    image

    创建成功后,默认进入创建完成页面,显示应用包含的对象。您可以单击查看应用详情进行查看。

    image

  10. 应用详情页面,您可查看rwkv-runner应用创建进度。当Pod状态变为Running后,表示已经完成服务启动。

    说明

    示例镜像集成了RWKV-6-World-1B模型,镜像大小约为16GiB,视网络情况可能存在10~20分钟的镜像拉取时间,请您耐心等待rwkv-runner应用创建完成。

    image

使用ACS集群证书部署并公开ChatGPT-Next-Web

本步骤指导您如何使用ACS集群证书在新创建的ACS集群中使用通用型实例快速部署一个无状态应用(Deployment)ChatGPT-Next-Web,并将该应用公网公开。关于创建Deployment的详细参数描述,请参见创建无状态工作负载Deployment

  1. 在左侧导航栏中,选择工作负载 > 无状态

    image

  2. 无状态页面,单击使用YAML创建资源

    image

  3. 创建页面,示例模板选择自定义,复制如下代码并粘贴至模板区域中,单击创建

    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

    image

  4. 在创建页面下方,单击chat-frontend

    image

  5. 应用详情页面,您可查看chat-frontend应用创建进度。当Pod状态变为Running后,表示已经完成服务启动。

    image

使用ACS集群证书创建应用初始任务

本步骤指导您如何使用ACS集群证书在新创建的ACS集群中使用BestEffort 算力质量的实例快速创建一个任务(Job),用于RWKV-Runner应用大模型的初始化。关于创建Job的详细参数描述,请参见创建任务工作负载Job

  1. 在左侧导航栏中,选择工作负载 > 无状态

    image

  2. 无状态页面,单击使用YAML创建资源

    image

  3. 创建页面,示例模板选择自定义,复制如下代码并粘贴至模板区域中,单击创建

    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  # 默认型
            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

    image

  4. 在创建页面下方,单击job-demo

    image

  5. 应用详情页面,您可查看job-demo任务执行进度。当Pod状态变为Completed后,表示初始化任务执行完成

    image

测试应用

本步骤指导您如何通过服务(Service)来访问新部署的容器化应用。

  1. 在左侧导航栏中,选择网络 > 服务

    image

  2. 服务页面,找到新创建的服务(即chat-frontend-svc),复制External IP列的IP地址。

    image

  3. 在本地机器的浏览器中,访问External IP列的IP地址,即可访问生成式AI会话应用。

    image

清理资源

使用ACS集群所产生的费用包括以下两部分:

  • 创建工作负载使用的算力,由容器计算服务ACS收取。

  • 使用的其他阿里云云产品资源费用,按照各云产品规定的计费规则计费,由各云产品收取。

完成实验后,请参考以下场景处理集群。

  • 在完成实验后,如果无需继续使用资源,请根据以下步骤,先删除相关资源后,再结束实操,否则资源会持续运行产生费用。

    • 删除容器计算服务ACS集群。

      1. 登录容器计算服务控制台

      2. 集群页面,找到目标ACS集群,选择其右侧操作列下的更多 > 关闭集群删除保护状态

        image

      3. 在关闭集群删除保护状态对话框中,关闭集群删除保护的开关,单击确认。

        image

      4. 集群页面,找到目标ACS集群,选择其右侧操作列下的更多 > 删除

        image

      5. 删除集群及关联资源面板,选择删除所有的集群关联资源,单击删除

        image

      6. 确认删除集群对话框中,输入需要删除的集群名称,勾选我已知晓以上信息并确认删除,单击确认删除

        image

    • 删除容器计算服务ACS集群后,单击结束实操。在结束实操对话框中,单击确定

      image

  • 在完成实验后,如果需要继续使用资源,您可跳过删除容器计算服务ACS集群的操作,直接单击结束实操。在结束实操对话框中,单击确定。请随时关注账户扣费情况,避免发生欠费。在使用ACS集群过程中用到的其他阿里云云产品资源的相关计费说明,请参见云产品资源计费

    image