阿里140億大模型開源!10項任務超340億Llama 2,Demo在線可玩
阿里又開源大模型了!
這次是純粹的大語言模型,相比上一次的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開源大模型感興趣的,可以去項目主頁試玩一波了~