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 对开源社区的承诺精神。