- Transformer基础
- 常用的大语言模型
- 行业大语言模型
- 大语言模型评估
- 数据构造与清洗
- 分词器构造
- 大语言模型的微调
- 基于PEFT的LLaMA模型微调
- 基于人类反馈的强化学习框架
- 前沿偏好对齐方法
- 基于DPO的偏好对齐实战
- GPTs初体验
- GPTs的初阶使用
- GPTs的高阶使用
- 公开数据集
- 主流方法
- Text2SQL任务实战
- 角色扮演
- 角色扮演实战测试
- 基于Baichuan的角色扮演模型微调
- 对话要素抽取
- 对话要素抽取实战测试
- 基于Qwen的对话要素抽取模型微调
- Agent概述
- Agent的主要模块
- Agent的行为决策机制
- 主流Agent框架
- 基于知识库问答
- 向量数据库
- 基于知识库的大型语言模型问答实战
- AutoGPT概述
- LangChain概述
- 使用LangChain构建AutoGPT
- 运行AutoGPT
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:生成相应结果并返回。
相关代码如下: