S-LoRA:一个GPU运行数千大模型成为可能( 二 )


S-LoRA:一个GPU运行数千大模型成为可能

文章插图
内存管理
与为单个 base 模型提供服务相比,同时为多个 LoRA 适配卡提供服务会带来新的内存管理挑战 。为了支持多个适配器 , S-LoRA 将它们存储在主内存中,并将当前运行批所需的适配器权重动态加载到 GPU RAM 中 。
在这个过程中,有两个明显的挑战 。首先是内存碎片 , 这是由于动态加载和卸载不同大小的适配器权重造成的 。其次是适配器加载和卸载带来的延迟开销 。为了有效解决这些难题,研究者提出了 「Unfied Paging」,并通过预取适配器权重将 I/O 与计算重叠 。
Unified Paging
研究者将 PagedAttention 的想法扩展为统一分页(Unified Paging),后者除了管理 KV 缓存外,还管理适配器权重 。统一分页使用统一内存池来联合管理 KV 缓存和适配器权重 。为了实现这一点,他们首先为内存池静态分配一个大缓冲区 , 除了 base 模型权重和临时激活张量占用的空间外,该缓冲区使用所有可用空间 。KV 缓存和适配器权重都以分页方式存储在内存池中,每页对应一个 H 向量 。因此 , 序列长度为 S 的 KV 缓存张量占用 S 页,而 R 级的 LoRA 权重张量占用 R 页 。图 3 展示了内存池布局,其中 KV 缓存和适配器权重以交错和非连续方式存储 。这种方法大大减少了碎片 , 确保不同等级的适配器权重能以结构化和系统化的方式与动态 KV 缓存共存 。
S-LoRA:一个GPU运行数千大模型成为可能

文章插图
张量并行
此外,研究者为批量 LoRA 推断设计了新颖的张量并行策略,以支持大型 Transformer 模型的多 GPU 推断 。张量并行是应用最广泛的并行方法,因为它的单程序多数据模式简化了其实施和与现有系统的集成 。张量并行可以减少为大模型提供服务时每个 GPU 的内存使用量和延迟 。在本文设置中,额外的 LoRA 适配器引入了新的权重矩阵和矩阵乘法,这就需要为这些新增项目制定新的分区策略 。
S-LoRA:一个GPU运行数千大模型成为可能

文章插图
评估
最后,研究者通过为 Llama-7B/13B/30B/70B 提供服务来评估 S-LoRA 。
S-LoRA:一个GPU运行数千大模型成为可能

文章插图
结果表明,S-LoRA 可以在单个 GPU 或多个 GPU 上为数千个 LoRA 适配器提供服务,而且开销很小 。与最先进的参数高效微调库 Huggingface PEFT 相比,S-LoRA 的吞吐量最多可提高 30 倍 。与使用支持 LoRA 服务的高吞吐量服务系统 vLLM 相比,S-LoRA 可将吞吐量提高 4 倍 , 并将服务适配器的数量增加几个数量级 。

【S-LoRA:一个GPU运行数千大模型成为可能】


推荐阅读