雖然大型語言模型 (LLM) 中的「L」代表「large」(大型),但實際上情況更為複雜。有些大型語言模型含有數兆個參數,有些則只需少量參數即可有效運作。
請參考幾個實際範例,瞭解不同模型大小的實際影響。
LLM 大小和大小類別
身為網頁開發人員,我們傾向將資源大小視為下載大小。模型的文件大小是指參數數量。舉例來說,Gemma 2B 代表 Gemma 有 20 億個參數。
大型語言模型可能含有數十萬、數百萬、數十億甚至數兆個參數。
大型 LLM 的參數比小型 LLM 多,因此可擷取更複雜的語言關係,並處理細微的提示。也經常使用較大的資料集進行訓練。
您可能會發現,某些模型大小 (例如 20 億或 70 億) 很常見。例如 Gemma 2B、Gemma 7B 或 Mistral 7B。模型大小類別是近似分組。舉例來說,Gemma 2B 有「大約」 20 億個參數,但並非確切的 20 億。
模型大小類別提供評估 LLM 效能的實用方法。這就像拳擊中的體重級別一樣:同樣體型類別的模型比較容易比較。兩個 2B 模型應提供相似的效能。
不過,對於特定工作而言,較小的模型也能達到與大型模型相同的效能。
![HuggingFace 模型大小核取方塊的螢幕截圖。](https://web.dev/static/articles/llm-sizes/image/model-sizes-hugging-face.png?authuser=8&hl=zh-tw)
雖然最新的頂尖 LLM (例如 GPT-4 和 Gemini Pro 或 Ultra) 的模型大小不一定會公開,但據信這些模型的參數數量可能有數十億或數兆個參數。
並非所有模型的名稱都會顯示參數數量。部分型號會在型號後方加上版本號碼。舉例來說,Gemini 1.5 Pro 是指 1.5 版模型 (接續 1 版)。
是否為 LLM?
模型太小無法做為 LLM 時,在 AI 和 ML 社群中,大型語言模型的定義可能會有所不同。
有些人認為只有含有數十億個參數的大型模型才是真正的 LLM,而較小的模型 (例如 DistilBERT) 則被視為簡單的 NLP 模型。其他人則將較小但仍強大的模型納入 LLM 定義,例如 DistilBERT。
針對裝置端用途提供較小的 LLM
大型 LLM 需要大量儲存空間和運算資源才能進行推論。需要在配備特定硬體 (例如 TPU) 的專用強大伺服器上執行。
做為網頁開發人員,我們有興趣瞭解模型是否足夠小,可供使用者在裝置上下載及執行。
但這很難回答!目前沒有簡單的方法可以讓您知道「這個模型可以在大多數中階裝置上執行」,原因如下:
- 裝置的記憶體、GPU/CPU 規格等功能各有不同,低階 Android 手機和 NVIDIA® RTX 筆電的差異極大。您可能會取得一些關於使用者裝置的資料點。我們尚未定義用於存取網際網路的基準裝置。
- 模型或其執行的架構可能會經過最佳化,以便在特定硬體上執行。
- 無法透過程式設計方式判斷特定 LLM 是否可下載並在特定裝置上執行。裝置的下載能力取決於 GPU 的 VRAM 容量和其他因素。
不過,我們有一些實證知識:目前,某些具有數百萬至數十億個參數的模型,可以在消費者級裝置的瀏覽器中執行。
例如:
- Gemma 2B 搭配 MediaPipe LLM 推論 API (甚至適用於僅 CPU 裝置)。試試看。
- DistilBERT 搭配 Transformers.js。
這是一個新興領域。您可以預期廣告環境會有所變化:
- 有了 WebAssembly 和 WebGPU 創新技術,WebGPU 支援功能將可在更多程式庫、新程式庫和最佳化中推出,使用者裝置也將能更有效率地執行各種大小的 LLM。
- 隨著縮減技巧的興起,預期小型且成效極佳的 LLM 將越來越普遍。
較小 LLM 的注意事項
使用較小的 LLM 時,請務必考量效能和下載大小。
成效
任何模型的功能都取決於您的用途!針對用途進行微調的小型 LLM 可能比大型通用 LLM 的效能更好。
不過,在同一個模型系列中,較小的 LLM 功能較少。對於相同的用途,如果使用較小的 LLM,通常需要進行更多即時工程作業。
![Chrome 開發人員工具「網路」面板的螢幕截圖。](https://web.dev/static/articles/llm-sizes/image/performance.png?authuser=8&hl=zh-tw)
資料來源:HuggingFace Open LLM 排行榜,2024 年 4 月
下載大小
參數越多,下載大小就越大,這也會影響模型是否能合理下載,以便在裝置端使用。
雖然有技巧可根據參數數量計算模型的下載大小,但這可能會很複雜。
截至 2024 年初,模型下載大小很少會記錄在文件中。因此,針對裝置端和瀏覽器內的用途,建議您在 Chrome 開發人員工具的「Network」面板中,或使用其他瀏覽器開發人員工具,以實證方式查看下載大小。
![Chrome 開發人員工具「網路」面板的螢幕截圖。](https://web.dev/static/articles/llm-sizes/image/download-size.png?authuser=8&hl=zh-tw)
Gemma 會搭配 MediaPipe LLM Inference API 使用。DistilBERT 會與 Transformers.js 搭配使用。
模型縮減技巧
您可以使用多種方法大幅降低模型的記憶體需求:
- LoRA (低秩調整):微調技術,會將預先訓練的權重凍結。進一步瞭解 LoRA。
- 修剪:從模型中移除較不重要的權重,以縮減模型大小。
- 量化:將權重的精確度從浮點數 (例如 32 位元) 降低至較低位元表示法 (例如 8 位元)。
- 知識蒸餾:訓練較小的模型,模仿較大預先訓練模型的行為。
- 參數共用:為模型的多個部分使用相同權重,減少不重複參數的總數。