dvlab-research/LongLoRA

如何在LoRA训练中加入embed和norm层的训练?

Zheng-Jay opened this issue · 0 comments

感谢作者的开源分享!
阅读了你的文章,其中提到LoRA+embed、norm层的训练,可以有效提高模型在支持长上下文时的性能,我想要在自己的训练代码中加入这种训练,但对于如何添加,有些疑惑。
我看了你的训练代码,LoRA+的配置似乎是:

        config = LoraConfig(
            r=8,
            lora_alpha=16,
            target_modules=targets,
            lora_dropout=0,
            bias="none",
            task_type="CAUSAL_LM",
        )
        model = get_peft_model(model, config)
        # enable trainable params
        [p.requires_grad_() for n, p in model.named_parameters() if any([k in n for k in training_args.trainable_params.split(",")])]

我对这种配置感到疑惑,对“embed、norm”层的配置为什么采用这种形式,而不是在LoraConfig的“modules_to_save”参数中进行配置?如下:

            lora_config = LoraConfig(
                task_type=TaskType.CAUSAL_LM,
                inference_mode=False,
                r=finetuning_args.lora_rank,
                lora_alpha=finetuning_args.lora_alpha,
                lora_dropout=finetuning_args.lora_dropout,
                target_modules=target_modules,
                modules_to_save=“embed、norm”层
            )
            model = get_peft_model(model, lora_config)