Posts Lora&&Multi-Lora
Post
Cancel

Lora&&Multi-Lora

Lora&&Multi-Lora

Paper

MULTILORA: DEMOCRATIZING LORA FOR BETTER MULTI-TASK LEARNING

S-LoRA: SERVING THOUSANDS OF CONCURRENT LORA ADAPTERS

Motivation

PEFT降低了大模型fine-tuning的硬件算力需求,比较常见如:LoRA;对于多任务PEFT的工作,之前的工作无法像LoRA一样和BaseModel参数做无缝集成。 Multi-LoRA在推理部署的问题的困境在于:

  1. 单个LoRA可以通过merge权重的方式,实现无开销的LoRA推理;但是对于Multi-LoRA而言,这种方式的效率是偏低的。
  2. Multi-LoRA的Adapter的数目可能很多,全量加载可能会导致显存占用过高,需要实现Host/Device侧内存的Load/OffLoad
  3. 对于2.的问题需要解决内存碎片和动态Load/OffLoad的延迟开销问题。

Key Points

核心流程如下:

多个lora独立,但是前向传播过程中共享所以训练数据的前向传播,但loss更新的时候会根据mask矩阵进行单个任务的LoRA权重更新。

img

推理部署而言,核心为了解决前文的Multi-LoRA的Adator的动态加载的问题,关键方案如下:

  1. Specified-CUDA-Kernels:定制了批处理GEMM内核来计算LoRA。

    img

  2. Memory-Allocator Design:Host内存存储了全量的Adater权重,实际推理过程中需要实时fetch对应的Adater权重到显存

    img

  3. Unified Paging:扩展了PagedAttention的内存管理方式,划分了LoRA权重专门的内存池以减少内存碎片,同时提前fetch权重来实现计算/权重加载并行

    img

  4. 张量并行:LoRA侧的并行策略如下:

    img

Statistics

S-LoRA策略下,单个GPU/多个GPU下可以部署数千个LoRA适配器,以下为Llama-7B/13B/30B/70B的部分结果:

img

This post is licensed under CC BY 4.0 by the author.

Prefill Decode分离部署

LLM长文本优化策略