当前位置:AIGC资讯 > AIGC > 正文

【Qwen2微调实战】LLaMA-Factory框架对Qwen2-7B模型的微调实践

系列篇章?

No. 文章 1 【Qwen部署实战】探索Qwen-7B-Chat:阿里云大型语言模型的对话实践 2 【Qwen2部署实战】Qwen2初体验:用Transformers打造智能聊天机器人 3 【Qwen2部署实战】探索Qwen2-7B:通过FastApi框架实现API的部署与调用 4 【Qwen2部署实战】Ollama上的Qwen2-7B:一键部署大型语言模型指南 5 【Qwen2部署实战】llama.cpp:一键部署高效运行Qwen2-7B模型 6 【Qwen2部署实战】部署高效AI模型:使用vLLM进行Qwen2-7B模型推理 7 【AI大模型Agent探索】Qwen-Agent:基于Qwen的LLM应用开发框架 8 【AI大模型Agent探索】深入探索实践 Qwen-Agent 的 Function Calling 9 【AI大模型Agent探索】Qwen-Agent之RAG智能助手实践 10 【RAG检索增强生成】LlamaIndex与Qwen2的高效检索增强生成实践 11 【Qwen2微调实战】Lora微调Qwen2-7B-Instruct实践指南 12 【Qwen2微调实战】LLaMA-Factory框架对Qwen2-7B模型的微调实践

目录

系列篇章? 引言 一、概述 二、LLaMA-Factory简介 三、安装modelscope 四、模型下载 五、安装LLaMA-Factory 六、启动LLaMA-Factory 七、LLaMA-Factory操作实践 1、访问UI界面 2、配置模型本地路径 3、微调相关配置 4、预览训练参数 5、开始训练 6、模型加载推理 7、模型合并导出 结语

引言

在人工智能的浪潮中,大型语言模型(LLMs)正逐渐成为研究和应用的热点。它们在自然语言处理(NLP)的各个领域,如文本生成、翻译、问答等任务中展现出了卓越的能力。Qwen2-7B模型,作为该领域的佼佼者,不仅因其庞大的参数量和强大的表示能力受到关注,更因其在微调后能够更好地适应特定任务而备受关注。本文将详细介绍如何利用LLaMA-Factory这一高效的微调框架对Qwen2-7B进行微调,以期达到提升模型在特定任务上的表现。

一、概述

本文将详细介绍如何利用LLaMA-Factory这一先进的微调框架,对Qwen2-7B模型进行细致的调整和优化。

在本文中,我们将从环境配置、模型下载、参数设置、模型训练、导出等多个维度,全面展示如何使用LLaMA-Factory对Qwen2-7B进行微调。我们将提供详细的步骤说明和实践案例,确保读者能够复现并根据自己的需求调整微调过程。

二、LLaMA-Factory简介

LLaMA-Factory是一个集多种微调技术于一身的高效框架,支持包括Qwen2-7B在内的多种大型语言模型。它通过集成如LoRA、QLoRA等先进的微调算法,以及提供丰富的实验监控工具,如LlamaBoard、TensorBoard等,为用户提供了一个便捷、高效的微调环境。此外,LLaMA-Factory还支持多模态训练方法和多硬件平台,包括GPU和Ascend NPU,进一步拓宽了其应用范围。

三、安装modelscope

在国内,由于网络环境的特殊性,直接从国际知名的模型库如Hugging Face下载模型可能会遇到速度慢或连接不稳定的问题。为了解决这一问题,我们选择使用国内的ModelScope平台作为模型下载的渠道。ModelScope不仅提供了丰富的模型资源,还针对国内用户优化了下载速度。

修改模型库为modelscope

export USE_MODELSCOPE_HUB=1
修改模型缓存地址,否则默认会缓存到/root/.cache,导致系统盘爆满
export MODELSCOPE_CACHE=/root/autodl-tmp/models/modelscope

学术资源加速

source /etc/network_turbo

安装modelscope(用于下载modelscope的相关模型)

pip install modelscope

四、模型下载

在下载Qwen2-7B模型之前,我们首先需要设置modelscope的环境变量,确保模型能够被正确地缓存到指定的路径,避免因为默认路径导致的空间不足问题。接下来,通过编写一个简单的Python脚本,我们可以使用modelscope的API来下载所需的模型。
使用 modelscope 中的 snapshot_download 函数下载模型,第一个参数为模型名称,参数 cache_dir 为模型的下载路径。

from modelscope import snapshot_download
model_dir = snapshot_download(
    'qwen/Qwen2-7B', 
    cache_dir='/root/autodl-tmp', 
revision='master')

运行 python /root/autodl-tmp/d.py 执行下载;执行完成如下:

五、安装LLaMA-Factory

LLaMA-Factory的安装过程相对简单,通过Git克隆仓库后,使用pip安装即可。这一步骤是整个微调流程的基础,为后续的操作提供了必要的工具和库。

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"

执行如下:

六、启动LLaMA-Factory

在LLaMA-Factory安装完成后,我们可以通过简单的命令启动其Web UI界面。这一界面提供了一个用户友好的操作环境,使得微调过程更加直观和便捷。
修改gradio默认端口

export GRADIO_SERVER_PORT=6006 

启动LLaMA-Factory

llamafactory-cli webui

启动如下:

七、LLaMA-Factory操作实践

1、访问UI界面

http://localhost:6006/
通过访问Web UI,用户可以进行模型的配置、训练参数的设置以及微调过程的监控。

2、配置模型本地路径

在UI界面中,用户可以根据自己的需求选择模型来源,无论是直接使用Hugging Face模型库中的资源,还是加载本地下载的模型。

3、微调相关配置

微调配置是整个流程中至关重要的一步。用户需要根据具体的任务需求,设置训练阶段、数据集、学习率、批次大小等关键参数。

4、预览训练参数

在开始训练之前,用户可以预览所有的训练参数,确保配置无误。
点击“预览命令”按钮,查看训练的参数配置,可以进行手工修改调整

llamafactory-cli train \
    --stage sft \
    --do_train True \
    --model_name_or_path /root/autodl-tmp/qwen/Qwen2-7B \
    --preprocessing_num_workers 16 \
    --finetuning_type lora \
    --quantization_method bitsandbytes \
    --template default \
    --flash_attn auto \
    --dataset_dir data \
    --dataset alpaca_zh_demo \
    --cutoff_len 1024 \
    --learning_rate 5e-05 \
    --num_train_epochs 3.0 \
    --max_samples 100000 \
    --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/Qwen-7B/lora/train_2024-07-03-11-30-41 \
    --bf16 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 \
    --val_size 0.1 \
    --eval_strategy steps \
    --eval_steps 100 \
    --per_device_eval_batch_size 2

5、开始训练

一旦确认配置无误,用户可以启动训练过程。LLaMA-Factory将根据用户的配置进行模型的微调。
点击“开始”按钮,开始训练

训练完成结果如下:

训练完成后,会在本地输出微调后的相关权重文件,Lora权重文件输出如下:

6、模型加载推理

在高级设置中有一个“Chat”页签,可用于模型推理对话

模型对话

7、模型合并导出

模型训练完成后,我们可以将训练完后的Lora相关权重文件,和基础模型进行合并导出生成新的模型

合并后模型文件如下:

导出后我们可以基于导出后的新模型进行推理对话。

结语

通过本文的详细介绍,大家应该对如何使用LLaMA-Factory对Qwen2-7B进行微调有了清晰的认识。微调不仅能够提升模型在特定任务上的表现,还能够为模型赋予更加丰富的应用场景。希望本文能够为大家在大型语言模型的微调实践中提供有价值的参考和指导。随着技术的不断进步,我们期待LLaMA-Factory和Qwen2-7B能够在未来的AI领域发挥更大的作用。


??更多专栏系列文章:AI大模型提示工程完全指南、AI大模型探索之路(零基础入门)、AI大模型预训练微调进阶、AI大模型开源精选实践、AI大模型RAG应用探索实践??? 其他专栏可以查看博客主页?

? 作者介绍:我是寻道AI小兵,资深程序老猿,从业10年+、互联网系统架构师,目前专注于AIGC的探索。
? 技术交流:欢迎关注【小兵的AI视界】公众号或扫描下方?二维码,加入技术交流群,开启编程探索之旅。
?精心准备?500本编程经典书籍、?AI专业教程,以及高效AI工具。等你加入,与我们一同成长,共铸辉煌未来。
如果文章内容对您有所触动,别忘了点赞、⭐关注,收藏!加入我,让我们携手同行AI的探索之旅,一起开启智能时代的大门!

总结

该系列文章围绕Qwen2-7B这一大型语言模型(LLM)的部署、API实现、一键部署、模型优化及微调等多个方面展开了深入的实战探索。文章共分为多个篇章,具体总结如下:
1. **部署篇**:
- 介绍了如何在阿里云上部署Qwen-7B-Chat进行对话实践。
- 使用Transformers库和FastApi框架实现了Qwen2模型的智能聊天机器人及其API部署与调用。
- 提供了一键部署Qwen2-7B模型到不同平台(如Ollama)及利用llama.cpp框架提升运行效率的详细指南。
- 展示了通过vLLM进行模型推理的高效方法。
2. **Agent框架探索**:
- 探索了基于Qwen的LLM应用开发框架——Qwen-Agent,介绍了其应用场景及功能调用。
- 进一步探讨了Qwen-Agent作为RAG(检索增强生成)智能助手的实践案例。
3. **微调实战**:
- 通过LLaMA-Factory框架,详述了如何利用LoRA等方法微调Qwen2-7B模型以适应特定任务,并提供了完整的安装、模型下载、参数设置及训练过程的详细步骤。
- 展示了使用LLaMA-Factory的Web UI进行模型微调、训练参数预览、模型加载推理及合并导出的完整实践流程。
文章不仅为读者提供了丰富的实战案例和详细的操作步骤,还介绍了应用中涉及到的关键技术(如LoRA微调、LLaMA-Factory框架等),帮助读者全面了解并掌握Qwen2-7B模型的部署、优化及微调技能。此外,通过文章中的作者介绍和技术交流信息,进一步扩展了读者的学习资源和交流平台。
总体而言,这一系列文章是面向AI开发者和研究者的宝贵资源,旨在通过实战案例提升读者在大型语言模型部署、优化及微调方面的能力,推动AIGC技术的发展和应用。

更新时间 2024-08-16