最近大模型發(fā)展卷的很,王慧文都被整抑郁了。想要研究學(xué)習(xí)大模型,應(yīng)該從哪里開始呢?
目前大模型發(fā)展生態(tài)最好的當(dāng)屬M(fèi)eta的LLaMA模型。如果GPT系列是Windows操作系統(tǒng)(巧了,OpenAI的大東家目前就是微軟),那么LLaMA就是Linux。如果GPT系列是蘋果手機(jī),那么LLaMA就是安卓。如果你想基于大模型做一些事情,無論是創(chuàng)業(yè)還是研究,最好選擇一個(gè)生態(tài)好的模型,畢竟有人用才有市場。
ChatGPT演化的路徑如下圖所示。
圖片中分了4個(gè)階段,但是第三個(gè)和第四個(gè)階段一般都會放在一起,屬于對齊階段。所以一般會分成如下3個(gè)階段:
Stage 1: 預(yù)訓(xùn)練(Pretrain)
Stage 2: 監(jiān)督微調(diào)(SFT)
Stage 3: 對齊(Reward Model + RLHF)
既然已經(jīng)有了成功ChatGPT這一成功的案例,大家都想基于LLaMA把這條路再走一遍,以期望做出自己的ChatGPT。
所以基于LLaMA的模型雖然很多,但是基本都可以放到上面3個(gè)框架當(dāng)中。本文就沿著預(yù)訓(xùn)練、監(jiān)督微調(diào)、對齊(RW+RLHF)這一路徑來梳理一下LLaMA生態(tài)中的各個(gè)模型。
主要是點(diǎn)出這些模型處在大模型訓(xùn)練的那一個(gè)階段,以及都做了哪些創(chuàng)新性的工作,方便你根據(jù)自己的興趣和資源來選擇使用哪一個(gè),對中文支持比較好的也都有注明。
Stage1 預(yù)訓(xùn)練: LLaMA 復(fù)現(xiàn)
RedPajama
參考LLaMA論文中的訓(xùn)練數(shù)據(jù),收集并且開源可商用。
https://github.com/togethercomputer/RedPajama-Data
Baichuan-7B(支持中文)
采用LLaMA的相同架構(gòu),在中文上做預(yù)訓(xùn)練。可商用。
王小川這次做大模型的切入點(diǎn)其實(shí)挺不錯(cuò)的,綁定到LLaMA的生態(tài)上,然后在中文上有所突破。可能也在構(gòu)思新三級火箭了吧。
目前Baichuan可以算是第一個(gè)LLaMA中文預(yù)訓(xùn)練模型,所以后面的工作都可以在這上面都走一遍,估計(jì)沒多久Baichuan-Alapca, Baichuan-Vicuna就都出來了。
https://github.com/baichuan-inc/baichuan-7B
OpenLLaMA
參考LLaMA的代碼,在Apache 2.0 license下的重新實(shí)現(xiàn)和訓(xùn)練。使用了RedPajama訓(xùn)練集合。
https://github.com/openlm-research/open_llama
Lit-LLaMA
參考LLaMA,在Apache 2.0 license下的只有代碼的重新實(shí)現(xiàn)。同時(shí)支持加載原始LLaMA和OpenLLaMA的權(quán)重。
https://github.com/Lightning-AI/lit-llama
Stage 2: 監(jiān)督微調(diào)
因?yàn)轭A(yù)訓(xùn)練模型本質(zhì)上還是個(gè)續(xù)寫模型,所以并不能很好的滿足人們的需求,所以監(jiān)督微調(diào)的作用就是微調(diào)模型產(chǎn)生理想的回復(fù)。
在監(jiān)督微調(diào)這里,大家目標(biāo)都是一樣的,但是做法有些不同,主要是有錢和沒錢的區(qū)別。
有錢你可以全參數(shù)微調(diào),沒錢就只能使用一些低成本的方法,英文叫PEFT(Parameter-Efficient Fine-Tuning)。
PEFT確實(shí)是想我這種平民玩家的首選,但是有錢也可以用PEFT,它可以讓你微調(diào)更大的模型。比如我們就只能玩玩10B的,有點(diǎn)小錢用PEFT玩?zhèn)€幾十B的問題不大。
2.1 LLaMA + Instruction Finetuning(全量參數(shù))
Alpaca
llama7b + self-instruct數(shù)據(jù)指令微調(diào)。算是最早邁出LLaMA+SFT這一步的模型。最開始并沒有提供權(quán)重,后來通過diff的方式給出,需要LLaMA原始模型才能恢復(fù),github上有教程。
當(dāng)時(shí)他們采用1張8卡A100(80G顯存),52k的數(shù)據(jù),訓(xùn)練了3個(gè)小時(shí)。訓(xùn)練成本大概是100刀。
https://github.com/tatsu-lab/stanford_alpaca
Alpaca衍生模型
BELLE(支持中文): 最早是基于BLOOM的,后來也支持LLaMA https://github.com/LianjiaTech/BELLE
openAlpaca: OpenLLaMA + databricks-dolly-15k dataset 進(jìn)行指令微調(diào) https://github.com/yxuansu/OpenAlpaca
gpt4-x-alpaca: 用GPT4的數(shù)據(jù)微調(diào),數(shù)據(jù)集為GPTeacher https://huggingface.co/chavinlo/gpt4-x-alpaca
Vicuna
llama13b + ShareGPT對話數(shù)據(jù),微調(diào)
研發(fā)團(tuán)隊(duì)基于Vicuna發(fā)布了FastChat對話機(jī)器人。
和Alpaca一樣,受協(xié)議限制,vicuna模型公布的權(quán)重也是個(gè)delta,每個(gè)參數(shù)要加上llama原來的權(quán)重才是模型權(quán)重。
https://github.com/lm-sys/FastChat
Vicuna衍生模型
gpt4-x-vicuna-13b: 用GPT4的數(shù)據(jù)微調(diào),數(shù)據(jù)集為GPTeacher https://huggingface.co/NousResearch/gpt4-x-vicuna-13b
WizardLM
采用了Evol-Instruct來構(gòu)造指令,可以產(chǎn)生一些很難的指令.
深度演化包括五種操作:添加約束、深化、具體化、增加推理步驟并使輸入復(fù)雜化。
In-breadth Evolving 是突變,即根據(jù)給定的指令生成全新的指令
進(jìn)化是通過提示+LLM來實(shí)現(xiàn)的。
https://github.com/nlpxucan/WizardLM
TüLU
使用LLaMA + Human/GPT data mix 微調(diào)
驗(yàn)證了很多結(jié)論,論文值得一看。https://arxiv.org/abs/2306.04751
https://github.com/allenai/open-instruct
GPT4ALL
LLaMA用80w的GPT3.5的數(shù)據(jù)(code, story, conversation)微調(diào)而來。
https://github.com/nomic-ai/gpt4all
Koala
LLaMA13B基于ChatGPT Distillation Data和Open Source Data訓(xùn)練而來。
具體數(shù)據(jù)見下面:
https://bair.berkeley.edu/blog/2023/04/03/koala/
OpenBuddy(支持中文)
基于LLaMA,F(xiàn)alcon, OpenLLaMA微調(diào)的,只說用了對話數(shù)據(jù),細(xì)節(jié)沒透漏。
https://github.com/OpenBuddy/OpenBuddy
Pygmalion 7B
給予LLaMA微調(diào),使用了不同來源的56MB 的對話數(shù)據(jù),包含了人工和機(jī)器。
https://huggingface.co/PygmalionAI/pygmalion-7b
2.2 LLaMA + PEFT
PEFT目前最流行的是LoRA,挺巧妙的架構(gòu),可以看看https://arxiv.org/abs/2106.09685。
下面大多數(shù)的模型都是LLaMA+lora的架構(gòu),不只是文本,AIGC的頭部網(wǎng)站civitai.com上很多模型也都是基于lora的。
最近還出了QLoRA,在LoRA的基礎(chǔ)上加入了量化,進(jìn)一步降低顯存的使用。https://arxiv.org/abs/2305.14314。
Baize
LLaMA + Lora
https://github.com/project-baize/baize-chatbot
LLaMA-Adapter
LLaMA + Adapter Layer
https://github.com/OpenGVLab/LLaMA-Adapter
CalderaAI/30B-Lazarus
似乎是多個(gè)LoRA的merge,但是沒太公布太多細(xì)節(jié)。
在huggingface的leaderboard上排名還挺靠前。
https://huggingface.co/CalderaAI/30B-Lazarus
Chinese-LLaMA-Alpaca(支持中文)
https://arxiv.org/pdf/2304.08177.pdf
LLaMA + 擴(kuò)詞表 + lora
Chinese LLaMA是屬于局部參數(shù)預(yù)訓(xùn)練
Stage1: frozen encoder,只用來訓(xùn)練Embedding層。
Stage2: 只訓(xùn)練Embedding, LM head, lora weights
在Chinese LLaMA的基礎(chǔ)上,仿照Alpaca訓(xùn)練了Chinese Alpaca
https://github.com/ymcui/Chinese-LLaMA-Alpaca
Chinese-Vicuna(支持中文)
基于:https://github.com/tloen/alpaca-lora
lora + 中文instruction數(shù)據(jù)
chatv1的數(shù)據(jù)使用了50k中文指令+對話混合數(shù)據(jù)。
并沒有擴(kuò)充詞表,據(jù)說Vicuna1.1并沒有擴(kuò)充詞表,但是中文效果不錯(cuò)。
https://github.com/Facico/Chinese-Vicuna
Stage 3: 對齊(LLaMA + FT + RHLF)
這部分可以說是把ChatGPT的路徑完整走了一遍。
StableVicuna
Vicuna = LLaMA + FT
StableVicuna = Vicuna + RLHF
https://github.com/Stability-AI/StableLM
StackLLaMA
SFT: LLaMA + Lora
RM: LLaMA + Lora + 分類
https://huggingface.co/blog/zh/stackllama
其他:LLaMA 推理優(yōu)化
llama.cpp
用C/C++實(shí)現(xiàn)的推理,不依賴顯卡。
https://github.com/ggerganov/llama.cpp
GPTQ-for-LLaMA
4 bits quantization of LLaMA using GPTQ.
https://github.com/qwopqwop200/GPTQ-for-LLaMa
進(jìn)NLP群—>加入NLP交流群
原文標(biāo)題:其他:LLaMA 推理優(yōu)化
文章出處:【微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
?
評論
查看更多