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

從OpenVINO? 2019_R3下載的face-detection-retail-0004模型,運(yùn)行時(shí)報(bào)錯(cuò)怎么解決?
大語(yǔ)言模型的解碼策略與關(guān)鍵優(yōu)化總結(jié)

評(píng)論