人人妻人人澡人人爽人人精品av_精品乱码一区内射人妻无码_老司机午夜福利视频_精品成品国色天香摄像头_99精品福利国产在线导航_野花社区在线观看视频_大地资源在线影视播放_东北高大肥胖丰满熟女_金门瓶马车内剧烈运动

首頁>國(guó)內(nèi) > 正文

過去三個(gè)月,LLaMA系模型發(fā)展如何?指令微調(diào)的核心問題又是什么? 全球快看點(diǎn)

2023-06-30 10:07:45來源:機(jī)器之心

符堯([email protected]),愛丁堡大學(xué) (University of Edinburgh) 博士生,本科畢業(yè)于北京大學(xué)。

ChatGPT 大火之后,在 2023 年 2 月 24 日,LLaMA 的出現(xiàn)讓 instruction tuning 這個(gè)方向變得火熱;3 月 18 日,Alpaca 讓大家看到從成熟的模型 distill 小模型成為還不錯(cuò)的 ChatBot 的可能性,從而引發(fā)羊駝系模型寒武紀(jì)大爆發(fā)。但僅僅過去三個(gè)月,大家開始發(fā)現(xiàn)意識(shí)到用 ChatGPT 的數(shù)據(jù)訓(xùn)練 LLaMA 的各種問題。本文回顧在過去三個(gè)月內(nèi)的 LLaMA 系模型的發(fā)展,討論 Instruction Tuning 的下一步挑戰(zhàn)。


(資料圖)

Disclaimer: 這篇文章算是一個(gè) quick research memo,是從我近期的一個(gè)分享大綱里 edit 出來的,做了一些刪減和補(bǔ)充;現(xiàn)階段開源社區(qū)對(duì)于 LLM 訓(xùn)練清楚 / 不清楚的地方同時(shí)存在,我盡量做到引用 / 討論的內(nèi)容都是有切實(shí)證據(jù),而不是基于流言。很多的內(nèi)容是我跟對(duì)應(yīng)論文的原作者直接討論過的。但即便這樣,我的 take 也可能有誤,很多也討論不出來,所以請(qǐng)大家直接在評(píng)論區(qū) comment,積極參與討論,真理越辯越明。

目錄

圖片

1 - 起源

最開始三篇

InstructGPT: Training language models to follow instructions with human feedbackFLANv1: Finetuned Language Models Are Zero-Shot LearnersT0: Multitask Prompted Training Enables Zero-Shot Task Generalization

對(duì)比

InstructGPT 的目標(biāo)是對(duì)齊,zero-shot /cross lingual 是副產(chǎn)物這篇文章用的 7B 的 Reward model 來對(duì)應(yīng) 175B 的 Policy model,然后被 DeepSpeed Chat 以及之后一系列 RL 的開源工作 follow,這種做法應(yīng)該是錯(cuò)的。正確的做法應(yīng)該是用 Reward model scale up 換取 policy model 減小,見 [Scaling Laws for Reward Model Overoptimization](https://arxiv.org/abs/2210.10760) — 也就是說把兩個(gè)模型大小換過來,用 175B 的 reward 去 PPO 7B 的 policy模型上線現(xiàn)階段 10-50B 是一個(gè)比較跑得起的量級(jí),再大太貴了FLANv1 和 T0 的目標(biāo)是 zero-shot,所以不對(duì)齊

然后是 Self-instruct

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

注意 self-instruct 的重點(diǎn)

Base model 可以是任意,不需要是經(jīng)過了 alignment 之后的模型 (ChatGPT)復(fù)現(xiàn)了從初代 davinci 到 text-davinci-001 的過程 — 非常 insightful!!

圖片

然后是 FLANv2 — 很重要,我可能讀了十遍以上,建議背誦全文

Scaling Instruction-Finetuned Language Models效果除了不加 human preference 之外其他都加,等下專門討論Human preference 確實(shí)是喜歡能說的,但是能說的模型不一定能干活。Flan 能干活,但是不能說,跟程序員一樣2 - LLaMA 出現(xiàn)之后Alpaca:起始文章,但是模型本身強(qiáng)度并不多高Vicuna在開源中只做對(duì)話強(qiáng)度不錯(cuò),格式符合人類喜好,生成內(nèi)容多,unique token 多Automatic eval 中,可能 in-context learning /reasoning/knowledge suboptimal (體現(xiàn)在 MMLU,BBH 分?jǐn)?shù)),不是說它不行,而是說它可以更好GPT-4 eval 到底行不行還不好說,LMSys 團(tuán)隊(duì)自己說行,前提是 prompt engineering 做得足夠到位:Judging LLM-as-a-judge with MT-Bench and Chatbot Arena另外 LMSys 的團(tuán)隊(duì)在 efficiency 方面非常強(qiáng),模型的 serve 看 [vllm](https://github.com/vllm-project/vllm) 這個(gè)project,或許是開源最快的然后一系列以 GPT-4 做 judge 然后號(hào)稱自己達(dá)到了 GPT3.5 x% 水準(zhǔn)的模型,全部不推薦,因?yàn)?Eval 不可靠但是存在幾篇工作在 alignment 的時(shí)候沒有依賴 ChatGPT,這些工作推薦,它們包括LIMA: Less Is More for Alignment — 關(guān)注他們選數(shù)據(jù)的方法,推薦花一個(gè)小時(shí)的時(shí)間把他們的 [數(shù)據(jù)](https://huggingface.co/datasets/GAIR/lima) 有感情地朗讀一遍,這樣就知道什么樣的 SFT 的數(shù)據(jù)是好數(shù)據(jù)了Dromedary: Principle-Driven Self-Alignment of Language Models from Scratch with Minimal Human Supervision — 關(guān)注他們 prompt engineering 的方法,這個(gè)基本上是一個(gè) LLaMA 版的 Constitutional AI - SFT然后是一些 paper (終于) 開始分析 instruction tuning 的 data mixtureTulu: How Far Can Camels Go? Exploring the State of Instruction Tuning on Open Resources結(jié)果非常 mix,沒辦法下結(jié)論哪種 mixture 好但是知道哪種不好:NLP benchmark3 - Eval 怎么做

首先,不要在一堆 benchmark 上算分?jǐn)?shù)看平均,特別是不要在 GPT-3 的測(cè)試任務(wù)上看平均,因?yàn)槠骄聛泶蠹叶家粯樱煌扑]只看核心的有區(qū)分度的 benchmark

沒有區(qū)分度的例子:

LM-Eval-Harness(https://github.com/EleutherAI/lm-evaluation-harness),benchmark 太多,平均下來掩蓋優(yōu)質(zhì) benchmark這里面其實(shí)涵蓋了 MMLU 和 MATH,但是被其他數(shù)據(jù)集平均了Summarization + Rouge / Translation + BLEU:Rouge 和 BLEU 模型強(qiáng)弱只有四五分的差別,數(shù)字太小 v.s. accuracy 下模型強(qiáng)弱是 90 分和 10 分的差別,數(shù)字足夠大Rouge 和 BLEU 和人類偏好不 align — 注意 BLEU 也不完全 align

那么 Pretrain 建議看哪些呢?

區(qū)分度,模型強(qiáng)弱需要能一眼看出分方向,現(xiàn)階段可以暫時(shí)分成英文知識(shí) — MMLU中文知識(shí) — C-Eval推理 — GSM8k / BBH代碼 — HumanEval / MBPP解決上面四項(xiàng)平衡之后,可以接著做MATH:高難度 reasoningDialog:這個(gè)可能只有 human eval 才行,automatic eval 搞不定

接下來講 Automatic Eval

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

Knowledge: MMLU這個(gè)數(shù)據(jù)集很穩(wěn)定,基本上沒有 sensitivity issueReasoning:GSM8k: 也比較穩(wěn)定,但要注意答案提取函數(shù)的提出率,低于九十的話得多加 regular expressionBBH - Algorithmic:不是很穩(wěn)定,需要注意答案提出率BBH - Language:不是很穩(wěn)定,需要注意答案提出率 — Chain-of-thought Hub 馬上會(huì)出一個(gè)答案提出率對(duì)于結(jié)果的 sensitivity 的分析,結(jié)論是 BBH 比較 sensitive現(xiàn)在除了增大模型之外,還不清楚哪些操作可以增加 BBH 數(shù)據(jù)集上的分?jǐn)?shù)Coding:Human Eval / MBPP: 似乎比較穩(wěn)定但需要注意做 unbiased estimation先看上面的幾個(gè)數(shù)據(jù)集,分?jǐn)?shù)能夠 match llama 之后,就看 MATHMATH:超級(jí)難,GPT-4 的分?jǐn)?shù)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 = ? 推測(cè)會(huì)上 90泛化?— 應(yīng)該是比較強(qiáng)的,泛化一般而言跟基礎(chǔ)模型大小正相關(guān),跟 SFT 數(shù)據(jù)總量負(fù)相關(guān),跟 SFT 數(shù)據(jù)豐富度正相關(guān)如果不是 GPT-4Minerva / PaLM-2: 34.3Galactica: 33.6 — 這篇文章操作很好,因?yàn)?Hallucination 被噴下架導(dǎo)致重要性被嚴(yán)重低估88B paper + 7B code + 7B encyclopedias, textbooks and educational material + 2B KB + 1B CC + 0.4B prompt /instruction * 4 epochsLLaMA 65B: 10.6其他:低于 10 分

對(duì)于一個(gè)已經(jīng) finetune 成了 chatbot 的模型

首先把上述 benchmark 用 few-shot 的方式過一遍,確保不要掉點(diǎn)如果只是 dialog finetuning 的話可能會(huì)傷已有的能力 (MMLU / BBH)如果掉點(diǎn),則考慮 LM mixing / FLANv2 mixing注意 Chatbot 的 few-shot prompting 要用 dialog 的版本因?yàn)?single round 里塞很多 in-context example 模型可能不 instruction-following 不夠強(qiáng),見 CoT Hub 的 standard prompt library(https://github.com/FranxYao/chain-of-thought-hub/blob/main/spl/gsm8k/chat/few_shot_cot.chatml)然后就是去 eval 用戶偏好了,這個(gè)時(shí)候只能人做如果有很大的,已經(jīng)訓(xùn)練好了的 reward model,可以用它 eval 上線的小型 / 中等模型,這個(gè)其實(shí)跟人做 eval 區(qū)別不大對(duì)于一個(gè)很大的 Policy ModelOnline iterative RLHF 前期怎樣都需要需要 expert eval后期需要 expert eval [with AI assistance](https://arxiv.org/abs/2206.05802)

那么能不能用稍微弱一點(diǎn)的模型做 eval 呢?— 可以用,但是注意 query 的難度和分布,注意 prompt engineering

如果不經(jīng)過 prompt engineering ,肯定不行,因?yàn)楦鞣N bias如果 query 難度不夠,diversity 不夠,也不一定行如果 query 難度足夠 + 經(jīng)過了瘋狂 prompt engineering,則對(duì)于 information seeking 類型的 eval ,或許可以,see https://arxiv.org/abs/2306.05685但是對(duì)于 reasoning 相關(guān),non-information seeking 相關(guān)(比如 TLDR),又不一定行對(duì)于 information seeking 相關(guān)的 query 會(huì) biased 到長(zhǎng)的回復(fù)

回復(fù)越長(zhǎng),GPT-4 越喜歡,分越高

4 - FLANv2 的效果,Long-Context

FLANv2 是一個(gè)很神奇的數(shù)據(jù)集,它除了不加 user preference 之外什么都加

注意 CoT prompting只在 62B 之后才會(huì)比 Direct 更好不加 knowledge (MMLU) 只加 reasoning (BBH)FLANv2 增加的效果有knowledge (MMLU)reasoning (BBH)Multilingual (TyDiQA / MGSM)注意 FLAN 的作者們驗(yàn)證過,沒有數(shù)據(jù)泄露注意以上內(nèi)容對(duì) in-context learning 和 zero-shot 均成立但是 FLAN 的回復(fù)短,所以不加 user preference — Flan 的性格就像直男,能干活兒,話太少

注意區(qū)分?jǐn)?shù)據(jù)泄漏和分布內(nèi)泛化

如果一個(gè)數(shù)據(jù)集的測(cè)試集被用來訓(xùn)練模型,叫做數(shù)據(jù)泄漏,此時(shí)模型的分?jǐn)?shù)會(huì)特別高,不可信如果一個(gè)數(shù)據(jù)集的訓(xùn)練集被用來訓(xùn)練模型,叫做分布內(nèi)泛化,此時(shí)模型的分?jǐn)?shù)是可信的有些數(shù)據(jù)集分布內(nèi)泛化的難度不高,比如 MMLU / C-Eval,基本上做 data scaling 就可以加分有些數(shù)據(jù)集,如果模型不強(qiáng),即使看過了訓(xùn)練集,模型在測(cè)試集上也做不好,比如 GSM8K — 這種類型的數(shù)據(jù)集是優(yōu)質(zhì) eval 數(shù)據(jù)集代碼的難度可能介于 MMLU 和 GSM8k 之間,分布內(nèi)泛化不像 GSM8K 那么難,但也不簡(jiǎn)單

然后根據(jù)最近Zero-Scrolls 上的數(shù)據(jù)(https://www.zero.scrolls-benchmark.com/leaderboard),F(xiàn)LAN 還可以加 Long-context Reasoning ,不知道為什么

圖片

注意這里 FlanT5 和 T0pp 只有 instruction 的數(shù)據(jù)集有區(qū)別,但是 FlanT5 僅靠 T5 的 relative positional encoding 來 naively scale 到 8k 的 context length 會(huì)顯著高于 T0

Long Context 或許 data engineering 跟 neural architecture engineering 同樣重要

5 - 代碼

兩篇文章的 data engineering 非常出色

WizardCoder: Empowering Code Large Language Models with Evol-Instruct通過不斷 prompt AlpacaCoder 構(gòu)造 instruction tuning 數(shù)據(jù)集,基于wizardlm的方法,使用了 chatgpt 來生成復(fù)雜指令和對(duì)應(yīng)的回答HumanEval,DS-1000 僅次于 GPT-4,超過 Claude / Bardbase model 用的是 StarCoder,這意味著 The Stack V3 的質(zhì)量再次得到驗(yàn)證,同時(shí)注意 pretrain code data 可以過多個(gè) epoch 但網(wǎng)頁只過一個(gè) epochPhi-1: Textbooks Are All You NeedPretrain 數(shù)據(jù)集來源于 filtered code + prompt ChatGPTInstruction tuning 的數(shù)據(jù)集來自于 prompt ChatGPTbase model 只有 1B

怎么評(píng)價(jià)

一定要好好研究他們是如何 prompt base model 的 — 要對(duì) base model 有信心,只要 MMLU / BBH / HumanEval 分高,它的潛力就超過你的想象prompt 出來的數(shù)據(jù)集相當(dāng)于給 HumanEval / MBPP 這種比較短的算法題搞了一個(gè)超大訓(xùn)練集但是不可以認(rèn)為它對(duì)著測(cè)試集優(yōu)化,因?yàn)樗夯目臻g應(yīng)該大于 HumanEval / MBPP — 這個(gè)泛化空間跟 model scale 顯著正相關(guān)在此基礎(chǔ)上,比較難的點(diǎn)是Repo-level code understanding /completion — HumanEval / MBPP 還是有點(diǎn)短Ability balance — 如果照著 Phi-1 的做法,除了代碼之外的其他能力都會(huì)被沖掉

另外關(guān)于代碼和文本的 data mixture: https://arxiv.org/abs/2305.16264

圖片

Continue training 時(shí)使用 50% 的代碼作為 data mixture 不會(huì)傷模型 language 的能力,反而會(huì)提升 coding 和 reasoning

6 - Putting them together: 能力平衡

目標(biāo):

構(gòu)造一個(gè) instruction tuning data mixture,使得 dialog /coding 增加同時(shí) MMLU (English knowledge) / C-Eval (Chinese knowledge) / BBH and GSM8K (reasoning) 不掉點(diǎn)In-context learning 不掉點(diǎn)

思路

可以用 FLAN 打底 — 它非常大幾乎相當(dāng)于 continue training考慮做一個(gè)中文版的 FLAN — 最近智源發(fā)的COIG-PC(https://huggingface.co/datasets/BAAI/COIG-PC) 似乎有點(diǎn)像code 的部分參照 WizardCoder 和 Phi-1 的做法以上數(shù)據(jù)做好之后,搜 instruction tuning 的 data mixture and data curriculum 的超參數(shù)用上面提到的方法做 Eval7 - 總結(jié)現(xiàn)階段 instruction tuning 核心問題是能力平衡基礎(chǔ)能力的 Eval 可以參照 Chain-of-thought Hub,但 dialog 還是得人來,且人也不一定 eval 得足夠好FLAN 非常神奇,可以考慮做一個(gè)中文版抓緊把 instruction tuning 收尾,快點(diǎn)進(jìn)到 reward modeling 階段注意要先把 reward modeling 本身做好,確保 reward model 有判斷力,再去做 PPO不要 reward model 還沒搞清楚就上 PPO ,步子邁太大容易扯到

關(guān)鍵詞:

相關(guān)新聞

Copyright 2015-2020   三好網(wǎng)  版權(quán)所有 聯(lián)系郵箱:435 22 [email protected]  備案號(hào): 京ICP備2022022245號(hào)-21