編者按:本文作者是 Hugging Face 的機器學習工程師 Régis Pierrard,并于 2023 年 3 月 28 日發布于Hugging Face Blog[1]。感謝 Régis Pierrard 授權我們翻譯和轉發本文。本文介紹了如何在 Habana? Gaudi?2[2]上輕松部署參數量多達數十億的語言模型,披露了 Hugging Face 針對 BLOOMZ 在 Gaudi?2 上的性能評估結果。
隨著大語言模型 (Large Language Model, LLM) 的規模越來越大,在生產環境部署和使用這些模型來進行推理也變得越來越具挑戰性。為應對這些挑戰,無論硬件還是軟件,都經歷了多次創新。
下面,我們將一同探索如何有效克服這些挑戰。
(資料圖片僅供參考)
BLOOM[3]是一個擁有 1760 億參數的自回歸模型,訓練后可用于生成文本序列。它可以處理 46 種語言和 13 種編程語言。
作為 BigScience[4]計劃中的一個開放科學項目,BLOOM 的設計和訓練吸引了世界各地眾多研究人員和工程師的共同參與。
BLOOMZ[5]是最近發布的、與 BLOOM 架構完全相同的模型,它是 BLOOM 基于多個任務的調優版本,具有更出色的泛化和零樣本[6]能力。
無論是訓練[7]還是推理[8]場景,這類大模型都對內存和速度提出了新挑戰。
即便使用 16 位精度,一個實例所需的內存仍高達 352 GB!目前具有如此大內存的設備可能很難找到,但像 Habana? Gaudi?2 這樣的先進硬件卻足以讓 BLOOM 和 BLOOMZ 模型以更低的時延執行推理。
Habana? Gaudi?2Gaudi?2 是 Habana Labs 設計的第二代 AI 硬件加速器。單個服務器包含 8 張加速卡(稱為 Habana 處理單元,即 Habana Processing Unit,簡稱為 HPU),每張卡內存高達 96 GB,可提供足夠的空間來容納大模型。
然而,如果計算速度很慢,那么為大模型提供大內存的意義也不大。所幸,Gaudi?2 的計算速度也非常出色。
Gaudi?2 與 GPU 的主要區別在于它的架構能讓加速器并行執行通用矩陣乘法 (GeMM) 和其他運算,從而加快深度學習工作流。這些特性使 Gaudi?2 成為 LLM 訓練和推理的理想選擇。
Habana 的 SDK SynapseAITM支持使用 PyTorch 和 DeepSpeed 來加速 LLM 訓練和推理。SynapseAI 圖形編譯器[9]可優化圖形中所累積的操作的執行(如算子融合、數據布局管理、并行化、流水線、內存管理、圖優化等)。
此外,SynapseAI 最近引入了對 HPU Graph[10]和DeepSpeed-inference[11]的支持,這兩者都非常適合時延敏感型應用(參見下文基準測試)。
以上所有功能均已集成至 Optimum Habana[12]庫,因此在 Gaudi? 上部署模型非常簡單。
訪問此鏈接https://huggingface.co/docs/optimum/habana/quickstart,查看快速入門頁面。
如欲試用 Gaudi?2,請登錄英特爾? Developer Cloud[13]并按照本指南[14]操作。
基準測試本節將提供 BLOOMZ 在 Gaudi?2 和第一代 Gaudi? 上的基準測試結果。
雖然 Gaudi?2 和第一代 Gaudi? 的內存都不小,但由于模型過大,單個設備仍無法容納單個 BLOOMZ 實例。
為解決這一問題,本文使用了深度學習優化庫 DeepSpeed[15]來實現多種內存和速度優化,進而加速模型推理并使模型與設備適配。
本文方案需依賴 DeepSpeed-inference[16]:它引入了諸如模型(或流水線)并行[17]等多個功能特性,可充分利用可用設備。
對于 Gaudi?2,則使用了已添加 HPU 支持的 Habana 的 DeepSpeed[18]分支。
時延本文基于兩種不同規模但參數均達數十億的 BLOOMZ 模型(批大小為 1 個樣本)進行了實驗測試,兩種模型的參數大小分別為:
1760 億[19]參數 (BLOOMZ-176B)70 億[20]參數 (BLOOMZ-7B)本文使用 DeepSpeed-inference 以 16 位精度在 8 個設備上運行推理,并且使用 key-value 緩存。值得注意的是,盡管 CUDA Graph 目前與 DeepSpeed 中的模型并行不兼容(DeepSpeed v0.8.2,參見文末[21]),但 Habana 的 DeepSpeed 分支是支持 HPU Graph 的。
所有基準測試都使用貪心搜索 (Greedy Search)[22]生成 100 個詞元。輸入提示為:
DeepSpeed is a machine learning framework
BLOOM 分詞器會將該提示分為 7 個詞元。
推理時延測試結果如下圖所示(單位為秒):
△圖 1. BLOOMZ 在 Gaudi?2 和第一代 Gaudi? 上的推理時延測試結果
Habana 團隊最近在 SynapseAI 1.8 中引入了 DeepSpeed-inference 支持,可快速賦能 1000 多億參數模型的推理。
根據圖 1 測試結果可知:對于參數量達 1760 億的模型 BLOOMZ,Gaudi?2 性能表現出色,時延僅為約 3.7 秒 ;對于參數量為 70 億的較小模型 BLOOMZ-7B,Gaudi?2 的時延優勢更加顯著,單設備約為第一代 Gaudi? 的37.21%,而當設備數量都增加為 8 后,這一百分比進一步下降至約 24.33%。
Habana 團隊會在后續發布的新 SynapseAI 版本中繼續優化這些模型的性能。例如,在 SynapseAI 1.9 的預覽版中,BLOOMZ-176B 的時延從 3.7 秒進一步降低到 3.5 秒。
在完整數據集上運行推理我們編寫的腳本支持模型在完整的數據集上完成所有句子的推理。這尤其適用于想在自有數據集上嘗試使用 Gaudi?2 進行 BLOOMZ 推理的情況。
這里我們以 tldr_news 數據集為例。該數據集包含多篇文章的標題和內容(均可在 Hugging Face Hub 中對其進行可視化處理)。前幾個樣本如下所示:
關鍵詞: