阿里又開源大模型了!

這次是純粹的大語言模型,相比上一次的70億,新模型的參數量來到了140億

它名叫Qwen-14B,一上來就在一系列任務榜單中全部取得了第一,直接超過了Meta340億參數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開源大模型感興趣的,可以去項目主頁試玩一波了~

相關文章