LLM推理3倍速!微軟發(fā)布LLM Accelerator:用參考文本實現(xiàn)無損加速
隨著人工智能技術(shù)的快速發(fā)展,ChatGPT、New Bing、GPT-4 等新產(chǎn)品和新技術(shù)陸續(xù)發(fā)布,基礎(chǔ)大模型在諸多應(yīng)用中將發(fā)揮日益重要的作用。
目前的大語言模型大多是自回歸模型。自回歸是指模型在輸出時往往采用逐詞輸出的方式,即在輸出每個詞時,模型需要將之前輸出的詞作為輸入。而這種自回歸模式通常在輸出時制約著并行加速器的充分利用。
在許多應(yīng)用場景中,大模型的輸出常常與一些參考文本有很大的相似性,例如在以下三個常見的場景中:
1. 檢索增強(qiáng)的生成
New Bing 等檢索應(yīng)用在響應(yīng)用戶輸入的內(nèi)容時,會先返回一些與用戶輸入相關(guān)的信息,然后用語言模型總結(jié)檢索出的信息,再回答用戶輸入的內(nèi)容。在這種場景中,模型的輸出往往包含大量檢索結(jié)果中的文本片段。
2. 使用緩存的生成
大規(guī)模部署語言模型的過程中,歷史的輸入輸出會被緩存。在處理新的輸入時,檢索應(yīng)用會在緩存中尋找相似的輸入。因此,模型的輸出往往和緩存中對應(yīng)的輸出有很大的相似性。
3. 多輪對話中的生成
在使用 ChatGPT 等應(yīng)用時,用戶往往會根據(jù)模型的輸出反復(fù)提出修改要求。在這種多輪對話的場景下,模型的多次輸出往往只有少量的變化,重復(fù)度較高。
圖1:大模型的輸出與參考文本存在相似性的常見場景
基于以上觀察,研究員們以參考文本與模型輸出的重復(fù)性作為突破自回歸瓶頸的著力點,希望可以提高并行加速器利用率,加速大語言模型推理,進(jìn)而提出了一種利用輸出與參考文本的重復(fù)性來實現(xiàn)一步輸出多個詞的方法 LLM Accelerator。
圖2:LLM Accelerator 解碼算法
具體來說,在每一步解碼時,讓模型先匹配已有的輸出結(jié)果與參考文本,如果發(fā)現(xiàn)某個參考文本與已有的輸出相符,那么模型很可能順延已有的參考文本繼續(xù)輸出。
因此,研究員們將參考文本的后續(xù)詞也作為輸入加入到模型中,從而使得一個解碼步驟可以輸出多個詞。
為了保證輸入輸出準(zhǔn)確,研究員們進(jìn)一步對比了模型輸出的詞與從參考文檔輸入的詞。如果兩者不一致,那么不正確的輸入輸出結(jié)果將被舍棄。
以上方法能夠保證解碼結(jié)果與基準(zhǔn)方法完全一致,并可以提高每個解碼步驟的輸出詞數(shù),從而實現(xiàn)大模型推理的無損加速。
LLM Accelerator 無需額外輔助模型,簡單易用,可以方便地部署到各種應(yīng)用場景中。
論文鏈接:https://arxiv.org/pdf/2304.04487.pdf
項目鏈接:https://github.com/microsoft/LMOps
使用 LLM Accelerator,有兩個超參數(shù)需要調(diào)整。
一是觸發(fā)匹配機(jī)制所需的輸出與參考文本的匹配詞數(shù):匹配詞數(shù)越長往往越準(zhǔn)確,可以更好地保證從參考文本拷貝的詞是正確的輸出,減少不必要的觸發(fā)和計算;更短的匹配,解碼步驟更少,潛在加速更快。
二是每次拷貝詞的數(shù)量:拷貝詞數(shù)越多,加速潛力越大,但也可能造成更多不正確的輸出被舍棄,浪費(fèi)計算資源。研究員們通過實驗發(fā)現(xiàn),更加激進(jìn)的策略(匹配單個詞觸發(fā),一次拷貝15到20個詞)往往能夠取得更好的加速比。
為了驗證 LLM Accelerator 的有效性,研究員們在檢索增強(qiáng)和緩存輔助生成方面進(jìn)行了實驗,利用 MS-MARCO 段落檢索數(shù)據(jù)集構(gòu)造了實驗樣本。
在檢索增強(qiáng)實驗中,研究員們使用檢索模型對每個查詢返回10個最相關(guān)的文檔,然后拼接到查詢后作為模型輸入,將這10個文檔作為參考文本。
在緩存輔助生成實驗中,每個查詢生成四個相似的查詢,然后用模型輸出對應(yīng)的查詢作為參考文本。
表1:檢索增強(qiáng)的生成場景下的時間對比
表2:使用緩存的生成場景下的時間對比
研究員們使用通過 OpenAI 接口得到的 Davinci-003 模型的輸出結(jié)果作為目標(biāo)輸出,以獲得高質(zhì)量的輸出。得到所需輸入、輸出和參考文本后,研究員們在開源的 LLaMA 語言模型上進(jìn)行了實驗。
由于 LLaMA 模型的輸出與 Davinci-003 輸出不一致,所以研究員們采用了目標(biāo)導(dǎo)向的解碼方法來測試?yán)硐胼敵觯―avinci-003 模型結(jié)果)結(jié)果下的加速比。
研究員們利用算法2得到了貪婪解碼時生成目標(biāo)輸出所需的解碼步驟,并強(qiáng)制 LLaMA 模型按照得到的解碼步驟進(jìn)行解碼。
圖3:利用算法2得到了貪婪解碼時生成目標(biāo)輸出所需的解碼步驟
對于參數(shù)量為 7B 和 13B 的模型,研究員們在單個 32G NVIDIA V100 GPU 上進(jìn)行實驗;對于參數(shù)量為 30B 的模型,在四塊同樣的 GPU 上進(jìn)行實驗。所有的實驗均采用了半精度浮點數(shù),解碼均為貪婪解碼,且批量大小為1。
實驗結(jié)果表明,LLM Accelerator 在不同模型大小(7B,13B,30B)與不同的應(yīng)用場景中(檢索增強(qiáng)、緩存輔助)都取得了兩到三倍的加速比。
進(jìn)一步實驗分析發(fā)現(xiàn),LLM Accelertator 能顯著減少所需的解碼步驟,并且加速比與解碼步驟的減少比例呈正相關(guān)。
更少的解碼步驟一方面意味著每個解碼步驟生成的輸出詞數(shù)更多,可以提高 GPU 計算的計算效率;另一方面,對于需要多卡并行的30B模型,這意味著更少的多卡同步,從而達(dá)到更快的速度提升。
在消融實驗中,在開發(fā)集上對 LLM Accelertator 的超參數(shù)進(jìn)行分析的結(jié)果顯示,匹配單個單詞(即觸發(fā)拷貝機(jī)制)時,一次拷貝15到20個單詞時的加速比可達(dá)到最大 (圖4所示)。
在圖5中我們可以看出,匹配詞數(shù)為1能更多地觸發(fā)拷貝機(jī)制,并且隨著拷貝長度的增加,每個解碼步驟接受的輸出詞增加,解碼步驟減少,從而達(dá)到更高的加速比。
圖4:消融實驗中,在開發(fā)集上對 LLM Accelertator 的超參數(shù)的分析結(jié)果
圖5:在開發(fā)集上,具有不同匹配詞數(shù) n 和拷貝詞數(shù) k 的解碼步驟統(tǒng)計數(shù)據(jù)
LLM Accelertator 是微軟亞洲研究院自然語言計算組在大語言模型加速系列工作的一部分,未來,研究員們將持續(xù)對相關(guān)問題進(jìn)行更加深入的探索。