调优算法
LLaMA-Factory 支持多种调优算法,包括: Full Parameter Fine-tuning 、 Freeze 、 LoRA 、 Galore 、 BAdam 。
1.Full Parameter Fine-tuning
全参微调指的是在训练过程中对于预训练模型的所有权重都进行更新,但其对显存的要求是巨大的。
如果您需要进行全参微调,请将 finetuning_type
设置为 full
。
下面是一个例子:
### examples/train_full/llama3_full_sft_ds3..yaml
# ...
finetuning_type: full
# ...
# 如果需要使用deepspeed:
deepspeed: examples/deepspeed/ds_z3_config.json
2.Freeze
Freeze(冻结微调)指的是在训练过程中只对模型的小部分权重进行更新,这样可以降低对显存的要求。
如果您需要进行冻结微调,请将 finetuning_type
设置为 freeze
并且设置相关参数, 例如冻结的层数 freeze_trainable_layers
、可训练的模块名称 freeze_trainable_modules
等。
以下是一个例子:
...
### method
stage: sft
do_train: true
finetuning_type: freeze
freeze_trainable_layers: 8
freeze_trainable_modules: all
...
参数名称 | 类型 | 介绍 |
---|---|---|
freeze_trainable_layers | int | 可训练层的数量。正数表示最后 n 层被设置为可训练的,负数表示前 n 层被设置为可训练的。默认值为 2 |
freeze_trainable_modules | str | 可训练层的名称。使用 all 来指定所有模块。默认值为 all |
freeze_extra_modules[非必须] | str | 除了隐藏层外可以被训练的模块名称,被指定的模块将会被设置为可训练的。使用逗号分隔多个模块。默认值为 None |
3.LoRA
如果您需要进行 LoRA 微调,请将 finetuning_type
设置为 lora
并且设置相关参数。 下面是一个例子:
...
### method
stage: sft
do_train: true
finetuning_type: lora
lora_target: all
lora_rank: 8
lora_alpha: 16
lora_dropout: 0.1
...
参数名称 | 类型 | 介绍 |
---|---|---|
additional_target[非必须] | [str,] | 除 LoRA 层之外设置为可训练并保存在最终检查点中的模块名称。使用逗号分隔多个模块。默认值为 None |
lora_alpha[非必须] | int | LoRA 缩放系数。一般情况下为 lora_rank * 2, 默认值为 None |
lora_dropout |