赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. ACK Serverless集群
  4. 操作指南
  5. Knative
  6. Knative最佳实践
  7. 基于Knative部署生产级别的Stable Diffusion服务

基于Knative部署生产级别的Stable Diffusion服务

  • Knative最佳实践
  • 发布于 2025-04-18
  • 1 次阅读
文档编辑
文档编辑

使用Knative在ACK集群中部署Stable Diffusion时,Knative支持根据单个Pod处理请求的吞吐率精准地控制单个Pod请求并发处理数,保证服务稳定性,还能在业务没有流量时自动将实例缩容至零,节省GPU资源的使用成本。

前提条件

  • 已创建ACK Serverless集群。

  • 已在集群中部署Knative,请参见部署Knative。

  • 已查看Knative服务监控大盘。

实现流程

重要

您应当自觉遵守第三方模型Stable Diffusion的用户协议、使用规范和相关法律法规,阿里云不对Stable Diffusion模型的合法性、安全性、准确性进行任何保证,且不对由此引发的任何损害承担责任。

随着生成型AI技术能力的提升,大家越来越关注通过AI模型提升研发效率。Stable Diffusion作为AIGC领域的知名项目,可以帮助您快速、准确地生成所需场景及图片。但目前使用Stable Diffusion会面临如下问题:

  • 单个Pod处理请求的吞吐率有限,如果多个请求转发到同一个Pod,会导致服务端过载异常,因此需要精准地控制单个Pod请求并发处理数。

  • 由于GPU资源很珍贵,期望做到按需使用资源,并在业务低谷及时释放GPU资源。

基于以上两个问题,阿里云容器服务提供Knative解决方案,可以做到基于并发请求数精准处理,实现自动弹性扩缩容,打造生产可用的Stable Diffusion服务。具体实现流程如下所示。

image

步骤一:部署Stable Diffusion服务

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

  2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > Knative。

  3. 部署Stable Diffusion服务。

    ACK Knative提供了热门应用模板。您可以通过应用模板快速部署,也可以通过YAML来部署。

    应用模板

    单击热门应用页签,在Stable Diffusion服务的卡片上完成一键部署。

    部署后,您可以单击服务管理,在服务列表查看部署进度。

    如图所示,表明服务已部署成功。

    image

    YAML

    单击服务管理页签,选择命名空间为default,然后单击使用模板创建,将以下YAML示例粘贴至模板,最后单击创建,创建一个名为knative-sd-demo的服务。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: knative-sd-demo
      annotations:
        serving.knative.dev.alibabacloud/affinity: "cookie"
        serving.knative.dev.alibabacloud/cookie-name: "sd"
        serving.knative.dev.alibabacloud/cookie-timeout: "1800"
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/class: kpa.autoscaling.knative.dev
            autoscaling.knative.dev/maxScale: '10'
            autoscaling.knative.dev/targetUtilizationPercentage: "100"
            k8s.aliyun.com/eci-use-specs: ecs.gn5-c4g1.xlarge,ecs.gn5i-c8g1.2xlarge,ecs.gn5-c8g1.2xlarge  
        spec:
          containerConcurrency: 1
          containers:
          - args:
            - --listen
            - --skip-torch-cuda-test
            - --api
            command:
            - python3
            - launch.py
            image: yunqi-registry.cn-shanghai.cr.aliyuncs.com/lab/stable-diffusion@sha256:62b3228f4b02d9e89e221abe6f1731498a894b042925ab8d4326a571b3e992bc
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 7860
              name: http1
              protocol: TCP
            name: stable-diffusion
            readinessProbe:
              tcpSocket:
                port: 7860
              initialDelaySeconds: 5
              periodSeconds: 1
              failureThreshold: 3

    如图所示,表明knative-sd-demo服务已部署成功。

    image

步骤二:访问服务

  1. 在服务管理页签,获取服务的访问网关和默认域名。

  2. 将knative-sd-demo服务的网关地址与需要访问的域名进行Host绑定,在Hosts文件中添加绑定信息。绑定示例如下。

    47.xx.xxx.xx knative-sd-demo.default.example.com # 替换为实际的网关IP和域名。
  3. 完成Host绑定后,在服务管理页签,单击knative-sd-demo服务的默认域名,即可访问Stable Diffusion。

    如图所示,可通过域名直接对Stable Diffusion进行访问。

    image.png

步骤三:基于请求实现自动弹性扩缩容

  1. 使用Hey压测工具,执行压测。

    说明

    Hey压测工具的详细介绍,请参见Hey。

    hey -n 50 -c 5 -t 180 -m POST -H "Content-Type: application/json" -d '{"prompt": "pretty dog"}' http://knative-sd-demo.default.example.com/sdapi/v1/txt2img

    发送50个请求,并发数为5,请求超时时间为180秒。

    预期输出:

    Summary:
      Total:	252.1749 secs
      Slowest:	62.4155 secs
      Fastest:	9.9399 secs
      Average:	23.9748 secs
      Requests/sec:	0.1983
    
    
    Response time histogram:
      9.940 [1]	|■■
      15.187 [17]	|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      20.435 [9]	|■■■■■■■■■■■■■■■■■■■■■
      25.683 [11]	|■■■■■■■■■■■■■■■■■■■■■■■■■■
      30.930 [1]	|■■
      36.178 [1]	|■■
      41.425 [3]	|■■■■■■■
      46.673 [1]	|■■
      51.920 [2]	|■■■■■
      57.168 [1]	|■■
      62.415 [3]	|■■■■■■■
    
    
    Latency distribution:
      10% in 10.4695 secs
      25% in 14.8245 secs
      50% in 20.0772 secs
      75% in 30.5207 secs
      90% in 50.7006 secs
      95% in 61.5010 secs
      0% in 0.0000 secs
    
    Details (average, fastest, slowest):
      DNS+dialup:	0.0424 secs, 9.9399 secs, 62.4155 secs
      DNS-lookup:	0.0385 secs, 0.0000 secs, 0.3855 secs
      req write:	0.0000 secs, 0.0000 secs, 0.0004 secs
      resp wait:	23.8850 secs, 9.9089 secs, 62.3562 secs
      resp read:	0.0471 secs, 0.0166 secs, 0.1834 secs
    
    Status code distribution:
      [200]	50 responses

    可以看到持续发送了50个请求,请求成功率为100%。

  2. 执行如下命令,可实时观察Pod扩缩容情况。

    watch -n 1 'kubectl get po'

    image.png

    由于部署Stable Diffusion服务时配置了单Pod的最大并发数是1 (containerConcurrency: 1),因此压测期间自动扩容了5个Pod。

步骤四:查看Stable Diffusion服务监控数据

Knative提供开箱即用的可观测能力,在Knative页面,单击监控大盘页签,即可查看Stable Diffusion服务的监控数据情况。如何开启Knative监控大盘,请参见查看Knative服务监控大盘。

  • 在Overview (average over the selected time range)区域,可查看Stable Diffusion服务的请求量(Request Volume)、请求成功率(Success Rate)、4xx(客户端错误)、5xx(服务器端错误)和Pod扩缩容趋势的监控数据。

    image

  • 在Response Time区域,查看Knative的响应延迟数据,包括P50、P90、P95和P99。

    image.png

相关文档

如果您需要在Knative中部署AI模型推理服务,可参见在Knative中部署AI模型推理服务的最佳实践获取配置建议。

相关文章

在Knative中部署AI模型推理服务的最佳实践 2025-04-18 14:49

Knative和AI结合提供了快速部署、高弹性和低成本的技术优势,适用于需要频繁调整计算资源的AI应用场景,例如模型推理等。您可以通过Knative Pod部署AI模型推理任务,配置自动扩缩容、灵活分配GPU资源等功能,提高AI推理服务能力和GPU资源利用率。 加速模型部署 为了保证Knative

基于Knative部署生产级别的Stable Diffusion服务 2025-04-18 14:49

使用Knative在ACK集群中部署Stable Diffusion时,Knative支持根据单个Pod处理请求的吞吐率精准地控制单个Pod请求并发处理数,保证服务稳定性,还能在业务没有流量时自动将实例缩容至零,节省GPU资源的使用成本。 前提条件 已

基于KServe快速部署一个推理服务 2025-04-18 14:49

KServe是一个基于Kubernetes的机器学习模型服务框架,支持以Kubernetes CRD的形式将单个或多个经过训练的模型(例如TFServing、TorchServe、Triton等推理服务器)部署到模型服务运行时,使得模型的部署、更新和扩展变得更加简单快捷。本文介绍如何在Knative

查看Knative服务监控大盘 2025-04-18 14:49

ACK集群已经兼容阿里云Prometheus和Grafana,无需您自建监控系统和可视化大盘。在Knative中部署业务应用后,您可以将Knative服务的监控数据接入Prometheus,通过Grafana大盘实时查看Kantive的响应延迟、请求并发数、CPU和内存资源用量等数据。

通过Knative事件驱动实现消息发送 2025-04-18 14:49

Knative是一款基于Kubernetes的开源Serverless应用编排框架。在完全兼容社区Knative的同时,ACK支持事件驱动、自动弹性等特性。本文结合一个弹幕服务介绍如何通过Knative实现弹幕消息的发送。 前提条件

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号