Closed xiaoqi25478 closed 10 months ago
但是保存完之后要怎么再load回去呢?
但是保存完之后要怎么再load回去呢?
保存后的权重带有lora权重 需要merge merge过后的权重就是正常的权重
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your consideration.
Closing the issue, since no updates observed. Feel free to re-open if you need any further assistance.
提交前必须检查以下项目
问题类型
模型训练与精调
基础模型
LLaMA-13B
操作系统
Linux
详细描述问题
作者自己写了一个SavePeftModelCallback中断函数来实现lora部分的权重保存,这个函数在zero2模式下是没有问题的,因为zero2模式不涉及到模型拆分到不同的gpu或者cpu上,保存的权重参数其状态都是可获取的,但是在zero3模式下,模型的权重会被拆分到不同的gpu以及offload到cpu上,该模式下直接强制的保存权重参数会存在一些问题,如issues广泛反馈的zero3模式下adapter_model.bin文件只有几十k的问题,因此此时获取的权重文件只有key,没有value。
其中transformers里面有自带的针对zero3模式下的权重保存代码,如下:
只不过此时保存的权重是所有的参数,不仅仅是lora权重。
在项目的merge_llama_with_chinese_lora_low_mem.py代码中,会对base_model当中的参数用lora_model当中的参数进行优先替换,因此不需要涉及到merge_llama_with_chinese_lora_low_mem.py的修复。
因此本项目如果需要支持zero3的话,需要对模型权重保存的方式进行修复。修复的方式也很简单,注释掉作者自己添加的SavePeftModelCallback函数,直接使用官方的权重保存函数即可。
依赖情况(代码类问题务必提供)
运行日志或截图