作者:子白(顾静)
2023 年堪称是 AIGC 元年,文生图领域诞生了 Stable Diffusion 项目,文生文领域诞生了 GPT 家族。一时间风起云涌,国内外许多企业投身 AIGC 创新浪潮,各大云厂商紧随其后纷纷推出自己的大语言模型。在文生图领域落地的企业更多,国外的如 Midjourney,国内的如 AIGC 软件公司万兴科技等。
万兴科技今年推出了系列创新 AIGC 应用,相关产品发布后吸引了大量终端用户“尝鲜”,急需大量资源满足日益增长的用户需求。万兴科技将业务进一步部署到云上,利用云的弹性能力平衡资源和成本。同时,万兴科技借力阿里云容器服务 ACK 和镜像服务企业版 ACR EE,进一步提升用户体验。 Kubernetes 是企业云上管理资源的最佳选择,具有很强的应用编排能力,可靠性及弹性。
AIGC 类应用容器化挑战
AIGC 类应用相比于传统的在线应用有比较明显的特征,镜像大、冷启动时间长。
-
镜像大
AIGC 应用大多采用 nvidia/cuda 作为基础镜像,并安装 Tensorflow、Pytorch、Transformer 等框架,应用镜像往往有十几 GB。镜像拉取是容器启动必不可少的一环,主要包括下载、解压等步骤,会带来网络带宽开销和磁盘的二次写入。随着镜像大小和节点规模的增加,存储网络下载带宽逐渐成为性能瓶颈,缓慢的镜像拉取速度会严重影响容器部署效率和成功率。
-
冷启动时间长
应用冷启动时间由两个部分组成,Pod 启动时间及 Pod 启动后应用初始化时间。AIGC 类应用这两个时间都很长。镜像大导致 Pod 的镜像拉取时间长。应用启动后首先需要将模型加载到内存中然后才可以对外提供服务。以 stable diffusion 的 v1-5-pruned.safetensors 模型为例,模型有 7.7GB,从云盘加载到内存中大概需要 25s。AIGC 应用的冷启动时间从几十秒到几十分钟不等,如采用 HPA 扩容策略会存在明显的滞后性,导致业务受损。
为解决上述问题,阿里云推出了容器镜像服务(ACR)加速方案及容器服务 Kubernetes 版(ACK)智能弹性 AHPA 方案。
阿里云容器服务助力万兴科技 AIGC 应用加速
ACR 企业版为 AIGC 应用镜像加速
镜像加速方案分两部分:
镜像缓存
运行 Pod 前首先需要拉取镜像,镜像拉取耗时已经成为容器启动的主要耗时。ACK Serverless 集群里,首次拉取的镜像会自动制作镜像缓存,第二次创建 Pod 时会基于该快照来创建,避免或者减少镜像层的下载,从而提升 Pod 的创建速度。镜像缓存是根据镜像地址严格匹配的,当镜像有更新时需要更新镜像缓存。
详情请参考文档镜像缓存概述 [ 1] 。
P2P 镜像加速
当大规模容器集群批量下载镜像时,容器镜像存储的网络带宽会成为性能瓶颈,导致镜像拉取缓慢。P2P 加速功能利用您计算节点的带宽资源,进行节点之间镜像分发,减少对容器镜像存储的压力,可以大幅提升镜像拉取速度,减少应用部署时间。
详情请参考文档使用 P2P 加速概述 [ 2] 。
万兴科技采用的方案将这两个能力结合在一起,将不常变化的基础镜像做镜像缓存,经常更新的镜像层采用 P2P 加速拉取,效果非常明显:一般 20G 的镜像拉取速度从 20min 左右加速到 30s 以内, 而且同时扩容的 Pod 数量越多,加速效果越明显。
ACK AHPA 轻松解决弹性滞后问题
在云原生场景下,资源容量通常难以预估,而使用 K8s 原生的 HPA 需要面对弹性滞后以及配置复杂问题。阿里云容器服务与达摩院决策智能时序团队合作推出了 AHPA 弹性预测,可以根据业务历史指标,自动识别弹性周期并对容量进行预测,提前进行弹性规划,解决弹性滞后的问题。
AHPA 会根据历史 Pod 的 Ready Time 以及历史 Metrics 自动学习规律,在业务量上涨之前的一个 Ready Time 开始扩容。当业务量上涨时 Pod 已提前准备,可以及时供给资源。
详细介绍可参考文档 AHPA 概述 [ 3] 。
万兴科技在使用 AHPA 后,在成本基本没有变化的情况下, 极大地缩短了用户端的等待时间, 可以从下图看出,接入 AHPA 后基本上没有任务堆积了。
综上,AIGC 类应用与传统应用相比,具有镜像大、冷启动时间长等明显特征。阿里云容器服务推出的镜像缓存、P2P 镜像加速及 ACK AHPA 弹性预测能力可以有效解决这些问题。
镜像缓存可以基于快照创建 Pod,避免或减少镜像层的拉取;P2P 镜像加速技术利用计算节点的内网带宽资源,在节点之间分发镜像,避免从数据源拉取,加速应用部署;AHPA 基于 RobustScaler 算法根据历史 Pod Ready 时间训练模型,提前扩容,减少冷启动时间。
相关链接:
[1] 镜像缓存概述
https://help.aliyun.com/zh/eci/user-guide/overview-of-image-caches-1/
[2] 使用 P2P 加速概述
https://help.aliyun.com/zh/acr/user-guide/use-p2p-acceleration-1?spm=a2c4g.750001.0.i1
[3] AHPA 概述****
https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/ahpa-overview-1?spm=a2c4g.750001.0.i1