autodl 上 利用 LLaMA-Factory 微调 中文版 llama3

打印 上一主题 下一主题

主题 858|帖子 858|积分 2574

 

环境预备

autodl 服务器:
https://www.autodl.com/console/homepage/personal

基本上充 5 块钱就可以搞完。
强烈建议选 4090(24G),否则微调的显存不敷。

我们用 LoRA 微调,至少得 20G(8B模型)。
 
微调工具:


  • https://github.com/hiyouga/LLaMA-Factory.git
模型:


  • https://www.modelscope.cn/LLM-Research/Meta-Llama-3-8B-Instruct.git
 

创建假造环境

  1. conda activate LLaMA-Factory
复制代码
上传中文微调 dpo_zh.json 数据:


  • https://www.123pan.com/s/cD4cjv-kvgVh.html
  • 提取码: NpsA

下载微调工具 LLaMA-Factory

  1. git clone https://github.com/hiyouga/LLaMA-Factory.git
  2. cd LLaMA-Factory
  3. pip install -e .[metrics]  # 下载全部依赖
复制代码
下载 llama3-8B

  1. # pip install modelscope
  2. import torch
  3. from modelscope import snapshot_download, AutoModel, AutoTokenizer
  4. import os
  5. model_dir = snapshot_download('LLM-Research/Meta-Llama-3-8B-Instruct', cache_dir='/root/autodl-tmp', revision='master')
复制代码

模型路径:/root/autodl-tmp/LLM-Research/Meta-Llama-3-8B-Instruct
 
在 LLaMA-Factory/data 文件夹下找到 dataset_info.json 。
方法一:设置镜像站

这个数据,ta会去hf官方找,我们可以设置镜像站。
  1. pip install -U huggingface_hub  # 安装依赖
  2. export HF_ENDPOINT=https://hf-mirror.com/  # 镜像站
复制代码
方法二:改成本地文件路径

俩个地方都要改:file_name、本地数据集路径。
更新 transformers 库:
  1. pip install --upgrade transformers
复制代码
开始微调

  1. CUDA_VISIBLE_DEVICES=0 llamafactory-cli train \
  2.     --stage orpo \
  3.     --do_train True \
  4.     --model_name_or_path /root/autodl-tmp/LLM-Research/Meta-Llama-3-8B-Instruct \
  5.     --finetuning_type lora \
  6.     --template default \
  7.     --flash_attn auto \
  8.     --dataset_dir LLaMA-Factory/data\
  9.     --dataset dpo_mix_zh \
  10.     --cutoff_len 1024 \
  11.     --learning_rate 1e-05 \
  12.     --num_train_epochs 5.0 \
  13.     --max_samples 1 \
  14.     --per_device_train_batch_size 1 \
  15.     --gradient_accumulation_steps 8 \
  16.     --lr_scheduler_type cosine \
  17.     --max_grad_norm 1.0 \
  18.     --logging_steps 5 \
  19.     --save_steps 100 \
  20.     --warmup_steps 0 \
  21.     --optim adamw_torch \
  22.     --report_to none \
  23.     --output_dir saves/LLaMA3-8B/lora/train_2024-04-25-07-48-56 \
  24.     --fp16 True \
  25.     --lora_rank 8 \
  26.     --lora_alpha 16 \
  27.     --lora_dropout 0 \
  28.     --lora_target q_proj,v_proj \
  29.     --orpo_beta 0.1 \
  30.     --plot_loss True
复制代码

微调后,就找这个路径看一下。
微调上面的参数是自界说的:


  • max_samples 1 只利用一个数据微调,一样平常越多越好,这步为演示,就1条了
  1. stage                当前训练的阶段,枚举值,有“sft”,"pt","rw","ppo"等,代表了训练的不同阶段,这里我们是有监督指令微调,所以是sft
  2. do_train            是否是训练模式
  3. dataset                使用的数据集列表,所有字段都需要按上文在data_info.json里注册,多个数据集用","分隔
  4. dataset_dir            数据集所在目录,这里是 data,也就是项目自带的data目录
  5. finetuning_type        微调训练的类型,枚举值,有"lora","full","freeze"等,这里使用lora
  6. lora_target            如果finetuning_type是lora,那训练的参数目标的定义,这个不同模型不同,请到https://github.com/hiyouga/LLaMA-Factory/tree/main?tab=readme-ov-file#supported-models 获取 不同模型的 可支持module, 比如llama3 默认是 q_proj,v_proj
  7. output_dir            训练结果保存的位置
  8. cutoff_len            训练数据集的长度截断
  9. per_device_train_batch_size            每个设备上的batch size,最小是1,如果GPU 显存够大,可以适当增加
  10. fp16                使用半精度混合精度训练
  11. max_samples            每个数据集采样多少数据
  12. val_size            随机从数据集中抽取多少比例的数据作为验证集
复制代码
测试微调结果

微调后,还可以马上测试微调结果。


  • 调欠好!重新调整参数和数据。
  • 调得好!马上归并权重。
练习完后就可以在设置的output_dir下看到:



  • adapter开头的就是 LoRA 保存的结果了,后续用于模型推理融合
  • training_loss 和trainer_log等记载了练习的过程指标
  • 其他是练习当时各种参数的备份
模型归并后导出

如果想把练习的LoRA和原始的大模型举行融合,输出一个完整的模型文件的话:
  1. CUDA_VISIBLE_DEVICES=0 llamafactory-cli export \
  2.     --model_name_or_path /root/autodl-tmp/LLM-Research/Meta-Llama-3-8B-Instruct \
  3.     --adapter_name_or_path ./saves/LLaMA3-8B/lora/sft  \
  4.     --template llama3 \
  5.     --finetuning_type lora \
  6.     --export_dir megred-model-path \
  7.     --export_size 2 \
  8.     --export_device cpu \
  9.     --export_legacy_format False
复制代码
vllm 加速推理

需要提前将LoRA 模型举行merge,利用merge后的完整版模型目录:
  1. CUDA_VISIBLE_DEVICES=0 API_PORT=8000 llamafactory-cli api \
  2.     --model_name_or_path megred-model-path \
  3.     --template llama3 \
  4.     --infer_backend vllm \
  5.     --vllm_enforce_eager
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

半亩花草

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表