LoRA 解析器插件¶
此目录包含基于 LoRAResolver 框架构建的 vLLM LoRA 解析器插件。它们可以自动发现并加载来自指定本地存储路径的 LoRA 适配器,无需手动配置或重启服务器。
概述¶
LoRA 解析器插件提供了一种在运行时动态加载 LoRA 适配器的灵活方式。当 vLLM 收到对尚未加载的 LoRA 适配器的请求时,解析器插件将尝试从其配置的存储位置查找并加载该适配器。这实现了
- 动态 LoRA 加载:按需加载适配器,无需重启服务器
- 多存储后端:支持文件系统、S3 和自定义后端。内置的
lora_filesystem_resolver需要一个本地存储路径,而内置的hf_hub_resolver将从 Hugging Face Hub 拉取 LoRA 适配器,并以相同的方式处理。通常,可以实现自定义解析器以从任何来源获取数据。 - 自动发现:与现有的 LoRA 工作流程无缝集成
- 可扩展部署:跨多个 vLLM 实例的集中式适配器管理
先决条件¶
在使用 LoRA 解析器插件之前,请确保已配置以下环境变量
必需的环境变量¶
-
VLLM_ALLOW_RUNTIME_LORA_UPDATING:必须设置为true或1以启用动态 LoRA 加载 -
VLLM_PLUGINS:必须包含所需的解析器插件(逗号分隔列表) -
VLLM_LORA_RESOLVER_CACHE_DIR:对于文件系统解析器,必须设置为有效的目录路径
可选的环境变量¶
VLLM_PLUGINS:如果未设置,将加载所有可用插件。如果设置为空字符串,则不会加载任何插件。
可用解析器¶
lora_filesystem_resolver¶
文件系统解析器随 vLLM 默认安装,支持从本地目录结构加载 LoRA 适配器。
设置步骤¶
-
创建 LoRA 适配器存储目录:
-
设置环境变量:
-
启动 vLLM 服务器:您的基础模型可以是
meta-llama/Llama-2-7b-hf。请确保在环境变量中设置了 Hugging Face token,例如export HF_TOKEN=xxx235。
目录结构要求¶
文件系统解析器要求 LoRA 适配器按以下结构组织
/path/to/lora/adapters/
├── adapter1/
│ ├── adapter_config.json
│ ├── adapter_model.bin
│ └── tokenizer files (if applicable)
├── adapter2/
│ ├── adapter_config.json
│ ├── adapter_model.bin
│ └── tokenizer files (if applicable)
└── ...
每个适配器目录必须包含
-
adapter_config.json:必需的配置文件,包含以下结构 -
adapter_model.bin:LoRA 适配器权重文件
使用示例¶
-
准备您的 LoRA 适配器:
-
验证目录结构:
-
使用该适配器发出请求:
工作原理¶
- 当 vLLM 收到针对名为
my_sql_adapter的 LoRA 适配器的请求时 - 文件系统解析器会检查
/path/to/lora/adapters/my_sql_adapter/是否存在 - 如果找到,它将验证
adapter_config.json文件 - 如果配置与基础模型匹配且有效,则加载适配器
- 使用新加载的适配器正常处理请求
- 适配器将保留以供后续请求使用
高级配置¶
多解析器支持¶
您可以配置多个解析器插件,以从不同来源加载适配器
'lora_s3_resolver' 是一个您可能需要实现的自定义解析器示例
所有列出的解析器均被启用;在请求时,vLLM 会按顺序尝试它们,直到其中一个成功。
自定义解析器实现¶
要实现您自己的解析器插件
-
创建一个新的解析器类:
-
注册该解析器:
故障排除¶
常见问题¶
- "VLLM_LORA_RESOLVER_CACHE_DIR 必须设置为有效目录"
- 确保目录存在且可访问
-
检查目录的文件权限
-
"未找到 LoRA 适配器"
- 验证适配器目录名称是否与请求的模型名称匹配
- 检查
adapter_config.json是否存在且为有效的 JSON -
确保
adapter_model.bin存在于目录中 -
"无效的适配器配置"
- 验证
peft_type是否设置为 "LORA" - 检查
base_model_name_or_path是否与您的基础模型匹配 -
确保
target_modules配置正确 -
"LoRA 等级 (rank) 超过最大值"
- 检查
adapter_config.json中的r值是否未超过max_lora_rank设置
调试技巧¶
-
启用调试日志:
-
验证环境变量:
-
测试适配器配置: