# LLM 推理框架之上:10 中常见 LLM 推理系统总结

为什么大语言模型推理要分成 Prefill 和 Decode?深入理解这两个阶段的真正意义 Prefill 阶段是语言模型推理中的第一个步骤,它负责处理你输入的所有上下文内容(prompt),为后续生成打下基础。“请解释一下 Transformer 的原理。这句话会被 tokenizer 编码为一串 token,比如["请", "解释", "一下", "Trans", "##former", "的", "原理", "。"]。然后这些 token 会进入 Transformer 模型进行前向传播。重点来了 👇。 阅读详情

一、背景

当前常见的 LLM 推理框架通常是在单模型、同构硬件资源、均匀流量分布和有限序列长度等条件下优化其 Serving 能力。在这种情况下,各种分布式并行方案、量化压缩、算子优化、PagedAttention、Continuous Batching 等等技术可以充分发挥作用,提升服务吞吐量。然而,真实场景往往更加复杂,通常会包括以下几种情况:

  • 多种 LLM 模型:不同的大小的模型,比如,常见的 7B、13B、70B 甚至上百 B 模型;或者同等大小但应用于不同垂类场景的模型。
  • 异构硬件环境:不同的 GPU 类型,推理 GPU 可能包含 T4、L4、A30、4090 等,训练 GPU 可能包含 V100、A100、A800、H100、H800 等;网络拓扑也会不同,比如,训练 GPU 很可能机内会有 NVLink + NVSwitch 互联,机间会有 IB 网络高速互联;而推理 GPU 机内可能只能通过 PCIe,机间也只是低速网络。
  • 并行编排方案:推理中常用 Tensor Parallel 和 Pipeline Parallel 并行方案,TP 数量和 PP 数量对模型性能也有重要影响。
  • 复杂的流量分布:不同模型的 QPS 可能不同,且不均匀;不同 Query 的输入、输出 Token 数也很可能不同,比如,常见场景请求的序列长度通常在 8K 以内,而有些模型和场景支持百万 Token 的处理。
  • 不同的 SLO 要求:Online 服务和 Offline 服务对时延的要求差异显著,即使同类的 Online 服务也有不同要求。

为了获得整体最优的推理性能,通常需要构建一个庞大的推理系统,将上述条件视作约束条件,近似为一个复杂的整数线性规划(Integer Linear Programming,ILP)问题,其复杂度通常是指数级的。因此,当前出现了很多 LLM 推理系统,但这些系统都在某些方面进行了约束,实际上是求解一个简化的 ILP 问题。

本文我们将简单介绍几种常见的 LLM 推理系统,它们分别关注了不同的约束条件:

  • AlpaServe:针对多个 LLM 模型,同构 GPU 集群,并行编排方案,简化的流量分布进行优化。
  • 多 LoRA(Punica 和 S-LoRA):同构 GPU 集群,多个 LLM 模型,但是每个流量都较小,可以共享基座模型。
  • Splitwise:针对异构 GPU 集群(高算力和高带宽两种),单一 LLM 模型,Prefill 和 Decoding 分离计算进行优化。
  • Infinite-LLM:同构 GPU 集群,单一 LLM 模型,复杂流量分布,分布式 KV Cache 优化。
  • Mélange:异构 GPU 集群,不同模型采用不同方案,没有混合调度。复杂流量分布,不同 SLO 要求。(单一请求只使用同一种 GPU)
  • MuxServe:同构 GPU 集群,不同 LLM 模型混合调度。并行编排优化,采用 MPS 切分算力单元,处理复杂 QPS 流量。
  • Helix:复杂异构 GPU 集群,单一 LLM 模型,复杂并行编排方案。(单一请求可能使用不同 GPU)

二、AlpaServe

2.1 摘要

在 [2302.11665] AlpaServe: Statistical Multiplexing with Model Parallelism for Deep Learning Serving 中,作者证明了当为多个模型提供服务时,即使单个模型可以放置在单个设备上,模型并行性也可以额外用于多个设备的统计多路复用。文中作者也探索了模型并行性引入的开销与利用统计多路复用来减少存在突发工作负载时的服务延迟之间的权衡。作者探索了新的权衡空间,并提出了新的服务系统 AlpaServe,其确定了一种有效的策略,用于在分布式集群中排布和并行化大规模深度学习模型的集合。

评估结果表明,AlpaServe 能处理高达 10x 速率的请求或 6x 速率的突发性请求,同时超过 99% 的请求都可以保持时延约束。

2.2 方法

想要有效地利用模型并行性进行深度学习模型 Serving 存在几个关键挑战:

  • 确定高效的模型并行策略,减少模型并行的开销。具体来说,找到一种分布式排布策略,以最大程度地减少各种并行 Stage 的不均衡。
  • 根据请求分布模式确定模型排布位置,以最大限度地保证 SLO。

作者提出了 AlpaServe 专门来应对这些挑战。其架构图如下所示,AlpaServe 利用集中式 Controller 将请求分派给不同的 Group。每个 Group 在共享的 Model Parallel Runtime 上托管多个模型副本。

自动并行策略:由于不同的并行化配置具有不同的时延和吞吐量,作者为每个模型枚举了多个可能的配置,让排布算法为整个集群中的所有模型选择最佳组合。因此,作者在现有的自动并行化训练系统 Alpa([2201.12023] Alpa: Automating Inter- and Intra-Operator Parallelism for Distributed Deep Learning) 上构建了几个扩展,使其适合生成针对 Serving 的并行化策略。给定一个模型,AlpaServe 首先执行具有各种约束的并行化编译器,以生成可能的配置列表。

排布算法:给定一组模型和一个固定集群,AlpaServe 将集群划分为几组设备。每组设备选择要使用的共享模型配置的模型子集,不同组可以保持副本相同的模型,比如 Group 1 包含模型 a/b/c,Group 2 包含模型 a/d/e。针对每个模型的请求都会被调度到对应的组,比如针对模型 a 的请求会被调度到 Group 1 和 Group 2。作者将特定集群组分区、模型选择和并行配置称为排布(Placement)。目标是找到一个能最大限度提高 SLO 的排布,然而,这是一个困难的组合优化问题。整个优化空间会随着设备数量、型号种类的增加呈指数级增长。为此,作者设计了一个两级排布算法:给定一个集群 Group 分区和每个 Group 的共享模型并行配置,算法 1 使用模拟器引导的贪婪算法来决定为每个组选择哪些模型;然后,算法 2 枚举各种潜在的集群分区和并行配置,并比较算法 1 的 SLO 实现情况,以确定最佳排布。

图片

三、多 LoRA

3.1 Punica

在 [2310.18547] Punica: Multi-Tenant LoRA Serving 中,作者设计了一个多租户系统,该系统管理一个 GPU 集群,以使用共享的预训练基座模型为多个 LoRA 模型提供服务,最多获得了 12 倍的吞吐提升。

如下图 Figure 2 所示为 Punica 的系统架构,与其他模型服务相比:

  • Punica 具有前端服务(Frontends),可面向用户提供 RESTful API,并将用户的请求转发给 Punica 调度器(Scheduler)。用户的请求包含 LoRA 模型的标识符和提示(prompt)。
  • Scheduler 将请求分发给 GPU。
  • 每个 GPU 都会启动一个 Runner,该 Runner 与 Scheduler 通信并控制所有 GPU 的执行。
  • 当 GPU 生成新 Token 时,新 Token 会由 Runner 以 Streaming 方式传输给 Scheduler,再通过 Frontends 返回给用户。

图片

3.2 S-LoRA

在 [2311.03285] S-LoRA: Serving Thousands of Concurrent LoRA Adapters 中,作者发现,在传统的方案下,如果有多个 LoRA Adapter,就需要合并成多个模型副本,这也就丧失了不同请求间 batching 的机会(例如 query1 需要调用 lora1,query2 需要调用 lora2,query3 需要调用 lora3,那么,如果单独合并的话,query1,query2,query3 就要分别调用独立的模型 model1,model2 和 model3。然而,如果不合并的话,三个 query 在基座模型上的计算就可以 batching 处理)。最终可以支持上千个 LoRA 模型,获得 4 倍以上吞吐提升。

作者对于基座模型使用 batching 计算,然后使用自定义的 CUDA Kernel 为所有的 LoRA Adapter 执行额外的 xAB 计算,过程如下图 Figure 1 所示:

图片

3.3 Lorax

GitHub - predibase/lorax: Multi-LoRA inference server that scales to 1000s of fine-tuned LLMs 是一个基于 Huggingface TGI 推理框架和 Punica 的多租户 LoRA 系统,其支持动态的 LoRA 模型加载,以及针对 LoRA 的 Continuous Batching 策略,并集成了各种高性能 CUDA Kernel,比如 FlashAttention、PagedAttention 等。

四、SpotServe

4.1 摘要

在 [2311.15566] SpotServe: Serving Generative Large Language Models on Preemptible Instances 中作者基于不同云平台的廉价抢占式实例实现了快速、可靠的 LLM 推理服务。

  • 独占实例:用户可以独享物理服务器上的虚拟机资源,不会受到其他用户的影响,确保了高稳定性和高可用性。由于资源独享,因此相应价格会比较高。
  • 抢占式实例:通常是运营商在有闲置资源时提供,且在需要时可随时终止这些实例,释放资源给其他更高优先级的任务。由于利用的是闲置资源,价格通常比独占实例便宜很多,但是可靠性和稳定性相对也更低。
  • 宽限期:在抢占式实例被终止之前通常会有一个宽限期,提供一段时间让用户进行处理和调整,以避免立即终止对业务造成的影响。

SpotServe 中通过几个关键技术来保证其能提供可靠的 LLM 推理服务:

  • 首先,动态的调整 LLM 并行化配置,以适应波动的工作负载以及动态伸缩的实例,同时在整体吞吐量、推理延迟和推理成本之间取得平衡。
  • 其次,为了最大限度降低动态迁移实例的成本,将迁移实例的任务表述为二分图匹配问题,使用 KuhnMunkres 算法来确定最小化通信成本的最佳迁移方案。
  • 最后,利用云平台的宽限期,作者引入了推理状态恢复机制,以更细粒度(Token 级,而不是 Query 级)的方式管理推理进度,允许 SpotServe 在抢占时以低成本恢复推理任务。

作者在真实的抢占式实例场景中基于各种常见 LLM 评估了 SpotServe 的能力。结果表明,与现有的最佳 LLM 服务系统相比,SpotServe 可以将 P99 长尾时延降低 2.4x-9.1x。此外,还可以利用抢占式实例的价格优势,节约 54% 的成本。

4.2 方法

如下图 Figure 3 所示为 SpotServe 的架构概览。SpotServe 的 Inference Server(管理服务) 部署在独占 CPU 实例上,Inference Engine(执行 LLM 推理任务) 部署在抢占式 GPU 实例上。其中的关键组件包括:

  • Request Manager:负责接收用户请求,动态地将其分成 Batch,然后将这些 Batch 分配给 GPU 实例上运行的推理实例,并收集推理实例生成的输出,将结果发送回用户。
  • Instance Manager:负责与各种云平台进行交互,接收实例抢占和获取通知。
  • Meta-Context Manager:当系统的服务能力与工作负载不兼容或即将不兼容时,Meta-Context Manager 通过向所有 GPU 实例发送上下文迁移指令来管理并行配置的调整。新配置由 Parallelization Controller 生成,并由 Device Mapper 和 Migration Planner 来实现。
  • Context Daemon:每个推理实例都包含一个上下文守护进程,用于管理特定 GPU 内不同请求的模型参数(模型上下文)和中间激活(KV Cache)。Inference Engine 可以通过 Context Daemon 进程提供的 Proxy 来访问这些上下文信息。
  • Interruption Arranger:每个 Inference Engine 还会启动一个 Interruption Arranger 来支持有状态的推理恢复,以降低推理时延。

图片

如下图 Figure 4a 展示了 SpotServe 将分布式排布从 1DP 2PP 8MP 切换为 1DP 3PP 4MP 的过程;如下图 Figure 4b 展示了 SpotServe 依据每个 GPU Context Daemon 的当前状态(2DP 2PP 2MP)和目标分布式排布(2DP 3PP 1MP),然后将最优设备映射转换为二分图匹配任务,并使用 KM 算法找到最大权重匹配,从而最大限度地重用可用 GPU 实例上的模型参数和 KV 缓存,并最大限度地减少数据传输量:

图片

4.3 SkyPilot

在 SkyPilot: Run LLMs, AI, and Batch jobs on any cloud. Get maximum savings, highest GPU availability, and managed execution—all with a simple interface. 中也提供了类似的方案。SkyPilot 是一个用于在任何云上运行 LLM、AI 和批处理作业的框架,可最大限度地节省成本、实现最高的 GPU 可用性和可管理的执行。

如下图所示,可以使用 SkyPilot 提供的工具评估不同配置的性价比。根据结果可以选择成本最低(EST($)) 或执行时间最快 (EST(hr)) 的配置。在此示例中,AWS g5.xlarge(NVIDIA A10G GPU)在成本和时间方面都是最佳选择。

图片

4.4 TrueFoundry

TrueFoundry 也提供了多 GPU Pool 部署的方案,采用生产者-消费者模式,其 LLM Gateway 接收用户请求,并将请求放入 Queue 中,供部署于不同 GPU Pool 的 LLM 实例来消费。主要有几个好处:

  • 在 Gateway 可以更好地对流量分布进行统计和调度。
  • 可以统计不同云平台的报价,动态的调整实例伸缩,以降低整体成本。
  • 每个 LLM 实例也可以根据需求尽可能的以高负载运行,比如同时从 Queue 中获取 batch 的请求来处理。

图片

五、Spitwise

5.1 摘要

微软和华盛顿大学在 [2311.18677] Splitwise: Efficient generative LLM inference using phase splitting 中提出了 Splitwise,为 LLM 推理不同阶段选择不同的 GPU 类型。Prefill 阶段为计算密集型,可以选择高算力 GPU,而 Decoding 阶段为访存密集型,相应的可以使用算力不是特别强而访存带宽比较大的 GPU。同时为了两个阶段 KV Cache 的共享,需要在 GPU 间有高速的 IB 网络互联。

作者使用 Splitwise 技术构建了 LLM 推理集群,使用相同或不同类型的 GPU 机器来进行 Prefill 计算和 Decoding 计算。集群针对三个关键目标进行了优化:吞吐量、成本和功耗。实验表明,与传统设计相比,Splitwise 可以以低 20% 的成本实现 1.4× 的吞吐量。或者,可以在相同的成本和功耗预算下实现 2.35× 的吞吐量。

5.2 方法

如下图 Figure 10 所示为 Splitwise 的架构概览。Splitwise 会维护两个独立节点池:Prompt Pool 和 Token Pool,用于 Prefill 和 Decoding 的处理。第三个混合池(Mixed Pool)根据工作负载的情况来扩展 Prompt Pool 和 Token Pool。

  • 当新的推理请求到达时,调度进程会将其分配给一对节点(Prompt 和 Token)。Prompt 节点还会将 KV Cache 发送给 Token 节点。在 Token 节点上使用 Continuous Batching,以最大限度地提高其利用率。
  • 为了满足 SLO 并避免在较高负载下由于碎片而导致性能突降,Splitwise 维护了一个特殊的 Mixed Pool,该 Pool 根据输入和输出 Token 的请求速率和分布动态增长和收缩,没有任何的切换时延。Mixed Pool 中的节点仍然保留其作为 Prompt 节点或 Token 节点的标记,并在其挂起队列中没有相反类型的任务时返回其原始 Pool。

Splitwise 使用分层的两级调度,Cluster 级调度(CLS)进程 1 负责将输入请求路由到特定节点并重新调整节点的用户。Machine 级调度(MLS)进程 2 维护挂起的队列并管理每个节点上的批量请求。

在较低的请求速率下,目标是在 Splitwise 中实现更好的延迟,而在更高的请求速率下,目标是避免由于 Prompt 节点和 Token 节点池之间的碎片而导致的任何性能或吞吐量降低。

图片

六、Infinite-LLM

6.1 摘要

LLM 基本都是 Decoder Only 的 Transformer 结构,其 Decoding 阶段是逐个 Token 生成,如果不采用 KV Cache 将导致巨大的重复计算,而采用 KV Cache 又会给显存占用带来比较大的挑战,尤其当序列比较长时。

[2401.02669] Infinite-LLM: Efficient LLM Service for Long Context with DistAttention and Distributed KVCache 中,作者提出了 DistAttention,这是一种分布式注意力算法,可将 KV Cache 分割为更小的、可管理的单元,从而实现注意力模块的分布式处理和存储。基于此,作者也提出了 DistKV-LLM,它是一个分布式 LLM Serving 系统,可以动态管理 KV Cache,并有效地协调整个数据中心中所有可以访问的 GPU 显存和 CPU 内存,确保其可以适应各种上下文长度,提供高性能的 LLM 服务。

作者在 4 台 8 卡 A100 GPU 机器(共 32 A100 GPU)上进行了验证,配置从 2 到 32 个实例,使用 18 个数据集进行测试,提出的系统获得 1.03x-2.4x 的端到端吞吐提升,支持的上下文长度比当前最先进的 LLM 推理框架长 2-19 倍,支持的上下文长度高达 1900K。

6.2 DistAttention

DistAttention 中,作者将传统的注意力计算分解为更小、更易于管理的单元,称为 Micro Attention(MA),每一个 MA 对应一个 KV Cache 的子序列的 Token。这种方法的独特之处在于它能够通过单独形成 MA 来计算注意力结果,在所有 MA 完成各自 Token 子块计算后,通过聚合过程获得最终的注意力结果,这涉及到对每个 MA 的输出进行 Scaling 和 Reducing。聚合的公式如下所示:

图片

其中 Reduce 和 Scale 操作如下所示:

图片

6.3 DistKV-LLM

为了应用提出的 DistAttention,作者将其与分布式 LLM Serving 引擎相结合。DistKV-LLM 旨在提供高效的 KV Cache 管理服务,协调整个数据中心的 GPU 和 CPU 之间的内存使用。当 LLM 服务实例由于 KV 缓存增加而遇到内存不足时,DistKV-LLM 会主动识别并借用其他容量过剩的设备中的可用内存空间,如下图 Figure 2 所示,这种自动化机制是通过两个主要组件(rManger 和 gManager)的协作操作来实现的:

  • gManager 充当中心化管理器,维护所有实例的全局内存信息,如下图左图所示。每个实例定期向 gManager 发送心跳信号,发送有关其剩余可用内存空间的更新信息。gManager 利用这些信息构建了一个详细的表,称作 Global Debt Ledger。

  • rManger 提供统一的 API 接口,用于本地和远程内存操作,如下图右上所示。这些操作包括:

    • 为新生成的 KV Cache 分配 Physical rBlock,并在不再需要时释放。
    • 在收到 local 或 remote 的内存分配请求时,rManager 会查询 rBlock 表,以确定第一个可用的 Physical rBlock 空间。
    • 在没有足够的空间时,rManager 会启动从其他实例空间借用过程,如下图右下所示。此时,如果分配请求来自 remote 实例,则 rManager 会返回错误响应,表示 remote 分配不可用,避免陷入死循环。
    • 可以为分配给 remote 实例的 rBlock 数量设置上限,避免抢占 local 分配的空间。当然,该配置需要通过实验确定,并配置为超参。

图片

七、Mélange

7.1 摘要

在 [2404.14527] Mélange: Cost Efficient Large Language Model Serving by Exploiting GPU Heterogeneity 中,作者首先通过大量分析证明了 GPU 的成本和性能并不是严格的线性关系,提出了为不同的流量采用不同的 GPU 进行推理可以有效降低 LLM 推理的成本。由于影响 LLM 推理性能的因素很多,因此作者将问题缩小到 3 个关键因素:模型请求大小、请求速率和 SLO。然后提出了 Mélange,可以为 LLM 服务构建最具性价比的 GPU 集合。通过 Mélange ,可以将 LLM 部署成本降低多达 77%,这凸显了为 LLM 服务提供异构感知 GPU 配置的重要性。

7.2 请求大小与成本

如下图 Figure 2 所示,作者在 A10 和 A100 上评估 LLaMA2-7B 模型的性能,来评估请求大小和成本的关系,需要说明的是,在每种测试中作者都尽可能地打满 GPU,也就是尽可能增加 Batch Size。

  • 左图:每种情况下都把 A10 的 T/$ 作为参照归一化为 1,可以看出:

    • 在 [输入,输出] 为 [25, 25] 时,A10 的性价比是 A100 的 2.6 倍(1/0.38)
    • 在 [输入,输出] 为 [250, 250] 时,A10 的性价比和 A100 相当
    • 在 [输入,输出] 为 [2000, 2000] 时,A100 的性价比是 A10 的 1.5 倍(1.5/1)
  • 右图:不同输入和输出组合情况下的性价比,基本可以以红线的对角线为分界线,也就是说,对于比较大的输入、输出,A100 具有更高的性价比,对于比较小的输入输出,A10 具有更高的性价比。

图片

如下图 Figure 8 所示,作者进一步在更多的序列组合和更多的 GPU 下测试了相应的性价比。其中左图为性价比最高的 GPU 相比第二高的 GPU 的比例,右图为性价比最高的 GPU 相比性价比最低的 GPU 的比例。此外,黑框中为 H100 和 A100 的比例,因为只有这两个 GPU 能支持 12K 和 16K 的序列长度。从图中可以得出和之前类似的结论。

图片

主要结论:成本与请求大小密切相关,低端 GPU 更适合处理比较小的请求,高端 GPU 比较适合大的请求。

7.3 SLO 与成本

作者进一步评估了 SLO 与成本的关系,具体来说,Batch Size 越大,吞吐越高,但相应的时延也就越大。作者评估时会保证在满足 SLO(TPOT)的同时尽可能充分利用 GPU,也就是 Batch Size 尽可能大。如下图 Figure 5 所示,可以看出,A10 只在序列比较短,同时对 SLO 要求不高时比较有性价比:

图片

八、MuxServe

8.1 摘要

在 [2404.02015] MuxServe: Flexible Multiplexing for Efficient Multiple LLM Serving 中,作者提出 MuxServe,这是一种灵活的时空复用系统,用于高效为多个不同模型规模、不同流量分布的 LLM 提供 Serving 能力。

关键想法是充分考虑其多路复用内存资源,并利用 Prefill 和 Decoding 阶段的特性将它们分离并灵活地放置到多路复用计算资源中。MuxServe 正式提出了多路复用问题,并提出一种排布(Placement)算法和自适应 Batching 调度策略,以确定最佳排布并最大程度地提高利用率。MuxServe 设计了一个统一的资源管理器,以实现灵活高效的多路复用。

评估结果表明,MuxServe 可以实现高达 1.8x 的吞吐量,或在达成 99% 的 SLO 目标下处理 2.9x 的请求。

8.2 方法

如下图 Figure 2 所示为多个 LLM 在 20 天的流量分布,可见流量很不均匀,并且会出现突发的流量增加和降低:

图片

如下图 Figure 1 所示为 MuxServe 与相同方案的对比,其中两种颜色代表两个模型,矩形的高度代表利用率,宽度代表 Latency(PS:如果两个模型的流量都足够大,并且比较均匀,可以充分的 Continuous Batching 是不是就不存在下述的问题?):

  • (a):最简单的空间切分方案,一个 GPU 部署一个模型,当流量比较小,不够均匀时会存在巨大的算力浪费。
  • (b):AlpaServe 中模型切分复用 GPU 的方案,两个模型共享两个 GPU,可以将两个模型的工作负载放在两个 GPU 上,因此可以避免低流量模型导致的空闲。
  • (c):本文 MuxServe 的方案,在 A 模型的 Decoding 阶段也会同时执行 B 模型。

图片

如下图 Figure 4 所示为相应的 GPU 资源管理方案:

  • Memory Space 分为 3 个区域:模型权重、统一的 KV Cache 以及激活。其 KV Cache 以每个模型一个 Layer 的一个 Attention Head 为单位。
  • Parallel Runtime 负责管理 GPU SM 计算单元,比如 Step 1 中模型 A 使用所有 SM,Step 2 中模型 A 使用 60% SM,模型 B 使用 40% SM。Parallel Runtime 切分计算单元 SM 是通过 CUDA 的 MPS(Multi-Process Service)来实现的。

图片

九、Helix

9.1 摘要

[2406.01566] Helix: Distributed Serving of Large Language Models via Max-Flow on Heterogeneous GPUs 是一个用于在异构 GPU 集群上提供高吞吐、低延迟 LLM 推理服务的分布式系统。Helix 的关键思想是将异构 GPU 和异构网络连接的 LLM 推理计算表示为一个有向加权图的最大流量问题,其节点代表 GPU 实例,边捕获通过异构 GPU 和网络的流量。然后,Helix 使用混合整数线性规划(Mixed Integer Linear Programming,MILP)算法来发现高度优化的策略,以支撑 LLM 服务。这种方法允许 Helix 共同优化模型排布和请求调度,这是异构 LLM 服务中两个高度关联的任务。

作者对 24 到 42 个 GPU 节点的几种异构集群进行评估,结果表明,与现有最佳方法相比,Helix 将服务吞吐量提高了 2.7x,并将 Prefill 和 Decoding 延迟分别降低了 2.8x 和 1.3x。

9.2 示例

如下图 Figure 1 所示,作者提供了一个异构 GPU 和异构网络的示例:

  • (a)中为两个 Region 的 5 个 GPU,Region 1 为高性能的 A100,Region 2 为 4 个较低性能的 L4 和 T4。Region 2 之间可以高速通信,而 Region 1 和 Region 2 之间带宽比较低。
  • (b):如果使用简单的 TP + PP 方式调度,A100 执行 Layer 1,2 个 T4 执行 Layer 2,1 T4 + 1 L4 执行 Layer 3,则 A100 和 L4 会存在算力浪费。因为 A100 算力大于 2 个 T4,而 L4 算力大于 T4.
  • (c):Region 1 的 A100 执行 Layer 1,Region 2 的 T4 和 L4 共同执行 Layer 2 和 Layer 3,此时 Region 1 和 Region 2 的低带宽可能成为瓶颈。
  • (d):更优的方案:A100 和 2 个 T4 共同执行 Layer 1 和 Layer 2,一个 L4 和 1 个 T4 共同执行 Layer 3。(PS:此时如果 A100 和两个 T4 使用 TP,则需要大规模通信,依然会有瓶颈,但是可以让 A100 和两个 T4 执行不同的 Micro Batch,则它们不用通信,也同时可以降低 Region 1 和 Region 2 之间的通信量)

图片

9.3 方法

为了实现上述最优的调度机制,作者提出了 Helix,其方案如下图 Figure 3 所示:

  • 当 Coordinator(集群中分为 Coordinate 节点和计算节点) 收到一个请求后,会调用 Request Scheduler 为该请求分配一个 per-request pipeline。
  • 然后 Coordinator 会将请求发送到 Pipeline 的第一个计算节点。
  • 当第一个计算节点收到请求后,它使用该 Pipeline 中对应的 Layer 对请求进行处理。
  • 然后将请求发送给下一个计算节点。
  • 直到请求结束。

图片

9.4 对比

如下图 Figure 10 所示,作者基于 LLaMA 70B 模型对比了在单集群和分布式集群中进行推理时不同方案的性能。其中,Swarm(SWARM Parallelism: Training Large Models Can Be Surprisingly Communication-Efficient) 将模型层划分为等长的 Stage,并为每个 Stage 分配节点,使得每个 Stage 具有相等的计算量。而 Petals([2209.01188] Petals: Collaborative Inference and Fine-tuning of Large Models) 则允许节点承载不同数量的 Layer,旨在实现去中心化的 LLM 服务,因此逐个节点地决定模型排布,并贪心地选择涵盖计算量最少 Layer 的放置策略。从图中可以看出,Helix 的相对吞吐量分别为 Petals 和 Swarm 的 1.34x 和 2.49x。

图片

十、附录

10.1 长上下文部署挑战

在 [2405.08944] Challenges in Deploying Long-Context Transformers: A Theoretical Peak Performance Analysis 中符尧大佬也分析了部署长上下文(100k-10M Token)模型场景下的挑战,其目标是将 1M 上下文的服务成本降低到 4K 一样便宜,为此将任务分解为 4 个关键指标:并发、Prefill、Decoding 和上下文切换。作者也进一步讨论了常见因素如何影响这 4 个指标,以及现有工作如何关注不同的指标。

如下图所示为一个并发编程框架,用于在有限的 GPU HBM 大小下处理多个长上下文的用户请求。上述 4 个指标共同决定了用户交互会话的整体吞吐。与短上下文相比,并发和上下文切换的挑战要严重的多:

  1. 长序列 KV Cache 很大,并发受 HBM 大小限制。
  2. Prefill 是 Compute Bound,第一个 Token 时间,也就是 Prefill 时间受 GPU 算力限制。
  3. Decoding 是 Memory Bound,每个 Token 时间受 HBM 带宽限制。
  4. 上下文切换(从 HBM offload 到 CPU 内存)受 PCIe 限制,用户 1 的 KV Cache offload 到 CPU 内存,用户 2 的 KV Cache 重新加载到 HBM。

图片

​

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

10分钟部署高性能LLM推理服务:Mooncake框架实战指南 大语言模型(LLM)推理部署是AI工程化的关键环节,其核心在于将训练好的模型高效、稳定地转化为可用的API服务。传统部署方式常面临环境配置复杂、推理速度慢、资源管理困难等挑战。通过集成vLLM等高性能推理引擎,并采用动态批处理、显存优化等技术,可以显著提升吞吐量和降低延迟,这对于构建实时对话、内容生成等应用至关重要。Mooncake框架正是基于这一理念,封装了模型加载、服务化、性能优化等复杂步骤,提供了一个开箱即用的解决方案。它深度集成Hugging Face生态,支持多模型管理和生产级监控,让开发者能快速 阅读详情

相关推荐

【大模型实战】大模型推理加速框架 vllm 部署的方案

在大语言模型(LLM)落地应用中,推理效率是决定系统性能的关键因素。vllm 作为一款专为 LLM 设计的高性能推理框架,通过 PagedAttention、动态批处理等技术,实现了显存利用率和吞吐量的显著提升。本文结合实际工程经验,详细解析 vllm 的核心技术原理、部署流程及优化策略,提供从环境搭建到生产级服务的全链路实战方案,帮助开发者快速构建高效的大模型推理系统。随着 Llama-2、ChatGLM-3 等大模型的广泛应用,推理阶段面临三大核心挑战:vllm(vLLM: Easy, Fast, an

shuizhudan223的博客 2944

LLM 推理框架之上:10 中常见 LLM 推理系统总结

在 [2302.11665] AlpaServe: Statistical Multiplexing with Model Parallelism for Deep Learning Serving 中,作者证明了当为多个模型提供服务时,即使单个模型可以放置在单个设备上,模型并行性也可以额外用于多个设备的统计多路复用。文中作者也探索了模型并行性引入的开销与利用统计多路复用来减少存在突发工作负载时的服务延迟之间的权衡。

python122_的博客 2170

基础篇| 全网最全详解12个大模型推理框架

开始介绍之前, 我们先了解一下什么是框架?xx框架-IT人经常听到的名词。但是又有多少人知道框架的意思?框架(framework)是一个框子:指其约束性,也是一个架子——指其支撑性。是一个基本概念上的结构,用于去解决或者处理复杂的问题。在IT软件领域,软件框架(software framework)的标准定义:通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。

youbingchen的博客 4831

LLMの推理过程

将 logits 传递给 logits_processor 和 logits_warper,在这两个方法中进行一些预处理过程,例如添加惩罚项或对概率分布进行修改,使得生成的结果更符合期望,具体调用了(这里用到了temperature参数,作用是调节模型生成的随机性,temperature通常被用于控制softmax函数的形状,从而影响生成序列的多样性,当temperature值接近0时,模型趋向于输出最可能的单个结果,也就是模型的输出趋向于确定性。该策略用于限制模型在每个生成步骤中所考虑的可能输出的范围。

whaosoft143ai的博客 2553

模型推理部署框架选择

开放神经网络交换 ONNX(Open Neural Network Exchange)是一套表示深度神经网络模型的开放格式,由微软和 Facebook 于 2017 推出,然后迅速得到了各大厂商和框架的支持。通过短短几年的发展,已经成为表示深度学习模型的实际标准,并且通过 ONNX-ML,可以支持传统非神经网络机器学习模型,大有一统整个 AI 模型交换标准。功能定位:ONNX是一个模型表示格式,用于模型的互操作性和转换;而ONNX Runtime是一个高性能推理引擎,用于模型的优化和运行。应用场景。

浩瀚之水的专栏 3468

【STM32篇】DRV8425驱动步进电机

【STM32篇】在上篇文章中使用了HR4988实现了步进电机的驱动,在实际运用过程,4988驱动步进电机会存在电机噪音太大的现象。本次将向各位友友介绍一个驱动简单且非常静音的一款步进电机驱动IC。

we_long的博客 3068

【技术干货】 vLLM架构详解:打造高吞吐量LLM推理系统!

本文详细介绍了vLLM高性能推理框架,包括其核心架构、工作原理和高级功能。文章探讨了vLLM如何通过创新的显存管理、并行调度和KV缓存技术实现高吞吐量推理,并介绍了分页注意力、连续批处理、前缀缓存、推测解码等关键技术。同时,还讨论了vLLM从单GPU到多节点的扩展能力和性能优化方法。这是一篇理解LLM推理引擎工作原理的深入解读,适合程序员学习参考。

2401_84208172的博客 2266

WRF后处理:python cartopy绘制土地利用/土地分类图//python绘制WRF下垫面类型(以北极为例)

下垫面类型对于WRF的地表过程十分重要,而在我们研究WRF的地表过程之前,需要对输入的土地利用类型进行一些绘制,以便后续的修改。LU_MODIS21函数定义了绘制的土地类型、标签与对应色标,我们使用时,直接引用LU_MODIS21()即可返回。其实很简单,只要将你拥有的土地类型数据提取出来,将原本函数中的labels和C切片,重新定义色标再绘制即可。在这里,我将以北极地区为例,绘制北极地区的WRF下垫面数据,我使用的MODIS21这类。

weixin_43750300的博客 3859

【万字长文】深入剖析vLLM:构建高吞吐量LLM推理系统的核心技术解析!

文章深入解析了vLLM高吞吐量LLM推理系统的核心架构与工作原理,包括LLM引擎基础、调度机制、分页注意力、连续批处理等组件,以及分块预填充、前缀缓存、推测式解码等高级特性。文章还探讨了从单GPU到多GPU的分布式扩展、服务层实现以及性能基准测试方法,为开发者理解前沿LLM引擎提供了系统性指导。

m0_74942241的博客 1478

Wordpress实战之第二章安装wordpress 软件需要的软件

使用下载并安装phpstudy面版工具 wget -O install.sh?https://notdocker.xp.cn/install.sh?&& sudo bash install.sh 2.安装成功如下 ==============运行状态========================= webpanel stop phpstudy running =================...

安全参透之旅 612

UG NX与PLC-1500的在环虚拟测试

TIA、PLCSIM、NetToPLCsim、KEPServerEX以及UG NX的在环虚拟测试

lvtlvtlvtlvt的博客 4220

构建本地AI推理系统:MLX框架的实战应用解析

Apple MLX Engine作为专为M系列芯片优化的本地化AI推理框架,通过硬件原生加速技术实现了大型语言模型与视觉模型的高效运行。本文将从技术架构、应用场景和性能优化三个维度,深入解析如何在macOS环境下构建完整的本地AI推理能力,帮助开发者充分发挥硬件潜力,实现低延迟、高性价比的AI部署方案。 ## 核心理念剖析:硬件原生的AI推理架构 MLX Engine的设计哲学建立在Apple

gitblog_00405的博客 1024

为什么我把「大模型Clouder认证:基于百炼平台构建智能体应用」作为大模型学习的第一站?从 0 到拿证全流程经验分享

【摘要】作为一个刚拿下「大模型 Clouder 认证:基于百炼平台构建智能体应用」的过来人,想在开头就和大家聊聊这个认证的特殊意义 —— 在企业加速 AI 落地的今天,能用低代码快速构建智能体应用,已经成为 AI 从业者的核心竞争力。无论是企业微信客服提效、钉钉机器人自动化办公,还是网站智能助手升级,这些场景化能力正是当下数字化转型的刚需。

davidkorhenn的博客 1527

Mooncake快速上手指南:10分钟搭建高性能LLM推理系统

想要在10分钟内搭建一个高性能的LLM推理系统吗?Mooncake正是你需要的解决方案!🎯 这个开源项目通过分布式KV缓存技术和高速传输引擎,让大语言模型推理变得简单高效。无论你是AI开发者还是系统工程师,这份终极指南都将帮助你快速上手。 ## 🚀 为什么选择Mooncake? Mooncake是一个专为LLM推理优化的分布式缓存系统,核心优势包括: - **高性能KV缓存**:支持跨节

gitblog_00097的博客 607

liquibase扩展支持达梦数据库

近期项目中需要支持国产数据库,需要liquibase底层支持达梦数据库,记录下操作的详细步骤以便分享。 1.liquibase支持的数据库很多如MySQL, PostgreSQL, Oracle, Sql Server, DB2。但是达梦数据库并不支持,所以需要新建DMDatabase类来适配达梦数据库。达梦语法和Oracle很像所以只需要复制liquibase-core下的Oracle Database做些修改就可了。以下为需要修改的地方 public class DMDatabase extends A

qq_43677719的博客 5472

26、多级快速多极子算法(MLFMA)在大规模电磁问题中的应用

本文探讨了多级快速多极子算法(MLFMA)在大规模电磁问题中的高效应用。通过分层分区策略,MLFMA在分布式内存架构上实现了高效并行化,能够求解包含数亿未知数的复杂电磁问题。文章分析了介质球体、半球透镜、周期性结构和损耗介质阵列等典型案例,验证了MLFMA的高精度与广泛适用性。同时,MLFMA被应用于实际场景如隐身目标Flamme的外部共振分析和含分裂环谐振器的超材料设计,展示了其在航空航天、超材料和生物医学等领域的广阔前景。未来发展方向包括算法优化、多物理场耦合和实时计算,进一步拓展其应用潜力。

t8u9v0w1x的博客 117

神经符号AI实战:用LLM+Prolog构建可解释推理系统

神经符号AI是一种融合深度学习与形式逻辑的混合智能范式,其核心在于弥补大模型概率性输出与确定性推理之间的鸿沟。它基于符号系统的可验证性、可追溯性原理,将知识表达为可执行规则,使AI决策过程具备数学证明般的严谨性。该技术显著提升模型在合规敏感场景(如医疗诊断、金融风控)中的可信度与审计能力,同时支持家庭关系推理、工业质检归因等需强逻辑闭环的应用。本文聚焦LLM与Prolog协同架构,提供零基础可上手的工程落地路径。

love android 429

基于AOD-Net与GAN的深度学习去雾算法开发

本文提出一种结合AOD-Net与GAN的深度学习去雾算法。通过改进的AOD-GAN网络架构,集成风格迁移模块,设计包含对抗损失、内容损失和风格损失的复合目标函数。实验表明,该方法在PSNR(24.67)、SSIM(0.92)和FID(32.15)指标上优于传统方法,实现了端到端的物理模型引导图像去雾。未来将优化多尺度特征融合和轻量化部署。

huanghm88的专栏 594

LightCompress与VLLM集成教程:打造高效低延迟LLM推理系统

LightCompress是一款强大的大模型压缩工具包,支持LLMs、VLMs和视频生成模型的压缩。通过与VLLM后端集成,能够实现高效低延迟的LLM推理,为用户提供快速且准确的模型服务体验。 ## 为什么选择LightCompress与VLLM集成? LightCompress提供了多种先进的量化算法,如AWQ、GPTQ、RTN等,能够在保持模型精度的同时大幅减少模型体积。而VLLM作为高效

gitblog_00173的博客 908

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Miles多智能体训练指南:构建协作式LLM推理系统的实用教程

Miles是面向企业的LLM和VLM后训练强化学习框架,基于slime开发并与之共同演进。本指南将带您快速掌握如何使用Miles构建协作式多智能体推理系统,通过多个智能体的协同工作提升复杂任务的解决能力。 ## 多智能体系统核心优势 多智能体训练是Miles框架的高级特性,通过模拟人类团队协作模式,让多个AI智能体分工合作解决复杂问题。这种方法相比传统单智能体系统具有显著优势: - **集体

gitblog_00564的博客 962

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Glyph实时推理系统:低延迟部署优化案例

本文介绍了如何在星图GPU平台上自动化部署Glyph-视觉推理镜像,以构建低延迟的长文档处理系统。该方案通过将长文本渲染为图像,利用视觉语言模型进行理解,绕过了传统文本模型的长度限制。一个典型的应用场景是快速上传并解析数十页的PDF文档,实现实时问答与信息提取,显著提升处理效率。

QuartzStag78的博客 1011

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

构建神经符号推理系统:用形式逻辑为LLM推理加装“安全护栏”

大语言模型(LLM)在理解和生成自然语言方面展现出强大能力,但其推理过程常被视为“黑箱”,难以保证逻辑的严谨性。形式逻辑作为计算机科学和数学的基础,通过符号化和严格的推理规则,能够对命题进行精确验证。将LLM的神经能力与形式逻辑的符号推理相结合,可以构建出兼具灵活性与可靠性的神经符号系统。这种融合的技术价值在于,它能将LLM对复杂、模糊问题的“直觉”理解,转化为可被严格验证的逻辑形式,从而确保结论的可靠性,尤其适用于代码生成、法律分析、教育辅助等对逻辑正确性要求高的严肃推理场景。本文探讨的神经符号推理系统,

weixin_34274029的博客 380

FlexServe:安全高效的边缘LLM推理系统架构解析

在边缘计算和移动设备场景中,大型语言模型(LLM)的安全高效部署面临内存隔离与计算加速的双重挑战。传统TrustZone方案因固定内存分配(CMA)导致性能瓶颈,而现代虚拟化技术通过S2PT页表管理和SMMU硬件隔离,能实现动态内存保护与NPU加速器共享。FlexServe创新性地结合ARM TrustZone安全执行环境与硬件虚拟化技术,构建包含Flex-Monitor和FlexServe Framework的双层架构,支持Llama3、Qwen等主流LLM的INT8量化推理。该系统通过GEMM优化、La

weixin_30628801的博客 395

SGLang推理框架部署教程:Python调用避坑完整指南

本文介绍了基于星图GPU平台自动化部署SGLang-v0.5.6镜像的完整流程,涵盖服务启动、Python调用及避坑指南。该镜像支持高性能LLM推理,适用于模型微调与AI应用开发,结合RadixAttention与结构化输出功能,可显著提升大模型服务的稳定性和效率。

weixin_33068055的博客 1177

TensorRT-LLM企业实践:Netflix的推理优化案例

当Netflix的推荐系统每天需要处理超过10亿小时的观看数据,为2.3亿全球用户生成个性化内容推荐时,其背后的大型语言模型(LLM)推理架构面临着双重挑战:如何在保证毫秒级响应延迟的同时,将GPU资源利用率提升40%以上?2024年,Netflix AI基础设施团队通过采用TensorRT-LLM(TensorRT Large Language Model)工具包,构建了一套高吞吐量、低延迟的推...

gitblog_00344的博客 907

革命性AI集群工具Distributed-LLama:用张量并行在家搭建高性能LLM推理系统

想要在家用设备上运行大型语言模型但受限于单机性能?Distributed-LLama 让你通过张量并行技术将多台设备连接成强大的AI推理集群,实现线性加速!🚀 Distributed-LLama 是一个开源的分布式LLM推理框架,它通过张量并行技术将多台家用设备(如树莓派、旧笔记本电脑、迷你PC)连接成一个高性能的AI推理集群。无论你是AI爱好者、开发者还是研究者,都能利用现有设备资源,大幅提

gitblog_00755的博客 789
上一篇: AI 大模型训练中,通常会采用哪些方法?(输入篇)
下一篇: 资深程序员撰文:LLM将从根本上改变软件工程(上)
普通网友
博客等级 码龄3年 4493粉丝 309原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值