# LLM Fine-tune 学习记录
# 环境备忘录
北航服务器:LLM虚拟环境 source LLM/bin/activate 51.10:conda环境 hence(但是该服务器并未部署llm模型) 51.11:conda环境 llama_factory
# 参数字典
- stage
- SFT:指令监督微调
- pt:预训练
- rm:奖励模型
- max_samples:样本数量
- fp16/bf16:精度高,范围有限/范围宽,精度有限
- gradient_accumulation_steps:实际模型更新权重之前,前向传播和反向传播的次数
- max_gradient_norm:梯度的某个范数如果超过了某个阈值,则进行梯度裁剪
- evaluation_strategy
- no:训练时不做评估
- steps:在每个eval_steps都进行评估
- epoch:在每个epoch结束时评估
- per_device_train_batch_size:批处理大小:每块 GPU 上处理的样本数量
- lr_scheduler_type cosine:学习率调节器:采用的学习率调节器名称
- save_steps:保存间隔:每两次断点保存间的更新步数
- plot_loss:绘制损失函数图
- lora_target:lora作用模块,不同大模型有不同的作用模块
- overwrite_cache:是否覆盖cache,在重复训练一个数据集时可以删掉
- predict_with_generate:指示在生成模型的预测时使用生成模式
- val_size和test_size分别表示用于验证集和测试集的数据比例
- export_legacy_format:为True时输出bin,为false时输出safetensor格式
# 数据格式
# 训练
训练时需要的命令:
#!/bin/bash
CUDA_VISIBLE_DEVICES=0,1
export WANDB_MODE='offline'
accelerate launch --config_file config.yaml ../../src/train_bash.py \
--stage sft \
--do_train \
--model_name_or_path /home/LAB/pangkh/LLM_factory/Llama-2-7b-hf \
--dataset alpaca_gpt4_en,glaive_toolcall \
--dataset_dir ../../data \
--template default \
--finetuning_type lora \
--lora_target q_proj,v_proj \
--output_dir ../../saves/LLaMA2-7B/lora/sft \
--overwrite_cache \
--overwrite_output_dir \
--cutoff_len 1024 \
--per_device_train_batch_size 1 \
--per_device_eval_batch_size 1 \
--gradient_accumulation_steps 2 \
--lr_scheduler_type cosine \
--logging_steps 10 \
--save_steps 100 \
--eval_steps 100 \
--evaluation_strategy steps \
--load_best_model_at_end \
--learning_rate 5e-5 \
--num_train_epochs 3.0 \
--max_samples 3000 \
--val_size 0.1 \
--plot_loss \
--fp16
# 评估
CUDA_VISIBLE_DEVICES=0 python src/evaluate.py \
--model_name_or_path path_to_llama_model \
--finetuning_type lora \
--checkpoint_dir path_to_checkpoint \
--template vanilla \
--task ceval \
--split validation \
--lang zh \
--n_shot 5 \
--batch_size 4
# 预测
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
--stage sft \
--model_name_or_path path_to_llama_model \
--do_predict \
--dataset alpaca_gpt4_zh \
--template default \
--finetuning_type lora \
--checkpoint_dir path_to_checkpoint \
--output_dir path_to_predict_result \
--per_device_eval_batch_size 8 \
--max_samples 100 \ # 最大样本数:每个数据集最多使用的样本数
--predict_with_generate
# 合并
python src/export_model.py \
--model_name_or_path path_to_llama_model \
--adapter_name_or_path path_to_checkpoint \
--template default \
--finetuning_type lora \
--export_dir path_to_export \
--export_size 2 \
--export_legacy_format False
# 使用vLLM合并