如何保存和加载 Peft/LoRA Finetune(明星聊天)

问题描述 投票:0回答:1

我正在尝试进一步微调

Starchat-Beta
,保存我的进度,加载我的进度,并继续训练。但无论我做什么,它都不会在一起。每当我加载进度并继续训练时,我的损失就会从 zero 开始(在我的例子中为 3.xxx)。 我将引导您完成我的代码,然后解决问题。

tokenizer = AutoTokenizer.from_pretrained(BASEPATH)
model = AutoModelForCausalLM.from_pretrained(
    "/notebooks/starbaseplus"
    ...
)
# I get both the Tokenizer and the Foundation model from the starbaseplus repo (which I have locally). 

peftconfig = LoraConfig(
    "/notebooks/starchat-beta" 
    base_model_name_or_path = "/notebooks/starbaseplus",
    ...
)
model = get_peft_model(model, peftconfig)
# All Gucci so far, the model and the LoRA fine-tune are loaded from the starchat-beta repo (also local).

# important for later:
print_trainable_parameters(model)
# trainable params: 306 Million || all params: 15 Billion || trainable: 1.971%


trainer = Trainer(
    model=model,
    ...
)
trainer.train()
# I train, loss drops. from 3.xx to 1.xx.

# Now, either I follow the HugginFace docks:
model.save_pretrained("./huggingface_model") 
# -> saves /notebooks/huggingface_model/adapter_model.bin 16mb.

# or an alternative I found on SO:
trainer.save_model("./torch_model") 
# -> saves /notebooks/torch_model/pytorch_model.bin 60gb.

我有两个替代方案保存到磁盘上。让我们重新启动并尝试这些方法之一

首先是 huggingface docs 方法: 我现在有三组重量。

  1. 基础模型 - starbase plus
  2. 聊天微调 - starat-beta
  3. 16mb 保存的 bin -adapter_model.bin

但是我只有两次负重的机会。

  1. AutoModelForCausalLM.from_pretrained
  2. get_peft_model
    PeftModel.from_pretrained

都不起作用。训练以 3.x 的损失重新开始

第二种方法: 加载 60bg 而不是oldstarchat-beta 回购模型。

get_peft_model("/notebooks/torch_model/pytorch_model.bin", peftconfig)

也不起作用。

print_trainable_parameters(model)
下降到
trainable: 0.02%
并且训练以 3.x

的损失重新开始
python pytorch huggingface-transformers torch
1个回答
0
投票

下次加载模型和适配器时需要设置is_trainable=True

model = PeftModel.from_pretrained(model, "local/myAdapter/adapter_config.json", is_trainable=True) 模型.eval()

© www.soinside.com 2019 - 2024. All rights reserved.