LLaMA-Factory:手把手教你从零微调大模型!

AIGC 0

引言

随着人工智能技术的飞速发展,大型语言模型(LLM)在自然语言处理(NLP)领域扮演着越来越重要的角色。然而,预训练的模型往往需要针对特定任务进行微调,以提高其在特定领域的性能。LLaMA-Factory作为一个高效、易用的微调工具,为广大开发者提供了极大的便利。本文将详细介绍如何使用LLaMA-Factory从零开始微调大模型,帮助读者快速掌握这一技术。

一、模型微调讲解

1、什么是模型微调?

在深度学习领域,模型微调通常指的是在预训练模型的基础上进行的进一步训练。预训练模型是在大量数据上训练得到的,它已经学习到了语言的基本规律和丰富的特征表示。然而,这些模型可能并不直接适用于特定的任务或领域,因为它们可能缺乏对特定领域知识的理解和适应性。

模型微调通过在特定任务的数据集上继续训练预训练模型来进行,使得模型能够学习到与任务相关的特定特征和知识。这个过程通常涉及到模型权重的微幅调整,而不是从头开始训练一个全新的模型。

2、微调的过程

微调过程主要包括以下几个步骤:
1)数据准备:收集和准备特定任务的数据集。
2)模型选择:选择一个预训练模型作为基础模型。
3)迁移学习:在新数据集上继续训练模型,同时保留预训练模型的知识。
4)参数调整:根据需要调整模型的参数,如学习率、批大小等。
5)模型评估:在验证集上评估模型的性能,并根据反馈进行调整。

3、微调的优势

微调技术带来了多方面的优势:
资源效率:相比于从头开始训练模型,微调可以显著减少所需的数据量和计算资源。
快速部署:微调可以快速适应新任务,加速模型的部署过程。
性能提升:针对特定任务的微调可以提高模型的准确性和鲁棒性。
领域适应性:微调可以帮助模型更好地理解和适应特定领域的语言特点。

通过微调,可以使得预训练模型在这些任务上取得更好的性能,更好地满足实际应用的需求。

二、LLaMA-Factory讲解

LLaMA-Factory是一个开源的模型微调框架,致力于简化大型语言模型的定制过程。它集成了多种训练策略和监控工具,提供了命令行和WebUI等多种交互方式,大幅降低了模型微调的技术门槛。在这里插入图片描述

1、核心功能

  • 多模型兼容:支持包括LLama、Mistral、Falcon在内的多种大型语言模型。
  • 训练方法多样:涵盖全参数微调及LoRA等先进的微调技术。
  • 用户界面友好:LLama Board提供了一个直观的Web界面,使用户能够轻松调整模型设置。
  • 监控工具集成:与TensorBoard等工具集成,便于监控和分析训练过程。

2、LLaMA-Factory特点

  • 易用性:简化了机器学习算法的复杂性,通过图形界面即可控制模型微调。
  • 微调效率:支持DPO、ORPO、PPO和SFT等技术,提升了模型微调的效率和效果。
  • 参数调整灵活性:用户可根据需求轻松调整模型参数,如dropout率、epochs等。
  • 多语言支持:界面支持英语、俄语和中文,面向全球用户提供服务。

3、使用场景

LLaMA-Factory适用于广泛的NLP任务,包括但不限于:

  • 文本分类:实现情感分析、主题识别等功能。
  • 序列标注:如NER、词性标注等任务。
  • 文本生成:自动生成文本摘要、对话等。
  • 机器翻译:优化特定语言对的翻译质量。

LLaMA-Factory通过其强大的功能和易用性,助力用户在自然语言处理领域快速实现模型的定制和优化。

三、安装LLaMA Factory

在本章节中,我们将指导您如何安装和设置LLaMA Factory,一个用于微调大型语言模型的工具。请按照以下步骤操作,以确保您能够顺利地使用LLaMA Factory。

1、准备工作

首先,确保您的开发环境中已经安装了Python3.9或更高版本。这可以通过Python的官方网站下载安装,或者使用包管理器进行安装。
1)显卡选择
24 GB显存的A10:建议使用至少这个规格的实例,或者更高规格的实例以满足可能更大的计算需求。
2)镜像选择:
PyTorch深度学习框架版本为2.1.2。Python 3.10、CUDA 11.2(cu121),CUDA是NVIDIA提供的用于通用并行计算的编程模型和API。、Ubuntu 22.04 LTS(长期支持版本)操作系统。

2、获取LLaMA-Factory

打开您的终端或命令行界面,然后执行以下命令来克隆LLaMA-Factory的代码仓库到本地:

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git

这将创建一个名为LLaMA-Factory的文件夹,包含所有必要的代码和文件。

3、安装依赖

在安装LLaMA-Factory之前,您需要确保安装了所有必要的依赖。进入克隆的仓库目录,然后执行以下命令来安装依赖:

cd LLaMA-Factorypip install -e .[metrics]

这个命令将安装LLaMA-Factory及其所有必需的附加组件,用于模型的评估和分析。

4、卸载可能冲突的包

如果在安装过程中与其他库发生冲突,您可能需要先卸载这些库。例如,如果vllm库与LLaMA-Factory不兼容,可以使用以下命令卸载:

pip uninstall -y vllm

5、LLaMA-Factory版本检查

安装完成后,您可以通过运行以下命令来检查LLaMA-Factory是否正确安装以及其版本号:

llamafactory-cli version

如果安装成功,您将看到类似以下的输出,显示LLaMA Factory的版本信息:

[2024-07-19 10:25:22,857] [INFO] [real_accelerator.py:161:get_accelerator] Setting ds_accelerator to cuda (auto detect)Welcome to LLaMA Factory, version 0.7.1.dev0

6、验证安装

为了确保LLaMA Factory能够正常工作,您可以运行一些基本的命令来测试其功能。例如,尝试运行LLaMA Factory提供的一些示例脚本,或者使用其命令行界面来查看帮助信息:

llamafactory-cli --help

这将列出所有可用的命令和选项,帮助您了解如何使用LLaMA Factory。

注意事项

  • 确保您的网络连接稳定,以便顺利下载代码仓库和安装依赖。
  • 如果在安装过程中遇到问题,可以参考LLaMA Factory的官方文档或在社区中寻求帮助。
  • 在安装过程中,您可能需要根据您的系统环境和配置调整上述命令。

通过遵循上述步骤,您将能够成功安装并开始使用LLaMA Factory进行大型语言模型的微调。在接下来的章节中,我们将深入探讨如何使用LLaMA Factory进行模型微调的具体操作。

四、数据集准备

LLaMA-Factory提供了对多种数据集格式的支持,以适应不同类型的训练需求。本节将指导您如何准备和使用数据集进行模型微调。

1、使用内置数据集

LLaMA-Factory项目在data目录下内置了丰富的数据集,您可以直接使用这些数据集进行模型训练和测试。如果您不需要自定义数据集,可以跳过数据集准备步骤。

2、自定义数据集准备

若需使用自定义数据集,您需要按照LLaMA-Factory支持的格式处理数据,并将其放置在data目录下。同时,您还需要修改dataset_info.json文件,以确保数据集被正确识别和加载。

2.1 下载示例数据集

以下是使用示例数据集的步骤,假设您使用的是PAI提供的多轮对话数据集:

cd LLaMA-Factorywget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/llama_factory/data.zipunzip data.zip -d data

2.2 查看数据集结构

数据集通常包含多轮对话样本,每轮对话由用户指令和模型回答组成。微调过程中,模型将学习这些样本的回答风格,以适应特定的语言风格或角色扮演需求。例如,数据集中的一个样本可能如下所示:

[{    "conversations": [      {        "from": "human",        "value": "模仿西游记的孙悟空的语气和我聊天。如果你把水冻住,你会得到什么?"      },      {        "from": "gpt",        "value": "哈哈,这问题还难倒俺老孙吗?把水冻住就是变成冰啦!不过若是在取经的路上用得着这冰来做啥,比如过火焰山时,那可就是解渴消暑的好东西了!你觉得呢?还有没有更有趣的问题让俺老孙来解答?"      },      {        "from": "human",        "value": "那怎么做才可以把水冻住"      },      {        "from": "gpt",        "value": "哈哈,对俺老孙来说,这可是轻而易举的事情!只需将水放在凉快的地方,或者使用法力,一吹仙气,水便能迅速结冰啦!当然,在你的世界里,把水放进冰箱的冷冻室里等一阵子,水就会变成冰块了。要是嫌慢,可以尝试用点干冰或液氮什么的,不过得小心使用哈!毕竟不像俺老孙有抗寒法力。"      }    ]}]

五、模型微调

1、启动Web UI

使用以下命令启动LLaMA-Factory的Web UI界面,以便进行交互式模型微调:

export USE_MODELSCOPE_HUB=1 && llamafactory-cli webui

这将启动一个本地Web服务器,您可以通过访问http://0.0.0.0:7860来使用Web UI。请注意,这是一个内网地址,只能在当前实例内部访问。

2、配置参数

在Web UI中,您需要配置以下关键参数以进行模型微调:
语言:选择模型支持的语言,例如zh
模型名称:选择要微调的模型,例如LLaMA3-8B-Chat
微调方法:选择微调技术,如lora
数据集:选择用于训练的数据集。
学习率:设置模型训练的学习率。
计算类型:根据GPU类型选择计算精度,如bf16fp16
梯度累计:设置梯度累计的批次数。
LoRA+学习率比例:设置LoRA+的相对学习率。
LoRA作用模块:选择LoRA层挂载的模型部分。
在这里插入图片描述

3、开始微调

在Web UI中设置好参数后,您可以开始模型微调过程。微调完成后,您可以在界面上观察到训练进度和损失曲线。
在这里插入图片描述

1)将输出目录修改为train_llama3,训练后的LoRA权重将会保存在此目录中。
2)单击“预览”命令,可展示所有已配置的参数。
如果您希望通过代码进行微调,可以复制这段命令,在命令行运行。
3)单击“开始”,启动模型微调。
启动微调后需要等待大约20分钟,待模型下载完毕后,可在界面观察到训练进度和损失曲线。当显示训练完毕时,代表模型微调成功。
在这里插入图片描述

六、模型评估

微调完成后,您可以使用Web UI进行模型评估。选择适当的评估数据集和输出目录,然后启动评估过程。评估结果将显示在界面上,包括ROUGE分数等指标。
在这里插入图片描述

模型评估大约需要5分钟,评估完成后会在界面上显示验证集的分数。其中,ROUGE分数衡量了模型输出答案(predict)和验证集中的标准答案(label)的相似度,ROUGE分数越高代表模型学习得越好。
在这里插入图片描述

七、对话测试

在Web UI的Chat页签下,加载微调后的模型进行对话测试。您可以输入文本与模型进行交互,并观察模型的回答是否符合预期。
在这里插入图片描述

在页面底部的对话框输入想要和模型对话的内容,单击提交,即可发送消息。
发送后模型会逐字生成回答,从回答中可以发现模型学习到了数据集中的内容,能够恰当地模仿目标角色的语气进行对话。
在这里插入图片描述

单击卸载模型,单击取消适配器路径,然后单击加载模型,即可与微调前的原始模型聊天。
在这里插入图片描述

结语

本文精心梳理了使用LLaMA-Factory对大型语言模型进行微调的全过程。从精心准备数据集,到细致调整模型参数,再到严格评估模型性能,LLaMA-Factory以其高效、直观的操作界面,为自然语言处理领域提供了一项强大的工具。通过LLaMA-Factory,我们得以简化了微调流程,使得模型训练和优化变得更加易于管理和执行。它的出现,不仅提升了开发效率,也使得模型微调变得更加精准和个性化。

我们期望,通过本文的介绍,读者能够对LLaMA-Factory有更深刻的理解,并将其应用于实际的模型开发中。愿您在自然语言处理的征途上,以LLaMA-Factory为伴,不断探索,勇往直前。

让我们共同期待,LLaMA-Factory能在您的项目中发挥重要作用,助力您在AI领域取得新的突破和成就。感谢您的阅读,愿本文成为您技术探索之旅中的一盏明灯。

博客原文:专业人工智能技术社区

也许您对下面的内容还感兴趣: