赞
踩
llama 3出来后,为了通过paper-review的数据集微调3,有以下各种方式
// 待更
// 待更
LLaMA Factory 现已支持 Llama 3 模型,提供了在 Colab 免费 T4 算力上微调 Llama 3 模型的详细实战教程:https://colab.research.google.com/drive/1d5KQtbemerlSDSxZIfAaWXhKr30QypiK?usp=sharing
同时社区已经公开了两款利用本框架微调的中文版 LLaMA3 模型,分别为:
// 待更
24年5.25日,我司审稿项目组的青睐同学,通过我司的paper-review数据集(先只取了此文情况1中晚期paper-4方面review数据中的1.5K的规模,另,本3.1.1节和3.1.2节都统一用的情况1中的晚期paper-4方面review数据),把llama3调通了
至于llama3的版本具体用的Llama-3-8B-Instruct-262k,这个模型不是量化的版本,其他很多版本虽然扩展长度了,但基本都传的量化后的,这个模型的精度是半精的(当然,还有比较重要的一点是这个模型的下载量比较高)
以下是关于本次微调的部分细节,如青睐所说
再后来用8卡A40对5K或15K数据微调时,便也都没有用S2-attention(关闭了),使用12K长度 + flash attention v2 微调
代码和上面跑1.5K的数据一样,也还是用的「七月大模型线上营那套longqlora代码」,但把单卡设置成多卡
且直接租2台「8卡的A40」,一台5K的数据,一台15K的数据,直接一块跑
以下是15K数据(晚期paper-4方面review)微调后针对YaRN那篇论文得到的推理结果
接下来,青睐先推理下测试集中的晚期paper,输出4方面review
最后,文弱测评一下,让GPT4-1106、情况1的llama2(也是晚期paper-4方面review),都统一跟人工4方面review做下匹配
// 待更
上两节用了晚期paper-4方面的review微调llama3-262k,类似于此文开头总结的情况1:用晚期paper-4方面review微调llama2
本节咱们将基于15K的早期paper-4方面review,类似于此文开头总结的情况3:用早期paper-4方面review微调llama2
本节微调完之后,自然便可以与以下模型PK(针对哪个情况,则用那个情况的paper,所以评估llama3-262k版本的情况3时,则都统一早期paper)
llama3版本的情况3 当PK 上两节的llama3版本的情况1,情况如下(当然,按理得胜,毕竟情况3的数据更强,相当于都是llama3,但数据质量不一样,当然,无论是llama2 还是llama3,按道理情况3就得好过情况1,毕竟情况3 早4,情况1 晚4,情况3-早4的数据质量是更高的)
当llama3版本的情况3 PK llama2版本的情况3,按理得胜,毕竟llama3更强
当llama3版本的情况3 PK llama2版本的情况1(以阿荀微调的longqlora 7B做为情况1的基准),按理更得胜,毕竟llama3更强且情况3的数据更强,但目前得到的结果有些奇怪(如下图所示),没达预期,正在找原因中,待后续更新..
// 更多细节暂见我司的:大模型商用项目之审稿微调实战营
之后,我们发现使用 15k 情况1样本仅flash attention v2直接微调 llama3-8b-instruct-262k效果不佳,具体可以下面评估结果
可以看到两者性能相当,这个阶段,并没有得到微调llama3性能超过微调llama2的结论,推断可能是llama3-8b-262k原始微调数据集与审稿12k数据集长度分布不太匹配,请看下文第四部分将使用llama-3-8B-Instruct-8k + PI 重新微调,最后获得大幅度性能提升
下面训练的数据集皆为15k样本(样本长度普遍9k左右,最长不超过12k),评估方法为基于groud truth 命中数pk,模型取验证集loss最低的模型
此阶段将评估微调llama3-8b-8k与微调llama3-8b-262k&llama2性能差距
经过评估发现,llama3-8b-8k + PI 性能较大幅度领先llama3-8b-262k的性能,如下所示
且经过测试,llama3 在论文审稿场景下的性能确实领先 llama2
此外,下面的这个实验,也无疑再次证明llama3 性能领先 llama2
一方面是微调参数(主要)
参数 | 说明 |
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 |
二方面是情况4 微调system prompt
青睐微调的system prompt 采用与阿荀v4版prompt摘要出来的7方面review的大项对齐(详见此文《七月论文审稿GPT第4.5版、第4.6版、第4.8版:提升大模型数据质量的三大要素》的1.2.5节通过7要点摘要prompt第4版重新摘要整理7方面review数据)
比如微调prompt中的Potential项,便与7review中的Potential项对齐,具体为
- 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."""
下面训练的数据集皆为15k样本(样本长度普遍9k左右,最长不超过12k),评估方法为基于groud truth 命中数pk
结论:同样为情况4 7review数据下,llama3的效果较llama2有较大提升
为了保证评估的公平性,对于微调llama3-8b-instruct-8k来说情况3与情况4仅数据不同,微调的策略完全一致
结论:微调策略一致的前提下,摘要7review微调的性能相对于4review有大幅度提升
结论:gpt4-1106基于7 大项提示工程生成的观点数相比于基于4 大项提示工程的观点数要多很多,gpt4展现出了“话痨”的特点,虽说其观点的精确率不高,但基于命中数的评估方式还是让gpt4占尽了优势,从1.3节“情况4推理结果分析”可知,llama3推理过程中有不少项存在着“拒答”的现象,这在pk中是处于劣势的
因此,尝试是否可以通过对空项序列也就是“<No related terms>”略加惩罚的方式,合理地降低其采样的概率,减少模型拒答的概率,提升模型的推理性能呢,具体见下文
// 待更
上文提到,llama3推理过程中有不少项存在着“拒答”的现象,推测的原因之一是在训练集中空项序列<No related terms>比较频繁出现导致其采样概率较高,而恰好采样到空项序列后,模型在该大项就不会生成其他的子项了,这也导致模型输出不是很稳定
下面将实现一种对固定序列的采样概率进行惩罚的实现代码
下述代码的逻辑是当前文生成的结果与被抑制序列部分匹配时,降低抑制序列下个token生成的概率从而减低了整个抑制序列采样的概率
- class HuggingFacePenaltySequenceLogitsProcessor():
- def __init__(self,
- tokenizer,
- target_sequences = [],
- penalty_factor=0.5, # 0.0 - 1.0 之间, 1.0 表示不惩罚, use_multiplicative 为False时, penalty_factor 输入整数
- use_multiplicative=True
- ):
- """
- Hugging Face 初始化抑制某些目标序列的处理器。
- 参数:
- - tokenizer: 分词器对象,用于将目标序列转换为token ID
- - target_sequences: 需要抑制的目标序列列表
- - penalty_factor: 惩罚因子,1. 用于调整目标序列的生成概率float 2. 用于控制抑制的强度int
- - use_multiplicative: 是否使用乘法方式应用惩罚(True为乘法,False为减法)
- """
-
- # 详细代码见七月官网首页的《大模型项目开发线上营2期》
本小节评估序列惩罚系数设置为0.7,以下llama3 penalty评估结果均使用上文中微调的模型,仅在推理策略中加入空项序列抑制
最终,加入空项序列抑制后pk评估提升14个点
且对比gpt4-1106 pk评估差距缩减5.5个点
至于加入序列惩罚后推理结果分析,详见七月官网首页( julyedu.com )的:大模型项目开发线上营2
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。