导读:世界最强开源大模型 Falcon 180B 近日发布并火爆全网,其包含1800亿参数,Falcon 在 3.5 万亿 token 完成训练,性能碾压 Meta Llama 2,登顶 Hugging Face 排行榜。
今年 5 月,TII(阿联酋阿布扎比技术创新研究所)推出了号称是 “史上最强的开源大语言模型”——Falcon(猎鹰)。虽然 Falcon 的参数比 LLaMA 小,但性能却更加强大。
此前,Falcon 已经推出了三种模型大小,分别是1.3B、7.5B、40B。据介绍,Falcon 180B 是 40B 的升级版本,Falcon 180B 的规模是 Llama 2 的 2.5 倍,且可免费商用。
Falcon 180B 在 Hugging Face 开源大模型榜单上被认为是当前评分最高的开放式大模型,其评分68.74,Meta 的 LlaMA 2 以 1.39 的分数差距排名第二 。
这个庞大的文本语料库使模型对语言和上下文具有无与伦比的理解,使其能够在各种自然语言处理任务中表现出色。模型的主要优势之一是它能够处理不同的语言任务,包括推理、编码、能力评估和知识测试。这种多功能性证明了它可以在丰富多样的数据集上进行训练,其中包括网络数据、对话、技术论文,甚至一小部分编码。
它在 MMLU 上 的表现超过了 Llama 2 70B 和 OpenAI 的 GPT-3.5。在 HellaSwag、LAMBADA、WebQuestions、Winogrande、PIQA、ARC、BoolQ、CB、COPA、RTE、WiC、WSC 及 ReCoRD 上与谷歌的 PaLM 2-Large 不相上下。
开发者可以通过以下地址进行Demo 体验:
https://hf.co/spaces/HuggingFaceH4/falcon-chat
Falcon 的硬件要求
类型 | 种类 | 最低要求 | 配置示例 | |
---|---|---|---|---|
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 |
Prompt 格式
其基础模型没有 Prompt 格式,因为它并不是一个对话型大模型也不是通过指令进行的训练,所以它并不会以对话形式回应。预训练模型是微调的绝佳平台,但或许你不该直接使用。其对话模型则设有一个简单的对话模式。
System: Add an optional system prompt here
User: This is the user input
Falcon: This is what the model generates
User: This might be a second turn input
Falcon: and so on
Transformers
从 Transfomers 4.33 开始,可以在 Hugging Face 上使用 Falcon 180B 并且使用 HF 生态里的所有工具。但是前提是请确保你已经登录了自己的 Hugging Face 账号,并安装了最新版本的 transformers:
pip install--upgrade transformers
huggingface-cli login
bfloat16
以下是如何在 bfloat16中使用基础模型的方法。Falcon 180B 是一个大型模型,所以请注意它的硬件要求(硬件要求如上所示)。
from transformers import AutoTokenizer, AutoModelForCausalLM
import transformers
import torch
model_id = "tiiuae/falcon-180B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
prompt = "My name is Pedro, I live in"
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)
这会产生如下输出结果:
My name isPedro, I live inPortugal andI am 25years old. I am a graphic designer, but I am also passionate about photography andvideo.
I love to travel andI am always looking fornewadventures. I love to meet newpeople andexplore newplaces.
使用 8 位和 4 位的 bitsandbytes
Falcon 180B 的 8 位和 4 位量化版本在评估方面与 bfloat16几乎没有差别!这对推理来说是个好消息,因为你可以放心地使用量化版本来降低硬件要求。请记住,在 8 位版本进行推理要比 4 位版本快得多。要使用量化,你需要安装 “bitsandbytes” 库,并在加载模型时启用相应的标志:
model= AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
**load_in_8bit=True,**
device_map="auto",
)
对话模型
如上所述,为跟踪对话而微调的模型版本使用了非常直接的训练模板。我们必须遵循同样的模式才能运行聊天式推理。作为参考,你可以看看聊天演示中的 format_prompt函数:
defformat_prompt(message, history, system_prompt):
prompt = ""
ifsystem_prompt:
prompt += f"System: {system_prompt}\n"
foruser_prompt, bot_response inhistory:
prompt += f"User: {user_prompt}\n"
prompt += f"Falcon: {bot_response}\n"
prompt += f"User: {message}\nFalcon:"
returnprompt
如各位所见,用户的交互和模型的回应前面都有 User:和 Falcon:分隔符。
我们将它们连接在一起,形成一个包含整个对话历史的提示。这样就可以提供一个系统提示来调整生成风格。
小结
TII 的 Falcon 180B 代表了自然语言处理领域向前迈出的重要一步。它的规模、训练数据和开放访问可用性使其成为研究人员和开发人员的强大且多功能的工具。提供 Falcon 180B 开放访问尤其值得我们注意,因为它符合人工智能社区中透明度和协作日益增长的重要性。
Falcon 180B 的推出必将影响深远。它通过提供具有 1800 亿个参数的开放访问模型,TII 使研究人员和开发人员能够探索自然语言处理的新领域。与闭源的同行们相比,该模型的竞争性能为医疗、金融、教育等各个领域的创新打开了大门。
此外,Falcon 180B 的成功凸显了人工智能开源计划的价值。它表明,当研究人员优先考虑协作和可访问性时,人工智能的突破将变得更容易为更广泛的受众所接受。随着人工智能社区不断发展并接受开源原则,Falcon 180B 将成为了一个光辉的案例,它展示了通过透明度、协作和致力于突破人工智能能力界限可以实现的目标。
凭借 Falcon 180B 和类似举措,人工智能的未来充满希望,人们会更加包容和协作,最终造福整个社会。
作者:场长
相关链接:https://huggingface.co/blog/zh/falcon-180b
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。