通过Alluxio优化LLM推理基础设施:实现模型加载10倍提速

Inferless 借助 Alluxio 实现大语言模型部署 10 倍提速,冷启动时间 10 倍缩短。

Inferless 借助 Alluxio 实现大语言模型部署 10 倍提速,冷启动时间 10 倍缩短。

扩展 LLM 推理基础设施面临的 I/O 挑战

Inferless 为企业提供无服务器平台,帮助企业轻松部署定制化的 LLM。LLM 推理基础设施是实现高性能、可扩展部署的核心。LLM 模型文件(包括模型权重)通常非常庞大(几十至上百 GB),必须快速加载到推理服务器的 GPU 内存中,以支持推理请求。我们面临的核心挑战是“冷启动”问题——即首次或长时间未使用后加载模型时产生的延迟。Inferless 帮助数百位客户部署了数千个模型。典型的推理请求会通过负载均衡器路由,然后定向至某个节点。如果容器镜像的副本未立即可用,系统将启动三步流程:启动容器镜像、拉取模型权重、执行推理。其中,拉取模型权重这一环节可能成为瓶颈,严重影响平台性能与可扩展性。举例来说,如果上千个推理节点各自从云对象存储或集中式 NFS 拉取 20 至 100 GB 的模型,很容易造成网络带宽和存储 I/O 瓶颈。Inferless 借助 Alluxio 实现大语言模型部署 10 倍提速,冷启动时间 10 倍缩短。

LLM推理的基础架构

在扩展 LLM 推理架构过程中,我们主要遇到了以下瓶颈:

云对象存储无法满足吞吐和延迟要求
模型通常存储在如 S3、GCS、Azure Blob 等对象存储中。直接从这些存储加载大型模型(20GB 至 100GB+)非常慢,通常吞吐仅有 200-500 Mbps。
NFS 性能与成本均存在限制
虽然 NFS 实现简单,但根据我们的经验,一旦多个节点同时拉取模型权重,集中式 NFS 的费用会迅速增加且性能瓶颈明显,难以支撑大规模并发访问。
缺乏对模型权重的原生 LRU 缓存机制
在计算节点附近缺少智能的本地缓存机制会导致从云存储重复拉取同一模型权重,不仅会降低性能,还带来不必要的数据传输成本。
LLM 框架需要 POSIX 兼容接口
现代 LLM 推理框架如 PyTorch、Hugging Face 通常依赖标准的文件系统操作(例如针对 Safetensors 格式使用 mmap)。而在高吞吐需求下,直接从对象存储访问这些数据效率低且实现复杂。

通过 Alluxio 将模型加载速度提升10倍

为解决上述挑战,我们评估了多个解决方案,最终选择了 Alluxio (https://www.alluxio.com.cn/) ,其架构和性能表现尤为出色。Alluxio 是一个分布式缓存层,位于云存储与 LLM 应用之间。它利用云 GPU 节点上高速但往往未充分利用的 NVMe 磁盘,大幅降低模型加载时间。此外,Alluxio 对 S3 的集成相比常见的 boto3 等库具备更高效的数据拉取能力,通过支持并行加载,显著提升模型加载吞吐。
基于Alluxio的三层存储架构
借助 Alluxio,我们构建了一套稳定高效的三层存储架构,为 LLM 推理优化提供坚实基础,目前该架构已成为云端 LLM 服务的最佳实践。Inferless 借助 Alluxio 实现大语言模型部署 10 倍提速,冷启动时间 10 倍缩短。

基于Alluxio的三层存储架构

热存储层(Alluxio)——支持POSIX文件接口的本地NVMe
每个计算节点配备高速 NVMe SSD(或基于 NVMe 的实例存储),挂载为 POSIX 文件系统。Alluxio 能够智能地利用每台 GPU 服务器上通常未充分利用的高速本地 NVMe SSD。 该存储层通过 Alluxio FUSE,作为 POSIX 兼容的虚拟挂载点暴露给推理容器, 从而提供“热”数据访问能力,单节点吞吐可达 2.5 GB/s 以上,延迟极低,确保模型文件可以接近内存速度读取。
温存储层(Warm Tier)—— 集群内文件共享
在集群层面,节点之间可以互相共享数据。每台机器都暴露服务接口(或接入分布式文件系统),使得节点之间可以通过高速网络从彼此处检索模型文件。部署在同一 Kubernetes 集群或可用区内不同节点上的 Alluxio worker,可以共享从冷存储层(cold tier)缓存的数据。如果某个模型不在本地 Alluxio 热存储层(NVMe)中,Alluxio 会首先检查集群中是否有其他节点已经缓存了该模型。这一“温层”机制意味着,如果某个节点已经将模型缓存在其 NVMe 上,其他节点就可以通过局域网以约 2 GB/s 的速度从该节点读取,而不必都去访问云存储。
冷存储层(Cold Tier) —— 云对象存储 (S3, Azure Blob, GCS)
该层是具备持久性和可扩展性的真实数据源,用于持久保存所有模型权重,作为所有模型和数据组件的“冷”存储层。它提供近乎无限的容量和高耐久性,但延迟较高(通常为数百毫秒),单个连接的吞吐也较低。冷层是数据的源头,其中的数据会被按需拉取到更快的层级(热/温存储层)。此外,它也被用作缓存未命中时的回退(fallback)数据源,或用于填充上层缓存。Alluxio 提供更优化的客户端(例如针对 S3 的自定义客户端),支持从云对象存储并行加载,最大限度地减少直接冷读取, 进而降低延迟、数据出口(egress)成本和 API 请求费用。
性能基准
在吞吐方面,我们通过Alluxio从云存储加载模型,最高可达2 Gbps,比之前的200 Mbps提升了10倍。在模型加载时间方面,与 Amazon FSx Lustre 相比,在相同的 1 GB/s 基准吞吐量下,我们将加载时间缩短了 6 到 12 倍。现在加载一个 5GB 的模型只需 2 秒(热读)或 9 秒(冷读),而以前需要 24 秒。同样,24GB 模型的加载时间为 8 秒(热读)或 35 秒(冷读),而 Amazon FSx Lustre 的加载时间为 50 秒。Inferless 借助 Alluxio 实现大语言模型部署 10 倍提速,冷启动时间 10 倍缩短。

性能基准

效果显著:LLM服务性能实现质的提升

部署 Alluxio 后,我们的 LLM 服务性能实现了根本性提升。从过去模型初始化需花费数分钟,到如今只需数秒,实现了真正的按需扩展,大幅改善了客户体验。

吞吐提高 10 倍,模型加载速度提高 6-12 倍
我们在解决冷启动问题方面取得了更好的性能。数据访问速度的这一根本性改进是我们产品取得成功和提高响应速度的关键。
提升客户体验与SLA
模型加载速度 10 倍提升带来平台整体推理流程 2 倍提速,帮助我们满足更严格的 P95 SLA 要求。
为客户节约成本
通过消除冷启动带来的延迟,并实现快速、按需扩展,客户无需超额预留昂贵的 GPU 资源,大大节约使用成本。
简化运维
Alluxio 提供统一的高速数据访问层,替代原本复杂的自建多存储缓存方案,从而简化运维流程。

总结

在云端部署大规模 LLM 推理系统,需要具备高吞吐数据访问能力,以支撑数百张 GPU 高效运行。随着 Inferless 托管数千个 AI 模型、数百个 GPU 实例,模型“冷启动”一直是制约扩展的难题,即使使用 Amazon FSx Lustre 等并行文件系统也难以从根本上解决。Alluxio 的引入彻底改变了这一局面,不仅提供了 6-12 倍模型加载提速,还具备对无服务器 GPU 计算服务关键的多云灵活性。借助 Alluxio,我们将 LLM 权重加载吞吐提升10倍,接近硬件极限(每秒数 GB吞吐),使得企业客户能够以前所未有的速度和效率部署定制化的 LLM。