大語言模型的生產(chǎn)部署存在兩個(gè)主要的挑戰(zhàn),一個(gè)是需要大量的參數(shù),一個(gè)是需要處理非常長的用于表示上下文信息的輸入序列。Hugging Face 基于他們提供大模型服務(wù)的經(jīng)驗(yàn)分享了一些克服這些障礙的技術(shù)。
Patrick von Platen 在文中介紹的 Hugging Face 研究的三種技術(shù)是降低數(shù)值精度、使用一種叫作 Flash Attention 的注意力算法,以及使用專門的推理架構(gòu)。
大語言模型需要大量的 VRAM 來加載,從幾十 (bigcode/starcoder) 到數(shù)百 GB (Llama、Bloom、GPT3)。第一個(gè)優(yōu)化手段是從 float32 切換到 bfloat16 精度:
現(xiàn)在幾乎所有的模型都是基于 bfloat16 訓(xùn)練的,如果你的 GPU 支持 bfloat16,就沒有理由基于全 float32 精度運(yùn)行模型。float32 不會給出比訓(xùn)練模型所使用的精度更好的推理結(jié)果。
這可以使總體內(nèi)存消耗減少一半,但可惜的是,在許多情況下仍然需要很大的內(nèi)存。一種更激進(jìn)的方法是將模型權(quán)重量化為 8 位或 4 位,這已經(jīng)被證明不會導(dǎo)致顯著的性能下降。
量化對于文本生成來說特別有效,因?yàn)槲覀兯P(guān)心的是選擇最有可能的下一個(gè)標(biāo)記集合,而不是下一個(gè)標(biāo)記 Logit 分布的確切值。
這將進(jìn)一步減少所需的內(nèi)存,使得在只有 16GB VRAM 的 GPU 上運(yùn)行較小的模型成為可能,盡管代價(jià)是推理時(shí)間稍長。
von Platen 寫道,使用 Flash Attention 是另一相關(guān)鍵的優(yōu)化,它是大語言模型用來理解輸入標(biāo)記上下文關(guān)系的自注意力層的一種算法,有可能打破輸入標(biāo)記數(shù)量的二次增長。
因?yàn)樵撍惴ㄌ^復(fù)雜,無法在這里描述,但可以這么說,它利用了 softmax 規(guī)范化統(tǒng)計(jì)數(shù)據(jù)和一些數(shù)學(xué)手段,在只需要隨輸入標(biāo)記線性增長的內(nèi)存的情況下提供相同的輸出。推理性能也得益于算法使用了更快的 SRAM 而不是更慢的 GPU VRAM。
在實(shí)踐中,目前絕對沒有理由不使用 Flash Attention。該算法在數(shù)學(xué)層面給出了相同的輸出,并且速度更快,內(nèi)存效率更高。
Here recent research can help to make the right choice with two components that quickly become bottlenecks, says von Platen,positional embeddingsand thekey-value cache.
在生產(chǎn)環(huán)境中部署大語言模型的第三項(xiàng)優(yōu)化措施是選擇正確的架構(gòu),讓它們能夠有效地處理長文本輸入。von Platen 寫道,最近的研究有助于我們?nèi)绾螌蓚€(gè)很快成為瓶頸的組件做出選擇——一個(gè)是 _ 位置嵌入 (positional embeddings)_,一個(gè)是 _ 鍵值緩存 _。
位置嵌入通過將每個(gè)標(biāo)記的位置編碼為數(shù)字表示來幫助語言大模型理解序列順序。對于需要處理大型文本輸入任務(wù)的大語言模型,應(yīng)該使用 RoPE 和 ALiBi 等相對位置嵌入技術(shù)進(jìn)行訓(xùn)練。
RoPE 和 ALiBi 位置編碼都可以外推到訓(xùn)練期間未遇到過的輸入長度,而事實(shí)證明,與 RoPE 相比,外推對于開箱即用的 ALiBi 的效果要好得多。
目前的許多大語言模型中已經(jīng)在使用這兩種算法。
鍵值緩存可以作為對對話上下文進(jìn)行編碼的一種方法。鍵值緩存在發(fā)生每個(gè)新交互時(shí)增加一個(gè)元素,這比為每個(gè)請求編碼 / 解碼上下文的方法要有效得多。von Platen 詳細(xì)介紹了兩類鍵值緩存,即 Multi-Query-Attention (MQA) 和 Grouped-Query-Attention(GQA) 。
von Platen 的文章所涵蓋的內(nèi)容不只有本文所概述的這些,他的文章中還提供了實(shí)際的例子來證明他的觀點(diǎn),所以請不要錯(cuò)過他的文章。
-
gpu
+關(guān)注
關(guān)注
28文章
4673瀏覽量
128593 -
語言模型
+關(guān)注
關(guān)注
0文章
501瀏覽量
10236 -
大模型
+關(guān)注
關(guān)注
2文章
2274瀏覽量
2357
原文標(biāo)題:Hugging Face 大語言模型優(yōu)化技術(shù)
文章出處:【微信號:AI前線,微信公眾號:AI前線】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論