首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐
2025年6月1日 星期日 4:49am

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

  • 25-02-15 07:21
  • 4509
  • 10826
blog.csdn.net

前言

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

  1. 七月论文审稿GPT第2版:用一万多条paper-review数据微调LLaMA2 7B最终反超GPT4
  2. 提升大模型数据质量的三大要素:找到早期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

基本前提

  1. llama3.1使用Qlora + flash atten v2微调情况4 15k样本(长度中位数9k,最长不超过12k)
  2. 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 模型下载

  1. # 安装 git-lfs
  2. curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
  3. sudo apt-get install git-lfs
  4. git lfs install
  5. # 下载模型
  6. GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct
  7. cd Meta-Llama-3.1-8B-Instruct
  8. git lfs pull --include="*.safetensors"
  9. # 可以再检查一下文件夹里的文件大小是否与Huggingface文件大小一致,重点检查超过1M的文件,如果存在某些文件文件不一致需要重新使用 git lfs pull 拉取一下该文件,将 --include= 改成该文件
  10. cd ..

1.1.3 环境安装

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

  1. accelerate
  2. peft
  3. trl==0.8.6
  4. transformers==4.43.3
  5. # flash-attn 单独安装
  6. # pip install flash-attn==2.6.3 --no-build-isolation # 需要等待一段时间,最好有代理
  7. deepspeed==0.14.0
  8. torch==2.3.1
  9. ray
  10. numpy==1.26.4
  11. PyGithub
  12. huggingface-hub
  13. evaluate
  14. datasets
  15. bitsandbytes
  16. einops
  17. wandb
  18. tensorboard
  19. tiktoken
  20. pandas
  21. scipy
  22. matplotlib
  23. sentencepiece
  24. nltk
  25. xformers
  26. hf_transfer
  27. loguru
  28. tqdm
  29. transformers_stream_generator
  30. openpyxl
  31. httpx
  32. joblib
  33. 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一致

  1. 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.
  2. Instruction:
  3. You are a professional machine learning conference reviewer who reviews a given paper and considers 7 criteria:
  4. ** How to evaluate the idea of the paper **
  5. ** Compared to previous similar works, what are the essential differences, such as any fundamental differences, improvements, innovations **
  6. ** How to evaluate the experimental results in the paper **
  7. ** Potential reasons for acceptance **
  8. ** Potential reasons for rejection **
  9. ** Other suggestions for further improving the quality of the paper **
  10. ** Other important review comments **
  11. 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 加入序列抑制之后的推理

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

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

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

答:应该不会,大模型输出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数据几乎一致,仅

  1. 更换微调数据集为情况3数据集(还是可以用之前那套通过GPT做多聚一摘要出来4方面review,即早4——早期paper-4方面review)
  2. 情况3所需的微调prompt:让模型针对早期paper预测4方面review
  1. 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.
  2. Instruction:
  3. you are a professional machine learning conference reviewer who reviews a given paper and considers 4 criteria:
  4. ** Significance and novelty **
  5. ** Potential reasons for acceptance **
  6. ** Potential reasons for rejection **
  7. ** Suggestions for improvement **
  8. 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强很多

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

注:本文转载自blog.csdn.net的v_JULY_v的文章"https://blog.csdn.net/v_JULY_v/article/details/141065546"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top