编辑:桃子
【新智元导读】一经发布,地表最强开源模型Falcon 180B直接霸榜HF。3.5万亿token训练,性能直接碾压Llama 2。一夜之间,世界最强开源大模型Falcon 180B引爆全网!
1800亿参数,Falcon在3.5万亿token完成训练,直接登顶HuggingFace排行榜。
基准测试中,Falcon 180B在推理、编码、熟练度和知识测试各种任务中,一举击败LLaMA 2。
世界最强开源大模型
此前,Falcon已经推出了三种模型大小,分别是1.3B、7.5B、40B。
官方介绍,Falcon 180B是40B的升级版本,由阿布扎比的全球领先技术研究中心TII推出,可免费商用。
对于训练过程,Falcon 180B基于亚马逊云机器学习平台Amazon SageMaker,在多达4096个GPU上完成了对3.5万亿token的训练。
总GPU计算时,大约7,000,000个。
Falcon 180B的参数规模是Llama 2(70B)的2.5倍,而训练所需的计算量是Llama 2的4倍。
具体训练数据中,Falcon 180B主要是RefinedWe数据集(大约占85%) 。
此外,它还在对话、技术论文,以及一小部分代码等经过整理的混合数据的基础上进行了训练。
这个预训练数据集足够大,即使是3.5万亿个token也只占不到一个epoch。
官方自称,Falcon 180B是当前「最好」的开源大模型,具体表现如下:
在MMLU基准上,Falcon 180B的性能超过了Llama 2 70B和GPT-3.5。
在HellaSwag、LAMBADA、WebQuestions、Winogrande、PIQA、ARC、BoolQ、CB、COPA、RTE、WiC、WSC 及ReCoRD上,与谷歌的PaLM 2-Large不相上下。
from transformers import AutoTokenizer, AutoModelForCausalLMimport transformersimport torchmodel_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 is Pedro, I live in Portugal and I am 25 years old. I am a graphic designer, but I am also passionate about photography and video.I love to travel and I am always looking for new adventures. I love to meet new people and explore new places.
使用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] 函数:
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: {user_prompt}n" prompt = f"Falcon: {bot_response}n" prompt = f"User: {message}nFalcon:" return prompt
从上可见,用户的交互和模型的回应前面都有 User: 和 Falcon: 分隔符。我们将它们连接在一起,形成一个包含整个对话历史的提示。这样,就可以提供一个系统提示来调整生成风格。
网友热评
对于Falcon 180B的真正实力,许多网友对此展开热议。
绝对难以置信。它击败了GPT-3.5,与谷歌的PaLM-2 Large不相上下。这简直改变游戏规则!
一位创业公司的CEO表示,我测试了Falcon-180B对话机器人,它并不比Llama2-70B聊天系统好。HF OpenLLM排行榜也显示了好坏参半的结果。考虑到它的规模更大,训练集也更多,这种情况令人惊讶。
举个栗子:
给出一些条目,让Falcon-180B和Llama2-70B分别回答,看看效果如何?
Falcon-180B误将马鞍算作动物。而Llama2-70B回答简洁,还给出了正确答案。
参考资料:
https://twitter.com/TIIuae/status/1699380904404103245
https://twitter.com/DrJimFan/status/1699459647592403236
相关文章
猜你喜欢