https://arxiv.org/pdf/2311.03285.pdf
https://github.com/S-LoRA/S-LoRA/tree/main
这篇论文介绍了一个名为S-LoRA的系统,用于在单个GPU或多个GPU上高效地服务数千个并发的LoRA适配器。LoRA(Low-Rank Adaptation)是一种参数有效的微调方法,用于将预训练的大型语言模型(LLM)适应多种任务。通过使用LoRA,可以在保持与完全权重微调相当的性能的同时,显著减少训练和权重存储成本。
S-LoRA的核心观点包括:
- 利用批处理机会:由于所有查询共享基础模型,因此可以对基础模型进行批处理。同时,S-LoRA还需要解决如何在不同的LoRA适配器之间进行批处理。
- 高效的内存管理:S-LoRA将所有适配器存储在主内存中,并将当前运行查询所需的适配器获取到GPU内存中。为了减少内存碎片化并提高批处理效率,S-LoRA引入了统一分页(Unified Paging)策略,该策略使用统一的内存池来管理动态适配器权重和KV缓存张量。
- 多GPU并行策略:S-LoRA引入了一种新的张量并行策略,以实现在多个GPU上的高效并行化。
与现有的技术(如HuggingFace PEFT和vLLM)相比,S-LoRA可以提高吞吐量达4倍,并将服务的适配器数量提高数个数量级。这使得S-LoRA能够实现大规模定制微调服务,为大型语言模型的部署带来了新的可能性。