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

社区

此评论已被隐藏(标记为无关话题)

注册登录 发表评论