前言
随着生成式人工智能(Generative AI)的爆发式增长,从语言大模型到文生图应用,各行各业的范式正在被重塑。无数开发者与企业投身于这场技术革命,催生了对模型推理(Model Inference)前所未有的巨大需求。然而,模型的规模日益庞大、用户流量的地域分布不均,给模型的部署、管理和高效服务带来了严峻挑战:
模型管理复杂:动辄数十上百 GB 的模型文件,如何进行高效的版本控制、安全存储和快捷分发?
部署效率低下:如何在多个地域的集群中实现模型快速一致的部署以及版本的更新?
阿里云容器服务[1] ACK One 舰队[2] 基于云原生协同设计(co-design)的理念,针对模型推理场景提出了一套创新性解决方案。本文将深入讲解 ACK One 如何通过标准化的模型封装、跨地域分发和无缝的迁移路径来应对上述挑战。
模型管理的新范式:拥抱OCI标准
传统上,企业用户习惯于使用云厂商的对象存储(OSS[3])来存放和加载模型文件。这种方式虽然直接,但在大规模、多版本的场景下暴露了诸多问题:缺乏标准化的元数据、版本管理混乱、分发效率不高等。
为了解决这些痛点,我们引入了一种新的范式——使用 OCI[4](Open Container Initiative)镜像来管理和交付模型。OCI 作为容器镜像和运行时的事实标准,提供了一套成熟的打包、分发和版本控制机制。将模型打包为标准的 OCI 镜像格式将带来诸多优势:
- 标准化:依托于开源开放的标准,为模型版本化和分发提供了规范,结合模型的特性有利于在 OCI 基础上建立模型相关的开放标准。
- 版本控制与不可变性:利用镜像的 Tag 进行版本管理,通过 Digest 哈希来确保每个版本的不可变性,这使得模型的版本管理、发布和回滚简单可靠。
- 生态系统复用:可以复用已有的容器镜像仓库如 ACR[5] 的能力,可以与云原生 CI/CD、安全扫描、制品管理等生态系统无缝集成。
阿里云 ACK One 舰队提供的 ModelDistribution 可以快捷将来自 oss、模型仓库(ModelScope[6])等多种源的模型快速高效打包为标准的OCI镜像。
对于新版本的 Kubernetes:新增的 ImageVolume 特性[7] 允许用户将 OCI 制品直接挂载为 Pod 的一个目录,来供推理服务使用。
对于旧版本 Kubernetes:尚不支持 ImageVolume 的旧版本集群,ModelDistribution 集成了云原生数据编排和加速引擎 fluid[8],通过其提供的 CSI 驱动能力,实现了模型镜像到 Pod 的挂载效果。
跨地域的模型分发和预热
众多企业用户选择在 Kubernetes 集群上部署模型并对外提供服务,但不同于传统一些 web 应用,语言大模型的模型动辄数十上百 GB,推理应用在冷启动和扩容时需要漫长的拉取时间,这种情况下突发流量很容易造成服务中断,导致业务受损。
当业务持续发展,考虑到异构算力在单个地域的库存供给可能不足以稳定支撑业务需求,或者业务逐渐走向全球化,用户通常会选择在多个地域创建多个 Kubernetes 集群。然而,向多个集群分发和更新模型,并确保数据同步,需要大量的人工操作和复杂的脚本,效率低下且容易出错。
考虑到上述的各种挑战,ACK One 舰队推出了 ModelDistribution 技术方案,提供了一站式的模型分发与预热解决方案,架构图如下:
如下为一个真实使用示例的 YAML:
apiVersion: ack.alibabacloud.com/v1alpha1 kind: ModelDistribution metadata: name: qwen3-8b-v1 namespace: default spec: modelName: qwen3-8b modelVersion: "v1" modelSource: oss: region: cn-hangzhou bucket: models-poc endpoint: oss-cn-hangzhou-internal.aliyuncs.com path: /qwen3-8b/v1 secret: access targets: registries: - namespace: qwen secret: "push-secret" options: type: ACR instanceId: cri-xxxxx instanceName: model-distribution region: cn-hangzhou - namespace: test options: type: ACR instanceId: cri-xxxxx instanceName: model-distribution region: cn-beijing clusters: allClusters: true preloadConfig: nodeSelector: nodegroup: dev
结合架构图和上述的真实示例,接下来我们将从控制面和数据面两个角度来剖析舰队的 ModelDistribution 技术方案。
从控制面角度来看,用户只需要创建 ModelDistribution 资源,主要包含以下内容:
- 声明模型名称和版本:通过名称和版本的组合一个 ModelDistribution 资源对应一个特定的模型,实现模型的高效版本管理。
- 声明模型来源(source):支持从 oss、模型社区(modelscope)等多种源头获取模型。
- 声明模型分发目标(targets):targets 包含两部分——OCI 镜像仓库和目标 k8s 集群。上述的例子声明了杭州和北京的两个 ACR 镜像仓库,同时通过allClusters: true 声明将模型分发到 ACK One 舰队管理的所有 k8s 集群。
- 模型预热配置:在将模型分发到集群的情况下,ModelDistribution 支持通过 preloadConfig 配置模型预热,通过 nodeSelector 来选择一批节点将模型预热到这些节点。
从数据面角度来看,ModelDistribution 会编排模型的流动,如下:
- 模型 OCI 化:自动化地将存储在 OSS、modelscope 中的模型文件转换为标准的 OCI 镜像格式,并将模型镜像推送到镜像仓库。
- 模型的同步:模型镜像会高效地被同步到各个地域指定的多个镜像仓库中。
- 模型的分发:这一阶段模型会从 OCI 镜像仓库分发到各个集群,每个集群都会有对应的模型 PVC 产物,各个集群的推理应用可以直接引用 PVC 来进行模型加载。
- 模型的预热:考虑到模型拉取消耗时间较长,通过模型预热可以拉取模型到各个集群目标节点的磁盘,然后进一步将模型预热到节点的 Page Cache。通过对于调度能力的增强,调度器会将使用ModelDistribution 模型的推理应用调度到已经预热模型的节点,这使得推理引擎可以秒级加载模型参数,确保推理服务能够快速拉起应对流量洪峰。
通过 ModelDistribution 对模型的交付、分发和预热进行统一编排,用户只需以声明式的方式一键声明即可,无需再关心底层复杂的模型分发和模型预热的各种繁琐细节,配合增强的调度能力可以实现推理服务的快速启动。
平滑演进:从单集群到跨地域架构的无缝迁移
技术架构的演进并非一蹴而就,许多用户起步于单个Kubernetes 集群,随着业务发展,逐步走向多集群、跨地域的分布式架构。ACK One 舰队提供了平滑的演进路径,如果您当前在单个 Kubernetes 集群中管理应用,可以通过 ACK One 舰队提供的工具和迁移方案,轻松地将应用配置转换为多集群架构下的应用,并利用 ModelDistribution 等能力,无缝升级您的模型分发和管理体系。
结论
生成式 AI 时代,高效的模型推理基础设施是释放业务潜力的关键。ACK One 舰队通过引入 OCI 作为模型交付标准,并提供 ModelDistribution 能力,解决了模型管理、分发和预热的核心痛点。ACK One 舰队致力于为用户提供成熟、高效、可平滑迁移的多集群模型推理解决方案,助力用户在 AI 浪潮占得先机。
参考文献
[1]容器服务 Kubernetes 版 ACK(ACK)-阿里云帮助中心
[2]多集群舰队_容器服务 Kubernetes 版 ACK(ACK)-阿里云帮助中心
[4]Open Container Initiative - Open Container Initiative
[7]Kubernetes 1.31: Read Only Volumes Based On OCI Artifacts (alpha)