Qwen1.5大语言模型微调实践

在人工智能领域,大语言模型(Large Language Model,LLM)的兴起和广泛应用,为自然语言处理(NLP)带来了前所未有的变革。Qwen1.5大语言模型作为其中的佼佼者,不仅拥有强大的语言生成和理解能力,而且能够通过微调(fine-tuning)来适应各种特定场景和任务。本文将带领大家深入实战,探索如何对Qwen大语言模型进行微调,以满足实际应用的需求。

一、了解Qwen1.5大语言模型

Qwen1.5模型是Qwen的升级版,也是Qwen2的测试版。它与Qwen类似,是只有一个decoder解码器的 transformer 模型,具有SwiGLU激活、RoPE、multi-head attention多头注意力。

  • Qwen1.5有7个模型尺寸:0.5B, 1.8B, 4B, 7B, 14B, 72B 模型,还外加 14B (A2.7B) MoE 模型。
  • chat 聊天模型的质量得到明显提高
  • 在 base 模型和 chat 模型支持多语言的能力(中文,英文等)
  • 支持 32768 tokens 的上下文长度
  • 所有模型启用System prompts,可以进行角色扮演
  • 不再需要 trust_remote_code

二、微调GPU资源评估和环境准备

这里我使用 Llama-Factory 训练框架来对 Qwen1.5 来进行微调,微调的方法可以使用 LoRA 或 QLoRA,可以大大节省GPU资源。具体的 Llama-Factory 环境搭建方法可以看官方链接:https://github.com/hiyouga/LLaMA-Factory

三、准备微调数据集和预训练模型

(1)数据集准备

微调数据集是微调过程中的关键。我们需要根据具体任务的需求,收集并整理相关的数据。这些数据应该包含输入和对应的输出,以便模型在训练过程中学习如何从输入中生成期望的输出。这里我使用一些公开的数据集来进行微调。

更多的数据集请看链接:GitHub - hiyouga/LLaMA-Factory: Unify Efficient Fine-Tuning of 100+ LLMs

(2)Pre-training 模型准备

直接在 huggingface 下载,下载地址:Qwen

如果自己网络无法访问 huggingface ,也可以使用 HF-Mirror - Huggingface 镜像站 来进行下载也可以。

四、模型微调训练

复制代码
(1)运行打开web ui 界面
按照 LLaMA-Factory 里面的教程搭建好环境之后就可以开始对模型进行微调了,执行以下命令来启动web ui 界面来进行微调:
bash 复制代码
cd LLaMA-Factory

export CUDA_VISIBLE_DEVICES=0  # use gpu0
python src/train_web.py        # or python -m llmtuner.webui.interface

如果想修改 网页服务的地址和端口号,直接在 src/train_web.py 修改就可以了。这里也可以代码中的 share 设置为True ,就可以把本地网络的web ui 界面作为一个 public 链接分享出去。

python 复制代码
from llmtuner import create_ui


def main():
    create_ui().queue().launch(server_name="127.0.0.1", server_port=6006, share=True, inbrowser=True)


if __name__ == "__main__":
    main()

(2)配置训练参数

然后根据的要求来进行配置,我的配置如下:

模型名称: Qwen1.5-7B-Chat

**模型路径:**填写自己本地下载的模型的路径,或者 Hugging Face 路径

**微调方法:**可以选用 lora, freeze, full 等

**量化等级:**选择 none,不进行量化,也可以启用 4/8 bit 模型量化(即 QLoRA)

**提示模板:**qwen

**训练阶段:**Supervised Fine-Tuning,也可以选 Reward Modeling, PPO, DPO, Pre-training等

**数据路径:**数据所在文件夹,默认为项目中的 data 文件夹

数据集: 提取了 data 文件夹中的 *.json 文件,可直接选择。选择完成之后点一下**"预览数据集"**确认自己的数据是否正确。

其他的参数比如 学习率、训练轮数(epoch)、批处理大小、学习率调节器 等都是深度学习训练常见的参数,可以根据自己的情况选择就好。这里我使用默认的参数。

LoRA 参数设置中,可以修改 lora 秩的大小,缩放系数,权重随机丢弃的概率等参数,这里我保持默认。

所有的参数都配置好之后,点一下**"预览命令"** ,确认命令没有问题之后,就可以点击**"开始"**进行训练了。训练的过程中可以看到 loss的变化曲线、训练耗时等。

五、模型微调效果测试

微调完成后,我们需要对微调后的模型进行评估,以了解其在实际任务中的性能表现。也可以在web ui 界面直接进行对话体验。

在**"模型路径"** 中输入原始模型路径,然后在**"适配器路径"** 中选择自己微调得到的 adapter 路径,然后点击**"加载模型"**,就可以开始对话聊天了。

通过终端窗口,可以看到模型成功加载

对话聊天:


参考:

  1. GitHub - hiyouga/LLaMA-Factory: Unify Efficient Fine-Tuning of 100+ LLMs

  2. GitHub - QwenLM/Qwen1.5: Qwen1.5 is the improved version of Qwen, the large language model series developed by Qwen team, Alibaba Cloud.

  3. 快速上手!LLaMa-Factory最新微调实践,轻松实现专属大模型-CSDN博客

相关推荐
云起无垠4 小时前
【论文速读】| FirmRCA:面向 ARM 嵌入式固件的后模糊测试分析,并实现高效的基于事件的故障定位
人工智能·自动化
Leweslyh6 小时前
物理信息神经网络(PINN)八课时教案
人工智能·深度学习·神经网络·物理信息神经网络
love you joyfully6 小时前
目标检测与R-CNN——pytorch与paddle实现目标检测与R-CNN
人工智能·pytorch·目标检测·cnn·paddle
该醒醒了~6 小时前
PaddlePaddle推理模型利用Paddle2ONNX转换成onnx模型
人工智能·paddlepaddle
小树苗1936 小时前
DePIN潜力项目Spheron解读:激活闲置硬件,赋能Web3与AI
人工智能·web3
凡人的AI工具箱6 小时前
每天40分玩转Django:Django测试
数据库·人工智能·后端·python·django·sqlite
大多_C7 小时前
BERT outputs
人工智能·深度学习·bert
Debroon7 小时前
乳腺癌多模态诊断解释框架:CNN + 可解释 AI 可视化
人工智能·神经网络·cnn
反方向的钟儿7 小时前
非结构化数据分析与应用(Unstructured data analysis and applications)(pt3)图像数据分析1
人工智能·计算机视觉·数据分析
Heartsuit7 小时前
LLM大语言模型私有化部署-使用Dify的工作流编排打造专属AI搜索引擎
人工智能·dify·ollama·qwen2.5·ai搜索引擎·tavily search·工作流编排