大语言模型实战


LLaMA2-7B模型地址:https://huggingface.co/FlagAlpha/Llama2-Chinese-7b-Chat。

LLaMA是由Meta开源的一个大型语言模型,提供了从70亿到700亿不等的参数规模的模型。在测试过程中,LLaMA2在许多基准测试上表现优异,超越了开源聊天模型的性能。通过人工评估,我们发现在帮助性和安全性方面,LLaMA2-Chat的表现也十分优异。但LLaMA系列模型是采用拉丁语系进行训练的大语言模型,不包含中文词典,因此很多研究者进行了LLaMA的中文化。这里我们采用一个中文化的LLaMA2-7B模型 进行大型语言模型的微调实战。


1. 项目介绍


本项目是LLaMA2基于PEFT进行的微调方法介绍。利用LLaMA2-7B模型从开源数据中进行数据构造,并进行模型微调。代码见GitHub中的LlamaFinetuneProj项目,项目主要结构如下。

·data:存放数据及数据处理的文件夹。

■dev.jsonl:验证集数据。

■train.jsonl:训练数据。

■load_data.py:用于针对开源数据进行数据处理,生成训练集及验证集数据。

·finetune:模型微调的文件夹。

■train_lora_llama.py:使用LoRA进行LLaMA2训练的函数。

96·predict:预测所需的代码文件夹。

■predict.py:利用已训练的模型进行模型生成的方法。

本项目从数据预处理、模型微调和模型预测几个部分入手,手把手地带领大家一起完成LLaMA-2 PEFT微调任务。


2. 数据预处理


在进行模型训练时,我们需要准备相应数据,并转换得到用于训练的数据,然后选择合适的模型进行配置。数据格式通常要求参考Self-Instruction方式进行构造,以便模型能够准确理解和学习相应知识信息。

链家开源指令数据集:

https://huggingface.co/datasets/BelleGroup/train_0.5M_CN。

当前,已有众多机构和研究者开源了用于学习和使用的指令数据。此处我们使用链家开源的一份指令数据集 进行验证。该数据基础格式如下:

 

 

我们可以直接使用上述数据进行模型训练。当然,我们也可以采用自己收集和构造的数据进行转换。例如针对知识图谱场景,我们可以构建如下数据:

 


3. 模型微调


针对LLaMA2模型微调,采用finetune文件夹中的train_lora_llama.py进行模型训练,主要包含模型训练参数设置函数和模型训练函数,主要涉及以下步骤。

步骤1:设置模型训练参数。

步骤2:实例化分词器和LLaMA2模型。

步骤3:加载模型训练所需要的训练数据和测试数据。

步骤4:加载模型训练所需的trainer。

步骤5:进行训练,并按需保存模型和分词器。

相关代码如下:

 

 

 

 

 

 


4. 模型预测


针对已微调后的LLaMA2模型,使用相应的模型加载方法,可以针对问题和参考段落进行答案生成。

步骤1:加载模型与分词器。

步骤2:获取用户问题。

步骤3:生成相应结果并返回。

相关代码如下: