自己回自己的文,給想進入AI生活的人一點知識科普,順便闢謠一下網路上漫天飛的錯誤
資訊。
===
個人裝置跑『大模型、小模型』,大小如何定義?
以下節錄台大洪教授的臉書文字內容:
https://www.facebook.com/share/8EmqkoYmn8j9mstY/
在個人裝置上跑大小型語言模型
驅動當今AI服務的核心引擎是大型語言模型(LLM),但這類名詞就像大數據(Big Data
)一樣,對於所謂的「大」,並沒有明確的定義,因此往往被錯誤或浮濫使用。
這篇就來談談語言模型的大小,以及在現在的個人裝置上能跑多大的語言模型。
話說,GPT2在2019年出現江湖時,是當時最大的LLM,不過它1.5B的參數量[1],還不到20
20年GPT3的175B參數的百分之一,當然就更不用跟現在的GPT4比大小了。
這些「比較小的大型語言模型」也是有用的,因為有成本低、速度快的優勢。但「比較小
的大型語言模型」這樣稱呼實在蠻矛盾詭異的,所以最近有人開始使用「小型語言模型」
(SLM)這個名詞來稱呼之,但千萬不要以爲SLM真的小。
今年四月發佈的Llama3,有三個訓練好的開源版本:8B、70B、400B,不過其中400B的版
本說是敬請期待,還沒有實際釋出[2]。如果以此為參考基準,8B的版本可算是SLM,400B
是LLM,那介於其中的70B該算SLM還是LLM,或者稱之為MLM?
先不管稱呼的問題,雖然大小不同,這三款語言模型都使用15T tokens的資料集進行訓練
,據說訓練過程總共花了100,000 petaFLOPS-day的大算力[2]。訓練8B的模型花了1,300,
000 GPU hours,排放了390噸的二氧化碳;訓練70B的模型花了6,400,000 GPU hours,排
放了1900噸的二氧化碳[3]。Meta用的是最新的Nvidia H100 GPU ,每張耗電700瓦。
想從零開始訓練模型的話,得先盤點一下,自己的手上有多少訓練資料,再評估一下能否
負擔這些算力的需求。不過我覺得Meta公開的算力需求有點少,應該沒有把失敗的過程算
進來,或許是不想讓碳排放量看起來太高。
架構和源頭相同的模型,才能這麽比較。據說Llama3的8B模型的能力約略可與Llama2的70
B模型抗衡,因為Llama2的訓練資料集「只」有2T tokens [3]。Meta在發表Llama3的時候
也跟其他公司的模型比較[4],但參考這種評比結果時要小心,因為廠商通常都只報喜不
報憂,開發者最好是拿自己應用的情境去實際測試。
這陣子廠商猛推的AI PC、Copilot Windows、On-Device AI,標榜在個人裝置上跑AI,對
應用開發者和使用者來說,AI的能力越強越好,但這些裝置上究竟跑得動多大的語言模型
呢?
首先要看的是記憶體的容量。
SLM的問題較小。以Llama3的8B開源模型為例,下載標準的16位元浮點數(FP16)版本,
每個參數需要2個bytes,如果要把8B的參數都放進記憶體的話,記憶體的容量大概要16GB
,因此目前的AI PC的最低規格16GB是勉強堪用的。若是記憶體不夠用,計算的過程就可
能會變得很慢。
軟體的解法是把模型壓縮得更小一些,例如用FP8或INT8取代FP16,參數所需的記憶體空
間就減半,但這麼一來會讓模型變笨。但應用開發者可以將壓縮變笨的模型再做一些特訓
,讓它在特定應用領域上表現稱職,這就是之前講過的專家模型。
不想讓模型變笨,硬解的方法是增大記憶體容量。CPU的記憶體容量更大,能夠放進更大
的模型。FP16的Llama3 70B模型概算需要140GB,大概會超出一般的個人電腦的記憶體容
量。工作站和伺服器可以放進幾個TB的記憶體,但是用CPU來跑這個規模的LLM實在太慢,
性價比也很低,通常會用NPU或GPU。
PC上加裝的獨立顯卡上有GPU專用的記憶體,其容量決定了可執行的模型大小。高階遊戲
顯卡配備16GB以上的記憶體,應該跑得動Llama3 8B,但Nvidia和AMD最高階的遊戲顯卡不
約而同都只給到24GB,所以不要幻想在遊戲顯卡上能把原版的Llama3 70B跑好。
但即便是目前市場上最大專業顯卡,Nvidia的H100,每張顯卡上的記憶體也只有80GB,還
是放不進原版的Llama3 70B,又不想讓模型變笨,那該怎麼辦?答案是把模型拆開來,用
多張顯卡一起跑。兩張80GB版本的A100或H100,記憶體合計160GB就夠了,但所費不貲。
有人想用6張24GB的RTX4090顯卡來做這件事,但這些卡需要透過PCIe介面交換資料的負擔
會讓速度降低不少。
其次是記憶體的頻寬。
很多人使用GPU跑LLM,不只因為GPU算力高,而且也因為GPU用上了比CPU頻寬高出一大截
的記憶體。RTX 4090的記憶體頻寬是1TB/s,而Intel Core Ultra 7 165H的記憶體頻寬只
有120GB/s,足足差了8倍。概算一下,要讓Core Ultra 7讀一遍140GB的模型參數,就要
超過一秒鐘!這樣要如何即時反應?如果每處理一個token都要再讀一遍,那還得了。
當然軟體上會做一些優化,盡可能利用已經從記憶體讀進來的參數,不要讓每個token進
來後都要重複再讀同樣的參數,因此優化的技術相當重要,但先天記憶體頻寬的差異還是
會有顯著的影響。
要知道GPU架構設計的理念和CPU先天上不同,非常重視高頻寬,而CPU比GPU在存取記憶體
的時候更重視低延遲。很現實的問題是,如果高頻寬和低延遲都要最好的話,那就會變得
很昂貴。
[1] B是Billion的縮寫,10的9次方,也可以用G或Giga來代表。T是Trillion或Tera的縮
寫,10的12次方。P是Peta的縮寫,10的15次方。
[2] https://en.wikipedia.org/wiki/Llama_(language_model)
[3] https://github.com/meta-llama/llama3/blob/main/MODEL_CARD.md
[4] https://techcrunch.com/....../meta-releases-llama-3....../
===
Q:阿婆這次的3B模型是不是自己的?
A:是,有開源在網路上。
https://machinelearning.apple.com/research/openelm
蘋果在四月的時候給自己發了個搞,說明自己開源的OpenELM是為一種開放式訓練及推理
框架的高效率語言模型。裡面有附上原始碼頁面在GitHub上面,以及在AI討論區Hugging
Face上。
https://github.com/apple/corenet
https://huggingface.co/apple/OpenELM
===
Q:阿婆完全照搬OpenAI的GPT模型嗎?
A:沒有,這次提供的是本地自家模型以串接的方式連動GPT模型,也提供用戶關閉此功能
的選項。
===
Q:除了本機端上的模型,發表會還有提到蘋果自家的私有雲端伺服器?
A:是,相較於本機端的模型,阿婆保證自己的資料不會儲存在雲端上,也保證一定程度
的隱私,比較像是私有雲端預訓練一個模板,提供一定程度的格式回答,而空格填入使用
者隱私資訊的方式連動。
===
Q:幹嘛不下放到A14以後的晶片使用?
A:除開NPU算力足夠以外,對於AI自然語言模型的關鍵還是在於記憶體大小,去年發表會
只有iPhone 15 Pro有達到8GB記憶體門檻,其餘以下設備未達的情況下,阿婆想保證這項
AI使用順暢易用,就只有提高使用門檻,畢竟在此之前iPhone等終端設備也有一些AI應用
(非生成式模型推理),勢必佔用記憶體,我想阿婆有所考量。
===
Q:這次的AI相比他牌的AI有什麼優勢?
A:其實發表會反覆提及到App Intents API,這個API直接決定了未來Siri能否達成非常
順滑的使用體驗,畢竟這種系統底層的權限,現在只有封閉環境的阿婆有辦法大力整合推
行。
而且之後的開發者統一指標就是能否透過這個API讓系統得以間接使用手機內既有的資訊
跳轉。
阿婆在發表會後半段也有初步演示如何透過一段對話得知過往在終端內的資訊(飛機資訊
那段)。
===
Q:中文的AI應用還要等明年,何時也沒說清楚,到時早就被超車?
A:雖說科技這門就是先上車佔有先機就有優勢,但演算法每天每週每月也都會有新的改
進更新,是否被超車,我覺得阿婆在發表會裡面已經先豎立自己對於這個蘋果智能的目標
了,也就是那五大宗旨。而且阿婆很明顯不會想跟進OpenAI的訓練方式去對待自己的模型
,有違他們的願景(不外乎就是資料來源跟隱私的問題)
===
現在WWDC也還沒結束,何況英文版預計秋季才開放,還有很多消息等落地的。
--