【LLAMA FACTORY】 freeze模式总结

120 篇文章 ¥59.90 ¥99.00

训练模式有full, lora(+ qlora),和freeze模式,感觉freeze模式很少被提及,这里做一个总结
Freeze(冻结微调)指的是在训练过程中只对模型的小部分权重进行更新,这样可以降低对显存的要求。

如果您需要进行冻结微调,请将 finetuning_type 设置为 freeze 并且设置相关参数,
例如冻结的层数 freeze_trainable_layers 、可训练的模块名称 freeze_trainable_modules 等。

以下是一个例子:

… code-block:: yaml

...
### method
stage: sft
do_train: true
finetuning_type: freeze
freeze_trainable_layers: 8
freeze_trainable_modules: all
...

… list-table:: FreezeArguments
:widths: 30 10 50
:header-rows: 1

    • 参数名称
    • 类型
    • 介绍
    • freeze_trainable_layers
    • int
    • 可训练层的数量。正数表示最后 n 层被设置为可训练
### 对LLaMA模型进行冻结微调的方法 在处理大型预训练语言模型如LLaMA时,采用冻结部分参数的微调策略能够有效减少计算成本并保留大部分预训练效果。具体而言,在此过程中,除了选定的一些层或组件外,其余网络权重将保持固定不变[^2]。 对于LLaMA这类复杂的架构来说,可以考虑仅调整顶层结构或是特定功能单元(比如自注意力机制中的参数),以此来适应新的目标任务需求而不改变整体框架的核心特性。这种方法特别适用于那些拥有有限硬件设施的研究者们,因为它能够在不牺牲太多表现力的前提下大幅降低资源消耗。 下面是一个简单的Python代码片段展示如何实现这一过程: ```python import torch from transformers import LlamaForCausalLM, Trainer, TrainingArguments model_name_or_path = "path_to_pretrained_llama" output_dir = "./fine_tuned_model" # 加载预训练好的LLaMA模型 model = LlamaForCausalLM.from_pretrained(model_name_or_path) # 冻结除最后一层之外的所有参数 for param in model.parameters(): param.requires_grad_(False) # 解冻最后几层用于微调 for layer in model.transformer.h[-3:]: for parameter in layer.parameters(): parameter.requires_grad_(True) training_args = TrainingArguments( output_dir=output_dir, num_train_epochs=3, per_device_train_batch_size=8, save_steps=10_000, save_total_limit=2, ) trainer = Trainer( model=model, args=training_args, train_dataset=train_dataset, # 用户需定义自己的训练集 eval_dataset=val_dataset # 用户需定义自己的验证集 ) trainer.train() ``` 通过上述方式设置好要优化的部分之后,就可以利用`transformers.Trainer`接口来进行常规意义上的监督学习流程了。值得注意的是,尽管这种方式有助于节省算力开支,但在面对复杂度较高的下游任务时可能会遇到瓶颈——即当数据分布较为特殊或者样本规模较大时,完全依赖少数可变参数未必能取得最佳成绩[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

andeyeluguo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值