使用LLaMA-Factory微调Llama3大模型

使用LLaMA-Factory微调Llama3大模型

    正在检查是否收录...

一、基础模型下载

本文的背景是微调一个基于Llama3的中文版模型Llama3-8B-Chinese-Chat,用于中文指定领域的问答下游任务

1、HuggingFace官网直接下载

官网地址:https://huggingface.co/models

镜像网址:https://hf-mirror.com/

按照如下图所示搜索需要的基础模型

点击Files and versions

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

此方法官方网站下载速度可能很慢,建议时间紧的同学采用镜像网站下载

2、使用HuggingFace的transformers库下载

安装transformers工具库
pip install transformers 
创建环境变量HF_HOME,配置模型下载地址
验证配置是否生效
huggingface-cli scan-cache 
执行如下代码
from transformers import AutoModel model_name = "shenzhi-wang/Llama3-8B-Chinese-Chat" model = AutoModel.from_pretrained(model_name) 

3、HuggingFace国内镜像下载(旧版现已经弃用)

# 下载所需的工具包 pip install -U huggingface_hub pip install huggingface-cli # 指定国内镜像源 # Linux export HF_ENDPOINT=https://hf-mirror.com # Windows set HUGGINGFACE_HUB_ENDPOINT=https://hf-mirror.com # 执行下载命令 # --resume-download 是下载中断恢复下载后继续从上次下载中断点继续下载 # shenzhi-wang/Llama3-8B-Chinese-Chat 是要下载模型的名称 # E:\LLM 是下载到本地的路径 huggingface-cli download --resume-download shenzhi-wang/Llama3-8B-Chinese-Chat --local-dir E:\LLM 

4、下载成功后最好校验一下下载的模型是否有问题

二、微调工具LLaMA-Factory 框架

1、LLaMA-Factory安装

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory # "[torch,metrics]"可以删除直接执行pip install -e . 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文件中将刚刚构建的微调数据进行路径配置,注意配置格式要与构建的数据格式一一对应
# 新构建的节点 "fintech": { "file_name": "fine_tuning_data/fintech.json", "columns": { "prompt": "instruction", "query": "input", "response": "output", "history": "history" } }, # 默认自带的节点,注意修改路径 "identity": { "file_name": "fine_tuning_data/identity.json" }, 

四、启动LLaMA-Factory Web UI进行模型微调

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

在LLaMA-Factory项目的根目录下输入已下指令启动LLaMa-Factory Web UI
llamafactory-cli webui 
启动成功后命令框显示如下
Web UI界面显示如下
设置微调参数
点击预览命令,生产微调指令
llamafactory-cli train \ --stage sft \ --do_train True \ --model_name_or_path E:\LLM\Llama3-8B-Chinese-Chat \ --preprocessing_num_workers 16 \ --finetuning_type lora \ --template llama3 \ --flash_attn auto \ --dataset_dir data \ --dataset fintech,identity \ --cutoff_len 1024 \ --learning_rate 0.0002 \ --num_train_epochs 10.0 \ --max_samples 1000 \ --per_device_train_batch_size 2 \ --gradient_accumulation_steps 8 \ --lr_scheduler_type cosine \ --max_grad_norm 1.0 \ --logging_steps 5 \ --save_steps 100 \ --warmup_steps 0 \ --optim adamw_torch \ --packing False \ --report_to none \ --output_dir saves\LLaMA3-8B-Chinese-Chat\lora\train_2024-06-20-19-55-32 \ --fp16 True \ --plot_loss True \ --ddp_timeout 180000000 \ --include_num_input_tokens_seen True \ --lora_rank 8 \ --lora_alpha 16 \ --lora_dropout 0 \ --lora_target all 

2、开始微调

第一种方法启动微调 在Web UI中点击开始 第二种方法启动微调 将微调指令构建成build/train_llama3_lora.yaml配置文件,内容如下
stage: sft do_train: True model_name_or_path: E:\LLM\LLMLlama3-8B-Chinese-Chat preprocessing_num_workers: 16 finetuning_type: lora template: llama3 flash_attn: auto dataset_dir: data dataset: fintech,identity cutoff_len: 1024 learning_rate: 0.0002 num_train_epochs: 10.0 max_samples: 1000 per_device_train_batch_size: 2 gradient_accumulation_steps: 8 lr_scheduler_type: cosine max_grad_norm: 1.0 logging_steps: 5 save_steps: 100 warmup_steps: 0 optim: adamw_torch packing: False report_to: none output_dir: saves\LLaMA3-8B-Chinese-Chat\lora\train_2024-06-20-19-55-32 fp16: True plot_loss: True ddp_timeout: 180000000 include_num_input_tokens_seen: True lora_rank: 8 lora_alpha: 16 lora_dropout: 0 lora_target: all 
在LLaMA-Factory项目的根目录执行以下命令开始微调
llamafactory-cli train build/train_llama3_lora.yaml 
开始微调,需要耐心等待
微调过程中要经常检测一下显卡的运行情况,防止“爆显存”导致微调任务终止
# Linux watch -n 1 nvidia-smi # windows nvidia-smi.exe -l 
开始微调后,可以观看终端进度条检测微调任务进程
还可以在Web UI中观看微调过程中的loss下降图


3、查看微调结果

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

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

五、检验微调结果

1、加载验证集进行模型验证

在微调成功后,大家需要根据具体业务情况,将准备好的验证数据集加载进来,用于验证模型的微调情况
这里在进行验证的过程中,需要用到jieba、nltk、rouge-chinese这三个NLP常用的工具包,大家如果没有安装,可以在执行验证前进行安装
pip install jieba nltk rouge-chinese 

2、加载微调前后的模型进行推理,对比结果

这里用到了vllm推理框架,没有安装的同学也需要安装一下
# Linux pip install vllm 
加载预训练模型Llama3-8B-Chinese-Chat
加载成功后,就可以进行对话了
这是微调前的模型回答
加载微调后的预训练模型Llama3-8B-Chinese-Chat
这是微调后的模型回答,从结果可以看出,我们的微调是有效的

3、将训练后的LoRA Adapter和基座模型合并

1、Web UI界面合并

根据业务指定好合并参数,点击导出,耐心等待即可
合并导出后的模型目录如下
这样就可以直接使用微调后的模型了

2、命令行合并

将模型合并参数构建成build/merge_llama3_lora.yaml配置文件,内容如下
### Note: DO NOT use quantized model or quantization_bit when merging lora adapters ### model model_name_or_path: E:\LLM\Llama3-8B-Chinese-Chat adapter_name_or_path: E:\LLM\LLaMA-Factory\saves\LLaMA3-8B-Chinese-Chat\lora\train_2024-06-20-19-55-32 template: llama3 finetuning_type: lora ### export export_dir: E:\LLM\LLaMA3-8B-Chinese-Chat-merged export_size: 4 export_device: cuda export_legacy_format: false 
在LLaMA-Factory根目录下执行合并命令
llamafactory-cli export build/merge_llama3_lora.yaml 

llamactochatllmhuggingfacewebcligitamltransformertransformersidejsontpulinuxgithub2024文件夹预训练基础模型
  • 本文作者:李琛
  • 本文链接: https://wapzz.net/post-17706.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
本站部分内容来源于网络转载,仅供学习交流使用。如涉及版权问题,请及时联系我们,我们将第一时间处理。
文章很赞!支持一下吧 还没有人为TA充电
为TA充电
还没有人为TA充电
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
2.3W+
5
0
1
WAP站长官方

最新AI大模型系统源码,ChatGPT商业运营版系统源(详细图文搭建部署教程)+AI绘画系统,DALL-E3文生图, Whisper & TTS 语音识别,文档分析

上一篇

全网都在找的Stable Diffusion本地部署教程(小白100%成功)

下一篇
  • 复制图片
按住ctrl可打开默认菜单