国产大模型开源一哥再登场,最强双语LLM「全家桶」级开源!340亿参数超越Llama2-70B
新智元报道
新智元报道
【新智元导读】就在刚刚,340亿参数的国产大模型悟道·天鹰Aquila2强势冲上榜首,成为最强开源中英双语大模型。更YYDS的是,这次智源不仅开源了明星模型,还赠送了非常有口碑的模型周边!
最强中英双语大模型,开源了!
今天,悟道·天鹰Aquila大语言模型系列已经全面升级到Aquila2,并且再添了一位重量级新成员——340亿参数的Aquila2-34B。
在代码生成、考试、理解、推理、语言四个维度的22个评测基准上,Aquila2-34B强势霸占了多个榜单TOP 1。
不过,「全面超越Llama 2」这样的字眼,早已不再是新闻。相比分数,业内更看重的是大模型的能力。
而在这些实际能力上,AquilaChat2的表现依然十分抢眼——
它不仅具有超强的推理能力,长文本处理能力也大大提升;强大的泛化能力,让它可以适应各类真实应用场景,包括AI Agent、代码生成、文献检索。
更惊喜的是,智源不仅Aquila2模型系列全部开源,而且还同步开源了Aquila2的创新训练算法,包括FlagScale框架和FlagAttention算子集,以及语义向量模型BGE的新版本。
可以说,创新训练算法和最佳实践同步开放,在行业内是史无前例的。这种全家桶级别的开源,堪称是大模型开源界的业界良心了。
https://huggingface.co/BAAI
最强中英双语大模型,开源!
22项综合排名领先,仅凭1/2的参数量和2/3的训练数据量,就超越了Llama2-70B和其余开源基座模型,Aquila2-34B是怎样做到的?
这背后,当然要归功于智源多年积累的高质量语料。经过这些语料预训练后的模型,综合能力十分强大,超越了通义千问和Llama 2。
架构升级、算法创新、数据迭代,也使Aquila2在中英文综合能力方面进一步突破。
而Aquila2基座模型,为AquilaChat2对话模型提供了强大的基础。
经过高质量指令微调数据集训练之后,AquilaChat2-34B一跃而成为当今最强的开源中英双语对话模型, 主观及客观评测结果,都做到了全面领先。
SFT模型评测结果
并且,AquilaChat2-34B呈现出了几个有趣的特点——它不仅具备丰富的中文世界原生知识,并且提供的回答更加准确全面、富有人情味。
对于中文世界的掌握,AquilaChat2-34B甚至可以完爆GPT-4。
对于「如何用螺丝钉炒西红柿」这样的问题,AquilaChat2-34B立刻聪明地猜到,用户应该是想问「西红柿炒鸡蛋」。
相比之下,GPT-4只能理解到「螺狮粉炒西红柿」这一层。
如果问大模型「研究什么专业的大学生容易找到工作时,分析单位是什么」,GPT-4的回答就很简单粗暴——专业。
而AquilaChat2-34B则富有洞见地表示,分析单位可以是行业、公司类型、职级、地域、薪资水平、专业匹配度等。
推理超越Llama 2,仅次于GPT-4
我们能在哪一年实现AGI,是如今业内相当热门的话题。
如何实现AGI呢?这其中最关键的,就是大模型的推理能力。
在评测基准Integrated Reasoning Dataset(IRD)上,十几个当红模型在归纳推理、演绎推理、溯因推理和因果推理维度上的结果和过程的准确性上,进行了全面比拼。
结果显示,AquilaChat2-34B在IRD评测基准中排名第一,超越了LLama2-70B-Chat、GPT-3.5等模型,仅次于GPT-4。
SFT模型在IRD数据集上的评测结果
上下文窗口长度,扩至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、位置插值等方法。
如下图所示,在长度为5K~15K的HotpotQA、2WikiMultihopQA等数据集上的指令跟随能力测试显示,经过NLPE外延的AquilaChat2-7B(2K)准确率为17.2%,而Dynamic-NTK外延的AquilaChat2-7B准确率仅为0.4%。
NLPE与主流Dynamic-NTK外延方法在SFT模型上的能力对比
NLPE与主流Dynamic-NTK外延方法在Base模型上的能力对比(ppl值越低越好)
同时,智源团还开发了适配长文本推理的分段式Attention算子PiecewiseAttention,来高效地支持NLPE等面向Attention Map的优化算法,进一步减少显存占用、提升运算速度。
泛化能力超强,绝不「高分低能」
说起来,许多大模型虽然在标准测试中表现出色,一到实际应用的时候却抓瞎了。
相比之下,Aquila2模型在考试上成绩优异,在真实应用场景的表现又如何呢?
要知道,大模型泛化能力,也就是举一反三的能力至关重要。
这意味着,LLM在训练数据之外,依然能够有效应对没有见过的任务,给出准确的响应。
若是这个大模型在基准测试中取得高分,但在实际应用中表现很差,也就是擅长考题但不善于解决实际问题,是「高分低能」的表现。
为了评估Aquila2模型的泛化能力,智源团队从三个真实应用场景下对其进行了验证。
AI智能体在「我的世界」自主思考
通用智能体,能够在开放式的环境中学习多种任务,是模型重要能力的体现。
一提到智能体任务的测试,我们能想到的最常见的开放世界游戏,当然就是「我的世界」了。
这里有着无限生成的复杂世界和大量开放的任务,为智能体提供丰富的交互接口。
今年3月,智源团队曾提出了在无专家数据的情况下,高效解决「我的世界」多任务的方法——Plan4MC。
Plan4MC通过内在奖励的强化学习方法,训练智能体的基本技能。
然后,智能体利用大模型AquilaChat2的推理能力,完成任务规划。
比如,当智能体收到「伐木并制作工作台放在附近」的任务后,就会与AquilaChat2进行多轮对话交互。
首先,智能体明确自己的主任务是——建造工作台,由此输入prompt,包括「当前环境状态」、「需要完成的任务」。
然后AquilaChat2收到命令后,便开始做出反馈,告诉智能体「下一步使用什么技能」,同时还确定了下一个子任务为:寻找附近的木头。
智能体找到木头后,下一个子任务便是伐木。继续将环境信息作为输入,由此,AquilaChat2给出了下个技能名称。
以此往复,智能体继续推进自己朝着总目标方向,与AquilaChat2进行交互,完成任务。
就这样,在AquilaChat2的帮助下,智能体搭出了完美的工作台。
Aquila2+BGE2,复杂文献也能检索
复杂文献的检索,让不少科研工作者头秃。
基于传统向量库的检索方式,大模型能够在一些简单问题上表现出色。
然而,当面对复杂、需要深度理解的问题时,它的能力就很有限。
智源将Aqiula2与开源的语义向量模型BGE2结合,彻底解决了这一大难题。
当你想要检索某位作者,关于某个主题的论文时,又或者要求大模型针对一个主题的多篇论文的生成总结文本,就不是难题了。
举个栗子,让Aqiula2给出Mirella Lapata所著关于「总结」的论文。
Aqiula2立马给出了符合要求的复杂文献。
Aquila2+BGE2文献检索场景复杂查询示例
AquilaSQL:最优「文本-SQL语言」生成模型
而AquilaSQL,则可以充当「翻译员」,将用户发出的自然语言指令,准确翻译为合格的SQL查询语句。
这样,数据查询分析的门槛,就大大降低了。
在实际应用场景中,用户还可以基于AquilaSQL进行二次开发,将其嫁接至本地知识库、生成本地查询SQL。
另外,还可以进一步提升模型的数据分析性能,让模型不仅返回查询结果,更能进一步生成分析结论、图表等。
Aquila基座模型本身就具有优秀的代码生成能力。
在此基础上,AquilaSQL经过了SQL语料的继续预训练和SFT两阶段训练,最终以67.3%准确率,超过「文本-SQL语言生成模型」排行榜Cspider上的SOTA模型,而未经SQL语料微调的GPT4模型。准确率仅为30.8%。
在下图中,我们让AquilaSQL从身高(height)、收入(income)和位置(location)三个数据表中,筛选「居住在北京的收入大于1000的人平均身高」。
AquilaSQL开源仓库地址:https://github.com/FlagAI-Open/FlagAI/tree/master/examples/Aquila/Aquila-sql
AquilaSQL顺利地生成了多表查询语句,完成了这个复杂查询任务。
「全家桶」级别开源,业界良心
一个冷知识是,虽然Llama2也开源,但它的商用许可协议,对中文用户并不那么友好。
而且,Llama2不仅在中文商用上设限,连对商用的月活都有限制。
Llama 2商业协议明确表示不允许英文以外的商业
相比之下,Aquila在全球范围内都可商用——既不像Llama2那样限制重重,也不像其他可商用模型一样需要填表登记。
此外,很多模型团队在开源时,并不会开源模型训练的超参、优化方案等关键数据。而Aquila2此次却是全部开源创新训练算法,BGE、FlagScale、FlagAttention,都全部分享给了开发者。
通过这套工具,开发者就以轻松复现Aquila2了。
这种史无前例的「全家桶」开源,简直是大模型开源界的YYDS!
之所以毫无保留地开源训练工具和算法,是基于智源非盈利机构的定位——通过彻底、全面的开源分享,促进全球大模型生态的繁荣。
新一代语义向量模型BGE2
BGE(BAAI General Embedding)是智源在今年8月全新开源的语义向量模型。
这次,新一代BGE2也将随着Aquila2同步开源。
BGE2中的BGE-LLM Embedder模型集成了「知识检索」、「记忆检索」、「示例检索」、「工具检索」四大能力。
它首次实现了单一语义向量模型对大语言模型主要检索诉求的全面覆盖。
结合具体的使用场景,BGE-LLM Embedder将显著提升大语言模型在处理知识密集型任务、长期记忆、指令跟随、工具使用等重要领域的表现。
高效并行训练框架FlagScale
FlagScale是Aquila2-34B使用的高效并行训练框架,能够提供一站式语言大模型的训练功能。
得益于智源团队的分享,大模型开发者便可以通过FlagScale项目获取Aquila2模型的训练配置、优化方案和超参数。
FlagScale开源代码仓库:https://github.com/FlagOpen/FlagScale
因此,智源也成为「国内首个」完整开源训练代码和超参数的大模型团队。
FlagScale是在Megatron-LM基础上扩展而来,提供了一系列功能增强,包括分布式优化器状态重切分、精确定位训练问题数据,以及参数到Huggingface转换等。
经过实测,Aquila2训练吞吐量和GPU利用率均达到业界领先水平。
FlagScale训练吞吐量与GPU利用率
此外,FlagScale还采用了多种并行技术,如数据并行、张量并行和1F1B流水线并行等,加速训练过程,并使用BF16进行混合精度进行训练。
在性能优化方面,FlagScale采用了FlashAttn V2、计算与通信重叠、梯度累积等技术,显著提升了计算效率。
未来,FlagScale将继续保持与上游项目Megatron-LM最新代码同步,引入更多定制功能,融合最新的分布式训练与推理技术以及主流大模型、支持异构AI硬件。
这样就可以构建一个通用、便捷、高效的分布式大模型训练推理框架,以满足不同规模和需求的模型训练任务。
开源算子集FlagAttention
另外,FlagAttention是首个支持长文本大模型训练、使用Triton语言开发的定制化高性能Attention开源算子集。
针对大模型训练的需求,对Flash Attention系列的Memory Efficient Attention算子进行扩展。
目前已实现分段式Attention算子——PiecewiseAttention,已经适配了国产芯片天数,后续还会适配更多异构芯片。
FlagAttention开源代码仓库:https://github.com/FlagOpen/FlagAttention
PiecewiseAttention主要解决了带旋转位置编码Transformer模型(Roformer)的外推问题。
大模型推理时的序列长度超出训练时最大序列长度时,距离较远的token之间的Attention权重异常增高。
而Flash Attention对Attention Score的计算采用分段式的处理时无法做到高效实现,因此智源团队自研了分段式PiecewiseAttention算子,大模型开发者可利用该开源算子实现更加灵活的前处理。
简单来说,PiecewiseAttention有以下几个特点:
- 通用性:对使用分段式计算Attention的模型具有通用性,可以迁移至Aquila之外的大语言模型。
- 易用性:FlagAttention基于Triton语言实现并提供PyTorch接口,构建和安装过程相比CUDA C开发的Flash Attention更加便捷。
- 扩展性:同样得益于Triton语言,FlagAttention算法本身的修改和扩展门槛较低,开发者可以便捷地在此之上拓展更多新功能。
未来,FlagAttention项目也将继续针对大模型研究的需求,支持其他功能扩展的Attention算子,进一步优化算子性能,并适配更多异构AI硬件。
开发者指南:快速上手Aquila2
Aquila2模型权重&代码仓库:
https://github.com/FlagAI-Open/Aquila2
https://model.baai.ac.cn/
https://huggingface.co/BAAI
Aquila2全系列兼容多个大模型生态开源项目:
• LoRA/QLoRA:轻量化的模型微调训练技术,既加速了大模型训练,同时也降低了显存占用。
• vLLM:支持构建高吞吐量的大语言模型服务,支持流式输出,支持单机多卡、分布式并行推理。
• llama.cpp:支持非GPU端和4-bit 量化,进一步降低开发者的的使用门槛。
微信扫码关注该文公众号作者