阿裏又開源大模型了!
這次是純粹的大語言模型,相比上一次的 70 億,新模型的參數量來到了140 億。
它名叫Qwen-14B,一上來就在一系列任務榜單中全部取得了第一,直接超過了 Meta 的340 億參數Llama 2版本。
Qwen-14B 的訓練數據達到 3 萬億 tokens,不僅中英文都來得,序列長度也達到了 8192。
用法也是老樣子,完全開源,而且免費可用,目前在魔搭社區上已經可以試玩到 Demo 版本。
看起來,阿裏的 Qwen 頗有點對标 Meta 的 Llama,要搞出一整套 " 國内大模型開源全系列 " 那味了。
那麽,Qwen-14B 的效果究竟怎麽樣呢?我們這就試一試。
10 個榜單超越 340 億 Llama 2
先來看看 Qwen-14B 的整體表現如何。
雖然 Llama 2 取得了一系列不錯的 " 戰績 ",不過至少官方提供的版本中,還不太具備說中文的能力。
因此,我們先來看看 Qwen-14B 的中文能力如何,然後再試試它在其他學科上的水平。
老樣子,弱智 benchmark送上:
看起來 Qwen-14B 也能準确應對。稍微難點的中文理解題:
感覺還不錯,順便糾正了我的語病(手動狗頭)。
那麽,數學題表現如何呢?普通的雞兔同籠試試:
表現也中規中矩。再試試稍微難一點的邏輯推理題,之前有人測試發現,60 個大模型全部做錯了。
問題如下:
Sally ( a girl ) has 3 brothers. Each brother has 2 sisters. How many sisters does Sally have?
莎莉(一個女孩)有 3 個兄弟。每個兄弟有 2 個姐妹。所以莎莉有幾個姐妹?
PS: 這道題的正确答案是 1。
在做錯的一系列大模型中,包括 GPT-4 和 Claude 2,也包括 Llama 2:
很遺憾,這裏 Qwen-14B 也沒做出來。
不過它的代碼能力還可以,例如讓寫一下貪吃蛇的代碼:
它很快給出了一個完整版的貪吃蛇代碼出來,帶注釋那種:
import random
# 初始化蛇的初始位置和長度
snake = [ ( 0, 0 ) ]
snake_length = 1
# 初始化食物的位置
food = ( random.randint ( 0, 10 ) , random.randint ( 0, 10 ) )
# 初始化遊戲的分數
score = 0
# 初始化遊戲的結束标志
game_over = False
# 遊戲主循環
while not game_over:
# 打印遊戲界面
for i in range ( 11 ) :for j in range ( 11 ) :if ( i, j ) in snake:print ( "O", end="" ) elif ( i, j ) == food:print ( "F", end="" ) else:print ( ".", end="" ) print ( )
# 獲取用戶的輸入
direction = input ( "Enter direction ( up, down, left, right ) : " )
# 更新蛇的位置
if direction == "up":
snake.insert ( 0, ( snake [ 0 ] [ 0 ] , snake [ 0 ] [ 1 ] - 1 ) ) elif direction == "down":
snake.insert ( 0, ( snake [ 0 ] [ 0 ] , snake [ 0 ] [ 1 ] + 1 ) ) elif direction == "left":
snake.insert ( 0, ( snake [ 0 ] [ 0 ] - 1, snake [ 0 ] [ 1 ] ) ) elif direction == "right":
snake.insert ( 0, ( snake [ 0 ] [ 0 ] + 1, snake [ 0 ] [ 1 ] ) )
# 更新蛇的長度
snake_length += 1
# 如果蛇吃到了食物,更新食物的位置和分數
if snake [ 0 ] == food:
food = ( random.randint ( 0, 10 ) , random.randint ( 0, 10 ) )
score += 1
# 如果蛇撞到了牆或者自己的身體,遊戲結束
if snake [ 0 ] [ 0 ] < 0 or snake [ 0 ] [ 0 ] >= 11 or snake [ 0 ] [ 1 ] < 0 or snake [ 0 ] [ 1 ] >= 11 or snake [ 0 ] in snake [ 1: ] :
game_over = True
# 打印遊戲的分數
print ( "Score: ", score )
# 打印遊戲結束的消息
print ( "Game over!" )
試了一下,可以直接運行玩耍:
據了解,Qwen-14B 和 Qwen-7B 一樣,所具備的也不僅僅是對話功能。
除了上述能力,Qwen-14B 也學會了自己調用工具。
例如,基于 Code Interpreter(代碼解釋器)工具執行 Python 代碼,直接做數學計算、數據分析和數據圖表繪制。
團隊也升級了 Qwen-14B 對接外部系統的技巧,不僅幾步就能調用複雜插件,還能将它作爲基座模型開發 Agent 等 AI 系統、完成複雜任務。
事實上,背後的 Qwen-14B 模型,也是個打榜小能手。
無論是在語言能力測試集上,如大規模多任務語言測評榜單 MMLU、中文基礎能力評估數據集 C-Eval 中;
還是在數學等其他學科的能力上,如小學數學加減乘除運算題 GSM8K、數學競賽數據集 MATH 等:
前後一共 10 個榜單,都取得了 TOP 1 的名次。
所以,Qwen-14B 究竟是怎麽做出來的?
訓練數據超 3 萬億 tokens
技術細節,還得從 Qwen-14B 的架構和訓練數據說起。
作爲一個參數 140 億的大模型,Qwen-14B 的結構細節長這樣:
在整體架構上,團隊借鑒了一些當前開源大模型的 " 神奇設計 ",包括谷歌的 PaLM 以及 Meta 的 Llama 等。
包括 SwiGLU 的激活函數設計、ROPE 的位置編碼等,都有出現在 Qwen-14B 的結構設計中。
不僅如此,團隊也針對詞表和長序列數據建模進行了優化。詞表大小超過 15 萬,更節省 token 數。
長序列數據建模上,則采取了一些當前最有效的方法,包括但不限于 Dynamnic NTK、Log-N attention scaling、window attention 等,确保模型表現效果更穩定。
這也是模型雖然隻有 140 億,但序列長度能達到 8192 的原因。
之所以能取得不錯的效果,也與 Qwen-14B 的訓練數據分不開。
Qwen-14B 整體采用了超過 3 萬億 tokens 數據訓練。
這裏面不僅僅包含語數英等基礎學科,還包括了理化生政史地等多個其他學科的知識、以及代碼知識,直接接受了 9 年義務教育(手動狗頭)。
除此之外,團隊還進一步做了不少數據處理工作,包括大規模數據去重、垃圾文本過濾、以及提升高質量數據比例等。
同時,爲了讓模型更好地學會調用工具、增強記憶能力,團隊也在微調樣本上進行了優化,建立更全面的自動評估基準來發現 Qwen-14B 表現不穩定的情況,并針對性地使用 Self-Instruct 方法擴充了高質量的微調樣本。
事實上,這已經是通義千問系列的第三波開源了。
最早在 8 月初,阿裏雲就開源了中英文通用模型Qwen-7B和對話模型Qwen-7B-Chat。
Qwen-7B 支持 8K 上下文長度,基于超過 2.2 萬億 tokens 包含文本、代碼等類型的數據集訓練,也支持插件調用和開發 Agent 等 AI 系統。
項目一開源,就沖上 GitHub 熱榜,目前已經收獲 4k 星熱度。
(值得一提的是,這次阿裏雲除了發布 Qwen-14B 以外,也順帶升級了一波 Qwen-7B)
随後在 8 月底,阿裏雲再次推出視覺語言大模型Qwen-VL。
Qwen-VL 基于 Qwen-7B 爲基座語言模型研發,支持圖像、文本、檢測框等多種輸入,并且在文本之外,也支持檢測框輸出。
從 demo 展示中來看,Qwen-VL 身兼多種能力,中英文對話、代碼圖像理解都來得:
對于阿裏的一系列 Qwen 開源大模型感興趣的,可以去項目主頁試玩一波了 ~
試玩地址:
https://modelscope.cn/studios/qwen/Qwen-14B-Chat-Demo/summary
參考鏈接:
[ 1 ] https://github.com/QwenLM/Qwen-7B
[ 2 ] https://github.com/QwenLM/Qwen-VL
[ 3 ] https://benchmarks.llmonitor.com/sally