夜雨聆风学习资料网

ARTICLE · 1109608

深入 vLLM 源码:多LoRA如何挂载?

深入 vLLM 源码:多LoRA如何挂载?

深入 vLLM 源码:多LoRA如何挂载?

客服、法务、代码各一个 LoRA,全塞进一份基座模型。显存省了,但上百个 LoRA 怎么调度,全压在 LoRAModelManager 身上。

启动时先把模型里的目标层换成带 LoRA 能力的包装层。接着建两级缓存:CPU 里放已加载的 LoRA,GPU 上划出固定槽位放能直接计算的。新 LoRA 进来就往空闲槽位搬;满了就按 LRU 规则淘汰最久未用的,高频的还能手动 pin 住不让换出。

同一个 batch 里不同请求用不同 LoRA,靠 Punica kernel 做 token 级路由。这里有个坑:更新映射时得同时比对新旧 mapping 和 slot 布局。只比 mapping,就会用过期的索引算,请求全被塞进错误的 LoRA。

多模态模型还得给视觉塔、连接器单独建 wrapper。MoE 模型更麻烦,2D、3D 权重格式、混合格式、共享 expert、专家并行全要兼容。分类任务则支持每个 LoRA 自带一整套分类头。

调参也有讲究。max-loras 设成一个 batch 内最多同时出现的 LoRA 数,太大会爆显存。max-cpu-loras 设成热点 LoRA 总数,少从磁盘读。rank 按实际最大值设,别盲目拉大。

原文深入 vLLM 源码:一个基座模型如何同时服务上百个 LoRA?——LoRAModelManager 全解析
上海,3分钟前,

相关学习资料