如何基于 Knative 提供生产级别 Stable Diffusion 服务

简介: 背景随着生成型AI技术的能力提升,越来越多的注意力放在了通过AI模型提升研发效率上。作为 AIGC (AI Gererative Content)领域的知名项目 Stable Diffusion , 可以帮助用户快速、准确地生成想要的场景及图片。不过当前使用 Stable Diffusion 面临如下问题:单个Pod处理请求的吞吐率有限,如果多个请求转发到同一个Pod,会导致服务端过载异常,因此需

背景

随着生成型AI技术的能力提升,越来越多的注意力放在了通过AI模型提升研发效率上。作为 AIGC (AI Gererative Content)领域的知名项目 Stable Diffusion , 可以帮助用户快速、准确地生成想要的场景及图片。不过当前使用 Stable Diffusion 面临如下问题:

  • 单个Pod处理请求的吞吐率有限,如果多个请求转发到同一个Pod,会导致服务端过载异常,因此需要精准的控制单个Pod 请求并发处理数。
  • GPU资源很珍贵,期望做到按需使用资源,在业务低谷及时释放GPU资源

基于上面两个问题,我们提供 Knative 解决方案,可以做到基于并发请求数精准处理,自动弹性,打造生产可用的 Stable Diffusion 服务。

架构

这里我们在ACK/ASK中提供 Knative + MSE 方式解决上述问题:

  • 通过 MSE 网关实现基于并发数精准转发
  • 通过 Knative 实现基于请求的自动弹性

实践

部署服务

  1. 集群列表页面,单击目标集群进入集群信息页面,然后在左侧导航栏,选择 应用 >  Knative
  2. Knative页面,单击 服务管理页签,然后单击 使用模板创建
  3. 命名空间下拉列表中,选择 default,在 示例模板下拉列表中,选择 Knative Service,将以下YAML示例粘贴至模板,然后单击 创建。默认创建一个名为 knative-sd-demo的服务。
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: knative-sd-demo
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/class: mpa.autoscaling.knative.dev
        autoscaling.knative.dev/maxScale: '10'
        autoscaling.knative.dev/targetUtilizationPercentage: "100"
        k8s.aliyun.com/eci-extra-ephemeral-storage: 50Gi
        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:1c9c8fa97bc70901fc992679fd90ad622a6e54e484659766d5eab127207e9d32
        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部署情况

服务访问

在Hosts 绑定 47.96.XX.XX knative-sd-demo.default.example.com 之后,在浏览器输入域名 http://knative-sd-demo.default.example.com/直接访问SD服务

基于请求自动弹性

通过 hey 命令执行压测,其中并发设置5,发数50个请求,请求超时时间 180 秒。

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

通过 watch 命令实时观察 Pod 扩缩容情况

watch -n 1 'kubectl get po'

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

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

效果:由于我们配置当前单Pod 最大并发数是1 (containerConcurrency: 1),因此压测期间,可以看到创建了 5 个Pod, 此外持续发送50个请求完成之后,可以看到请求成功率100%

可观测大盘

此外在 Knative 提供了开箱即用的可观测能力,在Knative页面,单击监控大盘页签。即可看到 Stable Diffusion 服务的请求量(Request Volume)、请求成功率(Success Rate)、4xx(客户端错误)、5xx(服务器端错误)和Pod扩缩容趋势的监控数据。

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

小结

基于 Knative 请求精准处理以及自动弹性能力,完全可以提供Stable Diffusion生产可用的能力,满足在AIGC领域按需使用的 serverless 能力。

目录
相关文章
|
3天前
|
云安全 人工智能 算法
以“AI对抗AI”,阿里云验证码进入2.0时代
三层立体防护,用大模型打赢人机攻防战
1307 3
|
3天前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
629 3
|
4天前
|
人工智能 Rust 运维
这个神器让你白嫖ClaudeOpus 4.5,Gemini 3!还能接Claude Code等任意平台
加我进AI讨论学习群,公众号右下角“联系方式”文末有老金的 开源知识库地址·全免费
|
10天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
742 5
|
3天前
|
人工智能 自然语言处理 安全
阿里云万小智AI建站:基础版、标准版、企业版主要功能及价格对比和选择参考
阿里云万小智 AI 建站是一款基于 AI 驱动的自助建站产品,无需代码基础,通过可视化拖拽与 AI 对话即可快速构建高性能、多语言、安全合规的网站。系统深度集成阿里云 ECS、RDS、OSS、CDN、SLB 与 Web 应用防火墙,保障高可用性、数据安全与全球访问速度。其提供多个版本,精准匹配从个人工作室到中大型企业的差异化需求。
246 167