Falcon 2:一個11B引數的預訓練語言模型和VLM,在超過5000B個tokens和11種語言上進行訓練
Falcon 2 模型
TII正在推出新一代模型 Falcon 2,旨在為開源社群提供一系列效能增強且支援多模態的小型模型。我們的目標是降低推理成本,並鼓勵開發更多具有更高可用性的下游應用程式。
第一代Falcon模型,包括Falcon-40B和Falcon-180B,為開源社群做出了重要貢獻,推動了具有寬鬆許可的高階大型語言模型的釋出。有關前一代Falcon模型的更詳細資訊,請參見RefinedWeb, Penedo et al., 2023和The Falcon Series of Open Language Models, Almazrouei et al., 2023論文,以及Falcon和Falcon-180B部落格文章。
第二代模型專注於提高可用性和整合性,構建多模態生態系統。我們不僅釋出了基礎11B LLM,還發布了包含影像理解能力的11B VLM模型,開啟了這一旅程。視覺語言模型(VLM)將允許使用者透過文字與視覺內容進行交流。
與我們之前的工作一樣,這些模型主要支援英語,但在其他十種語言(包括西班牙語、法語和德語)中也表現出色。
目錄
- Falcon 2 模型
- Falcon 2 11B LLM
- Falcon 2 11B VLM
- 許可資訊
Falcon2-11B LLM
訓練資料
Falcon2-11B 在超過 5000 億 (GT) 的 RefinedWeb(一個高質量過濾和去重後的網路資料集)上進行了訓練,並輔以精選語料庫。它遵循四階段訓練策略。前三個階段側重於增加上下文長度,從 2048 增加到 4096,最後增加到 8192 個 tokens。最後一個階段旨在僅使用高質量資料進一步提高效能。
總的來說,資料來源包括 RefinedWeb-English、RefinedWeb-Europe (cs、de、es、fr、it、nl、pl、pt、ro、sv)、高質量技術資料、程式碼資料以及從公共來源提取的對話資料。
訓練階段如下:
階段 | 上下文長度 | GT |
---|---|---|
階段 1 | 2048 | 4500 |
階段 2 | 4096 | 250 |
階段 3 | 8192 | 250 |
階段 4 | 8192 | 500 |
資料使用Falcon2-11B 分詞器進行分詞,該分詞器與之前的 Falcon 模型相同。
模型架構
下表總結了模型架構的一些關鍵細節:
設計選擇 | 值 |
---|---|
Transformer 塊數 | 60 |
查詢頭數 | 32 |
鍵/值頭數 | 8 |
頭部維度 | 128 |
並行注意力 | 是的 |
MLP 上取樣因子 | 4 |
訓練過程
Falcon2-11B 的大部分訓練在 1024 個 A100 40GB GPU 上進行,使用 3D 並行策略(TP=8, PP=1, DP=128),並結合 ZeRO 和 Flash-Attention 2。
訓練超引數
超引數 | 值 |
---|---|
精度 | bfloat16 |
最佳化器 | AdamW |
最大學習率 | 3.7e-4 |
最小學習率 | 1.89e-5 |
學習率排程 | 餘弦衰減 (階段 1) |
上下文長度 | 8192 (階段 3 和 4) |
權重衰減 | 1e-1 |
Z-損失 | 1e-4 |
批次大小 | 變數 |
Falcon2-11B 評估
英語效能
在 Open LLM Leaderboard 任務上的表現
模型權重 | GT | HellaSwag-10 | Winogrande-5 | ArcChallenge-25 | TruthfulQA-0 | MMLU-5 | GSMK8k-5 | 平均分 |
---|---|---|---|---|---|---|---|---|
Falcon2-11B | 5500 | 82.91 | 78.30 | 59.73 | 52.56 | 58.37 | 53.83 | 64.28 |
Falcon-40B | 1000 | 85.28 | 81.29 | 61.86 | 41.65 | 56.89 | 21.46 | 58.07 |
Falcon-7B | 1500 | 78.13 | 72.38 | 47.87 | 34.26 | 27.79 | 4.62 | 44.17 |
Gemma-7B | 6000 | 82.47 | 78.45 | 61.09 | 44.91 | 66.03 | 52.77 | 64.29 |
Llama3-8B | 15000 | 82.09 | 77.35 | 59.47 | 43.90 | 66.69 | 44.79 | 62.38 |
Mistral-7B | 不適用 | 83.31 | 78.37 | 59.98 | 42.15 | 64.16 | 37.83 | 60.97 |
Hugging Face Leaderboard 團隊對我們的模型在 Open LLM Leaderboard 任務上進行了官方評估。該模型表現優於 Llama3-8B(訓練資料是其三倍)和 Mistral-7B 等模型,與 Gemma-7b 持平。
零樣本表現
模型權重 | GT | HellaSwag | ArcEasy | Winogrande | ArcChallenge |
---|---|---|---|---|---|
Falcon2-11B | 5500 | 82.07 | 77.78 | 78.30 | 50.17 |
Falcon-40B | 1000 | 82.82 | 81.86 | 76.4 | 54.69 |
Falcon-7B | 1500 | 76.31 | 74.74 | 67.17 | 43.43 |
評估結果顯示,Falcon2-11B 在模型尺寸小四倍的情況下,展現出與 Falcon-40B 相似的效能!
多語言能力
使用多語言LLM排行榜,我們將Falcon2-11B模型與Llama-7B和Bloom-7B進行了比較。作為參考,我們還包括了Falcon-40B(支援相同語言)、Falcon-7B(支援法語)和Mistral-7B。
模型 | 語言ID | ArcChallenge-25 | Hellaswag | MMLU 25 | TQA | 平均分 |
---|---|---|---|---|---|---|
Falcon2-11B | 德語 | 43.7 | 67.96 | 38.3 | 47.53 | 49.37 |
西班牙語 | 46.2 | 73.63 | 37.9 | 46.43 | 51.06 | |
法語 | 45.8 | 72.41 | 39.53 | 47.30 | 51.27 | |
義大利語 | 45.6 | 70.83 | 38.05 | 47.14 | 50.42 | |
荷蘭語 | 41.7 | 69.05 | 38.29 | 48.81 | 49.47 | |
羅馬尼亞語 | 42.4 | 66.24 | 38.01 | 45.53 | 48.04 | |
Falcon-40B | 德語 | 45.1 | 68.3 | 36.2 | 39.8 | 47.4 |
西班牙語 | 48.5 | 73.9 | 37.2 | 39.0 | 49.6 | |
法語 | 47.6 | 72.9 | 37.3 | 38.5 | 49.1 | |
義大利語 | 46.3 | 70.2 | 36.4 | 40.7 | 48.4 | |
荷蘭語 | 42.9 | 68.4 | 36.5 | 40.9 | 47.1 | |
羅馬尼亞語 | 43.2 | 66.0 | 35.7 | 39.8 | 46.2 | |
Falcon-7B | 法語 | 37.3 | 64.1 | 28.4 | 34.0 | 40.9 |
Mistral-7B | 德語 | 41.2 | 58.7 | 40.5 | 44.9 | 46.3 |
西班牙語 | 44.2 | 65.3 | 42.4 | 43.1 | 48.7 | |
法語 | 44.9 | 64.4 | 41.9 | 43.0 | 48.6 | |
義大利語 | 43.2 | 60.9 | 39.7 | 43.1 | 46.7 | |
荷蘭語 | 40.0 | 57.9 | 41.4 | 43.3 | 45.7 | |
羅馬尼亞語 | 40.7 | 53.6 | 39.3 | 43.6 | 44.3 | |
Llama-7B | 德語 | 35.1 | 49.9 | 29.9 | 38.3 | 38.3 |
西班牙語 | 36.8 | 56.4 | 30.3 | 37.0 | 40.1 | |
法語 | 37.3 | 55.7 | 30.5 | 39.9 | 40.9 | |
義大利語 | 35.8 | 52.0 | 29.9 | 39.6 | 39.3 | |
荷蘭語 | 33.6 | 48.7 | 29.8 | 40.0 | 38.0 | |
羅馬尼亞語 | 32.4 | 44.9 | 29.7 | 37.0 | 36.0 | |
Bloom-7B | 德語 | 26.3 | 32.4 | 28.1 | 43.7 | 32.6 |
西班牙語 | 38.1 | 56.7 | 28.9 | 40.4 | 41.0 | |
法語 | 36.7 | 56.6 | 29.9 | 40.9 | 41.0 | |
義大利語 | 29.0 | 40.8 | 27.6 | 43.7 | 35.3 | |
荷蘭語 | 23.1 | 31.7 | 27.5 | 42.7 | 31.3 | |
羅馬尼亞語 | 26.9 | 31.8 | 27.4 | 46.1 | 33.1 |
秉承初代 Falcon 模型的精神,Falcon2-11B 不僅在英語資料上進行了訓練,還在其他十種語言上進行了訓練。我們的多語言評估結果顯示,該模型在多語言 LLM 排行榜上的六種語言(德語、西班牙語、法語、義大利語、荷蘭語、羅馬尼亞語)中表現出色,並且在所有提到的語言上,其效能均高於 Falcon-40B 和其他幾個多語言模型。
我們很快將在Falcon2-11B 模型卡中釋出更全面的多語言能力評估結果!
程式碼生成能力
我們在 HumanEval 基準測試中,針對 Python 語言,參照 BigCode 排行榜評估了模型的程式碼生成效能,獲得了 29.59% 的 pass@1 分數。
使用 Falcon2-11B
from transformers import AutoTokenizer
import transformers
import torch
model = "tiiuae/falcon-11B"
tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = transformers.pipeline(
"text-generation",
model=model,
torch_dtype=torch.bfloat16,
device_map="auto",
)
然後,您可以使用如下程式碼進行文字生成:
sequences = pipeline(
"Can you explain the concept of Quantum Computing?",
max_length=200,
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
)
for seq in sequences:
print(f"Result: {seq['generated_text']}")
Falcon2-11B VLM
Falcon2-11B VLM 是一種基於大型語言模型(LLM)構建的視覺語言模型(VLM),它還可以處理影像輸入並能夠回答有關影像的查詢。為了實現這一目標,我們將預訓練的 CLIP ViT-L/14 視覺編碼器與我們的 Falcon2-11B 聊天微調模型整合,並使用影像-文字資料進行訓練。
為了增強 VLM 對影像中小物體的細粒度細節感知能力,我們採用類似於 LLaVA-Next 的高解析度動態編碼機制來處理影像輸入。
訓練
訓練分為兩個階段:預訓練和微調。在這兩個階段,視覺編碼器權重保持凍結。在預訓練階段,LLM 保持凍結,僅在 558K 張影像-字幕對上訓練多模態投影器。這使得多模態投影器能夠學習從視覺到文字嵌入空間的對映。在微調期間,投影器和 LLM 權重都在包含多輪對話的公共資料集中,在 1.2M 影像-文字指令語料庫上進行訓練。
Falcon2-11B VLM 評估
模型 | MME | GQA | SQA | POPE | VQAv2 | 文字視覺問答 | MM-Bench | SEED-IMG | 平均分 |
---|---|---|---|---|---|---|---|---|---|
Falcon2-11B VLM | 1589/343 | 64.5 | 74.9 | 88.4 | 82.1 | 66.7 | 72.0 | 72.3 | 74.4 |
LLaVA-1.6 (Vicuna-7B) | 1519/332 | 64.2 | 70.1 | 86.5 | 81.8 | 64.9 | 67.4 | 70.2 | 72.1 |
LLaVA-1.6 (Vicuna-13B) | 1575/326 | 65.4 | 73.6 | 86.2 | 82.8 | 67.1 | 70.0 | 71.9 | 73.8 |
LLaVA-1.6 (Mistral-7B) | 1498/321 | 64.8 | 72.8 | 86.7 | 82.2 | 65.7 | 68.7 | 72.2 | 73.3 |
使用 Falcon2-11B-FalconVLM
from transformers import LlavaNextForConditionalGeneration, LlavaNextProcessor
from PIL import Image
import requests
import torch
processor = LlavaNextProcessor.from_pretrained("tiiuae/falcon-11B-vlm")
model = LlavaNextForConditionalGeneration.from_pretrained("tiiuae/falcon-11B-vlm", torch_dtype=torch.bfloat16)
url = "https://merzougabirding.com/wp-content/uploads/2023/09/falcon-size.jpg"
falcon_image = Image.open(requests.get(url, stream=True).raw)
prompt = "User: <image>\nWhat's special about this bird's vision?"
inputs = processor(prompt, images=falcon_image, return_tensors="pt", padding=True).to('cuda:0')
model.to('cuda:0')
output = model.generate(**inputs, max_new_tokens=256)
prompt_length = inputs['input_ids'].shape[1]
generated_captions = processor.decode(output[0], skip_special_tokens=True).strip()
print(generated_captions)
許可資訊
Falcon 2 模型根據 TII Falcon 2 許可協議提供,這是一個基於 Apache 2.0 的寬鬆軟體許可,其中包含一個可接受使用政策,旨在促進 AI 的負責任使用。此許可協議的制定符合 TII 對開源社群的承諾精神。