TII 发布 Falcon 2 系列:11B 预训练语言模型与视觉语言模型
Falcon 2: An 11B parameter pretrained language model and VLM, trained on over 5000B tokens and 11 languages
TII 发布 Falcon 2 系列模型,包括 11B 基础 LLM 和 11B 视觉语言模型(VLM),后者在 LLM 之上接入预训练 CLIP ViT-L/14 视觉编码器并支持图像问答。
官方给出 11B LLM 与 VLM 的训练细节和基准对比,可据此判断小尺寸开源多模态模型的性能位置。
Falcon 2 模型
TII 正在推出新一代模型 Falcon 2,旨在为开源社区提供一系列性能更强、支持多模态的小型模型。我们的目标是实现更廉价的推理,并鼓励开发更多易用性更强的下游应用。
第一代 Falcon 模型,包括 Falcon-40B 和 Falcon-180B,为开源社区做出了重大贡献,推动了具有宽松许可证的高级 LLM 的发布。有关上一代 Falcon 模型的更详细信息,请参见 RefinedWeb, Penedo 等,2023 和 The Falcon Series of Open Language Models, Almazrouei 等,2023 论文,以及 Falcon 和 Falcon-180B 博客文章。
第二代模型专注于提升可用性和可集成性,构建多模态生态系统。我们从发布基础 11B LLM 以及包含图像理解能力的 11B VLM 模型开始这一旅程。视觉语言模型(VLM)将允许用户使用文本就视觉内容进行聊天。
与我们之前的工作一样,这些模型主要支持英语,但在其他十种语言(包括西班牙语、法语和德语)方面也具有良好的能力。
目录
- Falcon 2 模型
- Falcon 2 11B LLM
- Falcon 2 11B VLM
- 许可信息
Falcon2-11B LLM
训练数据
Falcon2-11B 在超过 5,000 GT(十亿 token)的 RefinedWeb 上进行训练,这是一个经过高质量过滤和去重的网络数据集,并辅以精选语料库。它遵循了四阶段训练策略。前三个阶段专注于增加上下文长度,从 2048 到 4096,最后到 8192 个 token。最后一个阶段旨在仅使用高质量数据进一步提升性能。
总体而言,数据来源包括 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 tokenizer 进行分词,与之前 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 |
| 学习率调度 | Cos decay(阶段 1) |
| 上下文长度 | 8192(阶段 3 和 4) |
| 权重衰减 | 1e-1 |
| Z-loss | 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 |
HF Mirror Leaderboard 团队对我们的模型在 Open LLM Leaderboard 任务上进行了官方评估。该模型的表现优于 Llama3-8B(在 3 倍数据量上训练)和 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 相似的性能!
多语言能力
使用 Multilingual LLM leaderboard,我们将 Falcon2-11B 模型与 Llama-7B 和 Bloom-7B 进行比较。作为参考,我们还加入了 Falcon-40B(支持相同语言)、Falcon-7B(支持法语)和 Mistral-7B。
| 模型 | 语言 ID | ArcChallenge-25 | Hellaswag | MMLU 25 | TQA | 平均 |
|---|---|---|---|---|---|---|
| Falcon2-11B | de | 43.7 | 67.96 | 38.3 | 47.53 | 49.37 |
| es | 46.2 | 73.63 | 37.9 | 46.43 | 51.06 | |
| fr | 45.8 | 72.41 | 39.53 | 47.30 | 51.27 | |
| it | 45.6 | 70.83 | 38.05 | 47.14 | 50.42 | |
| nl | 41.7 | 69.05 | 38.29 | 48.81 | 49.47 | |
| ro | 42.4 | 66.24 | 38.01 | 45.53 | 48.04 | |
| Falcon-40B | de | 45.1 | 68.3 | 36.2 | 39.8 | 47.4 |
| es | 48.5 | 73.9 | 37.2 | 39.0 | 49.6 | |
| fr | 47.6 | 72.9 | 37.3 | 38.5 | 49.1 | |
| it | 46.3 | 70.2 | 36.4 | 40.7 | 48.4 | |
| nl | 42.9 | 68.4 | 36.5 | 40.9 | 47.1 | |
| ro | 43.2 | 66.0 | 35.7 | 39.8 | 46.2 | |
| Falcon-7B | fr | 37.3 | 64.1 | 28.4 | 34.0 | 40.9 |
| Mistral-7B | de | 41.2 | 58.7 | 40.5 | 44.9 | 46.3 |
| es | 44.2 | 65.3 | 42.4 | 43.1 | 48.7 | |
| fr | 44.9 | 64.4 | 41.9 | 43.0 | 48.6 | |
| it | 43.2 | 60.9 | 39.7 | 43.1 | 46.7 | |
| nl | 40.0 | 57.9 | 41.4 | 43.3 | 45.7 | |
| ro | 40.7 | 53.6 | 39.3 | 43.6 | 44.3 | |
| Llama-7B | de | 35.1 | 49.9 | 29.9 | 38.3 | 38.3 |
| es | 36.8 | 56.4 | 30.3 | 37.0 | 40.1 | |
| fr | 37.3 | 55.7 | 30.5 | 39.9 | 40.9 | |
| it | 35.8 | 52.0 | 29.9 | 39.6 | 39.3 | |
| nl | 33.6 | 48.7 | 29.8 | 40.0 | 38.0 | |
| ro | 32.4 | 44.9 | 29.7 | 37.0 | 36.0 | |
| Bloom-7B | de | 26.3 | 32.4 | 28.1 | 43.7 | 32.6 |
| es | 38.1 | 56.7 | 28.9 | 40.4 | 41.0 | |
| fr | 36.7 | 56.6 | 29.9 | 40.9 | 41.0 | |
| it | 29.0 | 40.8 | 27.6 | 43.7 | 35.3 | |
| nl | 23.1 | 31.7 | 27.5 | 42.7 | 31.3 | |
| ro | 26.9 | 31.8 | 27.4 | 46.1 | 33.1 |
秉承原始 Falcon 模型的精神,Falcon2-11B 不仅使用英语数据训练,还使用了其他十种语言进行训练。我们的多语言评估结果表明,该模型在 Multilingual LLM Leaderboard 上展示的六种语言(de、es、fr、it、nl、ro)中具备良好能力,并且实际上在所有提及的语言上均表现出比 Falcon-40B 及其他几个多语言模型更高的性能。
我们将很快在 Falcon2-11B model card 中发布更全面的多语言能力评估结果!
代码生成能力
我们在 Python 语言的 HumanEval 基准上,对照 BigCode Leaderboard 检查了模型的代码生成性能,获得了 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 | TextVQA | 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 对开源社区承诺的精神下制定的。
来源:Hugging Face Blog · hf-mirror.com