展翅高飞:Falcon 180B 在这里

Admin 2023-9-8 393 9/8

导言

今天,我们非常高兴地欢迎 TII 的猎鹰 180B 加入 HuggingFace!Falcon 180B 为开放模型树立了新的标杆。它是最大的开放式语言模型,拥有 1,800 亿个参数,并使用 TII 的 RefinedWeb 数据集在 3.5 万亿个标记上进行了训练。这是开放模型中单次预训练时间最长的。

您可以在拥抱脸枢纽(Hugging Face Hub)上找到该模型(基础模型和聊天模型),并在猎鹰聊天演示空间(Falcon Chat Demo Space)上与该模型进行互动。

就能力而言,Falcon 180B 在自然语言任务方面取得了最先进的成果。它在(预训练的)开放存取模型排行榜上名列前茅,并可与 PaLM-2 等专有模型相媲美。虽然目前还很难给出明确的排名,但它被认为与 PaLM-2 Large 不相上下,这使得 Falcon 180B 成为目前公开的最有能力的 LLM 之一。

在本博文中,我们将通过一些评估结果来探讨 Falcon 180B 的优势所在,并向您展示如何使用该模型。

什么是 Falcon-180B?
Falcon 180B 有多好?
如何使用 Falcon 180B?
演示
硬件要求
提示格式
变压器
其他资源

什么是 Falcon-180B?

Falcon 180B 是 TII 继之前发布的 Falcon 系列之后推出的又一款机型。

从架构上看,Falcon 180B 是 Falcon 40B 的升级版,并在其基础上进行了创新,如多查询关注,以提高可扩展性。我们建议阅读介绍 Falcon 的第一篇博文,深入了解其架构。Falcon 180B 使用亚马逊 SageMaker 在多达 4096 个 GPU 上同时对 3.5 万亿个代币进行了训练,总共花费了约 7,000,000 个 GPU 小时。这意味着 Falcon 180B 的规模是 Llama 2 的 2.5 倍,而训练所需的计算量是 Llama 2 的 4 倍。

Falcon 180B 的数据集主要由来自 RefinedWeb 的网络数据组成(约占 85%)。此外,它还在会话、技术论文和一小部分代码(约占 3%)等编辑数据的基础上进行了训练。这个预训练数据集足够大,即使是 3.5 万亿个标记也不足一个历时。

已发布的聊天模型在聊天和指令数据集上进行了微调,并混合了多个大规模会话数据集。

‼️ 商业用途: Falcon 180b 可用于商业用途,但条件非常严格,不包括任何 "托管使用"。如果您有兴趣将其用于商业目的,我们建议您查看许可证并咨询您的法律团队。

Falcon 180B 有多好?
Falcon 180B 是目前公开发布的最佳 LLM,在 MMLU 上优于 Llama 2 70B 和 OpenAI 的 GPT-3.5,在 HellaSwag、LAMBADA、WebQuestions、Winogrande、PIQA、ARC、BoolQ、CB、COPA、RTE、WiC、WSC、ReCoRD 上与 Google 的 PaLM 2-Large 不相上下。Falcon 180B 通常介于 GPT 3.5 和 GPT4 之间,具体取决于评估基准,既然已经公开发布,社区的进一步微调将非常值得关注。

展翅高飞:Falcon 180B 在这里

Falcon 180B 在 "拥抱脸 "排行榜上以 68.74 的高分成为公开发布的预训练 LLM 中得分最高的一款,超过了 Meta 的 LLaMA 2(67.35)。

ModelSizeLeaderboard scoreCommercial use or licensePretraining length
Falcon180B68.74🟠3,500B
Llama 270B67.35🟠2,000B
LLaMA65B64.23🔴1,400B
Falcon40B61.48🟢1,000B
MPT30B56.15🟢1,000B
展翅高飞:Falcon 180B 在这里

量化的 Falcon 模型在各种基准测试中保持了相似的指标。在评估 torch.float16、8bit 和 4bit 时,结果类似。查看 Open LLM Leaderboard 中的结果。

如何使用Falcon 180B?


Falcon 180B 可在 Hugging Face 生态系统中使用,从 Transformers 4.33 版开始。

演示版


您可以在本空间或下面嵌入的 playground 中轻松试用大型Falcon 模型(1800 亿个参数!):

硬件要求


我们对不同使用情况下运行模型所需的硬件进行了多次测试。这些并不是最低数字,而是我们所能获得的配置的最低数字。

TypeKindMemoryExample
Falcon 180BTrainingFull fine-tuning5120GB8x 8x A100 80GB
Falcon 180BTrainingLoRA with ZeRO-31280GB2x 8x A100 80GB
Falcon 180BTrainingQLoRA160GB2x A100 80GB
Falcon 180BInferenceBF16/FP16640GB8x A100 80GB
Falcon 180BInferenceGPTQ/int4320GB8x A100 40GB

提示格式


基本模型没有提示格式。请记住,它并不是一个会话模型,也没有经过指令训练,因此不要指望它能生成会话回复--预训练模型是进一步微调的绝佳平台,但您可能不应该直接开箱即用。聊天模型的对话结构非常简单。

系统: 在此添加可选的系统提示
用户: 这是用户输入
猎鹰 这是模型生成的内容
用户: 这可能是第二轮输入
猎鹰:以此类推

变压器
随着 Transformers 4.33 的发布,您可以使用猎鹰 180B,并充分利用高频生态系统中的所有工具,例如

训练和推理脚本及示例
安全文件格式(安全传感器)
与 bitsandbytes(4 位量化)、PEFT(参数高效微调)和 GPTQ 等工具集成
辅助生成(也称为 "推测解码)
RoPE 扩展支持更大的上下文长度
丰富而强大的生成参数
使用该模型需要您接受其许可和使用条款。请确保您已登录 Hugging Face 账户,并确保您拥有最新版本的 transformers:

pip install --upgrade transformers
huggingface-cli 登录

bfloat16
这就是在 bfloat16 中使用基本模型的方法。猎鹰 180B 是一个大模型,因此请考虑上表中总结的硬件要求。

从转换器导入 AutoTokenizer、AutoModelForCausalLM
导入转换器
导入火炬

模型_id="tiiuae/猎鹰-180B"。

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id、
torch_dtype=torch.bfloat16、
device_map="auto"、
)

prompt = "我叫佩德罗,住在"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")

output = model.generate(
input_ids=inputs["input_ids"]、
attention_mask=inputs["attention_mask"]、
do_sample=True、
temperature=0.6、
top_p=0.9、
max_new_tokens=50、
)
output = output[0].to("cpu")
print(tokenizer.decode(output)

这可能会产生如下输出

我叫佩德罗,住在葡萄牙,今年 25 岁。我是一名平面设计师,同时也热衷于摄影和摄像。
我喜欢旅行,一直在寻找新的冒险。我喜欢结识新朋友,探索新地方。

比特和字节的 8 位和 4 位
与 bfloat16 参考相比,Falcon 180B 的 8 位和 4 位量化版本在评估方面几乎没有差异!这对推理来说是个好消息,因为你可以放心使用量化版本来降低硬件要求。不过请记住,8 位推理要比运行 4 位模型快得多。

要使用量化,需要安装 bitsandbytes 库,并在加载模型时启用相应的标记即可:

model = AutoModelForCausalLM.from_pretrained(
model_id、
torch_dtype=torch.bfloat16、
load_in_8bit=True、
device_map="auto"、
)

聊天模型
如上所述,为跟踪对话而微调的模型版本使用了非常直接的训练模板。我们必须遵循同样的模式才能运行聊天式推理。作为参考,您可以看看聊天演示中的 format_prompt 函数,它看起来像这样:

def format_prompt(message, history, system_prompt):
prompt = ""
if system_prompt:
prompt += f "System: {system_prompt}\n"
for user_prompt, bot_response in history:
prompt += f "用户: {user_prompt}\n"
prompt += f "Falcon: {bot_response}\n"
prompt += f "用户:{消息}/n猎鹰:"
返回 prompt

如您所见,用户的交互和模型的响应前面都有 User: 和 Falcon: 分隔符。我们将它们连接在一起,形成一个包含整个对话历史的提示。我们可以提供一个系统提示来调整生成风格。

附加资源
模型
演示
猎鹰号 "已登陆 "拥抱脸 "生态系统
官方公告
鸣谢
如果没有许多社区成员的贡献,就不可能在生态系统中发布这样一个带有支持和评估的模型,其中包括负责 LLM 评估的 Clémentine 和 Eleuther Evaluation Harness;负责代码评估的 Loubna 和 BigCode;负责推理支持的 Nicolas;负责将 Falcon 集成到转换器中的 Lysandre、Matt、Daniel、Amy、Joao 和 Arthur。感谢 Baptiste 和 Patrick 提供开源演示。感谢 Thom、Lewis、TheBloke、Nouamane 和 Tim Dettmers 的多方贡献,使本文档得以发布。最后,感谢 HF Cluster 使 LLM 评估得以运行,并为模型的免费开源演示提供推理。

- THE END -
最后修改:2023年9月8日

非特殊说明,本博所有文章均为博主原创。