越小越好:Q8-Chat,在至強處理器上的高效生成式 AI 體驗

釋出於 2023 年 5 月 16 日
在 GitHub 上更新

大語言模型 (LLM) 正在席捲機器學習世界。得益於其 Transformer 架構,LLM 具有從海量非結構化資料(如文字、影像、影片或音訊)中學習的驚人能力。它們在許多任務型別上表現出色,無論是像文字分類這樣的抽取式任務,還是像文字摘要和文字到影像生成這樣的生成式任務。

顧名思義,LLM 是通常超過 100 億引數大關的*大型*模型。有些模型的引數超過 1000 億,例如 BLOOM 模型。LLM 需要大量的計算能力(通常在高階 GPU 中才能找到),以便為搜尋或對話應用等低延遲用例提供足夠快的預測速度。不幸的是,對於許多組織來說,相關成本可能高得令人望而卻步,使其難以在應用程式中使用最先進的 LLM。

在本文中,我們將討論有助於減少 LLM 大小和推理延遲的最佳化技術,幫助它們在英特爾 CPU 上高效執行。

量化入門

LLM 通常使用 16 位浮點引數(又名 FP16/BF16)進行訓練。因此,儲存單個權重或啟用值需要 2 位元組的記憶體。此外,浮點運算比整數運算更復雜、更慢,並且需要額外的計算能力。

量化是一種模型壓縮技術,旨在透過減少模型引數可以採用的唯一值的範圍來解決這兩個問題。例如,您可以將模型量化為較低的精度,如 8 位整數 (INT8),以縮小模型並將複雜的浮點運算替換為更簡單、更快的整數運算。

簡而言之,量化將模型引數重新縮放到更小的值範圍。如果成功,它會使您的模型縮小至少 2 倍,而不會對模型準確性產生任何影響。

您可以在訓練期間應用量化,即量化感知訓練 (QAT),這通常會產生最佳結果。如果您希望量化現有模型,可以應用訓練後量化 (PTQ),這是一種速度快得多且需要很少計算能力的技術。

有多種不同的量化工具可供使用。例如,PyTorch 內建了對量化的支援。您還可以使用 Hugging Face Optimum Intel 庫,其中包括對 QAT 和 PTQ 的開發者友好型 API。

量化 LLM

最近的研究 [1][2] 表明,當前的量化技術對 LLM 效果不佳。特別是在 LLM 中,所有層和詞元 (token) 的特定啟用通道中都存在大幅度的異常值。以下是 OPT-13B 模型的一個示例。您可以看到,其中一個啟用通道的值比所有其他詞元的所有其他通道的值大得多。這種現象在模型的所有 Transformer 層中都可見。


*來源:SmoothQuant*

迄今為止最好的量化技術是對啟用進行逐詞元量化,但這會導致異常值被截斷或低幅啟用值下溢。這兩種情況都會嚴重損害模型質量。此外,量化感知訓練需要額外的模型訓練,由於缺乏計算資源和資料,這在大多數情況下是不切實際的。

SmoothQuant [3][4] 是一種解決此問題的新型量化技術。它對權重和啟用應用聯合數學變換,減少了啟用的異常值和非異常值之間的比率,代價是增加了權重的該比率。這種變換使 Transformer 的各層變得“量化友好”,並能夠在不損害模型質量的情況下實現 8 位量化。因此,SmoothQuant 產生了更小、更快的模型,這些模型在英特爾 CPU 平臺上執行良好。


*來源:SmoothQuant*

現在,讓我們看看 SmoothQuant 應用於流行的 LLM 時的效果。

使用 SmoothQuant 量化 LLM

我們在英特爾的朋友已經使用 SmoothQuant-O3 對幾個 LLM 進行了量化:OPT 2.7B6.7B [5],LLaMA 7B [6],Alpaca 7B [7],Vicuna 7B [8],BloomZ 7.1B [9] MPT-7B-chat [10]。他們還使用 Language Model Evaluation Harness 評估了量化模型的準確性。

下表總結了他們的發現。第二列顯示了量化後有所改進的基準測試的比例。第三列包含平均退化率(* 負值表示基準有所改進)。您可以在本文末尾找到詳細結果。

如您所見,OPT 模型是 SmoothQuant 量化的理想選擇。與預訓練的 16 位模型相比,模型小了約 2 倍。大多數指標都有所改善,而那些沒有改善的指標也只是受到了輕微影響。

LLaMA 7B 和 BloomZ 7.1B 的情況則更為複雜。模型被壓縮了約 2 倍,大約一半的任務指標有所改善。同樣,另一半僅受到輕微影響,只有一個任務的相對退化超過 3%。

使用更小模型帶來的顯而易見的好處是推理延遲的顯著降低。這是一個影片,演示了在單個 32 核英特爾 Sapphire Rapids CPU 插槽上使用 MPT-7B-chat 模型進行即時文字生成,批處理大小為 1。

在這個例子中,我們問模型:“*Hugging Face 在民主化 NLP 中的作用是什麼?*”。這會向模型傳送以下提示:“*一個好奇的使用者和一個人工智慧助手之間的聊天。助手對使用者的問題給出有幫助、詳細和禮貌的回答。使用者:Hugging Face 在民主化 NLP 中的作用是什麼?助手:*”

該示例展示了 8 位量化與第四代至強處理器相結合所帶來的額外好處,從而為每個詞元實現了非常低的生成時間。這種效能水平絕對使得在 CPU 平臺上執行 LLM 成為可能,為客戶提供了比以往任何時候都更大的 IT 靈活性和更好的價效比。

在至強處理器上的聊天體驗

最近,Hugging Face 的執行長 Clement 表示:“*更多公司最好專注於更小、更具體的模型,這些模型訓練和執行的成本更低。*” 像 Alpaca、BloomZ 和 Vicuna 這樣相對較小的模型的出現,為企業降低生產中的微調和推理成本開闢了新的機會。如上所述,高質量的量化為英特爾 CPU 平臺帶來了高質量的聊天體驗,而無需執行龐大的 LLM 和複雜的 AI 加速器。

我們與英特爾一起,在 Spaces 中託管了一個名為 Q8-Chat(發音為“Cute chat”)的激動人心的新演示。Q8-Chat 為您提供類似 ChatGPT 的聊天體驗,而它僅在單個 32 核英特爾 Sapphire Rapids CPU 插槽上執行,批處理大小為 1。

後續步驟

我們目前正致力於透過 Intel Neural Compressor 將這些新的量化技術整合到 Hugging Face Optimum Intel 庫中。完成後,您將能夠僅用幾行程式碼就復現這些演示。

敬請期待。未來是 8 位的!

本文保證 100% 無 ChatGPT 內容。

致謝

這篇部落格是與英特爾實驗室的 Ofir Zafrir、Igor Margulis、Guy Boudoukh 和 Moshe Wasserblat 聯合撰寫的。特別感謝他們的寶貴意見和合作。

附錄:詳細結果

負值表示基準有所改進。

社群

註冊登入 發表評論

© . This site is unofficial and not affiliated with Hugging Face, Inc.