Falcon 模型发布及 Hugging Face 生态集成
Falcon 模型
Falcon 是由阿布扎比技术创新研究院创建的最先进语言模型系列,并在 Apache 2.0 许可证下发布。该系列包括 Falcon‑40B 及其较小的兄弟模型 Falcon‑7B。发布时,Falcon‑40B 在 Open LLM 排行榜上名列前茅,而 Falcon‑7B 在其重量级别中表现最佳。Falcon‑7B 在 1.5 万亿个 token 上进行训练,Falcon‑40B 在 1 万亿个 token 上进行训练,其中超过 80% 的数据来源于 RefinedWeb 网络语料库。两款模型均采用 multiquery attention,这在自回归解码过程中大幅减小了键值缓存的大小。Falcon‑40B 在全精度推理时需要约 90 GB 的 GPU 显存,而 Falcon‑7B 仅需约 15 GB。此外,还提供 Falcon‑7B‑Instruct 和 Falcon‑40B‑Instruct 指令版本,它们可用于快速实验。
演示
Falcon‑40B 模型可以在 Hugging Face Space 中立即尝试,或通过嵌入式游乐场进行体验。该 Space 使用 Hugging Face 的 Text Generation Inference 后端,这也是驱动 HuggingChat 的同一技术。Falcon‑7B‑Instruct 模型的 Core ML 版本已经构建并演示在 M1 MacBook Pro 上运行,附带一个展示轻量级应用的视频以及一个下载 Core ML 权重以供进一步探索的链接。
推理
Falcon 模型可以使用标准的 transformers 库运行,但必须使用 bfloat16 数据类型并启用远程代码执行,因为建模代码位于模型仓库中。对于 7B 指令模型,可以通过 AutoTokenizer、transformers.pipeline、torch_dtype=torch.bfloat16、trust_remote_code=True 和 device_map="auto" 构建一个简单的 pipeline。运行 40B 模型需要更多内存;以 8‑bit 模式加载可将占用降至约 45 GB,这可以容纳在 A6000(48 GB)上,但无法容纳在 40 GB 的 A100 上。使用多个 GPU 和 accelerate 时,device_map="auto" 可以将层分布在不同的卡上或卸载到 CPU。使用最新的 bitsandbytes、transformers 和 accelerate 可实现 4‑bit 加载,使 40B 模型的内存需求降至约 27 GB。
评估
Falcon‑40B 基础模型和指令模型在 Open LLM 排行榜上分别排名第一和第二,平均得分分别为 60.4 和 63.2。Falcon‑7B 基础模型得分为 48.8,超过了 LLaMA‑7B(47.6)和 MPT‑7B(48.6)。该排行榜在 AI2 Reasoning Challenge、HellaSwag、MMLU 和 TruthfulQA 上评估推理能力和真实性。值得注意的是,Falcon‑40B 仅用了 2 800 PF‑days 的预训练计算即可达到此性能,这大约是 LLaMA‑65B(6 300 PF‑days)所需的一半,表明在 LLM 预训练方面仍有进一步提升效率的空间。
使用 PEFT 进行微调
使用参数高效的方法,可以实现对大型 Falcon 模型的微调。通过使用 PEFT 库和 QLoRA,Falcon‑7B 模型在单块 NVIDIA T4 GPU(16 GB)上的 Guanaco 数据集上进行了微调,而 Falcon‑40B 模型则在单块 NVIDIA A100 GPU(80 GB)上的同一数据集上进行了微调。在使用 4‑bit 量化的基础模型以及来自 TRL 库的 SFTTrainer 进行训练时,会生成仅几兆字节大小的适配器文件——例如,微调后的 Falcon‑7B 适配器大约为 65 MB,而原始的半精度模型大小为 15 GB。冻结模型的隐藏状态通过在查询和键投影层上应用低秩适配器进行增强,得到的模型可用于推理,而无需存储完整的权重。
结论
Falcon 模型采用宽松许可证,可用于商业用途,使用 Hugging Face 的推理工具直接运行非常简便,并且可以在普通硬件上通过基于 PEFT 的微调轻松进行适配。此次发布邀请社区在这些公开可用的大型语言模型之上构建应用、进行实验并作出进一步改进。