导言
今天,我们非常高兴地欢迎 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 在 "拥抱脸 "排行榜上以 68.74 的高分成为公开发布的预训练 LLM 中得分最高的一款,超过了 Meta 的 LLaMA 2(67.35)。
Model | Size | Leaderboard score | Commercial use or license | Pretraining length |
---|---|---|---|---|
Falcon | 180B | 68.74 | 🟠 | 3,500B |
Llama 2 | 70B | 67.35 | 🟠 | 2,000B |
LLaMA | 65B | 64.23 | 🔴 | 1,400B |
Falcon | 40B | 61.48 | 🟢 | 1,000B |
MPT | 30B | 56.15 | 🟢 | 1,000B |
量化的 Falcon 模型在各种基准测试中保持了相似的指标。在评估 torch.float16、8bit 和 4bit 时,结果类似。查看 Open LLM Leaderboard 中的结果。
如何使用Falcon 180B?
Falcon 180B 可在 Hugging Face 生态系统中使用,从 Transformers 4.33 版开始。
演示版
您可以在本空间或下面嵌入的 playground 中轻松试用大型Falcon 模型(1800 亿个参数!):
硬件要求
我们对不同使用情况下运行模型所需的硬件进行了多次测试。这些并不是最低数字,而是我们所能获得的配置的最低数字。
Type | Kind | Memory | Example | |
---|---|---|---|---|
Falcon 180B | Training | Full fine-tuning | 5120GB | 8x 8x A100 80GB |
Falcon 180B | Training | LoRA with ZeRO-3 | 1280GB | 2x 8x A100 80GB |
Falcon 180B | Training | QLoRA | 160GB | 2x A100 80GB |
Falcon 180B | Inference | BF16/FP16 | 640GB | 8x A100 80GB |
Falcon 180B | Inference | GPTQ/int4 | 320GB | 8x 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 评估得以运行,并为模型的免费开源演示提供推理。
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://www.zerotech.cc/654.html