天天看點

最近LLaMA系模型發展如何?指令微調的核心問題又是什麼?

作者:計算機視覺研究院

關注并星标

從此不迷路

計算機視覺研究院

最近LLaMA系模型發展如何?指令微調的核心問題又是什麼?
最近LLaMA系模型發展如何?指令微調的核心問題又是什麼?

公衆号ID|計算機視覺研究院

學習群|掃碼在首頁擷取加入方式

計算機視覺研究院專欄

Column of Computer Vision Institute

符堯([email protected]),愛丁堡大學 (University of Edinburgh) 博士生,大學畢業于北京大學。ChatGPT 大火之後,在 2023 年 2 月 24 日,LLaMA 的出現讓 instruction tuning 這個方向變得火熱;3 月 18 日,Alpaca 讓大家看到從成熟的模型 distill 小模型成為還不錯的 ChatBot 的可能性,進而引發羊駝系模型寒武紀大爆發。

最近LLaMA系模型發展如何?指令微調的核心問題又是什麼?

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!!
最近LLaMA系模型發展如何?指令微調的核心問題又是什麼?

然後是 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-Harness(https://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 到長的回複
最近LLaMA系模型發展如何?指令微調的核心問題又是什麼?

回複越長,GPT-4 越喜歡,分越高

4 - FLANv2 的效果,Long-Context

FLANv2 是一個很神奇的資料集,它除了不加 user preference 之外什麼都加

最近LLaMA系模型發展如何?指令微調的核心問題又是什麼?
  • 注意 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 ,不知道為什麼

最近LLaMA系模型發展如何?指令微調的核心問題又是什麼?

注意這裡 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

最近LLaMA系模型發展如何?指令微調的核心問題又是什麼?

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

© THE END

轉載請聯系本公衆号獲得授權

最近LLaMA系模型發展如何?指令微調的核心問題又是什麼?

計算機視覺研究院學習群等你加入!

ABOUT

計算機視覺研究院

計算機視覺研究院主要涉及深度學習領域,主要緻力于目标檢測、目标跟蹤、圖像分割、OCR、模型量化、模型部署等研究方向。研究院每日分享最新的論文算法新架構,提供論文一鍵下載下傳,并分享實戰項目。研究院主要着重”技術研究“和“實踐落地”。研究院會針對不同領域分享實踐過程,讓大家真正體會擺脫理論的真實場景,培養愛動手程式設計愛動腦思考的習慣!

VX:2311123606

🔗

繼續閱讀