过去三个月,LLaMA系模型发展如何?指令微调的核心问题又是什么?

简介: 过去三个月,LLaMA系模型发展如何?指令微调的核心问题又是什么?


作者:符尧

符尧(yao.fu@ed.ac.uk),爱丁堡大学 (University of Edinburgh) 博士生,本科毕业于北京大学。


ChatGPT 大火之后,在 2023 年 2 月 24 日,LLaMA 的出现让 instruction tuning 这个方向变得火热;3 月 18 日,Alpaca 让大家看到从成熟的模型 distill 小模型成为还不错的 ChatBot 的可能性,从而引发羊驼系模型寒武纪大爆发。但仅仅过去三个月,大家开始发现意识到用 ChatGPT 的数据训练 LLaMA 的各种问题。本文回顾在过去三个月内的 LLaMA 系模型的发展,讨论 Instruction Tuning 的下一步挑战。


Disclaimer: 这篇文章算是一个 quick research memo,是从我近期的一个分享大纲里 edit 出来的,做了一些删减和补充;现阶段开源社区对于 LLM 训练清楚 / 不清楚的地方同时存在,我尽量做到引用 / 讨论的内容都是有切实证据,而不是基于流言。很多的内容是我跟对应论文的原作者直接讨论过的。但即便这样,我的 take 也可能有误,很多也讨论不出来,所以请大家直接在评论区 comment,积极参与讨论,真理越辩越明。


目录



1 - 起源


最开始三篇


  • InstructGPT: Training language models to follow instructions with human feedback
  • FLANv1: Finetuned Language Models Are Zero-Shot Learners
  • T0: Multitask Prompted Training Enables Zero-Shot Task Generalization


对比


  • InstructGPT 的目标是对齐,zero-shot /cross lingual 是副产物
  • 这篇文章用的 7B 的 Reward model 来对应 175B 的 Policy model,然后被 DeepSpeed Chat 以及之后一系列 RL 的开源工作 follow,这种做法应该是错的。
  • 正确的做法应该是用 Reward model scale up 换取 policy model 减小,见 [Scaling Laws for Reward Model Overoptimization](https://arxiv.org/abs/2210.10760) — 也就是说把两个模型大小换过来,用 175B 的 reward 去 PPO 7B 的 policy
  • 模型上线现阶段 10-50B 是一个比较跑得起的量级,再大太贵了
  • FLANv1 和 T0 的目标是 zero-shot,所以不对齐

然后是 Self-instruct


  • Self-Instruct: Aligning Language Models with Self-Generated Instructions


注意 self-instruct 的重点


  • Base model 可以是任意,不需要是经过了 alignment 之后的模型 (ChatGPT)
  • 复现了从初代 davinci 到 text-davinci-001 的过程 — 非常 insightful!!



然后是 FLANv2 — 很重要,我可能读了十遍以上,建议背诵全文


  • Scaling Instruction-Finetuned Language Models
  • 效果除了不加 human preference 之外其他都加,等下专门讨论
  • Human preference 确实是喜欢能说的,但是能说的模型不一定能干活。Flan 能干活,但是不能说,跟程序员一样


2 - LLaMA 出现之后


  • Alpaca:起始文章,但是模型本身强度并不多高
  • Vicuna
  • 在开源中只做对话强度不错,格式符合人类喜好,生成内容多,unique token 多
  • Automatic eval 中,可能 in-context learning /reasoning/knowledge suboptimal (体现在 MMLU,BBH 分数),不是说它不行,而是说它可以更好
  • GPT-4 eval 到底行不行还不好说,LMSys 团队自己说行,前提是 prompt engineering 做得足够到位:Judging LLM-as-a-judge with MT-Bench and Chatbot Arena
  • 另外 LMSys 的团队在 efficiency 方面非常强,模型的 serve 看 [vllm](https://github.com/vllm-project/vllm) 这个 project,或许是开源最快的
  • 然后一系列以 GPT-4 做 judge 然后号称自己达到了 GPT3.5 x% 水准的模型,全部不推荐,因为 Eval 不可靠
  • 但是存在几篇工作在 alignment 的时候没有依赖 ChatGPT,这些工作推荐,它们包括
  • LIMA: Less Is More for Alignment — 关注他们选数据的方法,推荐花一个小时的时间把他们的 [数据](https://huggingface.co/datasets/GAIR/lima) 有感情地朗读一遍,这样就知道什么样的 SFT 的数据是好数据了
  • Dromedary: Principle-Driven Self-Alignment of Language Models from Scratch with Minimal Human Supervision — 关注他们 prompt engineering 的方法,这个基本上是一个 LLaMA 版的 Constitutional AI - SFT
  • 然后是一些 paper (终于) 开始分析 instruction tuning 的 data mixture
  • Tulu: How Far Can Camels Go? Exploring the State of Instruction Tuning on Open Resources
  • 结果非常 mix,没办法下结论哪种 mixture 好
  • 但是知道哪种不好:NLP benchmark


3 - Eval 怎么做


首先,不要在一堆 benchmark 上算分数看平均,特别是不要在 GPT-3 的测试任务上看平均,因为平均下来大家都一样;推荐只看核心的有区分度的 benchmark


没有区分度的例子:


  • LM-Eval-Harnesshttps://github.com/EleutherAI/lm-evaluation-harness) ,benchmark 太多,平均下来掩盖优质 benchmark
  • 这里面其实涵盖了 MMLU 和 MATH,但是被其他数据集平均了
  • Summarization + Rouge / Translation + BLEU:
  • Rouge 和 BLEU 模型强弱只有四五分的差别,数字太小 v.s. accuracy 下模型强弱是 90 分和 10 分的差别,数字足够大
  • Rouge 和 BLEU 和人类偏好不 align — 注意 BLEU 也不完全 align

那么 Pretrain 建议看哪些呢?


  • 区分度,模型强弱需要能一眼看出
  • 分方向,现阶段可以暂时分成
  • 英文知识 — MMLU
  • 中文知识 — C-Eval
  • 推理 — GSM8k / BBH
  • 代码 — HumanEval / MBPP
  • 解决上面四项平衡之后,可以接着做
  • MATH:高难度 reasoning
  • Dialog:这个可能只有 human eval 才行,automatic eval 搞不定


接下来讲 Automatic Eval


Automatic Eval - 适合 pretrained checkpoint - 基本上可以看  https://github.com/FranxYao/chain-of-thought-hub 的做法


  • Knowledge: MMLU
  • 这个数据集很稳定,基本上没有 sensitivity issue
  • Reasoning:
  • GSM8k: 也比较稳定,但要注意答案提取函数的提出率,低于九十的话得多加 regular expression
  • BBH - Algorithmic:
  • 不是很稳定,需要注意答案提出率
  • BBH - Language:
  • 不是很稳定,需要注意答案提出率 — Chain-of-thought Hub 马上会出一个答案提出率对于结果的 sensitivity 的分析,结论是 BBH 比较 sensitive
  • 现在除了增大模型之外,还不清楚哪些操作可以增加 BBH 数据集上的分数
  • Coding:
  • Human Eval / MBPP: 似乎比较稳定但需要注意做 unbiased estimation
  • 先看上面的几个数据集,分数能够 match llama 之后,就看 MATH
  • MATH
  • 超级难,GPT-4 的分数
  • naive prompting: 42
  • → complexity based prompting: 50 https://openreview.net/forum?id=yf1icZHC-l9
  • → progressive hint prompting: 53 https://arxiv.org/abs/2304.09797
  • → majority voting over 18k: 69.6
  • → best of n with outcome based reward modeling: 72.4
  • → best of n with [process-based reward modeling](https://arxiv.org/abs/2305.20050): 78.2
  • → PPO + process-based reward modeling = ? 推测会上 90
  • 泛化?— 应该是比较强的,泛化一般而言跟基础模型大小正相关,跟 SFT 数据总量负相关,跟 SFT 数据丰富度正相关
  • 如果不是 GPT-4
  • Minerva / PaLM-2: 34.3
  • Galactica: 33.6 — 这篇文章操作很好,因为 Hallucination 被喷下架导致重要性被严重低估
  • 88B paper + 7B code + 7B encyclopedias, textbooks and educational material + 2B KB + 1B CC + 0.4B prompt /instruction * 4 epochs
  • LLaMA 65B: 10.6
  • 其他:低于 10 分


对于一个已经 finetune 成了 chatbot 的模型


  • 首先把上述 benchmark 用 few-shot 的方式过一遍,确保不要掉点
  • 如果只是 dialog finetuning 的话可能会伤已有的能力 (MMLU / BBH)
  • 如果掉点,则考虑 LM mixing / FLANv2 mixing
  • 注意 Chatbot 的 few-shot prompting 要用 dialog 的版本因为 single round 里塞很多 in-context example 模型可能不 instruction-following 不够强,见 CoT Hub 的 standard prompt library(https://github.com/FranxYao/chain-of-thought-hub/blob/main/spl/gsm8k/chat/few_shot_cot.chatml


  • 然后就是去 eval 用户偏好了,这个时候只能人做
  • 如果有很大的,已经训练好了的 reward model,可以用它 eval 上线的小型 / 中等模型,这个其实跟人做 eval 区别不大
  • 对于一个很大的 Policy Model
  • Online iterative RLHF 前期怎样都需要需要 expert eval
  • 后期需要 expert eval [with AI assistance](https://arxiv.org/abs/2206.05802)


那么能不能用稍微弱一点的模型做 eval 呢?— 可以用,但是注意 query 的难度和分布,注意 prompt engineering


  • 如果不经过 prompt engineering ,肯定不行,因为各种 bias
  • 如果 query 难度不够,diversity 不够,也不一定行
  • 如果 query 难度足够 + 经过了疯狂 prompt engineering,则对于 information seeking 类型的 eval ,或许可以,see https://arxiv.org/abs/2306.05685
  • 但是对于 reasoning 相关,non-information seeking 相关(比如 TLDR),又不一定行
  • 对于 information seeking 相关的 query 会 biased 到长的回复


回复越长,GPT-4 越喜欢,分越高


4 - FLANv2 的效果,Long-Context


FLANv2 是一个很神奇的数据集,它除了不加 user preference 之外什么都加



  • 注意 CoT prompting
  • 只在 62B 之后才会比 Direct 更好
  • 不加 knowledge (MMLU) 只加 reasoning (BBH)
  • FLANv2 增加的效果有
  • knowledge (MMLU)
  • reasoning (BBH)
  • Multilingual (TyDiQA / MGSM)
  • 注意 FLAN 的作者们验证过,没有数据泄露
  • 注意以上内容对 in-context learning 和 zero-shot 均成立
  • 但是 FLAN 的回复短,所以不加 user preference — Flan 的性格就像直男,能干活儿,话太少


注意区分数据泄漏和分布内泛化


  • 如果一个数据集的测试集被用来训练模型,叫做数据泄漏,此时模型的分数会特别高,不可信
  • 如果一个数据集的训练集被用来训练模型,叫做分布内泛化,此时模型的分数是可信的
  • 有些数据集分布内泛化的难度不高,比如 MMLU / C-Eval,基本上做 data scaling 就可以加分
  • 有些数据集,如果模型不强,即使看过了训练集,模型在测试集上也做不好,比如 GSM8K — 这种类型的数据集是优质 eval 数据集
  • 代码的难度可能介于 MMLU 和 GSM8k 之间,分布内泛化不像 GSM8K 那么难,但也不简单


然后根据最近Zero-Scrolls 上的数据(https://www.zero.scrolls-benchmark.com/leaderboard),FLAN 还可以加 Long-context Reasoning ,不知道为什么



注意这里 FlanT5 和 T0pp 只有 instruction 的数据集有区别,但是 FlanT5 仅靠 T5 的 relative positional encoding 来 naively scale 到 8k 的 context length 会显著高于 T0


Long Context 或许 data engineering 跟 neural architecture engineering 同样重要


5 - 代码


两篇文章的 data engineering 非常出色


  • WizardCoder: Empowering Code Large Language Models with Evol-Instruct
  • 通过不断 prompt AlpacaCoder 构造 instruction tuning 数据集,基于wizardlm的方法,使用了 chatgpt 来生成复杂指令和对应的回答
  • HumanEval,DS-1000 仅次于 GPT-4,超过 Claude / Bard
  • base model 用的是 StarCoder,这意味着 The Stack V3 的质量再次得到验证,同时注意 pretrain code data 可以过多个 epoch 但网页只过一个 epoch
  • Phi-1: Textbooks Are All You Need
  • Pretrain 数据集来源于 filtered code + prompt ChatGPT
  • Instruction tuning 的数据集来自于 prompt ChatGPT
  • base model 只有 1B


怎么评价


  • 一定要好好研究他们是如何 prompt base model 的 — 要对 base model 有信心,只要 MMLU / BBH / HumanEval 分高,它的潜力就超过你的想象
  • prompt 出来的数据集相当于给 HumanEval / MBPP 这种比较短的算法题搞了一个超大训练集
  • 但是不可以认为它对着测试集优化,因为它泛化的空间应该大于 HumanEval / MBPP — 这个泛化空间跟 model scale 显著正相关
  • 在此基础上,比较难的点是
  • Repo-level code understanding /completion — HumanEval / MBPP 还是有点短
  • Ability balance — 如果照着 Phi-1 的做法,除了代码之外的其他能力都会被冲掉


另外关于代码和文本的 data mixture: https://arxiv.org/abs/2305.16264


Continue training 时使用 50% 的代码作为 data mixture 不会伤模型 language 的能力,反而会提升 coding 和 reasoning


6 - Putting them together: 能力平衡


目标:


  • 构造一个 instruction tuning data mixture,使得 dialog /coding 增加
  • 同时 MMLU (English knowledge) / C-Eval (Chinese knowledge) / BBH and GSM8K (reasoning) 不掉点
  • In-context learning 不掉点


思路


  • 可以用 FLAN 打底 — 它非常大几乎相当于 continue training
    考虑做一个中文版的 FLAN — 最近智源发的COIG-PC(https://huggingface.co/datasets/BAAI/COIG-PC) 似乎有点像
  • code 的部分参照 WizardCoder 和 Phi-1 的做法
  • 以上数据做好之后,搜 instruction tuning 的 data mixture and data curriculum 的超参数
  • 用上面提到的方法做 Eval


7 - 总结


  • 现阶段 instruction tuning 核心问题是能力平衡
  • 基础能力的 Eval 可以参照 Chain-of-thought Hub,但 dialog 还是得人来,且人也不一定 eval 得足够好
  • FLAN 非常神奇,可以考虑做一个中文版
  • 抓紧把 instruction tuning 收尾,快点进到 reward modeling 阶段
  • 注意要先把 reward modeling 本身做好,确保 reward model 有判断力,再去做 PPO
  • 不要 reward model 还没搞清楚就上 PPO ,步子迈太大容易扯到


原文链接:https://yaofu.notion.site/6dafe3f8d11445ca9dc8a2ca1c5b199

相关文章
|
6月前
|
数据采集 自然语言处理 文字识别
大模型升级与设计之道:ChatGLM、LLAMA、Baichuan及LLM结构解析(下)
大模型升级与设计之道:ChatGLM、LLAMA、Baichuan及LLM结构解析(下)
622 0
|
6月前
|
机器学习/深度学习 数据采集 人工智能
大模型升级与设计之道:ChatGLM、LLAMA、Baichuan及LLM结构解析(上)
大模型升级与设计之道:ChatGLM、LLAMA、Baichuan及LLM结构解析(上)
914 0
|
28天前
|
人工智能 语音技术 UED
仅用4块GPU、不到3天训练出开源版GPT-4o,这是国内团队最新研究
【10月更文挑战第19天】中国科学院计算技术研究所提出了一种名为LLaMA-Omni的新型模型架构,实现与大型语言模型(LLMs)的低延迟、高质量语音交互。该模型集成了预训练的语音编码器、语音适配器、LLM和流式语音解码器,能够在不进行语音转录的情况下直接生成文本和语音响应,显著提升了用户体验。实验结果显示,LLaMA-Omni的响应延迟低至226ms,具有创新性和实用性。
48 1
|
3月前
长上下文能力只是吹牛?最强GPT-4o正确率仅55.8%,开源模型不如瞎蒙
【8月更文挑战第10天】新研究NoCha挑战显示,即使是顶级的大型语言模型GPT-4o,在处理长篇幅文本时正确率仅55.8%,低于人类直观水平。该挑战基于近作英文小说,检验模型对整本书信息的理解与推理能力。结果显示,模型在全局推理上的表现不佳,倾向于依赖局部信息而非整体上下文,尤其是在复杂推理需求高的科幻小说上表现更弱。这一发现揭示了当前模型在处理长上下文任务上的局限性。论文链接: [https://arxiv.org/pdf/2406.16264](https://arxiv.org/pdf/2406.16264)。
124 65
|
3月前
|
数据采集 人工智能 监控
赌你一定想要!OpenDataLab首款大模型多模态标注平台Label-LLM正式开源
Label-LLM 是一款专为大模型训练设计的多模态文本对话标注工具,支持团队协作,让标注工作变得简单高效。它不仅涵盖丰富的任务类型,如回答采集、偏好收集和内容评估等,还支持多模态数据标注,包括图像、视频和音频。Label-LLM具备预标注载入功能,能大幅提升工作效率,并提供全方位的任务管理与可视化分析,确保标注质量。快来体验这款强大的标注平台吧![部署文档](https://github.com/opendatalab/LabelLLM)
671 0
赌你一定想要!OpenDataLab首款大模型多模态标注平台Label-LLM正式开源
|
3月前
|
机器学习/深度学习 人工智能 PyTorch
AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比
AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比
79 1
|
5月前
|
人工智能 自然语言处理 算法
LLM主流开源代表模型(二)
随着ChatGPT迅速火爆,引发了大模型的时代变革,国内外各大公司也快速跟进生成式AI市场,近百款大模型发布及应用。
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
LLM主流开源代表模型(一)
随着ChatGPT迅速火爆,引发了大模型的时代变革,国内外各大公司也快速跟进生成式AI市场,近百款大模型发布及应用。
|
4月前
|
人工智能 自然语言处理 测试技术
Meta Llama 3 模型与amzBedrock 完美融合,释放无限潜能。如何通过SageMaker来部署和运行推理
Meta Llama 3 模型与amz Bedrock 完美融合,释放无限潜能。如何通过SageMaker 来部署和运行推理
59 0
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
让大模型不再巨无霸,这是一份最新的大模型参数高效微调综述
【5月更文挑战第12天】最新综述探讨了大模型参数高效微调,旨在减少计算成本、增强泛化能力和灵活性。方法包括Additive、Selective、Reparameterized和Hybrid PEFT,已应用于NLP、CV和多模态学习。尽管取得进展,仍需解决泛化、效率和可解释性问题。未来研究将关注多任务学习、强化学习和神经架构搜索。论文链接:https://arxiv.org/pdf/2403.14608.pdf
361 2