S-LoRA:服务数千并发 LoRA 适配器
机器学习
2024-06-06 v3 人工智能
分布式、并行与集群计算
摘要
“预训练而后微调”范式在大语言模型部署中被普遍采用。低秩适应(LoRA)作为一种参数高效微调方法,常用来将一个基模型适配到大量任务,从而产生源自同一基模型的大量 LoRA 适配器。我们观察到该范式在推理服务阶段存在批量推理的重要机会。为利用这些机会,我们提出 S-LoRA,一个为可扩展服务大量 LoRA 适配器而设计的系统。S-LoRA 将所有适配器存于主存,并将当前运行查询所用的适配器调入 GPU 显存。为高效利用 GPU 显存并减少碎片,S-LoRA 提出统一分页(Unified Paging)。统一分页使用统一内存池管理具有不同秩的动态适配器权重与具有不同序列长度的 KV 缓存张量。此外,S-LoRA 采用一种新颖的张量并行策略以及高度优化的自定义 CUDA 核以实现 LoRA 计算的异构批处理。这些特性共同使 S-LoRA 能以较小开销在单 GPU 或多 GPU 上服务数千 LoRA 适配器。与 HuggingFace PEFT 和 vLLM(朴素支持 LoRA 服务)等最先进库相比,S-LoRA 可将吞吐提升至多 4 倍,并将服务的适配器数量增加数个数量级。因此,S-LoRA 实现了许多任务特定微调模型的可扩展服务,并为大规模定制化微调服务提供了可能。代码见 https://github.com/S-LoRA/S-LoRA
引用
@article{arxiv.2311.03285,
title = {S-LoRA: Serving Thousands of Concurrent LoRA Adapters},
author = {Ying Sheng and Shiyi Cao and Dacheng Li and Coleman Hooper and Nicholas Lee and Shuo Yang and Christopher Chou and Banghua Zhu and Lianmin Zheng and Kurt Keutzer and Joseph E. Gonzalez and Ion Stoica},
journal= {arXiv preprint arXiv:2311.03285},
year = {2024}
}