LoRA动态适配
LoRA Dynamic Adapter
运行时动态加载和切换多个LoRA适配器,实现单基座模型多任务服务
子问题
1.适配器LRU缓存管理
2.批量LoRA高效推理
3.适配器来源解析
4.显存预算控制
5.先加载后驱逐的缓存安全策略
6.Pin 机制防止高频适配器被 LRU 驱逐
7.多模态模型的 per-prefix Punica wrapper 分离
8.多格式权重加载与 PEFT 配置验证
各项目的解法1 solutions
Signals
横向对比
| 维度 | vLLM |
|---|---|
| 缓存架构 | 双层 LRU:CPU 注册缓存 + GPU 活跃缓存,各自独立容量控制 |
| 驱逐策略 | 先加载后驱逐 + Pin 防驱逐,LRU 淘汰非 pinned 最旧项 |
| 计算引擎 | Punica 批量 GEMM,per-token LoRA 索引映射,sgmv/bgmv 双路径 |
| 适配器来源 | 插件式 LoRAResolverRegistry,支持文件系统和 HF Hub 双解析器 |
| 权重格式 | safetensors/bin/pt/Tensorizer 四格式优先级链 + PEFT 配置验证 |
| 槽位管理 | 固定大小 lora_index_to_id 数组,预分配 GPU 权重缓冲区避免碎片 |
| 多模态支持 | per-prefix PunicaWrapper 映射,language/tower/connector 各自独立 wrapper |
最佳实践
1.使用LRU缓存管理活跃适配器数量
2.通过Punica实现批量LoRA融合推理
3.固定大小 GPU 槽位数组避免显存碎片化
4.先验证适配器有效性再驱逐旧缓存项
5.双层 pin 同时锁定 CPU 和 GPU 缓存