Connect with us

人工智能

大型语言模型的无服务器推理的未来

mm

最近在大型语言模型(LLM)如GPT-4、PaLM方面的进展带来了自然语言任务的变革能力。LLM被整合到各种应用中,如聊天机器人、搜索引擎和编程助手。然而,在大规模上提供LLM服务仍然具有挑战性,因为它们需要大量的GPU和内存资源。

为了克服这些挑战,通常有两种主要方法:

  1. 模型压缩技术

这些技术旨在减小模型的大小同时保持准确性。常见的方法包括:

  • 剪枝 – 从模型中删除冗余或不重要的参数。这创建了一个稀疏模型,参数更少。
  • 量化 – 使用较低精度的数字(如int8或bfloat16)来表示权重,而不是使用fp32或fp16。这减少了内存占用。
  • 知识蒸馏 – 训练一个较小的“学生”模型来模仿一个大型的“教师”模型。然后使用较小的模型进行推理。
  1. 选择性执行

这些技术不是压缩模型,而是选择性地执行模型的某些部分:

  • 稀疏激活 – 跳过计算零激活。
  • 条件计算 – 只执行某些层,条件是输入。

在软件架构师方面,为了实现LLM的更快部署,研究人员提出了无服务器推理系统。在无服务器架构中,LLM托管在共享的GPU集群上,并根据需求动态分配。这使得GPU的利用率更高,并降低了开发者的成本。著名的实现包括Amazon SageMaker、Microsoft Azure ML和开源选项如KServe。

尽管无服务器LLM具有前景,但现有的系统表现出高延迟开销,这会降低交互式应用程序的用户体验:

  1. 昂贵的检查点下载: LLM具有大型内存占用,通常为几百GB到几TB。即使使用优化的网络,从远程存储下载检查点也需要超过20秒的时间。
  2. 检查点加载效率低下: 即使使用本地SSD存储,将检查点加载到GPU内存也需要几十秒的时间,这是由于张量反序列化和分配等因素造成的。这增加了容器启动时间以外的显著延迟。

为了解决这些问题,MIT CSAIL的研究人员提出了ServerlessLLM,一种创新系统,实现了低延迟的无服务器LLM推理。ServerlessLLM通过利用多层服务器存储中丰富但未充分利用的容量和带宽来增强局部性,以实现LLM部署。

LLM无服务器推理系统概述

LLM无服务器推理系统概述

ServerlessLLM的关键创新:

  1. 快速检查点加载
  • 加载优化的检查点格式,实现快速的顺序读取和高效的内存张量寻址。
  • 多层检查点加载管道,最大限度地利用网络、SSD、DRAM和GPU内存的带宽,使用直接I/O、固定内存传输和并行等技术。
  1. 基于局部性的实时迁移
  • 基于令牌的迁移,只传输必要的提示令牌,而不是整个快照。
  • 两阶段迁移,允许在目标服务器上异步重新计算缓存状态,然后传输最终令牌,从而实现无中断推理。
  1. 延迟优化的服务器分配
  • 精确的模型,用于估计每个服务器从每个层加载检查点的时间和迁移时间。
  • 基于局部性的调度器,选择最小化预期启动延迟的服务器,使用上述模型。

这些优化使ServerlessLLM能够将LLM加载时间减少4-8倍,端到端启动时间减少25倍以上,相比现有的系统如PyTorch、TensorFlow和KServe。

加速检查点加载

ServerlessLLM解决的第一个主要瓶颈是从存储加载LLM检查点到GPU内存的高延迟。

为了实现快速检查点加载,ServerlessLLM引入:

  1. 加载优化的检查点格式

由框架如PyTorch使用的标准检查点旨在用于模型训练和调试。但是,对于无服务器推理,检查点是只读的,并反复访问。

为了优化此类读取密集型使用,ServerlessLLM将检查点转换为具有两个关键属性的格式:

  • 顺序块读取:张量分组为每个GPU的二进制文件,实现大型顺序读取。
  • 高效的张量寻址:索引将张量名称映射到内存偏移量,允许直接在内存中恢复而无需反序列化。
  1. 多层检查点加载管道

ServerlessLLM利用GPU服务器的分层架构,存储介质如SSD和网络连接到GPU通过PCIe、NVMe等。

该系统包含一个多阶段管道,最大限度地利用所有层的带宽:

  • 使用固定内存分配内存块,以实现快速的GPU传输。
  • 使用直接I/O实现高效的SSD读取,避免缓存开销。
  • 多个线程并行读取不同的存储块。
  • 阶段间协调通过异步任务队列进行。

这使得即使是最快的层(如NVMe RAID)也能达到带宽容量。实验表明,ServerlessLLM比PyTorch/TensorFlow快6-8倍,减少了大型LLM的启动时间,从超过一分钟到不到10秒。

基于局部性的LLM推理通过实时迁移

随着加载的加速,ServerlessLLM面临新的挑战——如何利用预加载的检查点实现局部性而不中断正在忙的服务器上的推理?

ServerlessLLM引入了一种新技术——LLM推理的实时迁移。这允许无缝地将执行转移到具有本地检查点的服务器。

实时LLM迁移的关键启用器:

  1. 基于令牌的迁移

而不是快照整个模型状态,ServerlessLLM只迁移最小的提示令牌到网络上。这比快照传输的数据少了几个数量级。

  1. 两阶段迁移

目标服务器异步预计算缓存状态,从提示令牌开始。一旦准备好,源服务器传输最终令牌,然后释放资源。这防止了推理停顿。

实验表明,基于令牌的迁移将迁移时间从几十秒减少到即使对于长序列也少于一秒。实时迁移对于实现局部性驱动的分配至关重要。

延迟优化的模型调度

为了最小化端到端延迟,ServerlessLLM增强了调度器,以优化服务器选择,考虑局部性。这涉及:

  1. 细粒度的加载时间估计器

模型预测从网络、SSD缓存和内存加载时间,使用队列延迟、模型大小和测量带宽等指标。

  1. 精确的迁移时间预测器

调度器估计服务器的迁移时间,使用提示和输出令牌的数量。它异步跟踪推理进度,以避免开销。

  1. 基于局部性的分配

对于每个推理请求,调度器评估服务器的预计加载和迁移时间。它选择最小化预期启动延迟的服务器,使用上述模型。

调度器还维护服务器任务队列,并利用强一致性存储实现容错。这些创新一起减少了调度开销,同时最大限度地提高了局部性优势。

评估ServerlessLLM性能

全面实验评估了ServerlessLLM与现有系统相比的端到端有效性,使用了真实世界的模型,如OPT-175B和类似Azure跟踪的工作负载。

关键结果:

  • 微基准测试: ServerlessLLM加速了检查点加载,速度比PyTorch/TensorFlow快3.6-8.2倍。它完全饱和了存储带宽,甚至对于最先进的NVMe RAID。
  • 调度: ServerlessLLM将分配延迟减少了4-12倍,相比随机调度,突出了局部性感知的好处。实时迁移防止了排队延迟。
  • 端到端服务: 对于大型模型,如OPT-30B,ServerlessLLM将99百分位延迟提高了28-200倍,相比KServe和Ray Serve等系统。它还提高了资源效率。

这些显著的增益表明ServerlessLLM能够克服现有无服务器实现中的瓶颈,并解锁LLM的力量,用于交互式服务。

ServerlessLLM中引入的优化,例如多层加载、实时迁移和延迟驱动的调度,可以帮助指导未来的无服务器架构的设计。该系统减少加载和启动时间的能力解除了大型语言模型在实际应用中可扩展部署的阻塞。

展望:正在进行的挑战

虽然ServerlessLLM代表了一个重大飞跃,但它仅代表了优化无服务器推理的巨型LLM的第一步。仍然存在几个开放问题,包括:

  • 预测实时模型需求,以指导预配和预加载
  • 智能地在服务器上放置检查点,以最大化缓存命中
  • 高效地扩展调度算法,以处理更大的集群
  • 确保模型和开发人员之间的资源分配公平性
  • 将实时迁移等创新推广到其他无服务器工作负载

解决这些问题可以帮助建立在无服务器LLM的承诺之上,并使其功能更加便捷。除了系统级优化外,减少大型模型的严重碳足迹和潜在危害仍然是一个紧迫的优先事项。

ServerlessLLM表明,下一代AI工作负载的无服务器架构中仍然有巨大的创新空间。随着LLM的规模和受欢迎程度的不断增长,像ServerlessLLM这样的解决方案将变得更加重要,它们可以解锁可扩展性。系统和机器学习研究的融合可以在安全和可持续地提供、共享和扩展AI模型方面引入新的范式。

我过去五年一直沉浸在令人着迷的机器学习和深度学习世界中。我的热情和专业知识使我能够为超过50个不同的软件工程项目做出贡献,特别注重人工智能/机器学习。我的持续好奇心也使我对自然语言处理产生了兴趣,这是一个我渴望进一步探索的领域。