zero-lora icon indicating copy to clipboard operation
zero-lora copied to clipboard

将微调的 lora 权重导出到基本模型

Open ziwang-com opened this issue 2 years ago • 0 comments
trafficstars

https://github.com/Lightning-AI/lit-llama/issues/261 我们只保存 lora 权重的原因只是为了节省空间, 因为完整的检查点非常大.但是, 是的, 我们可以为 lora 检查点提供这样的转换, 这是一个很好的建议.实现大致如下:

将预训练权重和 lora 权重从检查点加载到 lora 模型中 (见generate_lora.py) 调用 model.eval() 将 lora 权重合并回常规权重 状态 = model.state_dict() 删除字典中与 lora 对应的所有条目 火炬保存(状态,...)


@awaelchli您能提供一些方向吗?对此功能进行 PR 会很棒,我认为拥有它会很棒!

我不明白跑步如何合并重量。model.eval()

LoRA和base之间的唯一区别是:

      (c_attn): Linear(in_features=4096, out_features=12288, bias=False)

versus

      (c_attn): MergedLinear(
        in_features=4096, out_features=12288, bias=False
        (lora_dropout): Dropout(p=0.05, inplace=False)
      )

当我打印出模型.参数(),一个层的片段时:

transformer.h.4.attn.c_attn.weight transformer.h.4.attn.c_attn.lora_A transformer.h.4.attn.c_attn.lora_B 那么以某种方式与增量重量合并吗?我无法弄清楚这在代码中发生在哪里。model.eval()weightlora_A @ lora_B

ziwang-com avatar Jun 05 '23 01:06 ziwang-com