如果需要微调图像部分的LoRA,需要怎么改呢?
如题,代码说明里面是对chatGLM的LoRA进行微调,可不可以对图像部分也进行微调呢
图像部分可以用同样的方法加lora,在想加lora的模型里self.add_mixin("lora", LoraMixin(xxx))即可
图像部分可以用同样的方法加lora,在想加lora的模型里self.add_mixin("lora", LoraMixin(xxx))即可
是在finetune_visualglm.py的这行代码里面添加吗: self.add_mixin("lora", LoraMixin(args.num_layers, args.lora_rank, layer_range=args.layer_range), reinit=True)
如果是的话,再请教一下这三个参数(args.num_layers, args.lora_rank, layer_range=args.layer_range)需要怎么设置可以同时进行图像部分的微调呢,可不可以写个示例,多谢~
如果想对ViT加lora,就在EVAViT里面写:
class EVAViT(ViTModel):
def __init__(self, args, transformer=None, parallel_output=True, **kwargs):
super().__init__(args, transformer=transformer, parallel_output=parallel_output, **kwargs)
self.del_mixin("cls")
self.add_mixin("cls", LNFinalyMixin(args.hidden_size))
self.add_mixin("lora", LoraMixin(args.num_layers, args.lora_rank, layer_range=args.layer_range), reinit=True)
其他什么也不用变。
如果想对ViT加lora,就在EVAViT里面写:
class EVAViT(ViTModel): def __init__(self, args, transformer=None, parallel_output=True, **kwargs): super().__init__(args, transformer=transformer, parallel_output=parallel_output, **kwargs) self.del_mixin("cls") self.add_mixin("cls", LNFinalyMixin(args.hidden_size)) self.add_mixin("lora", LoraMixin(args.num_layers, args.lora_rank, layer_range=args.layer_range), reinit=True)其他什么也不用变。
你好,使用最新代码按照您的方法添加之后,运行微调脚本报错如下:
AttributeError: 'Namespace' object has no attribute 'lora_rank'
可能是什么原因呢
如果想对ViT加lora,就在EVAViT里面写:
class EVAViT(ViTModel): def __init__(self, args, transformer=None, parallel_output=True, **kwargs): super().__init__(args, transformer=transformer, parallel_output=parallel_output, **kwargs) self.del_mixin("cls") self.add_mixin("cls", LNFinalyMixin(args.hidden_size)) self.add_mixin("lora", LoraMixin(args.num_layers, args.lora_rank, layer_range=args.layer_range), reinit=True)其他什么也不用变。
你好,使用最新代码按照您的方法添加之后,运行微调脚本报错如下: AttributeError: 'Namespace' object has no attribute 'lora_rank'
可能是什么原因呢
补充:更新到最新的Visualglm-6b.zip还是一样的包括:AttributeError: 'Namespace' object has no attribute 'lora_rank'
哦,因为传进ViT的args是已经被改过的……所以可能你得想办法传进去其他参数用来指定lora rank。或者你直接把args.lora_rank改成一个固定的数字。
总之:
如果想直接跑起来,最简单的方法,把代码直接改成:
class EVAViT(ViTModel):
def __init__(self, args, transformer=None, parallel_output=True, **kwargs):
super().__init__(args, transformer=transformer, parallel_output=parallel_output, **kwargs)
self.del_mixin("cls")
self.add_mixin("cls", LNFinalyMixin(args.hidden_size))
self.add_mixin("lora", LoraMixin(args.num_layers, 10, layer_range=None), reinit=True)
至于args.lora_rank和args.layer_range怎么传给ViT,你有空可以自己研究一下。
好的,感谢大佬热心解答。我自己试试!
好的,感谢大佬热心解答。我自己试试!
请问你已经设置好了吗,可以分享一下吗
可能是什么原因呢