文章目录
- 前言
- 一、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合并推理和保存内容。
提示:huggingface的lora与resume训练原理与方法!
一、LoRA训练与Resume方法Demo
1、LoraConfig配置文件介绍
在训练之前,我们有必要解读下相关Lora的config文件配置,其源码如下: