LoRA(Low-Rank Adaptation)是一种高效的参数微调方法。将大模型的权重矩阵分解为原始权重矩阵和两个低秩矩阵的乘积,即W' = W + BA。由于B和A矩阵参与训练的参数量远小于原始权重,其乘积结果又能合入线性层并向下传递,从而达到大模型轻量级微调的目的。
Multi-LoRA指基于一个基础模型,使用多个不同的LoRA权重进行推理。每个请求带有指定的LoRA ID,推理时动态匹配对应的LoRA权重。部署服务时,LoRA权重和基础模型权重预先加载至显存中。一个推理请求至多使用一个LoRA权重,兼容推理请求不使用LoRA权重的情况。对于大参数量的模型,若模型参数量过大,无法单卡加载时,可进行Tensor Parallel并行。
LoRA权重中需包含"adapter_config.json"和"adapter_model.safetensors"文件,文件描述如所示。
表 1 LoRA权重的文件说明 [object Object][object Object]
- Atlas 800I A2 推理服务器、Atlas 800I A3 超节点服务器和Atlas 300I Duo 推理卡支持此特性。
- LoRA权重个数上限受硬件显存限制,建议数量为小于等于10个。
- 仅在ATB Models使用Python组图时支持LoRA权重动态加载和卸载。
- 支持线性层携带LoRA权重。
- 不支持和量化、PD分离、并行解码、SplitFuse、MTP、异步调度、Micro Batch以及Prefix Cache特性同时开启。
- 仅Qwen2.5-7B、Qwen2.5-14B、Qwen2.5-32B、Qwen2.5-72B、Qwen3-32B、LLaMA3.1-8B、LLaMA3.1-70B和Qwen2-72B支持该特性。
- LoRA权重名称长度不能超过256个字符。
- 仅支持vLLM接口、TGI接口和vLLM兼容OpenAI接口。
表 2 Multi-LoRA特性补充参数:ModelDeployConfig中的参数 [object Object][object Object]
纯模型使用:
已在环境上安装CANN和ATB Models,详情请参见《MindIE安装指南》。
[object Object]
以LLaMA3.1-70B为例,下载基础模型和LoRA权重后,您可以使用以下指令执行对话测试,共3个请求组成Batch进行推理,每个推理请求中LoRA权重不同。run_pa脚本参数参考章节。
通过“lora_modules”指定基础模型和LoRA权重的绑定关系:
权重名称为权重的别名,长度不能超过256个字符,在后续请求中用于指定Lora权重进行推理。
支持配置多个LoRA权重。
[object Object]
服务化使用:
[object Object]
以LLaMA3.1 70B模型为例,简单介绍Multi LoRA如何使用。
打开Server的config.json文件。
- whl包安装方式:
[object Object]- run包安装方式:
[object Object]配置服务化参数。在Server的config.json文件添加maxLoras、maxLoraRank以及LoraModules字段(以下加粗部分),参数字段说明请参见,服务化参数说明请参见章节,参数配置示例如下。
[object Object]启动服务。
- whl包安装方式:
[object Object]- run包安装方式:
[object Object]动态加载、卸载或查询LoRA。
加载请求:
[object Object]卸载请求:
[object Object]查询请求:
[object Object]使用以下指令发送请求。
[object Object]其中"model"参数可以设置为基础模型名称(config.json配置文件中"ModelConfig"字段下的"modelName"参数的值)或LoRA ID(config.json配置文件中"LoraModules"字段下"name"参数的值)。
- 当"model"参数为基础模型名称时,不使用Lora权重进行推理。
- 当"model"参数为LoRA ID时,启用基础模型权重和指定的LoRA权重进行推理。
以"model"参数为LoRA ID为例,请求示例如下:
[object Object]