國產(chǎn)大模型開源一哥再登場,最強雙語LLM「全家桶」級開源!340億參數(shù)超越Llama2-70B
最強中英雙語大模型,開源了!
今天,悟道·天鷹Aquila大語言模型系列已經(jīng)全面升級到Aquila2,并且再添了一位重量級新成員——340億參數(shù)的Aquila2-34B。
在代碼生成、考試、理解、推理、語言四個維度的22個評測基準上,Aquila2-34B強勢霸占了多個榜單TOP 1。
不過,「全面超越Llama 2」這樣的字眼,早已不再是新聞。相比分數(shù),業(yè)內更看重的是大模型的能力。
而在這些實際能力上,AquilaChat2的表現(xiàn)依然十分搶眼——
它不僅具有超強的推理能力,長文本處理能力也大大提升;強大的泛化能力,讓它可以適應各類真實應用場景,包括AI Agent、代碼生成、文獻檢索。
更驚喜的是,智源不僅Aquila2模型系列全部開源,而且還同步開源了Aquila2的創(chuàng)新訓練算法,包括FlagScale框架和FlagAttention算子集,以及語義向量模型BGE的新版本。
可以說,創(chuàng)新訓練算法和最佳實踐同步開放,在行業(yè)內是史無前例的。這種全家桶級別的開源,堪稱是大模型開源界的業(yè)界良心了。
Aquila2模型全系開源地址:
https://github.com/FlagAI-Open/Aquila2
最強中英雙語大模型,開源!
22項綜合排名領先,僅憑1/2的參數(shù)量和2/3的訓練數(shù)據(jù)量,就超越了Llama2-70B和其余開源基座模型,Aquila2-34B是怎樣做到的?
這背后,當然要歸功于智源多年積累的高質量語料。經(jīng)過這些語料預訓練后的模型,綜合能力十分強大,超越了通義千問和Llama 2。
架構升級、算法創(chuàng)新、數(shù)據(jù)迭代,也使Aquila2在中英文綜合能力方面進一步突破。
而Aquila2基座模型,為AquilaChat2對話模型提供了強大的基礎。
經(jīng)過高質量指令微調數(shù)據(jù)集訓練之后,AquilaChat2-34B一躍而成為當今最強的開源中英雙語對話模型, 主觀及客觀評測結果,都做到了全面領先。
SFT模型評測結果
并且,AquilaChat2-34B呈現(xiàn)出了幾個有趣的特點——它不僅具備豐富的中文世界原生知識,并且提供的回答更加準確全面、富有人情味。
對于中文世界的掌握,AquilaChat2-34B甚至可以完爆GPT-4。
對于「如何用螺絲釘炒西紅柿」這樣的問題,AquilaChat2-34B立刻聰明地猜到,用戶應該是想問「西紅柿炒雞蛋」。
相比之下,GPT-4只能理解到「螺獅粉炒西紅柿」這一層。
如果問大模型「研究什么專業(yè)的大學生容易找到工作時,分析單位是什么」,GPT-4的回答就很簡單粗暴——專業(yè)。
而AquilaChat2-34B則富有洞見地表示,分析單位可以是行業(yè)、公司類型、職級、地域、薪資水平、專業(yè)匹配度等。
推理超越Llama 2,僅次于GPT-4
我們能在哪一年實現(xiàn)AGI,是如今業(yè)內相當熱門的話題。
如何實現(xiàn)AGI呢?這其中最關鍵的,就是大模型的推理能力。
在評測基準Integrated Reasoning Dataset(IRD)上,十幾個當紅模型在歸納推理、演繹推理、溯因推理和因果推理維度上的結果和過程的準確性上,進行了全面比拼。
結果顯示,AquilaChat2-34B在IRD評測基準中排名第一,超越了LLama2-70B-Chat、GPT-3.5等模型,僅次于GPT-4。
SFT模型在IRD數(shù)據(jù)集上的評測結果
上下文窗口長度,擴至16K
長文本輸入,是行業(yè)現(xiàn)在迫切需要解決的問題。
能夠接收多少文本輸入,直接決定了大模型有多大的內存,它和參數(shù)量一起,共同決定了模型的應用效果。
對此,智源以Aquila2-34B為基座,經(jīng)過位置編碼內插法處理,并在20W條優(yōu)質長文本對話數(shù)據(jù)集上做了SFT,直接將模型的有效上下文窗口長度擴展至16K。
在LongBench的四項中英文長文本問答、長文本總結任務的評測效果顯示,AquilaChat2-34B-16K處于開源長文本模型的領先水平,已經(jīng)接近GPT-3.5。
長文本理解任務評測
另外,我們都知道,大模型普遍存在著長度外延能力不足的問題,這個問題嚴重制約了大模型的長文本能力。
智源聯(lián)合北大團隊,對多個語言模型處理超長文本的注意力分布做了可視化分析。他們發(fā)現(xiàn):所有語言模型均存在固定的相對位置瓶頸,且顯著小于上下文窗口長度。
為此,智源團隊創(chuàng)新性地提出了NLPE(Non-Linearized Position Embedding,非線性位置編碼)方法,在RoPE方法的基礎上,通過調整相對位置編碼、約束最大相對長度,來提升模型外延能力。
在代碼、中英文Few-Shot Leaning、電子書等多個領域的文本續(xù)寫實驗顯示,NLPE可以將4K的Aquila2-34B模型外延到32K長度,且續(xù)寫文本的連貫性遠好于Dynamic-NTK、位置插值等方法。
如下圖所示,在長度為5K~15K的HotpotQA、2WikiMultihopQA等數(shù)據(jù)集上的指令跟隨能力測試顯示,經(jīng)過NLPE外延的AquilaChat2-7B(2K)準確率為17.2%,而Dynamic-NTK外延的AquilaChat2-7B準確率僅為0.4%。
NLPE與主流Dynamic-NTK外延方法在SFT模型上的能力對比
NLPE與主流Dynamic-NTK外延方法在Base模型上的能力對比(ppl值越低越好)
同時,智源團還開發(fā)了適配長文本推理的分段式Attention算子PiecewiseAttention,來高效地支持NLPE等面向Attention Map的優(yōu)化算法,進一步減少顯存占用、提升運算速度。
泛化能力超強,絕不「高分低能」
說起來,許多大模型雖然在標準測試中表現(xiàn)出色,一到實際應用的時候卻抓瞎了。
相比之下,Aquila2模型在考試上成績優(yōu)異,在真實應用場景的表現(xiàn)又如何呢?
要知道,大模型泛化能力,也就是舉一反三的能力至關重要。
這意味著,LLM在訓練數(shù)據(jù)之外,依然能夠有效應對沒有見過的任務,給出準確的響應。
若是這個大模型在基準測試中取得高分,但在實際應用中表現(xiàn)很差,也就是擅長考題但不善于解決實際問題,是「高分低能」的表現(xiàn)。
為了評估Aquila2模型的泛化能力,智源團隊從三個真實應用場景下對其進行了驗證。
AI智能體在「我的世界」自主思考
通用智能體,能夠在開放式的環(huán)境中學習多種任務,是模型重要能力的體現(xiàn)。
一提到智能體任務的測試,我們能想到的最常見的開放世界游戲,當然就是「我的世界」了。
這里有著無限生成的復雜世界和大量開放的任務,為智能體提供豐富的交互接口。
今年3月,智源團隊曾提出了在無專家數(shù)據(jù)的情況下,高效解決「我的世界」多任務的方法——Plan4MC。
Plan4MC通過內在獎勵的強化學習方法,訓練智能體的基本技能。
然后,智能體利用大模型AquilaChat2的推理能力,完成任務規(guī)劃。
比如,當智能體收到「伐木并制作工作臺放在附近」的任務后,就會與AquilaChat2進行多輪對話交互。
首先,智能體明確自己的主任務是——建造工作臺,由此輸入prompt,包括「當前環(huán)境狀態(tài)」、「需要完成的任務」。
然后AquilaChat2收到命令后,便開始做出反饋,告訴智能體「下一步使用什么技能」,同時還確定了下一個子任務為:尋找附近的木頭。
智能體找到木頭后,下一個子任務便是伐木。繼續(xù)將環(huán)境信息作為輸入,由此,AquilaChat2給出了下個技能名稱。
以此往復,智能體繼續(xù)推進自己朝著總目標方向,與AquilaChat2進行交互,完成任務。
就這樣,在AquilaChat2的幫助下,智能體搭出了完美的工作臺。
Aquila2+BGE2,復雜文獻也能檢索
復雜文獻的檢索,讓不少科研工作者頭禿。
基于傳統(tǒng)向量庫的檢索方式,大模型能夠在一些簡單問題上表現(xiàn)出色。
然而,當面對復雜、需要深度理解的問題時,它的能力就很有限。
智源將Aqiula2與開源的語義向量模型BGE2結合,徹底解決了這一大難題。
當你想要檢索某位作者,關于某個主題的論文時,又或者要求大模型針對一個主題的多篇論文的生成總結文本,就不是難題了。
舉個栗子,讓Aqiula2給出Mirella Lapata所著關于「總結」的論文。
Aqiula2立馬給出了符合要求的復雜文獻。
Aquila2+BGE2文獻檢索場景復雜查詢示例
AquilaSQL:最優(yōu)「文本-SQL語言」生成模型
而AquilaSQL,則可以充當「翻譯員」,將用戶發(fā)出的自然語言指令,準確翻譯為合格的SQL查詢語句。
這樣,數(shù)據(jù)查詢分析的門檻,就大大降低了。
在實際應用場景中,用戶還可以基于AquilaSQL進行二次開發(fā),將其嫁接至本地知識庫、生成本地查詢SQL。
另外,還可以進一步提升模型的數(shù)據(jù)分析性能,讓模型不僅返回查詢結果,更能進一步生成分析結論、圖表等。
Aquila基座模型本身就具有優(yōu)秀的代碼生成能力。
在此基礎上,AquilaSQL經(jīng)過了SQL語料的繼續(xù)預訓練和SFT兩階段訓練,最終以67.3%準確率,超過「文本-SQL語言生成模型」排行榜Cspider上的SOTA模型,而未經(jīng)SQL語料微調的GPT4模型。準確率僅為30.8%。
在下圖中,我們讓AquilaSQL從身高(height)、收入(income)和位置(location)三個數(shù)據(jù)表中,篩選「居住在北京的收入大于1000的人平均身高」。
AquilaSQL開源倉庫地址:https://github.com/FlagAI-Open/FlagAI/tree/master/examples/Aquila/Aquila-sql
AquilaSQL順利地生成了多表查詢語句,完成了這個復雜查詢任務。
「全家桶」級別開源,業(yè)界良心
一個冷知識是,雖然Llama2也開源,但它的商用許可協(xié)議,對中文用戶并不那么友好。
而且,Llama2不僅在中文商用上設限,連對商用的月活都有限制。
Llama 2商業(yè)協(xié)議明確表示不允許英文以外的商業(yè)
相比之下,Aquila在全球范圍內都可商用——既不像Llama2那樣限制重重,也不像其他可商用模型一樣需要填表登記。
此外,很多模型團隊在開源時,并不會開源模型訓練的超參、優(yōu)化方案等關鍵數(shù)據(jù)。而Aquila2此次卻是全部開源創(chuàng)新訓練算法,BGE、FlagScale、FlagAttention,都全部分享給了開發(fā)者。
通過這套工具,開發(fā)者就以輕松復現(xiàn)Aquila2了。
這種史無前例的「全家桶」開源,簡直是大模型開源界的YYDS!
之所以毫無保留地開源訓練工具和算法,是基于智源非盈利機構的定位——通過徹底、全面的開源分享,促進全球大模型生態(tài)的繁榮。
新一代語義向量模型BGE2
BGE(BAAI General Embedding)是智源在今年8月全新開源的語義向量模型。
這次,新一代BGE2也將隨著Aquila2同步開源。
BGE2中的BGE-LLM Embedder模型集成了「知識檢索」、「記憶檢索」、「示例檢索」、「工具檢索」四大能力。
它首次實現(xiàn)了單一語義向量模型對大語言模型主要檢索訴求的全面覆蓋。
結合具體的使用場景,BGE-LLM Embedder將顯著提升大語言模型在處理知識密集型任務、長期記憶、指令跟隨、工具使用等重要領域的表現(xiàn)。
高效并行訓練框架FlagScale
FlagScale是Aquila2-34B使用的高效并行訓練框架,能夠提供一站式語言大模型的訓練功能。
得益于智源團隊的分享,大模型開發(fā)者便可以通過FlagScale項目獲取Aquila2模型的訓練配置、優(yōu)化方案和超參數(shù)。
FlagScale開源代碼倉庫:https://github.com/FlagOpen/FlagScale
因此,智源也成為「國內首個」完整開源訓練代碼和超參數(shù)的大模型團隊。
FlagScale是在Megatron-LM基礎上擴展而來,提供了一系列功能增強,包括分布式優(yōu)化器狀態(tài)重切分、精確定位訓練問題數(shù)據(jù),以及參數(shù)到Huggingface轉換等。
經(jīng)過實測,Aquila2訓練吞吐量和GPU利用率均達到業(yè)界領先水平。
FlagScale訓練吞吐量與GPU利用率
此外,F(xiàn)lagScale還采用了多種并行技術,如數(shù)據(jù)并行、張量并行和1F1B流水線并行等,加速訓練過程,并使用BF16進行混合精度進行訓練。
在性能優(yōu)化方面,F(xiàn)lagScale采用了FlashAttn V2、計算與通信重疊、梯度累積等技術,顯著提升了計算效率。
未來,F(xiàn)lagScale將繼續(xù)保持與上游項目Megatron-LM最新代碼同步,引入更多定制功能,融合最新的分布式訓練與推理技術以及主流大模型、支持異構AI硬件。
這樣就可以構建一個通用、便捷、高效的分布式大模型訓練推理框架,以滿足不同規(guī)模和需求的模型訓練任務。
開源算子集FlagAttention
另外,F(xiàn)lagAttention是首個支持長文本大模型訓練、使用Triton語言開發(fā)的定制化高性能Attention開源算子集。
針對大模型訓練的需求,對Flash Attention系列的Memory Efficient Attention算子進行擴展。
目前已實現(xiàn)分段式Attention算子——PiecewiseAttention,已經(jīng)適配了國產(chǎn)芯片天數(shù),后續(xù)還會適配更多異構芯片。
FlagAttention開源代碼倉庫:https://github.com/FlagOpen/FlagAttention
PiecewiseAttention主要解決了帶旋轉位置編碼Transformer模型(Roformer)的外推問題。
大模型推理時的序列長度超出訓練時最大序列長度時,距離較遠的token之間的Attention權重異常增高。
而Flash Attention對Attention Score的計算采用分段式的處理時無法做到高效實現(xiàn),因此智源團隊自研了分段式PiecewiseAttention算子,大模型開發(fā)者可利用該開源算子實現(xiàn)更加靈活的前處理。
簡單來說,PiecewiseAttention有以下幾個特點:
- 通用性:對使用分段式計算Attention的模型具有通用性,可以遷移至Aquila之外的大語言模型。
- 易用性:FlagAttention基于Triton語言實現(xiàn)并提供PyTorch接口,構建和安裝過程相比CUDA C開發(fā)的Flash Attention更加便捷。
- 擴展性:同樣得益于Triton語言,F(xiàn)lagAttention算法本身的修改和擴展門檻較低,開發(fā)者可以便捷地在此之上拓展更多新功能。
未來,F(xiàn)lagAttention項目也將繼續(xù)針對大模型研究的需求,支持其他功能擴展的Attention算子,進一步優(yōu)化算子性能,并適配更多異構AI硬件。
開發(fā)者指南:快速上手Aquila2
Aquila2模型權重&代碼倉庫:
使用方式一(推薦):通過FlagAI加載Aquila2系列模型
https://github.com/FlagAI-Open/Aquila2
使用方式二:通過FlagOpen模型倉庫單獨下載權重
使用方式三:通過Hugging Face加載Aquila2系列模型
Aquila2全系列兼容多個大模型生態(tài)開源項目:
? LoRA/QLoRA:輕量化的模型微調訓練技術,既加速了大模型訓練,同時也降低了顯存占用。
? vLLM:支持構建高吞吐量的大語言模型服務,支持流式輸出,支持單機多卡、分布式并行推理。
? llama.cpp:支持非GPU端和4-bit 量化,進一步降低開發(fā)者的的使用門檻。