LLaMA-Factory实战:Qwen2-7B模型高效微调指南

82

在人工智能领域,大型语言模型(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在内的多硬件平台,从而进一步拓展了其应用范围。

LLaMA-Factory框架图

三、环境配置

1. 安装modelscope

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

首先,我们需要设置环境变量,将模型库指向ModelScope,并修改模型缓存地址,以避免因默认路径导致的空间不足问题。

export USE_MODELSCOPE_HUB=1
export MODELSCOPE_CACHE=/root/autodl-tmp/models/modelscope

为了加速学术资源的访问,可以执行以下命令:

source /etc/network_turbo

接下来,安装modelscope库,用于下载ModelScope平台上的相关模型:

pip install modelscope

2. 模型下载

在下载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

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

首先,修改gradio的默认端口:

export GRADIO_SERVER_PORT=6006

然后,启动LLaMA-Factory:

lamafactory-cli webui

启动界面如下所示:

LLaMA-Factory启动界面

六、LLaMA-Factory实战操作

1. 访问Web UI界面

在浏览器中输入http://localhost:6006/,即可访问LLaMA-Factory的Web UI界面。通过该界面,可以进行模型配置、训练参数设置以及微调过程的监控。

LLaMA-Factory Web UI界面

2. 配置模型本地路径

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

配置模型本地路径

3. 微调相关配置

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

微调相关配置

4. 预览训练参数

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

lamafactory-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权重文件的输出如下:

Lora权重文件输出

6. 模型加载推理

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

Chat页签

进行模型对话:

模型对话

7. 模型合并导出

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

模型合并导出

合并后的模型文件如下:

合并后的模型文件

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

七、总结

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

期待未来