【peft】用peft调大模型,加载checkpoint失败,报ValueError: Can‘t find a valid checkpoint at

文章描述了在使用Peft的Lora训练Bloomz后,尝试从检查点恢复训练遇到的问题。作者通过创建Trainer的子类并重写加载检查点的函数来解决找不到有效检查点的错误。如果模型是PeftModel,代码会尝试加载适配器,否则则使用原始的加载方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接上文,用peft的lora训练bloomz,训练1轮之后,发现可能不太充分,打算加载检查点继续训练,代码如下:

trainer.train(resume_from_checkpoint = 'checkpoint目录')

然后报错:raise ValueError(f"Can't find a valid checkpoint at {resume_from_checkpoint}")
ValueError: Can't find a valid checkpoint at checkpoint目录

参考Peft Model not resuming from Checkpoint · Issue #24252 · huggingface/transformers · GitHub

就是_load_from_checkpoint有点问题

解决,新建一个Trainer子类,子类里重写了加载检查点的函数,调用时用这个子类来创建trainer对象

from transformers import Trainer
import os
from peft import PeftModel
from transformers.utils import (
    ADAPTER_SAFE_WEIGHTS_NAME,
    ADAPTER_WEIGHTS_NAME,
    is_sagemaker_mp_enabl
### 解决方案 当遇到 `ValueError: Please specify 'target_modules' in 'peft_config'` 的错误时,这意味着在配置LoRA(Low-Rank Adaptation)模型的过程中未正确设置目标模块参数。为了防止此错误的发生,在定义 `peft_config` 时必须显式指明哪些模块应该应用 LoRA 修改。 对于 ChatGLM 进行 LoRA 微的具体实现方式如下: 1. **创建并PeftConfig 实例** 确保在实例化 `PeftConfig` 类的时候传入了 `target_modules` 参数。这可以通过传递一个列表来完成,该列表包含了希望用作低秩适应的目标层名称字符串[^2]。 ```python from peft import PeftConfig config = PeftConfig( base_model_name_or_path="your_base_model", lora_alpha=8, lora_dropout=0.01, r=4, # rank of the low-rank decomposition target_modules=["q", "v"], # Specify which modules to apply LoRA on. ) ``` 2. **加载预训练模型并与自定义配置关联** 一旦有了适当配置的对象之后,则可以将其应用于所选的基础架构之上,并通过继承自 `BaseTuner` 的特定适配器类 (如 `LoraModel`) 来构建新的可训练实体[^3]。 ```python from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("chatglm-base-model") tuned_model = LoraModel(base_model, config=config, adapter_name="lora_adapter") ``` 上述代码片段展示了如何针对给定的任务和数据集准备一个带有 LoRA 整机制的聊天机器人模型版本。注意这里假设已经安装好了必要的库并且环境变量都已正确设定好以便能够顺利运行这些命令。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值