LoRA 上手

type
status
date
slug
summary
tags
category
icon
password

HuggingFace LoRA 文档笔记

显存不够时可以使用 LoRA 训练,推理时为了消除延迟可以使用 merge_and_unload()函数将适配器权重与基本模型合并到一个相同的新权重矩阵中。
实用函数如下:
  • merge_adapter() 将 LoRa 层合并到基础模型中,同时保留 PeftModel。助于以后取消合并、删除、加载不同的适配器等。
  • unmerge_adapter() 从基础模型中取消合并 LoRa 层,同时保留 PeftModel。
  • unload() 在不合并活动 lora 模块的情况下取回基本模型,即取回预训练的基础模型时,将模型重置为其原始状态。例如,在 Stable Diffusion WebUI 中,尝试 LoRA 后使用基础模型进行推断时。
  • delete_adapter() 删除现有适配器。
  • add_weighted_adapter() 根据用户提供的权重方案将多个 LoRA 组合成一个新的适配器。
微调 LoRA 模型的过程如下:
  1. 实例化基础模型
  1. 创建一个 LoraConfig 配置,在其中定义 LoRA-speciffic 的参数
  1. 将基础模型使用 get_peft_model() 包起来,获得可训练的 PeftModel
  1. 像训练基础模型一样训练 PeftModel
LoraConfig 解释:
  • 权重初始化由 init_lora_weights 控制,默认情况下,权重 A 使用 Kaiming-uniform,权重 B 初始化为0
鸿蒙Web场景性能优化EMNLP2023-对话情绪识别相关论文阅读笔记