> 技术文档 > ​【微调大模型】使用LLaMA-Factory进行监督微调 Qwen2.5 ​_llamafactory微调qwen2.5

​【微调大模型】使用LLaMA-Factory进行监督微调 Qwen2.5 ​_llamafactory微调qwen2.5

本文使用LLaMA-Factory进行监督微调 Qwen2.5

监督微调(SFT)脚本具有以下特点:

  • 支持单GPU和多GPU训练
  • 支持全参数调优,LoRA,Q-LoRA,Dora

下面详细介绍一下该脚本的使用方法。

目录

安装

数据准备

训练

合并 LoRA 

结论



安装

开始之前,请确保已安装以下软件包:

按照LLaMA-Factory的说明 ,构建环境。安装这些软件包(可选):

pip install deepspeedpip install flash-attn --no-build-isolation

如果想使用 FlashAttention-2,请确保 CUDA 是 11.6 及以上版本。

数据准备

LLaMA-Factory 在文件夹中提供了几个训练数据集data,可以直接使用。如果使用自定义数据集,请按如下方式准备数据集。

1将数据组织到json文件中,并将数据放入data 文件夹中。LLaMA-Factory 支持alpacasharegpt 格式的数据集。

alpaca格式的数据集应遵循以下格式:

[ { \"instruction\": \"user instruction (required)\", \"input\": \"user input (optional)\", \"output\": \"model response (required)\", \"system\": \"system prompt (optional)\", \"history\": [ [\"user instruction in the first round (optional)\", \"model response in the first round (optional)\"], [\"user instruction in the second round (optional)\", \"model response in the second round (optional)\"] ] }]

sharegpt格式的数据集应遵循以下格式:

[ { \"conversations\": [ { \"from\": \"human\", \"value\": \"user instruction\" }, { \"from\": \"gpt\", \"value\": \"model response\" } ], \"system\": \"system prompt (optional)\", \"tools\": \"tool description (optional)\" }]

2 data/dataset_info.json按以下格式提供数据集定义。

对于alpaca格式数据集dataset_info.json 应该是:

\"dataset_name\": { \"file_name\": \"dataset_name.json\", \"columns\": { \"prompt\": \"instruction\", \"query\": \"input\", \"response\": \"output\", \"system\": \"system\", \"history\": \"history\" }}

对于sharegpt格式数据集dataset_info.json 应该是:

\"dataset_name\": { \"file_name\": \"dataset_name.json\", \"formatting\": \"sharegpt\", \"columns\": { \"messages\": \"conversations\", \"system\": \"system\", \"tools\": \"tools\" }, \"tags\": { \"role_tag\": \"from\", \"content_tag\": \"value\", \"user_tag\": \"user\", \"assistant_tag\": \"assistant\" } }

训练

执行以下训练命令:

DISTRIBUTED_ARGS=\" --nproc_per_node $NPROC_PER_NODE \\ --nnodes $NNODES \\ --node_rank $NODE_RANK \\ --master_addr $MASTER_ADDR \\ --master_port $MASTER_PORT \"torchrun $DISTRIBUTED_ARGS src/train.py \\ --deepspeed $DS_CONFIG_PATH \\ --stage sft \\ --do_train \\ --use_fast_tokenizer \\ --flash_attn \\ --model_name_or_path $MODEL_PATH \\ --dataset your_dataset \\ --template qwen \\ --finetuning_type lora \\ --lora_target q_proj,v_proj\\ --output_dir $OUTPUT_PATH \\ --overwrite_cache \\ --overwrite_output_dir \\ --warmup_steps 100 \\ --weight_decay 0.1 \\ --per_device_train_batch_size 4 \\ --gradient_accumulation_steps 4 \\ --ddp_timeout 9000 \\ --learning_rate 5e-6 \\ --lr_scheduler_type cosine \\ --logging_steps 1 \\ --cutoff_len 4096 \\ --save_steps 1000 \\ --plot_loss \\ --num_train_epochs 3 \\ --bf16

要更改训练,可以修改训练命令中的参数来调整超参数。需要注意的一个参数是cutoff_len,这是训练数据的最大长度。控制此参数以避免 OOM 错误。

合并 LoRA 

如果使用 LoRA 训练模型,则可能需要将适配器参数合并到主分支。运行以下命令执行 LoRA 适配器的合并。

CUDA_VISIBLE_DEVICES=0 llamafactory-cli export \\ --model_name_or_path path_to_base_model \\ --adapter_name_or_path path_to_adapter \\ --template qwen \\ --finetuning_type lora \\ --export_dir path_to_export \\ --export_size 2 \\ --export_legacy_format False

结论

以上内容是使用 LLaMA-Factory 训练 Qwen 的最简单方法。

Quickstart - Qwen

至此,本文的内容就结束了。

QQ个性签名网