方案计划网站,北京公司车牌指标,做网站的公司前三名,wordpress花园前言
对于llama3#xff0c;我们之前已经做了针对llama3 早7数据微调后的测评
去pk llama2的早7数据微调后#xff0c;推理测试集中的早期paper#xff1a;出来7方面review去pk gpt4推理测试集中的早期paper#xff1a;7方面reviewground truth是早期paper的7方面人工rev…前言
对于llama3我们之前已经做了针对llama3 早7数据微调后的测评
去pk llama2的早7数据微调后推理测试集中的早期paper出来7方面review去pk gpt4推理测试集中的早期paper7方面reviewground truth是早期paper的7方面人工review
后来llama3.1出来后考虑到性能高于llama3所以项目组同事青睐、文弱上周做了llama3.1通过早7数据微调后的测评
去pk llama3的早7数据微调后推理测试集中的早期paper出来7方面review去pk gpt4推理测试集中的早期paper7方面reviewground truth是早期paper的7方面人工review
随后青睐、文弱又分别做了
llama3 早4测评 去pk llama2的早4数据微调后推理测试集中的早期paper出来4方面review 去pk gpt4推理测试集中的早期paper4方面review ground truth是测试集早期paper的4方面人工reviewllama3.1 早4测评 去pk llama3的早4数据微调后推理测试集中的早期paper出来4方面review 去pk gpt4推理测试集中的早期paper4方面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_SMUDGE1 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
trl0.8.6
transformers4.43.3
# flash-attn 单独安装
# pip install flash-attn2.6.3 --no-build-isolation # 需要等待一段时间最好有代理
deepspeed0.14.0
torch2.3.1
ray
numpy1.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 size16 梯度累计总batch size16 lr1e-4 学习率的大小 max_prompt_length11138 paper 最长的大小超过将被截取 max_response_length1150 review 最长的大小超过将被截取 save_steps100 迭代100次保存一次模型 num_train_epoch3 迭代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 doesnt respect add_generation_promptflag 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强很多
至于具体微调的代码、数据集以及更多细节详见七月官网首页的大模型项目开发线上营 第二期