我正在尝试进一步微调
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 方法: 我现在有三组重量。
但是我只有两次负重的机会。
AutoModelForCausalLM.from_pretrained
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 的损失重新开始
下次加载模型和适配器时需要设置is_trainable=True
model = PeftModel.from_pretrained(model, "local/myAdapter/adapter_config.json", is_trainable=True) 模型.eval()