Falcon是由位于阿布扎比的技术创新研究院(TechnologyInnovationInstitute,TII)创建的一系列的新语言模型,其基于Apache2.0许可发布。值得注意的是,Falcon-40B是首个“真正开放”的模型,其能力可与当前许多闭源模型相媲美。这对从业者、爱好者和行业来说都是个好消息,因为“真开源”使大家可以毫无顾忌地基于它们探索百花齐放的应用。
本文,我们将深入探讨Falcon模型:首先探讨它们的独特之处,然后展示如何基于HuggingFace生态提供的工具轻松构建基于Falcon模型的多种应用(如推理、量化、微调等)。
目录Falcon模型演示推理评估用PEFT微调模型总结Falcon模型Falcon家族有两个基础模型:Falcon-40B及其小兄弟Falcon-7B。40B参数模型目前在OpenLLM排行榜中名列前茅,而7B模型在同等参数量的模型中表现最佳。
运行Falcon-40B需要约90GB的GPU显存——虽然还是挺多的,但比LLaMA-65B少了不少,况且Falcon-40B的性能还优于LLaMA-65B。而Falcon-7B只需要约15GB显存,即使在消费类硬件上也可以进行推理和微调。(我们将在后文讨论如何使用量化技术在便宜的GPU上使用Falcon-40B!)
TII还提供了经过指令微调的模型:Falcon-7B-Instruct以及Falcon-40B-Instruct。这两个实验性的模型变体经由指令和对话数据微调而得,因此更适合当前流行的助理式任务。如果你只是想把Falcon模型快速用起来,这两个模型是最佳选择。当然你也可以基于社区构建的大量数据集微调一个自己的模型——后文会给出微调步骤!
Falcon-7B和Falcon-40B分别基于1.5万亿和1万亿词元数据训练而得,其架构在设计时就充分考虑了推理优化。Falcon模型质量较高的关键在于训练数据,其80%以上的训练数据来自于RefinedWeb——一个新的基于CommonCrawl的网络数据集。TII选择不去收集分散的精选数据,而是专注于扩展并提高Web数据的质量,通过大量的去重和严格过滤使所得语料库与其他精选的语料库质量相当。在训练Falcon模型时,虽然仍然包含了一些精选数据(例如来自Reddit的对话数据),但与GPT-或PaLM等最先进的LLM相比,精选数据的使用量要少得多。你知道最妙的是什么吗?TII公布了从RefinedWeb中提取出的含有亿词元的数据集,以供社区在自己的LLM中使用!
Falcon模型的另一个有趣的特性是其使用了多查询注意力(multiqueryattention)。原始多头(head)注意力方案每个头都分别有一个查询(query)、键(key)以及值(value),而多查询注意力方案改为在所有头上共享同一个键和值。
多查询注意力机制在注意力头之间共享同一个键嵌入和值嵌入。图片由HarmdeVries提供。
这个技巧对预训练影响不大,但它极大地提高了推理的可扩展性:事实上,该技巧大大减少了自回归解码期间K,V缓存的内存占用,将其减少了10-倍(具体数值取决于模型架构的配置),这大大降低了模型推理的内存开销。而内存开销的减少为解锁新的优化带来了可能,如省下来的内存可以用来存储历史对话,从而使得有状态推理成为可能。
上表中得分均为经过微调的模型的得分演示通过这个Space或下面的应用,你可以很轻松地试用一下大的Falcon模型(亿参数!):