悟道·天鹰Aquila大语言模型系列全面升级到Aquila2,并再添 340亿参数(34B)重量级新成员,带来当前最强的开源中英双语大模型。
一举刷新大模型榜单成绩之外,我们更加注重对推理、泛化等重要模型实际能力的潜心提升,在支撑智能体(AI agent)、代码生成、文献检索等场景方面取得一系列成绩。
值得一提的是,秉承智源开源传统,我们再次一口气带来开源全家桶,极具诚意地将创新训练算法与最佳实践同步开放,以促进大模型研究协同创新,包括:
???? Aquila2 模型全系开源地址:
https://github.com/FlagAI-Open/Aquila2
https://model.baai.ac.cn/
https://huggingface.co/BAAI
22项综合排名领先,Aquila2-34B基座模型超越 Llama2-70B 及其余开源基座模型
仅 1/2 参数量、2/3 训练数据量
AquilaChat2-34B对话模型达到开源最强中英文主、客观综合能力
升级后的 AquilaChat2-7B 亦在同等量级对话模型中取得最高评分
推理能力领先,对话模型 IRD评测基准仅次于 GPT4
归纳、演绎、溯因和因果推理维度准确性领先
长文本处理能力创新提升
创新算法 NLPE 与自研分段式 Attention 算子加持,支持16K上下文长度
强大泛化能力,适应各类真实应用场景
1. 推理能力有力支撑 智能体(AI agent)计划与组织,可自主思考、执行复杂任务;
2. 基于基座模型,AquilaSQL 代码生成能力,获得当前“中文自然语言- SQL语句”生成 SOTA;
3. 与领先向量模型 BGE 结合,轻松解决传统文献检索的复杂查询问题
通过架构升级、算法创新、数据迭代,新一代悟道·天鹰模型 Aquila2 在中英文综合能力方面进一步突破:Aquila2-34B 基座模型取得了22个评测基准的领先综合排名,包括语言、理解、推理、代码、考试等多个维度 。
* 版面有限,仅对比部分业界最新、知名度较高并开源的基础语言模型
图:Base 模型评测结果
(详细数据集评测结果见官方开源仓库介绍)
同时,Aquila2 基础模型以最强开源基座模型综合性能,为下游模型提供强大支撑,经指令微调得到了优秀的的 AquilaChat2 对话模型系列。
AquilaChat2-34B 成为当前最强开源中英双语对话模型,在主观+客观综合评测中全面领先 。
AquilaChat2-7B 也取得同量级中英对话模型中综合性能最佳成绩。
* 版面有限,仅对比部分业界最新、知名度较高并开源的对话模型
图:SFT 模型评测结果
(详细数据集评测结果见官方开源仓库介绍)
大模型的推理(Reasoning)能力是实现通用人工智能(AGI)的关键能力,AquilaChat2-34B 在 IRD 评测基准中排名第一,超越 LLama2-70B、GPT3.5等模型,仅次于 GPT4。
智源团队整理了评测基准 Integrated Reasoning Dataset(IRD)考察模型在归纳推理、演绎推理、溯因推理和因果推理维度上的推理结果和过程的准确性,并对主流对话模型进行了全面评测。
图:SFT模型在IRD数据集上的评测结果
AquilaChat2-34B-16K 以 Aquila2-34B 为基座,经过位置编码内插法处理,并在 20W 条优质长文本对话数据集上做了 SFT,将模型的有效上下文窗口长度扩展至 16K。
在 LongBench 的四项中英文长文本问答、长文本总结任务的评测效果显示,AquilaChat2-34B-16K 处于开源长文本模型的领先水平,接近 GPT-3.5 长文本模型。
图:长文本理解任务评测
长度外延能力不足是制约大模型成文本能力的普遍问题。智源团队对多个语言模型处理超长文本的注意力分布做了可视化分析,发现所有的语言模型均存在固定的相对位置瓶颈,显著小于上下文窗口长度。
为此,智源团队创新提出 NLPE(Non-Linearized Position Embedding, 非线性位置编码)方法,在 RoPE 方法的基础上,通过调整相对位置编码、约束最大相对长度来提升模型外延能力。在代码、中英文Few-Shot Leaning、电子书等多个领域上的文本续写实验显示,NLPE 可以将 4K 的 Aquila2-34B 模型外延到 32K 长度,且续写文本的连贯性远好于 Dynamic-NTK、位置插值等方法。
图:NLPE与主流Dynamic-NTK外延方法在Base模型上的能力对比(ppl值越低越好)
此外,在长度为 5K~15K 的 HotpotQA、2WikiMultihopQA 等数据集上的指令跟随能力测试显示,经过 NLPE 外延的 AquilaChat2-7B(2K)准确率为 17.2%,而 Dynamic-NTK 外延的 AquilaChat2-7B 准确率仅为 0.4%。
图:NLPE与主流Dynamic-NTK外延方法在SFT模型上的能力对比
同时,智源团队开发了适配长文本推理的分段式Attention算子 PiecewiseAttention ,高效地支持 NLPE 等面向 Attention Map 的优化算法,进一步减少显存占用、提升运算速度。
强大的泛化能力对于大语言模型至关重要,它意味着模型能够有效地应对未见过的数据与新任务,而不仅仅仅在标准测试中表现出色、但在实际应用中表现不佳,陷入“高分低能”的陷阱。
悟道·天鹰团队通过三个真实应用场景验证了 Aquila2 模型的泛化能力。
在开放式的环境中学习多种任务是通用智能体的重要能力。《我的世界》(Minecraft)作为一款受欢迎的开放世界游戏,具有无限生成的复杂世界和大量开放的任务,为智能体提供了丰富的交互接口,进而成为近几年开放式学习研究的重要测试环境。
智源研究院与北京大学团队提出了在无专家数据的情况下高效解决 Minecraft 多任务的方法—— Plan4MC。Plan4MC 可以使用内在奖励的强化学习训练智能体的基本技能,使得智能体可以利用大语言模型 AquilaChat2 的推理能力进行任务规划。
官方提供了视频演示,里面展示了智能体利用 AquilaChat2 进行自动完成多轮对话交互,将游戏“当前环境状态”、“需要完成的任务”等信息输入AquilaChat2模型,AquilaChat2 反馈给角色“下一步使用什么技能”等决策信息,最终完成了Minecraft 游戏中设定的任务“伐木并制作工作台放在附近”的任务。
3.2 通过 Aquila2+BGE2 链接向量数据库
基于传统向量库的检索方式在一些简单问题场景下表现良好,但面对复杂的、需要深度理解的问题时,其效果有限。
Aqiula2+BGE2 的引入改变了这一局面(BGE是智源团队开源的语义向量模型), 彻底解锁了一些仅基于传统向量库的检索方法不能解决的复杂检索任务,例如检索某个作者关于某个主题的论文,或针对一个主题的多篇论文的生成总结文本。
图:Aquila2+BGE 文献检索场景复杂查询示例
“Give me some papers about summarization written by Mirella Lapata”
AquilaSQL 可以充当“翻译员”,将用户发出的自然语言指令准确翻译为合格的 SQL 查询语句,极大地降低数据查询分析的门槛。
在实际应用场景中,用户还可以基于AquilaSQL进行二次开发,将其嫁接至本地知识库、生成本地查询 SQL,或进一步提升模型的数据分析性能,让模型不仅返回查询结果,更能进一步生成分析结论、图表等。
基于 Aquila 基座模型优秀的代码生成能力,AquilaSQL 经过SQL语料的继续预训练和SFT 两阶段训练,最终以67.3%准确率超过“文本-SQL语言生成模型”排行榜 Cspider 上的SOTA模型,而未经过SQL语料微调的 GPT4模型准确率仅为 30.8%。
AquilaSQL 开源仓库地址:
https://github.com/FlagAI-Open/FlagAI/tree/master/examples/Aquila/Aquila-sql
下面是一个复杂查询任务示例:“从包含汽车销量(car_sales)、汽车颜色(car_color)的两个数据表中筛选销量大于100并且颜色为红色的汽车”。
图:AquilaSQL 生成多表查询语句
作为中国大模型开源生态的代表机构,智源早在 2022 年即开始前瞻性布局,着力打造FlagOpen飞智大模型技术开源体系。
不止于明星模型,智源毫无保留地持续贡献大模型全栈技术开源开放,带来一系列包括算法、数据、工具、评测方面的明星开源项目,真诚拥抱与回馈全球社区。
秉承开源传统,Aquila2 系列模型不仅全面采用商用许可协议,允许公众广泛应用于学术研究和商业应用;还将相关创新训练算法、最佳实践全面彻底开放,以期促进全球大模型生态繁荣。
FlagScale 是 Aquila2-34B 使用的高效并行训练框架。提供一站式语言大模型的训练功能。
智源团队将 Aquila2 模型的训练配置、优化方案和超参数通过 FlagScale 项目分享给大模型开发者,在国内首次完整开源训练代码和超参数。
FlagScale 基于 Megatron-LM 扩展而来,提供了一系列功能增强,包括分布式优化器状态重切分、精确定位训练问题数据以及参数到Huggingface转换等。经过实测,Aquila2 训练吞吐量和 GPU 利用率均达到业界领先水平[1][2]。
图:FlagScale 训练吞吐量与GPU利用率
(数据来源和估算公式见文末)
FlagScale 开源代码仓库:
https://github.com/FlagOpen/FlagScale
此外,FlagScale 采用了多种并行技术如数据并行、张量并行和 1F1B 流水线并行等,加速训练过程,并使用 BF16 进行混合精度进行训练。在性能优化方面,FlagScale 采用了 FlashAttn V2、计算与通信重叠、梯度累积等技术,显著提升了计算效率。
未来,FlagScale 将继续保持与上游项目 Megatron-LM 最新代码同步,引入更多定制功能,融合最新的分布式训练与推理技术以及主流大模型、支持异构AI硬件,力图构建一个通用、便捷、高效的分布式大模型训练推理框架,满足不同规模和需求的模型训练任务。
FlagAttention 是首个支持长文本大模型训练、使用 Triton语言开发的高性能Attention开源算子集,针对大模型训练的需求,对 Flash Attention 系列的 Memory Efficient Attention 算子进行扩展。
目前已实现分段式 Attention 算子——PiecewiseAttention。
FlagAttention 开源代码仓库:
https://github.com/FlagOpen/FlagAttention
PiecewiseAttention 主要解决了带旋转位置编码 Transformer 模型(Roformer)的外推问题。大模型推理时的序列长度超出训练时最大序列长度时,距离较远的 token 之间 attention weight 异常增高。而 Flash Attention 对 Attention Score 的计算采用分段式的处理时无法做到高效实现,因此智源团队自研了分段式 PiecewiseAttention 算子,大模型开发者可利用该开源算子实现更灵活的 Attention 计算方式。
简单来说,PiecewiseAttention 具备如下特性:
• 通用性:对使用分段式计算 Attention 的模型具有通用性,可以轻松迁移至 Aquila 之外的大语言模型。
• 易用性:FlagAttention 基于 Triton 语言实现并提供 PyTorch 接口,构建和安装过程相比 CUDA C 开发的 Flash Attention 更加便捷。
• 扩展性:同样得益于 Triton 语言,FlagAttention 算法本身的修改和扩展门槛较低,开发者可便捷地在此之上拓展更多新功能。
注:Triton 是 OpenAI 开源的编程语言,方便开发者编写高效的 GPU 代码。
基于 Triton 开发的 FlagAttention 具备更好的开源开放能力,轻松适配各种 AI 硬件,目前已在英伟达及天数智芯硬件上完成支持[3]。未来,FlagAttention项目将继续针对大模型研究需求,支持其他功能扩展的 Attention 算子,进一步优化算子性能,并适配更多异构AI硬件。
新一代BGE语义向量模型将随 Aquila2 同步开源。BGE2 中的 BGE - LLM Embedder 模型集成了“知识检索”、“记忆检索”、“示例检索”、“工具检索”四大能力,首次实现了单一语义向量模型对大语言模型主要检索诉求的全面覆盖。结合具体的使用场景,BGE - LLM Embedder将显著提升大语言模型在处理知识密集型任务、长期记忆、指令跟随、工具使用等重要领域的表现。
BGE2 开源地址
paper:
https://arxiv.org/pdf/2310.07554.pdf
model:
https://huggingface.co/BAAI/llm-embedder
repo: https://github.com/FlagOpen/FlagEmbedding/tree/master/FlagEmbedding/llm_embedder
开发者指南
快速上手 Aquila2 系列模型
Aquila2 模型权重&代码仓库:
使用方式一(推荐):通过 FlagAI 加载 Aquila2 系列模型
https://github.com/FlagAI-Open/Aquila2
使用方式二:通过 FlagOpen 模型仓库单独下载权重
https://model.baai.ac.cn/
使用方式三:通过 Hugging Face 加载 Aquila2 系列模型
https://huggingface.co/BAAI
Aquila2 全系列兼容多个大模型生态开源项目:
• LoRA/QLoRA:轻量化的模型微调训练技术,既加速了大模型训练,同时也降低了显存占用。
• vLLM :支持构建高吞吐量的大语言模型服务,支持流式输出,支持单机多卡、分布式并行推理。
• llama.cpp:支持非GPU端和4-bit 量化,进一步降低开发者的的使用门槛。
???? 推荐通过 FlagAI 使用 Aquila2 系列模型:
模型加载&推理接口简单易用,支持模型压缩、常见推理参数和不同对话模版,通过 FlagAI 可以一键下载 FlagOpen 模型仓库上的权重,该权重同时兼容 HuggingFace格式。
???? 敬请期待:
Aquila2 系列模型正在支持 int4 量化,可在消费级显卡上运行
参考资料
[1] LLAMA2吞吐量估算公式:total tokens / (total GPU hours * 3600) ,根据Llama 2: Open Foundation and Fine-Tuned Chat Models论文:1)7B的total tokens为2.0 T, total GPU hours 为184320,代入公式得3014 Tokens/sec/GPU;2)34B的total tokens为2.0 T, total GPU hours 为1038336,代入公式得535 Tokens/sec/GPU。
[2]根据https://github.com/InternLM/InternLM#training-performance可知InternLM 7B的1024卡能达到3625 Tokens/sec/GPU。
[3]当前仅在英伟达RTX3090 和 A100 以及天数的 MR-V100上进行验证。
文章转载自微信公众号“智源研究院”
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】FASTGPT是基于LLM的知识库开源项目,提供开箱即用的数据处理、模型调用等能力。整体功能和“Dify”“RAGFlow”项目类似。很多接入微信,飞书的AI项目都基于该项目二次开发。
项目地址:https://github.com/labring/FastGPT
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner