大模型开发和微调工具Llama-Factory-->LoRA合并

LoRA 合并

当我们基于预训练模型训练好 LoRA 适配器后,我们不希望在每次推理的时候分别加载预训练模型和 LoRA 适配器,因此我们需要将预训练模型和 LoRA 适配器合并导出成一个模型。根据是否量化以及量化算法的不同,导出的配置文件有所区别。

1.指令

可以通过  llamafactory-cli export merge_config.yaml 来合并模型。其中 merge_config.yaml 需要根据不同的情况进行配置。

2.量化

量化通过数据精度压缩有效的减少了显存使用并加速推理。LLaMA- Factory 支持多种量化方法,包括

  • AQLM
  • AWQ
  • GPTQ
  • QLoRA

1.后训练量化方法

GPTQ 等**后训练量化方法(Post Training Quantization)**是一种在训练后对预训练模型进行量化的方法。

我们通过量化技术将高精度表示的预训练模型转换为低精度的模型,从而在避免过多损失模型性能的情况下减少显存占用并加速推理,我们希望低精度数据类型在有限的表示范围内尽可能地接近高精度数据类型的表示

因此我们需要指定量化位数 export_quantization_bit 以及校准数据集 export_quantization_dataset

在进行模型合并时,请指定:

  • model_name_or_path: 预训练模型的名称或路径
  • template: 模型模板
  • export_dir: 导出路径
  • export_quantization_bit: 量化位数
  • export_quantization_dataset: 量化校准数据集
  • export_size: 最大导出模型文件大小
  • export_device: 导出设备
  • export_legacy_format: 是否使用旧格式导出

配置文件实例

### examples/merge_lora/llama3_gptq.yaml
### model
model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct
template: llama3

### export
export_dir: models/llama3_gptq
export_quantization_bit: 4
export_quantization_dataset: data/c4_demo.json
export_size: 2
export_device: cpu
export_legacy_format: false

2.QLoRA

QLoRA 是一种在 4-bit 量化模型基础上使用 LoRA 方法进行训练的技术。它在极大地保持了模型性能的同时大幅减少了显存占用和推理时间。

不要使用量化模型或设置量化位数 quantization_bit

### examples/merge_lora/llama3_q_lora.yaml
### model
model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct
adapter_name_or_path: saves/llama3-8b/lora/sft
template: llama3
finetuning_type: lora

### export
export_dir: models/llama3_lora_sft
export_size: 2
export_device: cpu
export_legacy_format: false

3.合并

examples/merge_lora/llama3_lora_sft.yaml 提供了合并时的配置示例

### examples/merge_lora/llama3_lora_sft.yaml
### model
model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct
adapter_name_or_path: saves/llama3-8b/lora/sft
template: llama3
finetuning_type: lora

### export
export_dir: models/llama3_lora_sft
export_size: 2
export_device: cpu
export_legacy_format: false

Note

  • 模型 model_name_or_path 需要存在且与 template 相对应。
  • adapter_name_or_path 需要与微调中的适配器输出路径 output_dir 相对应。
  • 合并 LoRA 适配器时,不要使用量化模型或指定量化位数。您可以使用本地或下载的未量化的预训练模型进行合并。
### 整合 LlamaFactory GGUF #### 安装必要的库支持工具 为了使 LlamaFactory 支持 GGUF 文件格式,首先需要安装支持该文件类型的库。GGUF 是一种用于存储神经网络权重其他元数据的二进制文件格式。 ```bash pip install gguf-transformers ``` 此命令将安装 `gguf-transformers` 库,它扩展了 Hugging Face Transformers 的功能以处理 GGUF 文件[^1]。 #### 修改配置文件以适应 GGUF 输入 对于 LlamaFactory 中使用的 YAML 配置文件(如 `llama3_lora_sft.yaml`),可以调整参数来指定加载来自 GGUF 文件的数据路径: ```yaml model: pretrained_model_name_or_path: /path/to/gguf/model.gguf ``` 这允许通过修改配置文件中的路径指向特定的 GGUF 模型文件来进行微调或其他操作。 #### 转换现有模型至 GGUF 格式 如果已有训练好的 LLaMA 模型并希望将其转换成 GGUF 格式,则可以通过如下 Python 脚本完成这一过程: ```python from gguf_transformers.convert import convert_to_gguf_format convert_to_gguf_format( input_model="meta-llama/LLaMA-13B", output_file="./converted_llama.gguf" ) ``` 这段代码展示了如何利用 `gguf_transformers` 提供的功能将标准的 PyTorch 或 TensorFlow 模型保存为 GGUF 文件。 #### 设置代理地址以便远程访问 当涉及到分布式计算环境时,可能还需要设置合适的 API 地址作为代理服务器,从而简化与其他服务之间的通信流程。例如,在某些情况下可能会这样做: ```python import os os.environ['MODEL_API_URL'] = 'http://your.llamafactory.proxy' ``` 这样做的好处是可以让多个客户端更容易地连接到同一个 LLaMA 实例上执行推理任务[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值