ChatGPT 的持續爆火,早已讓各大科技公司坐不住了。
就在剛剛過去的一周,Meta「開源」了一個新的大模型系列 ——??LLaMA???(Large Language Model Meta AI),參數量從 70 億到 650 億不等。因為 LLaMA 比之前發布的很多大模型參數更少,但性能更好,所以一經發布讓很多研究者興奮不已。
例如,130 億參數的 LLaMA 模型「在大多數基準上」可以勝過參數量達 1750 億的 GPT-3,而且可以在單塊 V100 GPU 上運行;而最大的 650 億參數的 LLaMA 模型可以媲美谷歌的 Chinchilla-70B 和 PaLM-540B。
參數量的減少對于普通研究者和商業機構來說都是好事,但 LLaMA 真的像論文中說得那樣表現那么好嗎?和當前的 ChatGPT 相比,LLaMA 是否可以勉強一戰?為了解答這些疑問,有些研究者已經對這一模型進行了測試。
還有公司已經在嘗試補齊 LLaMA 短板,想看能不能通過添加 RLHF 等訓練方法讓 LLaMA 表現更好。
LLaMA 初步評測
這份評測結果來自一位名叫 @Enryu 的 Medium 作者。它比較了 LLaMA 和 ChatGPT 在解釋笑話、零樣本分類和代碼生成三個頗具挑戰性的任務中的效果。相關博客文章為《Mini-post: first look at LLaMA》。
作者在 RTX 3090/RTX 4090 上運行 LLaMA 7B/13B 版本,在單個 A100 上運行 33B 版本。
需要注意的是,與 ChatGPT 不同,其他模型并不是基于指令微調,因此 prompt 的結構有所不同。
解釋笑話
這是谷歌原始 PaLM 論文中展示的一個用例:給出一個笑話,讓模型來解釋它為什么好笑。該任務需要將世界知識和一些基本邏輯相結合。PaLM 之前的所有模型都無法做到這一點。作者從 PaLM 論文中提取了一些示例,比較了 LLaMA-7B、LLaMA-13B、LLaMA-33B 與 ChatGPT 的表現。
可以看到,結果很糟糕。這些模型 get 到了一些笑點,但無法真正理解,它們只是隨機生成一些相關的文本流。ChatGPT 雖與 LLaMA-33B 一樣表現很差(其他幾個模型更差),但它遵循了不一樣的策略:生成了一大堆文本,希望自己的回答至少有一部分是正確的(但大部分顯然不是),是不是很像大家考試時應對問答題的策略?
不過,ChatGPT 起碼 get 到了關于 Schmidthuber 的笑話。但總的來說,這些模型在零樣本笑話解釋任務上的效果與 PaLM 相差甚遠(除非 PaLM 的示例是精心挑選)。
零樣本分類
作者考慮的第二項任務更具挑戰性 —— 標題黨(clickbait)分類。由于連人類也無法就什么是標題黨達成一致,作者在 prompt 中為這些模型提供了一些示例(因此實際上是小樣本而非零樣本)。如下為 LLaMa 的 prompt:
I will tell whether the following news titles are clickbait:
1) The WORST care homes in England: Interactive map reveals the lowest-rated 2,530 residences - so is there one near you?
Clickbait: yes
2).NETflix's top 10 most-watched movies of all time
Clickbait: yes
3) Peering Through the Fog of Inflation
Clickbait: no
4) You’ll never believe which TV cook this cheeky chap grew up to be
Clickbait: yes
下圖為 LLaMA-7B、LLaMA-13B、LLaMA-33B 與 ChatGPT 的更多示例結果。
很明顯,贏家為 LLaMA-33B,它是唯一一個能夠遵循所有請求格式(yes/no)的模型,并且預測合理。ChatGPT 也還可以,但有些預測不太合理,格式也有錯誤。較小的模型(7B/13B)不適用于該任務。
代碼生成
雖然 LLM 擅長人文學科,但在 STEM 學科上表現糟糕。LLaMA 雖然有基準測試結果,但作者在代碼生成領域嘗試了一些特別的東西,即將人類語言零樣本地轉換為 SQL 查詢。這并不是很實用,在現實生活中直接編寫查詢會更有效率。這里只作為代碼生成任務的一個示例。
在 prompt 中,作者提供表模式(table schema)以及想要實現的目標,要求模型給出 SQL 查詢。如下為一些隨機示例,老實說,ChatGPT 看起來效果更好。
-- We have a table `events` with columns `event_id`, `timestamp`, `user_id`, `rpc_method`.
-- We want to count how many users issued request "Login" over the last week.
-- SQL query for this is:
-- 7b
SELECT count (*)
FROM events
WHERE user_id IN (SELECT user_id
FROM events
WHERE timestamp >= NOW () - INTERVAL 7 DAY)
AND rpc_method = 'Login';
-- 13b
SELECT COUNT (*) FROM events WHERE rpc_method = "Login"
AND UNIX_TIMESTAMP (timestamp) >= UNIX_TIMESTAMP (CURRENT_DATE - INTERVAL 7 DAY)
-- 33b
SELECT user_id,
COUNT (DISTINCT user_id) AS total
FROM events
WHERE timestamp BETWEEN TIMESTAMP '2013-08-14 00:00:00' AND TIMESTAMP '2013-08-21 00:00:00'
AND rpc_method = 'Login'
GROUP BY user_id
-- ChatGPT
SELECT COUNT (DISTINCT user_id)
FROM events
WHERE rpc_method = 'Login'
AND timestamp >= DATE_SUB (NOW (), INTERVAL 1 WEEK);
從測試結果來看,LLaMA 在一些任務上表現還不錯,但在另一些任務上和 ChatGPT 還有一些差距。如果能像 ChatGPT 一樣加入一些「訓練秘籍」,效果會不會大幅提升?
加入 RLHF,初創公司 Nebuly AI 開源 ChatLLaMA 訓練方法
雖然 LLaMA 發布之初就得到眾多研究者的青睞,但是少了 RLHF 的加持,從上述評測結果來看,還是差點意思。
在 LLaMA 發布三天后,初創公司 Nebuly AI 開源了 RLHF 版 LLaMA(ChatLLaMA)的訓練方法。它的訓練過程類似 ChatGPT,該項目允許基于預訓練的 LLaMA 模型構建 ChatGPT 形式的服務。項目上線剛剛 2 天,狂攬 5.2K 星。
項目地址:https://github.com/nebuly-ai/nebullvm/tree/main/Apps/accelerate/chatllama
ChatLLaMA 訓練過程算法實現主打比 ChatGPT 訓練更快、更便宜,我們可以從以下四點得到驗證:
- ChatLLaMA 是一個完整的開源實現,允許用戶基于預訓練的 LLaMA 模型構建 ChatGPT 風格的服務;
- 與 ChatGPT 相比,LLaMA 架構更小,但訓練過程和單 GPU 推理速度更快,成本更低;
- ChatLLaMA 內置了對 DeepSpeed ZERO 的支持,以加速微調過程;
- 該庫還支持所有的 LLaMA 模型架構(7B、13B、33B、65B),因此用戶可以根據訓練時間和推理性能偏好對模型進行微調。
圖源:https://openai.com/blog/chatgpt
更是有研究者表示,ChatLLaMA 比 ChatGPT 訓練速度最高快 15 倍。
不過有人對這一說法提出質疑,認為該項目沒有給出準確的衡量標準。
項目剛剛上線 2 天,還處于早期階段,用戶可以通過以下添加項進一步擴展:
- 帶有微調權重的 Checkpoint;
- 用于快速推理的優化技術;
- 支持將模型打包到有效的部署框架中。
Nebuly AI 希望更多人加入進來,創造更高效和開放的 ChatGPT 類助手。
該如何使用呢?首先是使用 pip 安裝軟件包:
pip install chatllama-py
然后是克隆 LLaMA 模型:
git clone https://github.com/facebookresearch/llama.gitcd llama
pip install -r requirements.txt
pip install -e .
一切準備就緒后,就可以運行了,項目中介紹了 ChatLLaMA 7B 的訓練示例,感興趣的小伙伴可以查看原項目。