LLM 模型推理入門

概述

隨着生成式 AI 的迅速發展,大語言模型(LLM)的推理性能和成本已成爲其大規模應用的關鍵障礙。LLM 推理是指利用僅解碼器的 Transformer 模型生成詞元(token),其中大多數挑戰及其解決方案都源於這一特定架構和用例。

本文將深入探討 LLM 推理過程的兩個階段:預填充階段(Prefilling)和解碼階段(Decoding),並詳細介紹如何通過算法創新和系統優化來提升 LLM 的推理效率。具體內容包括:

  1. LLM 推理基礎知識:介紹 Transformer 架構及其關鍵組件,如自注意力機制、多頭注意力機制和前饋網絡。同時,詳細說明從輸入詞元到生成輸出詞元的預填充階段和解碼階段的推理過程。

  2. LLM 推理優化方向:探討通過算法創新和系統優化來提升 LLM 推理效率的方法,包括優化解碼算法、優化架構設計和模型壓縮等。

  3. LLM 推理性能指標:介紹衡量 LLM 推理性能的關鍵指標,如每秒請求數(RPS)、首字輸出時間(TTFT)和字符間延遲(ITL)等。

術語解釋

LLM 推理基礎知識

Transformer 介紹

當前主流的 LLM 比如 OpenAI 的 GPT 系列、Meta 的 Llama 系列還有如 OPT、BLOOM、Mistral 等等,其核心是基於自注意力機制的 Transformer 架構,該機制允許模型在做出預測時對輸入數據的不同部分的重要性進行權重計算。

自注意力機制

在 Transformer 模型中,自注意力機制通過線性變換計算輸入序列 X 的查詢 Q、鍵 K 和值 V。自注意力分數計算公式如下:其中 dk 是鍵的維度。該機制使模型能夠對輸出的每個元素聚焦於輸入序列的不同部分,從而捕捉輸入序列中不同位置之間的複雜依賴關係。

前饋網絡(FFN)

Transformer 的每一層中都包含前饋網絡(FFN),顯著增加了計算強度。FFN 通常由兩個線性變換和一個非線性激活函數(通常是 ReLU)組成,公式如下:其中 W1, W2, b1, b2 是可學習參數。FFN 引入了必要的非線性,使模型能夠學習更復雜的模式。每個 Transformer 層在多頭注意力(MHA)聚合輸入的不同部分的信息後,FFN 會獨立地處理這些聚合信息。

Transformer 其他組件

Transformer 模型還包括其他關鍵組件,如位置編碼(position encoding),它爲序列中的每個標記添加位置信息;多頭注意力機制(multi-head attention),允許模型在不同的表示空間中關注序列的不同部分。這些組件共同作用,使得 Transformer 模型能夠捕捉廣泛的語言上下文和細微差別,在各種 NLP 任務中設立了新的基準。

LLM 推理過程:預填充 + 解碼

在介紹完 Transformer 結構之後,我們來看下 Decoder-Only 的模型如何進行模型推理。爲簡單起見,我們假設一次只處理一個序列(即批處理大小爲 1)。在下圖中,我描述了一個簡單的基於 Transformer 的解碼器的主要層,用於從一系列輸入詞元中生成輸出詞元。需要注意的是,解碼器本身並不會輸出詞元,而是輸出 logit(其數量與詞彙表大小相同)。輸出 logit 的最後一層通常被稱爲語言模型頭(Language Model Head)或 LM 頭。將 logit 轉換爲詞元是通過一種啓發式算法來完成的,這種算法通常被稱爲解碼策略(decoding strategy),也叫做詞元搜索策略(token search strategy)或生成策略(generation strategy)。解碼策略的目的是在保持文本連貫性和合理性的同時,提高生成結果的質量和多樣性。

簡單起見,我們假設解碼策略是模型的一部分,這些接受詞元序列作爲輸入,並返回相應輸出詞元的實體通常被稱爲執行引擎或推理引擎。

如果要生成多個詞元呢?使用基於 Transformer 的解碼器,從一個輸入文本序列(稱爲 prompt)中生成文本(稱爲 completion)通常包含以下步驟:

  1. 將模型權重加載到 GPU。

  2. 在 CPU 上對輸入文本進行分詞,並將文本序列詞元傳輸到 GPU。

  3. 利用模型運行輸入詞元,輸出第一個詞元(預填充階段)。

  4. 將生成的詞元添加到輸入的詞元序列中,然後作爲新的輸入,生成下一個詞元,直到生成停止詞元(比如 EOS)或者到達預先配置的最大序列長度(解碼階段)。

  5. 將生成的詞元傳輸到 CPU,並進行逆詞元化(de-tokenization)獲得生成的文本。上述介紹了最基礎的 LLM 推理過程,目前也有一些更爲先進的技術,流程上可能會有所不同。

LLM 推理優化方向

在《Towards Efficient Generative Large Language Model Serving: A Survey from Algorithms to Systems》論文中,將現有的 LLM 推理優化的方向分成兩類:

算法創新

這些創新旨在優化大型語言模型(LLM)的推理過程,以提高效率、減少計算複雜度,並在不顯著降低性能的情況下減小模型的計算資源需求。

優化解碼算法(Decoding Algorithm)

1. 非自迴歸解碼(Non-autoregressive Decoding)

慢。非自迴歸解碼試圖並行生成多個輸出標記,從而提高解碼速度。

2. 推測性解碼(Speculative Decoding)

3. 提前退出(Early Exiting)

4. 級聯推理(Cascade Inference)

優化架構設計(Architecture Design)

1. 配置縮減(Configuration Downsizing)

2. 注意力機制簡化(Attention Simplification)

3. 激活共享(Activation Sharing)

4. 條件計算(Conditional Computing)

5. 循環單元(Recurrent Unit)

模型壓縮(Model Compression)

1. 知識蒸餾(Knowledge Distillation)

2. 網絡剪枝(Network Pruning)

這些算法創新方法,通過優化模型結構和推理過程,可以顯著提高大型語言模型的推理效率,使其更適用於實際應用中的各種場景。

系統優化(System Optimizations)

系統優化主要集中在硬件和系統層面,通過改進底層實現和資源管理,提高大型語言模型(LLM)推理的效率。以下是幾種主要的系統優化方法:

低位量化(Low-bit Quantization)

並行計算(Parallel Computation)

內存管理(Memory Management)

請求調度(Request Scheduling)

內核優化(Kernel Optimization)

減少填充和優化批處理,提高對變長序列的處理效率,如 Packing technique 和 Ragged tensor。- 自動編譯(Automatic Compilation):使用自動化編譯工具優化模型在不同硬件平臺上的執行效率,如 TVM、MLIR、JAX、OpenAI Triton。

這些系統優化方法通過改進底層硬件利用和資源管理,顯著提高了大型語言模型的推理效率,使其在實際應用中更加高效和可靠。

LLM 推理性能指標

下面是 Anyscale 公司,在 llmperf 工具中採用的一些推理性能測試指標:

參考資料

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/jOOD1wlyFOX0_jgHzT474Q