詳解“小而優(yōu)”的大語(yǔ)言模型Zephyr 7B
譯文Zephyr是Hugging Face發(fā)布的一系列大語(yǔ)言模型,使用蒸餾監(jiān)督微調(diào)(dSFT)在更龐大的模型上進(jìn)行訓(xùn)練,顯著提高了任務(wù)準(zhǔn)確性。
2023年是屬于大語(yǔ)言模型(LLM)和開(kāi)源的一年。許多初創(chuàng)公司和企業(yè)開(kāi)放了模型和權(quán)重的源代碼,以應(yīng)對(duì)ChatGPT和Claude等專有LLM。2023年的一些重要公司和模型(開(kāi)源)包括:
- Meta(Llama和LLamav2)
- TII(Falcon 7B、40B和180B)
- Mistral(Mistral 7B和Mixtral8x7B)
然而,部署相對(duì)容易和便宜的7B模型無(wú)法與70B等更龐大的模型相提并論。最強(qiáng)大的開(kāi)源模型是Mistral 7B,它勝過(guò)許多更龐大的模型。
圖1. Mistral-7B與各大模型的比較
可見(jiàn),這些小模型仍然不能很好地響應(yīng)自然提示,需要良好的提示工程。
引言
Zephyr 7B是由Hugging Face H4團(tuán)隊(duì)創(chuàng)建的一個(gè)模型,主要目的是創(chuàng)建一個(gè)更小的語(yǔ)言模型,與用戶意圖保持一致,但性能勝過(guò)更大的模型。
Zephyr是Mistral-7B的校準(zhǔn)版本,主要借助蒸餾的優(yōu)點(diǎn)創(chuàng)建而成,在學(xué)術(shù)和對(duì)話衡量基準(zhǔn)方面與70B型號(hào)不相上下。
圖2. Zephyr-7B的性能比較
關(guān)鍵特性
Zephyr性能出色的原因是H4團(tuán)隊(duì)使用了這幾項(xiàng)關(guān)鍵技術(shù)。
- 自我指導(dǎo)數(shù)據(jù)創(chuàng)建和DSFT(蒸餾監(jiān)督微調(diào))
- 反饋收集
- DSFT模型的DDPO(蒸餾直接偏好優(yōu)化)
自我指導(dǎo)數(shù)據(jù)創(chuàng)建和DSFT
傳統(tǒng)上,監(jiān)督微調(diào)(SFT)通過(guò)高質(zhì)量的指令完成針對(duì)大語(yǔ)言模型的數(shù)據(jù)創(chuàng)建。這些數(shù)據(jù)的構(gòu)建成本很高,需要人工監(jiān)督。
其中一個(gè)值得關(guān)注的方法是使用Teacher模型(已經(jīng)過(guò)訓(xùn)練的LLM)來(lái)生成指令和響應(yīng)。這項(xiàng)蒸餾技術(shù)首先用于Alpaca,證明了借助蒸餾監(jiān)督微調(diào),小模型的性能可以勝過(guò)大模型。
圖3. 自我指導(dǎo)管道
H4團(tuán)隊(duì)使用Zephyr構(gòu)建用于執(zhí)行DSFT的高質(zhì)量監(jiān)督(指令和完成)數(shù)據(jù)集。根據(jù)生成的指令/完成訓(xùn)練模型是一種蒸餾形式,名為DSFT(蒸餾監(jiān)督微調(diào))。
反饋收集
大語(yǔ)言模型通常借助人類(lèi)反饋強(qiáng)化學(xué)習(xí)(RLHF)進(jìn)行對(duì)齊。Zephyr則是使用來(lái)自更好的教師模型(比如GPT-4)的反饋來(lái)對(duì)齊模型的偏好,遵循超級(jí)反饋(Ultra Feedback)方法。
圖4. 超級(jí)反饋構(gòu)建過(guò)程
其工作方式是,來(lái)自SFT的每個(gè)監(jiān)督提示被傳遞給4個(gè)模型(Claude、Llama和Falcon等),針對(duì)單個(gè)提示的4個(gè)響應(yīng)中每一個(gè)都借助GPT-4來(lái)評(píng)分?,F(xiàn)在我們有了一個(gè)數(shù)據(jù)集,包括輸入(x)、最高評(píng)分完成(yw)和表示為低評(píng)分完成的隨機(jī)提示(yl),即我們有一個(gè)三元組(x、yw和yl)。
偏好優(yōu)化
最后這一步的目標(biāo)是最大化模型的偏好,偏向yw(最高評(píng)分完成)而非yl(低評(píng)分完成)。這是使用DPO(直接偏好優(yōu)化)來(lái)完成的。使用DPO比使用普通RLHF來(lái)得簡(jiǎn)單,直觀上性能優(yōu)于RLHF。本例中的方法被之所以稱為dDPO,是由于它使用借助教師模型生成的蒸餾數(shù)據(jù)集。
圖5. DPO vs RLHF
整個(gè)算法看起來(lái)有點(diǎn)像這樣:
可以轉(zhuǎn)換成以下步驟:
- 從dSFT模型(僅向前)計(jì)算(x, yw)和(x, yl)的概率。
- 從dDPO模型計(jì)算(x, yw)和(x, yl)的概率。
- 計(jì)算Eq 1,反向傳播以更新。重復(fù)步驟。
訓(xùn)練細(xì)節(jié)
Zephyr使用的基本型號(hào)是Mistral-7B,它在發(fā)布時(shí)是最先進(jìn)的開(kāi)源模型。他們使用TRL庫(kù)進(jìn)行微調(diào)和對(duì)齊。Deep-Speed Zero 3和Flash-Attention 2用來(lái)優(yōu)化和加速訓(xùn)練,充分利用GPU。模型使用AdamW優(yōu)化器進(jìn)行訓(xùn)練,不使用權(quán)值衰減。所有實(shí)驗(yàn)都在16臺(tái)A100s上運(yùn)行,使用bfloat16精度,通常需要2-4小時(shí)才能完成??梢詤㈤喸撐?https://arxiv.org/pdf/2310.16944.pdf),深入了解Zephyr訓(xùn)練程序的細(xì)節(jié)。
結(jié)果
Zephyr團(tuán)隊(duì)結(jié)合了最好的技術(shù)來(lái)訓(xùn)練大語(yǔ)言模型,它只需70億個(gè)參數(shù)就可以媲美400億參數(shù)模型的性能,可以媲美700億個(gè)參數(shù)的聊天模型。
表2:Zephyr與其他LLM的比較
圖6. Zephyr與其他LLM的比較
使用
Zephyr模型在Hugging Face上免費(fèi)可用,可以像其他語(yǔ)言模型一樣使用。
import torch
from transformers import pipeline
pipe = pipeline("text-generation",
model="HuggingFaceH4/zephyr-7b-alpha", # can also use the beta model
torch_dtype=torch.bfloat16,
device_map="auto")
# We use the tokenizer's chat template to format each message - see
https://huggingface.co/docs/transformers/main/en/chat_templating
messages = [
{
"role": "system",
"content": "You are a friendly chatbot who always responds in the style of a
pirate",
},
{"role": "user", "content": "How many helicopters can a human eat in one
sitting?"},
]
prompt = pipe.tokenizer.apply_chat_template(messages, tokenize=False,
add_generation_prompt=True)
outputs = pipe(prompt, max_new_tokens=256, do_sample=True, temperature=0.7,
top_k=50, top_p=0.95)
print(outputs[0]["generated_text"])
輸出:
<|system|>
You are a friendly chatbot who always responds in the style of a pirate.
<|user|>
How many helicopters can a human eat in one sitting?
<|assistant|>
Ah, me hearty matey! But yer question be a puzzler! A human cannot eat a
helicopter in one sitting, as helicopters are not edible. They be made of metal,
plastic, and other materials, not food!
結(jié)論
Zephyr-7B是一個(gè)小模型,展示了LLM提煉成小模型的能力。由此生成的模型Zephyr-7B基于Mistral-7B,為70億參數(shù)聊天模型奠定了新的先進(jìn)記錄,甚至在MT-Bench上的性能勝過(guò)Llama2-Chat-70B。
參考資料:
- Zephyr:語(yǔ)言模型對(duì)齊直接蒸餾(https://arxiv.org/abs/2310.16944)
- HuggingFace Zephyr博文(https://huggingface.co/blog/Isamu136/understanding-zephyr)
- 自我指導(dǎo):https://arxiv.org/abs/2212.10560
- 超級(jí)反饋:https://arxiv.org/abs/2310.01377
原文標(biāo)題:Exploring the Zephyr 7B: A Comprehensive Guide to the Latest Large Language Model,作者:Ahmad Anis
鏈接:https://www.kdnuggets.com/exploring-the-zephyr-7b-a-comprehensive-guide-to-the-latest-large-language-model。