Falcon 2:一個11B引數的預訓練語言模型和VLM,在超過5000B個tokens和11種語言上進行訓練

釋出於2024年5月24日
在 GitHub 上更新

Falcon 2 模型

TII正在推出新一代模型 Falcon 2,旨在為開源社群提供一系列效能增強且支援多模態的小型模型。我們的目標是降低推理成本,並鼓勵開發更多具有更高可用性的下游應用程式。

第一代Falcon模型,包括Falcon-40BFalcon-180B,為開源社群做出了重要貢獻,推動了具有寬鬆許可的高階大型語言模型的釋出。有關前一代Falcon模型的更詳細資訊,請參見RefinedWeb, Penedo et al., 2023The Falcon Series of Open Language Models, Almazrouei et al., 2023論文,以及FalconFalcon-180B部落格文章。

第二代模型專注於提高可用性和整合性,構建多模態生態系統。我們不僅釋出了基礎11B LLM,還發布了包含影像理解能力的11B VLM模型,開啟了這一旅程。視覺語言模型(VLM)將允許使用者透過文字與視覺內容進行交流。

與我們之前的工作一樣,這些模型主要支援英語,但在其他十種語言(包括西班牙語、法語和德語)中也表現出色。

目錄

Falcon2-11B LLM

訓練資料

Falcon2-11B 在超過 5000 億 (GT) 的 RefinedWeb(一個高質量過濾和去重後的網路資料集)上進行了訓練,並輔以精選語料庫。它遵循四階段訓練策略。前三個階段側重於增加上下文長度,從 2048 增加到 4096,最後增加到 8192 個 tokens。最後一個階段旨在僅使用高質量資料進一步提高效能。

總的來說,資料來源包括 RefinedWeb-English、RefinedWeb-Europe (csdeesfritnlplptrosv)、高質量技術資料、程式碼資料以及從公共來源提取的對話資料。

訓練階段如下:

階段 上下文長度 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 對開源社群的承諾精神。

社群

此評論已被隱藏(標記為無關話題)

註冊登入 發表評論

© . This site is unofficial and not affiliated with Hugging Face, Inc.