当前位置:AIGC资讯 > AIGC > 正文

微调LLama 3.1——七月论文审稿GPT第5.5版:拿早期paper-review数据集微调LLama 3.1

前言

为更好的理解本文,建议在阅读本文之前,先阅读以下两篇文章

七月论文审稿GPT第2版:用一万多条paper-review数据微调LLaMA2 7B最终反超GPT4 提升大模型数据质量的三大要素:找到早期paper且基于GPT摘要出来7方面review——七月论文审稿GPT第4.5/4.6/4.8版

对于llama3,我们之前已经做了针对llama3 早7数据微调后的测评(所谓早7,即指的是早期paper-7方面review,详见:微调LLama 3——七月论文审稿GPT第5版:拿早期paper-7方面review数据集微调LLama 3)

去pk llama2
llama2通过早7数据微调后,推理测试集中的早期paper:出来7方面review 去pk gpt4
gpt4 推理测试集中的早期paper:7方面review ground truth是早期paper的7方面人工review

后来,llama3.1出来后,考虑到性能高于llama3,所以项目组同事青睐、文弱上周做了llama3.1通过早7数据微调后的测评

去pk llama3
llama3通过早7数据微调后,推理测试集中的早期paper,出来7方面review 去pk gpt4
gpt4 推理测试集中的早期paper:7方面review ground truth是早期paper的7方面人工review

随后,为了对比,我又让项目组同事青睐、文弱分别做了(在本文之前没通过早4数据微调llama3和llama3.1)

llama3 早4测评
去pk llama2
llama2通过早4数据微调后,推理测试集中的早期paper,出来4方面review

去pk gpt4
gpt4推理测试集中的早期paper:4方面review

ground truth是测试集早期paper的4方面人工review llama3.1 早4测评
去pk llama3
llama3通过早4数据微调后,推理测试集中的早期paper,出来4方面review

去pk gpt4
gpt4 推理测试集中的早期paper:4方面review

ground truth是早期paper的4方面人工review

最终,早7数据下,超gpt4 超的不容易;但早4数据下,超gpt4 则很轻松..

个人心得是:首先,llama3.1确实是比llama3 更强悍;其次,现在微调一下超过GPT4,已经不是啥新闻了..

第一部分 通过早期paper-7方面review微调llama3.1以超GPT4

基本前提

llama3.1使用Qlora + flash atten v2微调情况4 15k样本(长度中位数9k,最长不超过12k) llama3.1与旧版的llama3模型结构基本一致,只是新增了更多语言支持、更大预训练数据、新提示模版、函数调用、更长上下文(新的RoPE扩展方式)等功能或性能上的优化(具体,详见此文:一文速览Llama 3.1——对其92页paper的全面细致解读:涵盖语言、视觉、语音的架构、原理)
因此微调的代码与旧版llama3基本一致

1.1 llama3.1微调环境配置

1.1.1 事先准备

Linux系统 支持cuda12.1 单张/多张 48G显卡 可访问HuggingFace/Python官方源的网络代理 微调数据集:早期paper-7方面review——其中7方面review是基于GPT做多聚一摘要出来的,详见此文《提升大模型数据质量的三大要素:找到早期paper且基于GPT摘要出来7方面review——七月论文审稿GPT第4.5/4.6/4.8版》的1.2.5节——通过7要点摘要prompt第4版重新摘要整理7方面review数据

1.1.2 模型下载

# 安装 git-lfs
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install

# 下载模型
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct
cd Meta-Llama-3.1-8B-Instruct
git lfs pull --include="*.safetensors"
# 可以再检查一下文件夹里的文件大小是否与Huggingface文件大小一致,重点检查超过1M的文件,如果存在某些文件文件不一致需要重新使用 git lfs pull 拉取一下该文件,将 --include= 改成该文件
cd ..

1.1.3 环境安装

要想使用llama3.1模型,transformers的版本需要 >= 4.43.3

accelerate
peft
trl==0.8.6
transformers==4.43.3
# flash-attn 单独安装
# pip install flash-attn==2.6.3 --no-build-isolation    # 需要等待一段时间,最好有代理
deepspeed==0.14.0
torch==2.3.1
ray
numpy==1.26.4
PyGithub
huggingface-hub
evaluate
datasets
bitsandbytes
einops
wandb
tensorboard
tiktoken
pandas
scipy
matplotlib
sentencepiece
nltk
xformers
hf_transfer
loguru
tqdm
transformers_stream_generator
openpyxl
httpx
joblib
scikit_learn

1.1.4 代码地址

微调代码,详见七月官网首页的:大模型项目开发线上营 第二期

1.2 微调过程

llama3.1 使用Qlora + flash attention v2 微调显存的占用与llama3 微调差不多,使用12k以下的文本长度用单张或多张A40/A6000(48G)即可,具体占用情况见下文

1.2.1 微调参数(主要参数)

为了保证与llama3情况4更公平的性能对比,选择与前者相同的迭代次数,情况4推理选择的checkpoint迭代次数为1800,大约1.95个epoch

参数

说明

batch size=16

梯度累计总batch size=16

lr=1e-4

学习率的大小

max_prompt_length=11138

paper 最长的大小,超过将被截取

max_response_length=1150

review 最长的大小,超过将被截取

save_steps=100

迭代100次保存一次模型

num_train_epoch=3

迭代3个epoch

1.2.2 微调system prompt

llama3.1 微调的system prompt与llama3情况4的prompt一致

SYSTEM_PROMPT = """Below is an "Instruction" that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.
Instruction:
You are a professional machine learning conference reviewer who reviews a given paper and considers 7 criteria: 
** How to evaluate the idea of the paper **
** Compared to previous similar works, what are the essential differences, such as any fundamental differences, improvements, innovations **
** How to evaluate the experimental results in the paper **
** Potential reasons for acceptance **
** Potential reasons for rejection **
** Other suggestions for further improving the quality of the paper **
** Other important review comments **
The given paper is as follows."""

1.2.3 模型迭代过程

显存占用
显存占用与微调llama3 相差不多 loss 迭代

最终,由于微调参数与llama3相差无几,故均选择与llama3迭代次数相同的1800为最终的checkpoint

1.2.3 微调过程中遇到的问题

llama3.1 模版冗余后缀
描述:截止2024年7月26日,llama3.1 tokenizer的模版生成输入时 add_generation_prompt= False无效,会生成一个<|start_header_id|>assistant<|end_header_id|>的冗余后缀,详情见:
BUG Chat template doesn't respect `add_generation_prompt`flag from transformers tokenizer
解决方式:微调时使用llama3旧模版替换即可
后来,Huggingface 现已经修复此问题 存在一些后三项为空项的推理结果
描述:llama3.1 推理时存在一些空项聚集出现的情况,即当“拒绝理由”为空时,“建议”与“其他提升”的大项不小的概率也为空
试图用人的角度去思考:如果论文没有“拒绝的理由”,那也就不需要“建议”和“其他的提升”了 ...
解决方式:推理时加入序列抑制适当降低“空项”出现的概率,详情见下文 模型推理格式问题
描述:论文推理未严格遵循7大项的格式 (仅特定的论文, 出现概率极低) 猜测:llama3.1 可能在论文审稿场景有专门的sft微调,summary weak strengths suggestion 等是顶级期刊reviewer常用的review格式,可能是本次微调数据较少,没有完全改变原审稿的格式

1.3 推理结果:PK llama3和GPT4

1.3.1 直接推理

直接推理之下

左图:情况4 7review 微调llama-3.1-8B-Instruct 右图:情况4 7review 微调llama3-8b-instruct-8k

可以看出来,同样为情况4 7review数据下,llama3.1的效果较llama3存在较大提升

接下来,对比下和GPT4的结果呢?如下图所示

左图:情况4 7review 微调llama-3.1-8B-Instruct 右图:情况4 paper使用7大项提示工程gpt4-1106的结果

结论:由于在未加空项序列抑制的情况下,llama3.1推理结果存在一定比例后三项为空项的情况,这在与gpt4-1106 pk是处于劣势的,下文加入适当序列抑制后,将反超gpt4

1.3.2 加入序列抑制之后的推理

序列抑制的原理:适当减少空项序列 “<No related terms>” 生成的概率,增加模型生成的稳定性

简言之,序列抑制的本质就是 适当降低 我们希望生成内容为空项 的概率 具体来讲:模型某大项若概率采样生成了空项序列 “<No related terms>” , 后续该大项将不再生成子项 (训练数据的特点),而若不生成空项序列时大可能生成两个子项,而且该大项的空项序列还可能影响其他大项子项生成效果(在本次微调llama3.1模型表现较明显), 所以模型生成子项总数的方差较大,宏观表现就是模型输出不稳定。所以进行适当的“<No related terms>”序列抑制将减少模型生成结果的方差

疑问:减少“空项”出现的概率,“强制”让模型输出大项的子项,会生成不合理的结果吗?

答:应该不会,大模型输出token是具有一定概率性的,较好的微调的前提下,除了“空项token”外,其他的token也是合理的输出,而控制好“空项”的惩罚力度是比较重要的(本节中参与pk的模型序列抑制系数全部为0.95)

至于序列抑制实现代码详见七月官网首页的:大模型项目开发线上营 第二期

当加了序列抑制的llama3.1微调版模型去PK 没加序列抑制的llama3.1微调版模型时,得到的结果如下图所示

左图:情况4 7review 微调llama-3.1-8B-Instruct + 空项序列抑制 右图:情况4 7review 微调llama-3.1-8B-Instruct

如此,证明了对空项做序列抑制的有效性

那再去PK下 我们的基线——GPT4 1106呢,如下图所示

左图:情况4 7review 微调llama-3.1-8B-Instruct + 空项序列抑制 右图:情况4 paper使用7大项提示工程gpt4-1106的结果

结论:llama3.1 推理pk反超gpt-1106

第二部分 通过早期paper-4方面review微调llama3.1以超GPT4

既然本文开头提到了:“早7数据下,超gpt4 超的不容易;但早4数据下,超gpt4 则很轻松”,那我们来具体看下在早4数据下的微调效果

2.1 早4数据下的微调prompt:让模型针对早期paper预测4方面review

微调策略与上文微调情况4 早7review数据几乎一致,仅

更换微调数据集为情况3数据集(还是可以用之前那套通过GPT做多聚一摘要出来4方面review,即早4——早期paper-4方面review) 情况3所需的微调prompt:让模型针对早期paper预测4方面review
PROMPT = """You are a helpful assistant, below is an "Instruction" that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.
Instruction:
 you are a professional machine learning conference reviewer who reviews a given paper and considers 4 criteria: 
 ** Significance and novelty **
 ** Potential reasons for acceptance **
 ** Potential reasons for rejection **
 ** Suggestions for improvement **
The given paper is as follows.""".strip()

2.2 推理结果:PK llama3和GPT4

2.2.1 PK llama3-8b-instruct-8k(qdora)

如下图所示

左图:情况3 4review 微调llama3.1-8B-Instruct 右图:情况3 4review 微调llama3-8b-instruct-8k(qdora)

结论:同样为情况3 4review数据下,llama3.1推理的效果较llama3存在一定提升,考虑到情况3 4 review的大项数目与子项数目相对于情况4 7review均较少,可能llama3.1在4review数据上难以发挥“全部实力”,因此与llama3的差距不太大

2.2.2 PK GPT4 1106

如下图所示

左图:情况3 4review 微调llama-3.1-8B-Instruct 右图:情况3 paper使用4大项提示工程gpt4-1106的结果

结论:同样为情况3 4review数据下,微调llama3.1的效果较gpt4-1106强很多

至于具体微调的代码、数据集以及更多细节,详见七月官网首页的:大模型项目开发线上营 第二期

总结

### 文章总结
本文探讨了通过对LLaMA3.1使用早期论文的七方面评审(早7)和四方面评审(早4)数据集进行微调,使其性能在不同数据集上与GPT4进行对比的过程及结果。主要内容包括以下几个方面:
#### **前言**
- **背景铺垫**:建议先阅读前期关于论文审稿GPT版本及提升数据质量的三篇文章,以便更好地理解本文内容。
- **实验设定**:
- 对LLaMA3.1及LLaMA3早7数据微调后的模型进行了性能测试。
- 在LLaMA3.1推出后,项目组同事又进行了针对LLaMA3.1的早7数据微调实验。
- 为进一步对比,进行了早4数据集的微调实验,并与LLaMA2、LLaMA3、GPT4的推理结果进行了对比。
#### **第一部分:通过早期paper-7方面review微调LLama3.1以超GPT4**
- **基本前提**:LLaMA3.1在结构上与LLaMA3基本一致,但增加了更多功能或性能优化。
- **微调环境与过程**:
- **环境配置**:包括Linux系统、CUDA12.1支持、显卡配置等。
- **模型下载与安装**:通过Git和Hugging Face Hub下载模型,并安装必要的依赖库。
- **数据集**:使用基于GPT总结的早期paper-7方面review数据集。
- **微调参数**:确定了与LLaMA3相同的迭代次数和其他主要微调参数。
- **微调过程中遇到的问题**:如模版冗余后缀、空项聚集、推理格式不严格等问题,并给出了解决方案。
- **推理结果**:
- **直接推理**:LLaMA3.1在7review数据下表现优于LLaMA3,但与GPT4的PK中因空项问题稍显劣势。
- **加入序列抑制后的推理**:通过降低空项生成的概率,LLaMA3.1最终实现了对GPT4的反超。
#### **第二部分:通过早期paper-4方面review微调LLama3.1以超GPT4**
- **微调提示(Prompt)**:针对4方面评审(早4数据集)进行微调。
- **推理结果**:
- **PK LLaMA3**:LLaMA3.1在4review数据下的推理效果有所提升,但优势不及7review数据明显。
- **PK GPT4**:LLaMA3.1在4review数据下的推理性能显著优于GPT4。
#### **个人心得**
- LLaMA3.1整体性能优于LLaMA3。
- 现阶段通过微调超过GPT4已不再罕见。
#### **结论**
- 早期paper的七方面和四方面评审数据均能有效提升LLaMA3.1的性能,尤其是四方面评审数据集下的调整效果更加显著,能够轻松超过GPT4的性能。
整体来看,本文主要探讨了如何通过微调LLaMA3.1模型,使用早期论文评审数据来提升其在特定任务上的性能,并成功实现了对GPT4的反超。

更新时间 2024-08-25