Developers
资源
[object Object]

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]

[object Object]undefined
[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接口。
[object Object]

开启Multi-LoRA特性,需要配置的服务化参数如所示。

表 2 Multi-LoRA特性补充参数:ModelDeployConfig中的参数 [object Object][object Object]

[object Object]undefined
[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如何使用。

    1. 打开Server的config.json文件。

      • whl包安装方式:
      [object Object]
      • run包安装方式:
      [object Object]
    2. 配置服务化参数。在Server的config.json文件添加maxLoras、maxLoraRank以及LoraModules字段(以下加粗部分),参数字段说明请参见,服务化参数说明请参见章节,参数配置示例如下。

      [object Object]
    3. 启动服务。

      • whl包安装方式:
      [object Object]
      • run包安装方式:
      [object Object]
    4. 动态加载、卸载或查询LoRA。

      加载请求:

      [object Object]

      卸载请求:

      [object Object]

      查询请求:

      [object Object]
    5. 使用以下指令发送请求。

      [object Object]

      其中"model"参数可以设置为基础模型名称(config.json配置文件中"ModelConfig"字段下的"modelName"参数的值)或LoRA ID(config.json配置文件中"LoraModules"字段下"name"参数的值)。

      • 当"model"参数为基础模型名称时,不使用Lora权重进行推理。
      • 当"model"参数为LoRA ID时,启用基础模型权重和指定的LoRA权重进行推理。

      以"model"参数为LoRA ID为例,请求示例如下:

      [object Object]