LLM推理3倍速!微軟發布LLM Accelerator:用參考文本實現無損加速
隨著人工智能技術的快速發展,ChatGPT、New Bing、GPT-4 等新產品和新技術陸續發布,基礎大模型在諸多應用中將發揮日益重要的作用。
目前的大語言模型大多是自回歸模型。自回歸是指模型在輸出時往往采用逐詞輸出的方式,即在輸出每個詞時,模型需要將之前輸出的詞作為輸入。而這種自回歸模式通常在輸出時制約著并行加速器的充分利用。
在許多應用場景中,大模型的輸出常常與一些參考文本有很大的相似性,例如在以下三個常見的場景中:
1. 檢索增強的生成
New Bing 等檢索應用在響應用戶輸入的內容時,會先返回一些與用戶輸入相關的信息,然后用語言模型總結檢索出的信息,再回答用戶輸入的內容。在這種場景中,模型的輸出往往包含大量檢索結果中的文本片段。
2. 使用緩存的生成
大規模部署語言模型的過程中,歷史的輸入輸出會被緩存。在處理新的輸入時,檢索應用會在緩存中尋找相似的輸入。因此,模型的輸出往往和緩存中對應的輸出有很大的相似性。
3. 多輪對話中的生成
在使用 ChatGPT 等應用時,用戶往往會根據模型的輸出反復提出修改要求。在這種多輪對話的場景下,模型的多次輸出往往只有少量的變化,重復度較高。
圖1:大模型的輸出與參考文本存在相似性的常見場景
基于以上觀察,研究員們以參考文本與模型輸出的重復性作為突破自回歸瓶頸的著力點,希望可以提高并行加速器利用率,加速大語言模型推理,進而提出了一種利用輸出與參考文本的重復性來實現一步輸出多個詞的方法 LLM Accelerator。
圖2: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個文檔作為參考文本。
在緩存輔助生成實驗中,每個查詢生成四個相似的查詢,然后用模型輸出對應的查詢作為參考文本。
表1:檢索增強的生成場景下的時間對比
表2:使用緩存的生成場景下的時間對比
研究員們使用通過 OpenAI 接口得到的 Davinci-003 模型的輸出結果作為目標輸出,以獲得高質量的輸出。得到所需輸入、輸出和參考文本后,研究員們在開源的 LLaMA 語言模型上進行了實驗。
由于 LLaMA 模型的輸出與 Davinci-003 輸出不一致,所以研究員們采用了目標導向的解碼方法來測試理想輸出(Davinci-003 模型結果)結果下的加速比。
研究員們利用算法2得到了貪婪解碼時生成目標輸出所需的解碼步驟,并強制 LLaMA 模型按照得到的解碼步驟進行解碼。
圖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能更多地觸發拷貝機制,并且隨著拷貝長度的增加,每個解碼步驟接受的輸出詞增加,解碼步驟減少,從而達到更高的加速比。
圖4:消融實驗中,在開發集上對 LLM Accelertator 的超參數的分析結果
圖5:在開發集上,具有不同匹配詞數 n 和拷貝詞數 k 的解碼步驟統計數據
LLM Accelertator 是微軟亞洲研究院自然語言計算組在大語言模型加速系列工作的一部分,未來,研究員們將持續對相關問題進行更加深入的探索。