一個模型融合了三種要素:架構、參數,以及其訓練數據的幽靈。架構是藍圖—它定義了資訊如何在系統中流動。Transformer透過注意力機制的層來處理文字。擴散模型則是反覆地將隨機噪音去噪,進而生成影像。Mamba模型則完全不用注意力機制,而是使用選擇性狀態空間來處理序列。架構決定了模型可以處理什麼類型的輸入,以及可以產生什麼類型的輸出,但單獨的架構本身什麼也做不了。它只是一個沒有知識的空白結構。
參數就是知識。在訓練期間,模型會調整數百萬或數十億個數值權重,直到它能良好地預測其訓練數據。這些權重編碼了模型「知道」的一切—語法、事實、推理模式、風格、偏見。當人們說一個模型有700億參數時,意思是它有700億個學習到的數字,這些數字集體代表了模型從其訓練語料中提取出的各種模式。參數在最具體的意義上就是模型本身:它是你下載的檔案、被載入GPU記憶體的物件、將架構轉化為能力的成品。
當你下載一個模型時,你下載的是將這些參數序列化成的一個檔案。格式的重要性可能比你預期的還要高。PyTorch .pt 或 .bin 檔案是使用PyTorch訓練模型的原生格式—它使用Python的pickle序列化,這表示理論上它可能包含任意程式碼。如果你從不受信任的來源下載模型,這是一個真正的安全問題。Hugging Face開發的Safetensors解決了這個問題,它只儲存原始張量資料,且採用無法執行程式碼的格式。它也因為支援記憶體映射存取而載入速度更快。大多數模型倉庫已經將safetensors作為預設格式。
GGUF則是完全不同的格式。由llama.cpp社群開發,GGUF設計用於消費級硬體上的CPU和混合CPU/GPU推論。它將模型權重與關於量化、分詞器設定和架構細節的元資料打包成一個自包含的檔案。如果你看到有人在MacBook上運行70B模型,他們幾乎肯定是使用了被量化到4位或5位精度的GGUF檔案。ONNX(開放神經網絡交換)則採取了另一種方法—它是一個互通格式,設計用來讓你在一個框架中訓練模型,並在另一個框架中運行,通常由運行時套件應用特定硬體的優化。
模型會經歷一個大多數使用者從未見過的生命週期。預訓練是昂貴的部分:一個基礎模型會在大量數據(通常對大型語言模型來說是數兆個token)上訓練,成本從數十萬到數百萬美元不等。這會產生一個可以預測文字的基礎模型,但對於對話來說並不太有用。微調會使用較小且精選的數據集,將基礎模型調整為特定任務—遵循指令、生成程式碼、醫療診斷等。RLHF或類似的對齊技術會讓模型的輸出更有幫助且更少有害。量化會將模型的精準度從16位或32位浮點數壓縮到8位、4位,甚至更低,以微小的品質損失換取記憶體和計算需求的大幅減少。部署會將模型放在API後方或載入到設備上。服務則處理實際的推論請求。
開放模型與封閉模型之間的區分比聽起來還要模糊。當Meta「釋出」Llama時,他們會公開模型權重—你可以下載參數並在自己的硬體上運行模型。但他們不會釋出訓練數據或完整的訓練程式碼。Mistral也做了類似的事情。這些更準確地稱為「開放權重」模型。真正開放原始碼的模型會包含權重、訓練數據、訓練程式碼和評估流程—幾乎沒有人達成的標準。另一方面,像GPT-4和Claude這樣的封閉模型只能透過API取得。你永遠看不到權重,無法修改模型,且必須遵守提供者的服務條款。實際上的差異非常巨大:開放權重模型會給予你控制權、隱私以及微調的能力,但你需要支付計算資源並承擔操作複雜度。封閉模型則提供便利性和通常更好的性能,但你只是租用別人系統的存取權。
基準測試是比較模型的標準方式,但它們極其不可靠。在MMLU(多選知識測試)中得分最高的模型,可能在你的特定任務上表現不佳。測試數據洩漏到訓練數據中的基準測試污染現象非常普遍且難以檢測。基於盲測人類偏好投票排名模型的Chatbot Arena更值得信賴,但仍然反映的是普遍對話品質,而非特定領域的表現。選擇模型的唯一可靠方式是用實際的工作負載來測試候選模型。寫出十個有代表性的提示,讓它們透過三到四個模型運行,並比較輸出結果。這一小時的投資會告訴你比任何排行榜更多的資訊。