大型語言模型 (LLM) 在學界和業界都取得了巨大的進展。但訓練和部署 LLM 非常昂貴,需要大量的計算資源和內存,因此研究人員開發了許多用於加速 LLM 預訓練、微調和推理的開源框架和方法。然而,不同硬體和軟體堆疊的運行時效能可能存在很大差異,這使得選擇最佳配置變得困難。
最近,一篇題為《Dissecting the Runtime Performance of the Training, Fine-tuning, and Inference of Large Language Models》的新論文從宏觀和微觀的角度詳細分析了LLM 訓練、微調、推理的運行時表現。
請點擊以下連結查看論文:https://arxiv.org/pdf/2311.03687.pdf
#具體來說,這項研究首先在三個8-GPU上對不同規模(7B、13B和70B參數)的LLM進行了面向預訓練、微調和服務的無需改變原義,全程性能基準測試。測試涉及了具有或不具有單獨優化技術的平台,包括ZeRO、量化、重新計算和FlashAttention。然後,該研究進一步提供了LLM中計算和通訊運算子的子模組的詳細運行時分析
該研究的基準測試採用自上而下的方法,涵蓋Llama2 在三個8-GPU 硬體平台上的端到端步驟時間效能、模組級時間效能和運算子時間效能,如圖3 所示。
三個硬體平台分別為 RTX4090、RTX3090 和 A800,具體規格參數如下表 1 所示。
在軟體方面,研究比較了DeepSpeed 和Megatron-LM 在預訓練和微調方面的端到端步驟時間。為了評估優化技術,研究使用 DeepSpeed 逐一啟用如下優化:ZeRO-2、ZeRO-3、offloading、激活重計算、量化和 FlashAttention,以衡量性能改進以及時間和內存消耗方面的下降。
在LLM 服務方面,有三個高度最佳化的系統,vLLM、LightLLM 和TGI,該研究在三個測試平台上比較了它們的性能(延遲和吞吐量) 。
為了確保結果的準確性和可重複性,研究計算了LLM 常用資料集alpaca 的指令、輸入和輸出的平均長度,即每個樣本350 個token,並隨機產生字串以達到350 的序列長度。
在推理服務中,為了綜合利用計算資源並評估框架的穩健性和效率,所有請求都以突發模式調度。實驗資料集由 1000 個合成句子組成,每個句子包含 512 個輸入token。該研究在同一 GPU 平台上的所有實驗中始終保持「最大生成 token 長度」參數,以確保結果的一致性和可比性。
不需改變原義,全程表現
#該研究透過預訓練、微調和推理不同尺寸Llama2 模型(7B、13B 和70B)的步驟時間、吞吐量和記憶體消耗等指標,來衡量在三個測試平台上的無需改變原義,全程性能。同時評估了三個廣泛使用的推理服務系統:TGI、vLLM 和 LightLLM,並重點關注了延遲、吞吐量和記憶體消耗等指標。
模組層級效能
#LLM 通常由一系列模組(或圖層)組成,這些模組可能具有獨特的計算和通訊特性。例如,構成 Llama2 模型的關鍵模組是 Embedding、LlamaDecoderLayer、Linear、SiLUActivation 和 LlamaRMSNorm。
在預訓練實驗環節,研究者首先分析了三個測試平台上不同尺寸模型(7B、13B 和70B)的預訓練效能(迭代時間或吞吐量、記憶體消耗),然後進行了模組和操作層面的微基準測試。
#無改變原義,全程表現
#研究者先進行實驗來比較Megatron-LM 和DeepSpeed 的效能,二者在A800- 80GB 伺服器上預先訓練Llama2-7B 時並沒有使用任何記憶體最佳化技術(如ZeRO)。
他們使用的序列長度為 350,並為 Megatron-LM 和 DeepSpeed 提供了兩組批次大小,從 1 到最大批大小。結果如下表 II 所示,以訓練吞吐量(tokens / 秒)和消費級 GPU 記憶體(單位 GB)為基準。
結果表明,當批次大小都為 1 時,Megatron-LM 稍快於 DeepSpeed。不過當批次大小達到最大時,DeepSpeed 在訓練速度上最快。當批次大小相同時,DeepSpeed 消耗了比基於張量並行的 Megatron-LM 更多的 GPU 記憶體。即使批次大小很小,這兩個系統都消耗了大量的 GPU 內存,導致 RTX4090 或 RTX3090 GPU 伺服器的記憶體溢出。
在訓練Llama2-7B(序列長度為350,批次大小為2)時,研究者使用了具有量化的DeepSpeed 來研究不同硬體平台上的擴展效率。結果如下圖 4 所示,A800 幾乎是線性擴展,RTX4090 和 RTX3090 的擴展效率略低,分別為 90.8% 和 85.9%。在 RTX3090 平台上,NVLink 連線比沒有 NVLink 時的擴展效率提升了 10%。
研究者使用 DeepSpeed 來評估不同記憶體和計算高效方法下的訓練表現。為公平起見,所有評估設定成序列長度為 350,批次大小為 1,預設載入模型權重為 bf16。
對於具有卸載功能的 ZeRO-2 和 ZeRO-3,他們分別將優化器狀態和優化器狀態 模型卸載到 CPU RAM。對於量化,他們使用了具有雙重量化的 4bit 配置。此外報告了 NVLink 失效時 RTX3090 的效能(即所有資料透過 PCIe 匯流排傳輸)。結果如下表 III 所示。
為了獲得最大吞吐量,研究人員透過最大化每種方法的批次大小,進一步利用不同的GPU服務器的計算能力。結果如表IV所示,顯示增加批次大小可以輕鬆改進訓練過程。因此,具有高帶寬和大內存的GPU服務器比消費級GPU服務器更適合進行全參數混合精度訓練
模組級分析
下表V 展示了單步預訓練Llama2-7B 模型的前向、後向和優化器的整體及計算核心時間成本。對於後向階段,由於總時間包含了非重疊時間,因此計算核心時間遠小於前向階段和最佳化器。如果非重疊時間從後向階段中移除,則數值變成 94.8。
需要重新計算和重新評估FlashAttention 的影響
加速預訓練的技術大致可分為兩類:節省記憶體增加批次大小、加速運算核心。如下圖 5 所示,GPU 在前向、後向和優化器階段有 5-10% 的時間處於閒置狀態。
研究人員相信這種空閒時間是由於較小的批次大小所造成的,因此他們測試了可使用的最大批次大小的所有技術。最終,他們採用重計算來增加批次大小,並利用FlashAttention來加速計算核心分析
如下表 VII 所示,隨著批次大小的增加,前向和後向階段的時間大幅增加,GPU 閒置時間幾乎沒有。
根據下表VIII 可見,FlashAttention 分別能夠加速前向和後向的注意力模組34.9% 和24.7%
在微調環節,研究者主要討論參數高效微調方法(PEFT),展示LoRA 和QLoRA在各種模型大小和硬體設定下的微調性能。使用序列長度為 350,批次大小為 1,預設將模型權重載入到 bf16。
根據下表 IX 的結果,使用 LoRA 和 QLoRA 對 Llama2-13B 進行微調後的效能趨勢與 Llama2-7B 保持一致。與Llama2-7B 相比,微調後的Llama2-13B 的吞吐量下降了約30%
不過當結合所有最佳化技術時,即使RTX4090 和RTX3090 也可以微調Llama2-70B,實現200 tokens / 秒的總吞吐量。
不改變原義,全程效能
下圖6 顯示了各種硬體平台和推理框架下吞吐量的全面分析,其中省略了Llama2-70B 的相關推理數據。其中 TGI 框架展現了卓越的吞吐量,尤其是 RTX3090 和 RTX4090 等具有 24GB 記憶體的 GPU。此外 LightLLM 在 A800 GPU 平台上的效能顯著優於 TGI 和 vLLM,吞吐量幾乎翻倍。
這些實驗結果表明,TGI 推理框架在 24GB 記憶體 GPU 平台上具有卓越的效能,而 LightLLM 推理框架在 A800 80GB GPU 平台上表現出最高的吞吐量。這項發現表明 LightLLM 專門針對 A800/A100 系列高效能 GPU 進行了最佳化。
延遲表現在不同的硬體平台與推理框架下如圖7、8、9、10所示
#綜上所示,A800 平台在吞吐量和延遲方面均顯著優於RTX4090 和RTX3090 兩款消費級平台。並且在兩款消費級平台中,RTX3090 比 RTX4090 略有優勢。當在消費級平台上運行時,TGI、vLLM 和 LightLLM 三個推理框架在吞吐量方面沒有表現出實質差異。相比之下,TGI 在延遲方面始終優於其他兩個。在 A800 GPU 平台上,LightLLM 在吞吐量方面表現最好,其延遲也非常接近 TGI 框架。
###請參考原文以取得更多實驗結果######以上是A800显著超越Llama2推理RTX3090与4090,表现优异的延迟和吞吐量的詳細內容。更多資訊請關注PHP中文網其他相關文章!