天天看點

LLM Accelerator:使用參考文本無損加速大語言模型推理

作者:微軟亞洲研究院

編者按:如今,基礎大模型正在諸多應用中發揮着日益重要的作用。大多數大語言模型的訓練都是采取自回歸的方式進行生成,雖然自回歸模型生成的文本品質有所保證,但卻導緻了高昂的推理成本和長時間的延遲。由于大模型的參數量巨大、推理成本高,是以如何在大規模部署大模型的過程中降低成本、減小延遲是一個關鍵課題。針對此問題,微軟亞洲研究院的研究員們提出了一種使用參考文本無損加速大語言模型推理的方法 LLM Accelerator,在大模型典型的應用場景中可以取得兩到三倍的加速。

随着人工智能技術的快速發展,ChatGPT、New Bing、GPT-4 等新産品和新技術陸續釋出,基礎大模型在諸多應用中将發揮日益重要的作用。目前的大語言模型大多是自回歸模型。自回歸是指模型在輸出時往往采用逐詞輸出的方式,即在輸出每個詞時,模型需要将之前輸出的詞作為輸入。而這種自回歸模式通常在輸出時制約着并行加速器的充分利用。

在許多應用場景中,大模型的輸出常常與一些參考文本有很大的相似性,例如在以下三個常見的場景中:

1. 檢索增強的生成。New Bing 等檢索應用在響應使用者輸入的内容時,會先傳回一些與使用者輸入相關的資訊,然後用語言模型總結檢索出的資訊,再回答使用者輸入的内容。在這種場景中,模型的輸出往往包含大量檢索結果中的文本片段。

2. 使用緩存的生成。大規模部署語言模型的過程中,曆史的輸入輸出會被緩存。在處理新的輸入時,檢索應用會在緩存中尋找相似的輸入。是以,模型的輸出往往和緩存中對應的輸出有很大的相似性。

3. 多輪對話中的生成。在使用 ChatGPT 等應用時,使用者往往會根據模型的輸出反複提出修改要求。在這種多輪對話的場景下,模型的多次輸出往往隻有少量的變化,重複度較高。

LLM Accelerator:使用參考文本無損加速大語言模型推理

圖1:大模型的輸出與參考文本存在相似性的常見場景

基于以上觀察,研究員們以參考文本與模型輸出的重複性作為突破自回歸瓶頸的着力點,希望可以提高并行加速器使用率,加速大語言模型推理,進而提出了一種利用輸出與參考文本的重複性來實作一步輸出多個詞的方法 LLM Accelerator。

LLM Accelerator:使用參考文本無損加速大語言模型推理

圖2:LLM Accelerator 解碼算法

​具體來說,在每一步解碼時,讓模型先比對已有的輸出結果與參考文本,如果發現某個參考文本與已有的輸出相符,那麼模型很可能順延已有的參考文本繼續輸出。是以,研究員們将參考文本的後續詞也作為輸入加入到模型中,進而使得一個解碼步驟可以輸出多個詞。

為了保證輸入輸出準确,研究員們進一步對比了模型輸出的詞與從參考文檔輸入的詞。如果兩者不一緻,那麼不正确的輸入輸出結果将被舍棄。以上方法能夠保證解碼結果與基準方法完全一緻,并可以提高每個解碼步驟的輸出詞數,進而實作大模型推理的無損加速。LLM Accelerator 無需額外輔助模型,簡單易用,可以友善地部署到各種應用場景中。

LLM Accelerator:使用參考文本無損加速大語言模型推理

論文連結:

https://arxiv.org/pdf/2304.04487.pdf

項目連結:

https://github.com/microsoft/LMOps

使用 LLM Accelerator,有兩個超參數需要調整。一是觸發比對機制所需的輸出與參考文本的比對詞數:比對詞數越長往往越準确,可以更好地保證從參考文本拷貝的詞是正确的輸出,減少不必要的觸發和計算;更短的比對,解碼步驟更少,潛在加速更快。二是每次拷貝詞的數量:拷貝詞數越多,加速潛力越大,但也可能造成更多不正确的輸出被舍棄,浪費計算資源。研究員們通過實驗發現,更加激進的政策(比對單個詞觸發,一次拷貝15到20個詞)往往能夠取得更好的加速比。

為了驗證 LLM Accelerator 的有效性,研究員們在檢索增強和緩存輔助生成方面進行了實驗,利用 MS-MARCO 段落檢索資料集構造了實驗樣本。在檢索增強實驗中,研究員們使用檢索模型對每個查詢傳回10個最相關的文檔,然後拼接到查詢後作為模型輸入,将這10個文檔作為參考文本。在緩存輔助生成實驗中,每個查詢生成四個相似的查詢,然後用模型輸出對應的查詢作為參考文本。

LLM Accelerator:使用參考文本無損加速大語言模型推理

表1:檢索增強的生成場景下的時間對比

LLM Accelerator:使用參考文本無損加速大語言模型推理

表2:使用緩存的生成場景下的時間對比

研究員們使用通過 OpenAI 接口得到的 Davinci-003 模型的輸出結果作為目标輸出,以獲得高品質的輸出。得到所需輸入、輸出和參考文本後,研究員們在開源的 LLaMA 語言模型上進行了實驗。由于 LLaMA 模型的輸出與 Davinci-003 輸出不一緻,是以研究員們采用了目标導向的解碼方法來測試理想輸出(Davinci-003 模型結果)結果下的加速比。研究員們利用算法2得到了貪婪解碼時生成目标輸出所需的解碼步驟,并強制 LLaMA 模型按照得到的解碼步驟進行解碼。

LLM Accelerator:使用參考文本無損加速大語言模型推理

圖3:利用算法2得到了貪婪解碼時生成目标輸出所需的解碼步驟

對于參數量為 7B 和 13B 的模型,研究員們在單個 32G NVIDIA V100 GPU 上進行實驗;對于參數量為 30B 的模型,在四塊同樣的 GPU 上進行實驗。所有的實驗均采用了半精度浮點數,解碼均為貪婪解碼,且批量大小為1。實驗結果表明,LLM Accelerator 在不同模型大小(7B,13B,30B)與不同的應用場景中(檢索增強、緩存輔助)都取得了兩到三倍的加速比。

進一步實驗分析發現,LLM Accelertator 能顯著減少所需的解碼步驟,并且加速比與解碼步驟的減少比例呈正相關。更少的解碼步驟一方面意味着每個解碼步驟生成的輸出詞數更多,可以提高 GPU 計算的計算效率;另一方面,對于需要多卡并行的30B模型,這意味着更少的多卡同步,進而達到更快的速度提升。在消融實驗中,在開發集上對 LLM Accelertator 的超參數進行分析的結果顯示,比對單個單詞(即觸發拷貝機制)時,一次拷貝15到20個單詞時的加速比可達到最大 (圖4所示)。在圖5中我們可以看出,比對詞數為1能更多地觸發拷貝機制,并且随着拷貝長度的增加,每個解碼步驟接受的輸出詞增加,解碼步驟減少,進而達到更高的加速比。

LLM Accelerator:使用參考文本無損加速大語言模型推理

圖4:消融實驗中,在開發集上對 LLM Accelertator 的超參數的分析結果

LLM Accelerator:使用參考文本無損加速大語言模型推理

圖5:在開發集上,具有不同比對詞數 n 和拷貝詞數 k 的解碼步驟統計資料

LLM Accelertator 是微軟亞洲研究院自然語言計算組在大語言模型加速系列工作的一部分,未來,研究員們将持續對相關問題進行更加深入的探索。

繼續閱讀