1800億參數,世界頂級開源大模型Falcon官宣!碾壓LLaMA 2,性能直逼GPT-4
一夜之間,世界最強開源大模型Falcon 180B引爆全網!
1800億參數,Falcon在3.5萬億token完成訓練,直接登頂Hugging Face排行榜。
基準測試中,Falcon 180B在推理、編碼、熟練度和知識測試各種任務中,一舉擊敗Llama 2。
甚至,Falcon 180B能夠與谷歌PaLM 2不差上下,性能直逼GPT-4。
不過,英偉達高級科學家Jim Fan對此表示質疑,
- Falcon-180B的訓練數據中,代碼只占5%。
而代碼是迄今為止對提高推理能力、掌握工具使用和增強AI智能體最有用的數據。事實上,GPT-3.5是在Codex的基礎上進行微調的。
- 沒有編碼基準數據。
沒有代碼能力,就不能聲稱「優于GPT-3.5」或「接近GPT-4」。它本應是預訓練配方中不可或缺的一部分,而不是事后的微調。
- 對于參數大于30B的語言模型,是時候采用混合專家系統(MoE)了。到目前為止,我們只看到OSS MoE LLM < 10B。
一起來看看,Falcon 180B究竟是什么來頭?
世界最強開源大模型
此前,Falcon已經推出了三種模型大小,分別是1.3B、7.5B、40B。
官方介紹,Falcon 180B是40B的升級版本,由阿布扎比的全球領先技術研究中心TII推出,可免費商用。
這次,研究人員在基底模型上技術上進行了創新,比如利用Multi-Query Attention等來提高模型的可擴展性。
對于訓練過程,Falcon 180B基于亞馬遜云機器學習平臺Amazon SageMaker,在多達4096個GPU上完成了對3.5萬億token的訓練。
總GPU計算時,大約7,000,000個。
Falcon 180B的參數規模是Llama 2(70B)的2.5倍,而訓練所需的計算量是Llama 2的4倍。
具體訓練數據中,Falcon 180B主要是RefinedWe數據集(大約占85%) 。
此外,它還在對話、技術論文,以及一小部分代碼等經過整理的混合數據的基礎上進行了訓練。
這個預訓練數據集足夠大,即使是3.5萬億個token也只占不到一個epoch。
官方自稱,Falcon 180B是當前「最好」的開源大模型,具體表現如下:
在MMLU基準上,Falcon 180B的性能超過了Llama 2 70B和GPT-3.5。
在HellaSwag、LAMBADA、WebQuestions、Winogrande、PIQA、ARC、BoolQ、CB、COPA、RTE、WiC、WSC 及ReCoRD上,與谷歌的PaLM 2-Large不相上下。
另外,它在Hugging Face開源大模型榜單上,是當前評分最高(68.74分)的開放式大模型,超越了LlaMA 2(67.35)。
Falcon 180B上手可用
與此同時,研究人員還發布了聊天對話模型Falcon-180B-Chat。該模型在對話和指令數據集上進行了微調,數據集涵蓋了Open-Platypus、UltraChat和Airoboros。
現在,每個人都可以進行demo體驗。
地址:https://huggingface.co/tiiuae/falcon-180B-chat
Prompt 格式
基礎模型沒有Prompt格式,因為它并不是一個對話型大模型,也不是通過指令進行的訓練,所以它并不會以對話形式回應。
預訓練模型是微調的絕佳平臺,但或許你不該直接使用。其對話模型則設有一個簡單的對話模式。
System: Add an optional system prompt here
User: This is the user input
Falcon: This is what the model generates
User: This might be a second turn input
Falcon: and so on
Transformers
從Transfomers 4.33開始,Falcon 180B可以在Hugging Face生態中使用和下載。
確保已經登錄Hugging Face賬號,并安裝了最新版本的transformers:
pip install --upgrade transformers
huggingface-cli login
bfloat16
以下是如何在 bfloat16 中使用基礎模型的方法。Falcon 180B是一個大模型,所以請注意它的硬件要求。
對此,硬件要求如下:
可以看出,若想對Falcon 180B進行全面微調,至少需要8X8X A100 80G,如果僅是推理的話,也得需要8XA100 80G的GPU。
from transformers import AutoTokenizer, AutoModelForCausalLM
import transformers
import torch
model_id = "tiiuae/falcon-180B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
prompt = "My name is Pedro, I live in"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
output = model.generate(
input_ids=inputs["input_ids"],
attention_mask=inputs["attention_mask"],
do_sample=True,
temperature=0.6,
top_p=0.9,
max_new_tokens=50,
)
output = output[0].to("cpu")
print(tokenizer.decode(output)
可能會產生如下輸出結果:
My name is Pedro, I live in Portugal and I am 25 years old. I am a graphic designer, but I am also passionate about photography and video.
I love to travel and I am always looking for new adventures. I love to meet new people and explore new places.
使用8位和4位的bitsandbytes
此外,Falcon 180B的8位和4位量化版本在評估方面與bfloat16幾乎沒有差別!
這對推理來說是個好消息,因為用戶可以放心地使用量化版本來降低硬件要求。
注意,在8位版本進行推理要比4位版本快得多。要使用量化,你需要安裝「bitsandbytes」庫,并在加載模型時啟用相應的標志:
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
**load_in_8bit=True,**
device_map="auto",
)
對話模型
如上所述,為跟蹤對話而微調的模型版本,使用了非常直接的訓練模板。我們必須遵循同樣的模式才能運行聊天式推理。
作為參考,你可以看看聊天演示中的 [format_prompt] 函數:
def format_prompt(message, history, system_prompt):
prompt = ""
if system_prompt:
prompt += f"System: {system_prompt}\n"
for user_prompt, bot_response in history:
prompt += f"User: {user_prompt}\n"
prompt += f"Falcon: {bot_response}\n"
prompt += f"User: {message}\nFalcon:"
return prompt
從上可見,用戶的交互和模型的回應前面都有 User: 和 Falcon: 分隔符。我們將它們連接在一起,形成一個包含整個對話歷史的提示。這樣,就可以提供一個系統提示來調整生成風格。
網友熱評
對于Falcon 180B的真正實力,許多網友對此展開熱議。
絕對難以置信。它擊敗了GPT-3.5,與谷歌的PaLM-2 Large不相上下。這簡直改變游戲規則!
一位創業公司的CEO表示,我測試了Falcon-180B對話機器人,它并不比Llama2-70B聊天系統好。HF OpenLLM排行榜也顯示了好壞參半的結果。考慮到它的規模更大,訓練集也更多,這種情況令人驚訝。
舉個栗子:
給出一些條目,讓Falcon-180B和Llama2-70B分別回答,看看效果如何?
Falcon-180B誤將馬鞍算作動物。而Llama2-70B回答簡潔,還給出了正確答案。