第十五章:基于BERT模型的LoRA训练与resume方法(huggingface)

作者 : admin 本文共1256个字,预计阅读时间需要4分钟 发布时间: 2024-06-17 共1人阅读

文章目录

  • 前言
  • 一、LoRA训练与Resume方法Demo
    • 1、LoraConfig配置文件介绍
    • 2、PEFT的LoRA训练的完整Demo
    • 3、LoRA训练与LoRA的resume训练
      • 1、LoRA训练
      • 2、LoRA的resume训练
    • 4、PEFT的LoRA训练方法
  • 二、权重载入
    • 1、参数
    • 2、文件路径获取
    • 3、config加载更新
    • 4、权重文件加载
      • 1、不同条件权重载入
      • 2、os.path.isfile(weights_file) or os.path.isfile(safe_weights_file)条件载入权重
      • 3、is_peft_available() and isinstance(model, PeftModel)条件载入权重
      • 4、else条件载入权重
    • 5、特定文件重点解释
  • 三、LoRA权重载入(def load_adapter(self, model_id: str, adapter_name: str, is_trainable: bool = False, **kwargs: Any))
    • 1、load_adapter完整源码
    • 2、adapter的config参数处理
    • 3、LoRA权重文件获取(file_name)
    • 4、LoRA权重文件加载
    • 5、载入LoRA权重
      • 1、完整源码(set_peft_model_state_dict)
      • 2、获取config值
      • 3、获得Lora权重值
      • 4、模型加工为模型能加载Lora权重变量
      • 5、模型加载LoRA权重
      • 6、set_peft_model_state_dict返回值
    • 6、load_adapter返回值
  • 四、optimizer、scheduler与状态_load_rng_state载入
  • 五、LoRA训练推理合并模型方法
    • 1、LoRA权重合并Demo
    • 2、LoRA权重合模型变量变化
  • 六、LoRA权重合于模型权重保存
    • 1、保存合并lora权重Demo
    • 2、保存合并权重说明

前言

huggingface中,很多情况是使用LoRA方法来训练模型。有关LoRA训练获得权重与加载,以及如何LoRA继续resume训练等问题,尚未有一个较好文章说明。因此,本文将详细说明LoRA相关内容。首先介绍了LoRA(Low-Rank Adaptation)的原理及相关内容;其次也对训练相关各种模型权重、LoRA权重、配置文件、优化器、调度器以及训练器状态和随机状态保存方法;接着给出了关于LoRA训练与恢复方法Demo与介绍,包括LoraConfig配置文件介绍和PEFT的LoRA训练;并进一步解读huggingface训练期间的LoRA权重等内容加载源码解读;最后,给出训练完后LoRA权重如何与原始模型合并Demo,以此实现模型推理。而本文是给出LoRA训练Demo与LoRA的resume的Demo及LoRA合并推理和保存内容。

一、LoRA训练与Resume方法Demo

1、LoraConfig配置文件介绍

在训练之前,我们有必要解读下相关Lora的config文件配置,其源码如下:

@dataclass
class LoraConfig(PeftConfig)
本站无任何商业行为
个人在线分享 » 第十五章:基于BERT模型的LoRA训练与resume方法(huggingface)
E-->