使用LLaMA-Factory微调Llama3大模子

[复制链接]
发表于 2026-2-23 20:39:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
一、根本模子下载


  • 本文的配景是微调一个基于Llama3的中文版模子Llama3-8B-Chinese-Chat,用于中文指定范畴的问答鄙俚使命
1、HuggingFace官网直接下载


  • 官网地点:https://huggingface.co/models
  • 镜像网址:https://hf-mirror.com/
  • 按照如下图所示搜刮必要的根本模子

  • 点击Files and versions

  • 依次点击下载,将模子文件下载至指定的文件夹内

  • 此方法官方网站下载速率大概很慢,发起时间紧的同砚接纳镜像网站下载
2、使用HuggingFace的transformers库下载


  • 安装transformers工具库
  1. pip install transformers
复制代码

  • 创建环境变量HF_HOME,设置模子下载地点

  • 验证设置是否见效
  1. huggingface-cli scan-cache
复制代码

  1. from transformers import AutoModel
  2. model_name = "shenzhi-wang/Llama3-8B-Chinese-Chat"
  3. model = AutoModel.from_pretrained(model_name)
复制代码

  • 大概直接使用下令
  1. transformers-cli download Qwen/Qwen2.5-14B --cache-dir ./
复制代码
3、HuggingFace国内镜像下载(旧版现已经弃用)
  1. # 下载所需的工具包
  2. pip install -U huggingface_hub
  3. pip install huggingface-cli
  4. # 指定国内镜像源
  5. # Linux
  6. export HF_ENDPOINT=https://hf-mirror.com
  7. # Windows
  8. set HUGGINGFACE_HUB_ENDPOINT=https://hf-mirror.com
  9. # 执行下载命令
  10. # --resume-download 是下载中断恢复下载后继续从上次下载中断点继续下载
  11. # shenzhi-wang/Llama3-8B-Chinese-Chat 是要下载模型的名称
  12. # E:\LLM 是下载到本地的路径
  13. huggingface-cli download --resume-download shenzhi-wang/Llama3-8B-Chinese-Chat --local-dir E:\LLM
复制代码
4、下载乐成后最好校验一下下载的模子是否有标题


二、微调工具LLaMA-Factory 框架

1、LLaMA-Factory安装
  1. git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
  2. cd LLaMA-Factory
  3. # "[torch,metrics]"可以删除直接执行pip install -e .
  4. pip install -e ".[torch,metrics]"
复制代码


  • 下载乐成后,入下图所示


  • LLaMA-Factory具体先容可移步GitHub:https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md
三、构建微调数据

1、打开LLaMA-Factory项目


  • 目次结构如下图所示

2、构建微调json数据


  • 在data目次下新建fine_tuning_data文件夹,用来存放微调所需的数据

  • 由于业务数据公司要求保密,这里就恣意构造一些数据用于实验,各人可以根据本身的业务需求举行预训练数据的构造

  • 在dataset_info.json文件中将刚刚构建的微调数据举行路径设置,留意设置格式要与构建的数据格式逐一对应
  1. # 新构建的节点
  2. "fintech": {
  3.     "file_name": "fine_tuning_data/fintech.json",
  4.     "columns": {
  5.       "prompt": "instruction",
  6.       "query": "input",
  7.       "response": "output",
  8.       "history": "history"
  9.     }
  10.   },
  11.   # 默认自带的节点,注意修改路径
  12.   "identity": {
  13.     "file_name": "fine_tuning_data/identity.json"
  14.   },
复制代码

四、启动LLaMA-Factory Web UI举行模子微调

1、启动LLaMA-Factory并设置微调参数


  • 在LLaMA-Factory项目标根目次下输入已下指令启动LLaMa-Factory Web UI
  1. llamafactory-cli webui
复制代码

  • 启动乐成后下令框体现如下

  • Web UI界面体现如下

  • 设置微调参数

  • 点击预览下令,生产微调指令
  1. llamafactory-cli train \
  2.     --stage sft \
  3.     --do_train True \
  4.     --model_name_or_path E:\LLM\Llama3-8B-Chinese-Chat \
  5.     --preprocessing_num_workers 16 \
  6.     --finetuning_type lora \
  7.     --template llama3 \
  8.     --flash_attn auto \
  9.     --dataset_dir data \
  10.     --dataset fintech,identity \
  11.     --cutoff_len 1024 \
  12.     --learning_rate 0.0002 \
  13.     --num_train_epochs 10.0 \
  14.     --max_samples 1000 \
  15.     --per_device_train_batch_size 2 \
  16.     --gradient_accumulation_steps 8 \
  17.     --lr_scheduler_type cosine \
  18.     --max_grad_norm 1.0 \
  19.     --logging_steps 5 \
  20.     --save_steps 100 \
  21.     --warmup_steps 0 \
  22.     --optim adamw_torch \
  23.     --packing False \
  24.     --report_to none \
  25.     --output_dir saves\LLaMA3-8B-Chinese-Chat\lora\train_2024-06-20-19-55-32 \
  26.     --fp16 True \
  27.     --plot_loss True \
  28.     --ddp_timeout 180000000 \
  29.     --include_num_input_tokens_seen True \
  30.     --lora_rank 8 \
  31.     --lora_alpha 16 \
  32.     --lora_dropout 0 \
  33.     --lora_target all
复制代码

2、开始微调


  • 第一种方法启动微调
  • 在Web UI中点击开始


  • 第二种方法启动微调
  • 将微调指令构建成build/train_llama3_lora.yaml设置文件,内容如下
  1. stage: sft
  2. do_train: True
  3. model_name_or_path: E:\LLM\LLMLlama3-8B-Chinese-Chat
  4. preprocessing_num_workers: 16
  5. finetuning_type: lora
  6. template: llama3
  7. flash_attn: auto
  8. dataset_dir: data
  9. dataset: fintech,identity
  10. cutoff_len: 1024
  11. learning_rate: 0.0002
  12. num_train_epochs: 10.0
  13. max_samples: 1000
  14. per_device_train_batch_size: 2
  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. packing: False
  23. report_to: none
  24. output_dir: saves\LLaMA3-8B-Chinese-Chat\lora\train_2024-06-20-19-55-32
  25. fp16: True
  26. plot_loss: True
  27. ddp_timeout: 180000000
  28. include_num_input_tokens_seen: True
  29. lora_rank: 8
  30. lora_alpha: 16
  31. lora_dropout: 0
  32. lora_target: all
复制代码


  • 在LLaMA-Factory项目标根目次实验以下下令开始微调
  1. llamafactory-cli train build/train_llama3_lora.yaml
复制代码

  • 开始微调,必要耐心等候

  • 微调过程中要经常检测一下显卡的运行环境,防止“爆显存”导致微调使命克制
  1. # Linux
  2. watch -n 1 nvidia-smi
  3. # windows
  4. nvidia-smi.exe -l
复制代码


  • 开始微调后,可以观看终端进度条检测微调使命进程

  • 还可以在Web UI中观看微调过程中的loss降落图



3、查察微调结果


  • 微调完成后,终端和Web UI会有相应的提示


  • 微调完成后,在指定的文件夹下可以查察微调对应的模子参数

五、查验微调结果

1、加载验证集举行模子验证


  • 在微调乐成后,各人必要根据具体业务环境,将预备好的验证数据集加载进来,用于验证模子的微调环境

  • 这里在举行验证的过程中,必要用到jieba、nltk、rouge-chinese这三个NLP常用的工具包,各人如果没有安装,可以在实验验证前举行安装
  1. pip install jieba nltk rouge-chinese
复制代码
2、加载微调前后的模子举行推理,对比结果


  • 这里用到了vllm推理框架,没有安装的同砚也必要安装一下
  1. # Linux
  2. pip install vllm
复制代码

  • 加载预训练模子Llama3-8B-Chinese-Chat

  • 加载乐成后,就可以举行对话了

  • 这是微调前的模子答复

  • 加载微调后的预训练模子Llama3-8B-Chinese-Chat

  • 这是微调后的模子答复,从结果可以看出,我们的微调是有用的

3、将训练后的LoRA Adapter和基座模子归并

1、Web UI界面归并

  • 根据业务指定好归并参数,点击导出,耐心等候即可

  • 归并导出后的模子目次如下

  • 如许就可以直接使用微调后的模子了

2、下令行归并

  • 将模子归并参数构建成build/merge_llama3_lora.yaml设置文件,内容如下

  1. ### Note: DO NOT use quantized model or quantization_bit when merging lora adapters
  2. ### model
  3. model_name_or_path: E:\LLM\Llama3-8B-Chinese-Chat
  4. adapter_name_or_path: E:\LLM\LLaMA-Factory\saves\LLaMA3-8B-Chinese-Chat\lora\train_2024-06-20-19-55-32
  5. template: llama3
  6. finetuning_type: lora
  7. ### export
  8. export_dir: E:\LLM\LLaMA3-8B-Chinese-Chat-merged
  9. export_size: 4
  10. export_device: cuda
  11. export_legacy_format: false
复制代码

  • 在LLaMA-Factory根目次下实验归并下令
  1. llamafactory-cli export build/merge_llama3_lora.yaml
复制代码
六、常用下令总结


  • 模子训练
  1. llamafactory-cli train \
  2.     --stage sft \
  3.     --do_train True \
  4.     --model_name_or_path /mnt/workspace/qwen2-5/Qwen2.5-0.5B-Instruct \
  5.     --preprocessing_num_workers 16 \
  6.     --finetuning_type lora \
  7.     --template qwen \
  8.     --flash_attn auto \
  9.     --dataset_dir data \
  10.     --dataset identity \
  11.     --cutoff_len 1024 \
  12.     --learning_rate 0.0002 \
  13.     --num_train_epochs 10.0 \
  14.     --max_samples 1000 \
  15.     --per_device_train_batch_size 2 \
  16.     --gradient_accumulation_steps 8 \
  17.     --lr_scheduler_type cosine \
  18.     --max_grad_norm 1.0 \
  19.     --logging_steps 5 \
  20.     --save_steps 100 \
  21.     --warmup_steps 0 \
  22.     --optim adamw_torch \
  23.     --packing False \
  24.     --report_to none \
  25.     --output_dir saves/Qwen2.5-0.5B-Instruct/lora/train_2024-12-25-19-55-32 \
  26.     --fp16 True \
  27.     --plot_loss True \
  28.     --ddp_timeout 180000000 \
  29.     --include_num_input_tokens_seen True \
  30.     --lora_rank 8 \
  31.     --lora_alpha 16 \
  32.     --lora_dropout 0 \
  33.     --lora_target all
复制代码

  • 模子归并
  1. llamafactory-cli export \
  2.   --model_name_or_path /mnt/workspace/qwen2-5/Qwen2.5-0.5B-Instruct \
  3.   --adapter_name_or_path saves/Qwen2.5-0.5B-Instruct/lora/train_2024-12-25-19-55-32 \
  4.   --template qwen \
  5.   --export_dir saves/Qwen2.5-0.5B-Instruct/lora/merged
复制代码

  • 模子导出
  1. llamafactory-cli export \
  2.   --model_name_or_path /mnt/workspace/qwen2-5/Qwen2.5-0.5B-Instruct \
  3.   --adapter_name_or_path saves/Qwen2.5-0.5B-Instruct/lora/train_2024-12-25-19-55-32 \
  4.   --template qwen \
  5.   --export_dir saves/Qwen2.5-0.5B-Instruct/lora/merged
复制代码

  • 模子对话
  1. llamafactory-cli chat \
  2.   --model_name_or_path saves/Qwen2.5-0.5B-Instruct/lora/merged \
  3.   --template qwen
复制代码

  • 仅对话模式启动webui
  1. CUDA_VISIBLE_DEVICES=0 llamafactory-cli webchat \
  2.     --model_name_or_path /home/util/muyan/Qwen/Qwen2___5-1___5B-Instruct \
  3.     --template qwen
复制代码

  • 多卡启动webui
  1. export USE_MODELSCOPE_HUB=1
  2. CUDA_VISIBLE_DEVICES=0,1 llamafactory-cli webui
复制代码

  • 配景启动webui
  1. export USE_MODELSCOPE_HUB=1export CUDA_VISIBLE_DEVICES=0,1nohup llamafactory-cli webui
  2. >20241119.log 2>&1 &
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表