MaskLLM

MaskLLM

NVIDIA Research · 程式設計 · 其他

MaskLLM 是 NVIDIA Research 推出的開源剪枝方法,靠可學習的 N:M 稀疏遮罩縮小大型語言模型,降低推論成本,同時把準確度守在原始模型附近。

MaskLLM 的介面預覽

關於 MaskLLM

What Is MaskLLM

MaskLLM 是一套用來壓縮大型語言模型的研究方法。它屬於剪枝工具的一員,負責移除模型用不到的參數,做法則採用半結構化稀疏,也就是所謂的 N:M 稀疏。道理很單純:在每 M 個連續權重組成的區塊裡,只留下 N 個。2:4 的樣式會在四個權重中保留兩個,等於把硬體需要搬動的資料量砍半。

MaskLLM 的真正差別,在於它怎麼決定留哪些權重。舊方法靠一條固定規則,例如丟掉最小的權重,或用統計估算挑選。MaskLLM 把遮罩的選擇當成模型要學的東西,將 N:M 樣式建構成機率分布,再透過一種叫 Gumbel Softmax 的取樣技巧訓練,讓模型能在大型資料集上找到更好的遮罩。學遮罩的過程中權重維持凍結,這也是為什麼對特定任務來說,2:4 稀疏能做到「無損」。

實際吸引力藏在數字裡。根據 NVIDIA 的說法,稠密的 LLaMA-2 7B 模型在 Wikitext 上的困惑度是 5.12,而先前的剪枝方法會把它推到 10 以上。MaskLLM 只靠學習遮罩、權重凍結不動,就把數字壓到 6.72 到 6.78。專案在 NVIDIA 授權下開源,研究人員和工程師都能自己跑。不過前提是要有真正的 GPU 硬體,還得懂機器學習。

Getting Started

  1. 安裝 Python 套件,再執行腳本,從 Hugging Face 下載已經算好的遮罩
  2. 在 PyTorch 裡載入目標模型,例如 LLaMA-2 7B 或 LLaMA-3 8B
  3. 套用下載的遮罩,並用專案附的困惑度腳本測準確度
  4. 若要自行訓練,架好 Megatron-LM 環境、備妥資料,再為自己的領域訓練一個新遮罩

產品資訊

快速了解 MaskLLM 的定價、支援平台與效能。

免費方案是
付費方案Free (open-source)
平台Python, PyTorch, Hugging Face Transformers, Megatron-LM, NVIDIA GPUs
開發者NVIDIA Research
類別程式設計 · 其他
發布日期Sep 2024
最近更新Dec 2024
網站訪問量N/A
網站全球排名N/A
API 提供狀態否

適合對象

這項工具最適合的使用者、任務與情境。

使用者

  • 機器學習研究人員:研究模型壓縮的工程師,想要一套能執行、能擴充,還能跟 SparseGPT、Wanda 比較的可學習稀疏方法
  • 部署模型的 ML 工程師:需要把大模型縮小到 GPU 預算吃得下、又不想重新訓練整個網路的團隊
  • 研究生與學術工作者:做高效推論研究、需要開放原始碼與可重現數據的人
  • 框架與工具開發者:想把 N

任務

  • 大型語言模型剪枝:把模型剪到 2
  • 一次性壓縮:不用長時間訓練,直接把算好的遮罩套到 LLaMA-2、LLaMA-3 或 LLaMA-3.1
  • 領域專屬稀疏:為特定任務學一個專用遮罩,讓剪枝後的模型在該領域保住準確度
  • 稀疏轉移:把學好的遮罩分布搬到不同領域或任務重複使用,不必從零開始
  • 剪枝方法評比:在同一套設定下,把 MaskLLM 跟 SparseGPT、Wanda 和幅度剪枝放在一起比較

情境

  • 團隊只有少數 GPU 卻要跑 7B 模型:用 2
  • 研究需要重現論文數字:跑官方釋出的遮罩,對照論文檢查困惑度,例如 LLaMA-2 7B 的 6.78
  • 模型整體表現不錯,但在利基領域失準:學一個量身打造的遮罩,讓剪枝版本在那些資料上依然準確
  • 為一整個模型家族打造壓縮流程:先從既有遮罩出發,再逐步微調,最後裁切 checkpoint 準備上線
  • 檢視授權與隱私限制:使用 NVIDIA 以自家授權釋出的原始碼與權重

主要功能

可學習剪枝的 N:M 遮罩

MaskLLM 不靠人工逐一評分權重,而是讓遮罩自己學出來。它把合法的 N:M 樣式集合當成一個分布,在訓練時從中取樣,模型便會收斂到最適合某份資料集的遮罩。這個可學習的步驟,正是它跟一次性方法的根本差別,後者選一次遮罩就停手。

Gumbel Softmax 取樣

這套方法借用了離散取樣的技巧,讓遮罩的選擇可以端到端訓練。Gumbel Softmax 讓梯度能穿過原本非黑即白的硬選擇,也因為這樣,N:M 遮罩上的分布才有辦法用真實資料最佳化,而不是靠估算。

現成的 Hugging Face 模型遮罩

專案附上現成遮罩,不用訓練就能試。官方釋出的遮罩涵蓋 LLaMA-2 7B、LLaMA-3 8B 與 LLaMA-3.1 8B,各以 C4 資料集的子集訓練而成,並有腳本自動從 Hugging Face 下載、套用到官方模型上評估。

半結構化 2:4 稀疏

MaskLLM 瞄準的是 N:M 稀疏,多半是每四個連續權重保留兩個非零值的 2:4 樣式。這個格式之所以重要,是因為它能對上硬體加速,所以縮小的模型不只佔更少空間,在對的 GPU 上還能跑得更快。

稀疏樣式轉移

同一套學遮罩的機率模型,可以把遮罩從一個領域帶到另一個。這種遮罩轉移在分布訓練好之後,要用到新任務或新資料集時,所需力氣比從零開始少,作者稱之為可轉移性。當一個模型得在好幾種情境都保持精準時,這一點特別有用。

Megatron-LM 訓練流程

要跑完整訓練時,MaskLLM 備有 Megatron-LM 工作流程,把 LLaMA 模型分散到多張 GPU 上。專案提供腳本,用來轉換 checkpoint、將資料分詞,用 SparseGPT、Wanda 或幅度剪枝產生先驗遮罩,接著訓練遮罩,最後在發布前裁切 checkpoint。

優缺點

優點

  • 從資料中學遮罩,而不是死守固定的重要性規則,同樣稀疏度下準確度更好
  • 以開放授權釋出原始碼、權重與現成遮罩,成果可以重現
  • 支援遷移學習,一份遮罩分布可用於多個任務與領域
  • 透過 Hugging Face 與 Megatron-LM,可搭配 LLaMA-2、LLaMA-3、LLaMA-3.1 等常見模型
  • 權重維持凍結,學到的 2:4 稀疏對調校過的任務而言沒有損失

缺點

  • 訓練新遮罩需要多 GPU 機器,專案指出完整訓練每張 GPU 約需 40GB 記憶體
  • 它是研究產物,不是產品,因此沒有客服、沒有代管服務、也沒有 API
  • 現成遮罩只涵蓋少數 LLaMA 模型,其他架構得自己訓練
  • 效益出現在支援 2:4 加速的硬體上,老舊或非 NVIDIA 的 GPU 能得到的幫助有限

常見問題

MaskLLM 是一套可學習的剪枝方法,為大型語言模型加上 N:M 稀疏。它不逐一評分權重,而是把遮罩建構成機率分布,從中學出該保留哪些權重。NVIDIA Research 在 NeurIPS 2024 發表,MaskLLM 原始碼在 GitHub 上開放。