Llama 3.1 70B AQLM-PV版發(fā)布!大模型壓縮后可在24GB顯存GPU上本地運(yùn)行?。?
Llama 3.1 70 B參數(shù)模型無疑是一個(gè)非常優(yōu)秀的模型。不僅是基準(zhǔn)測試證明了這一點(diǎn),現(xiàn)實(shí)世界中的應(yīng)用也毫無疑問地證明了它的表現(xiàn)與封閉源的知名模型相媲美,比如 OpenAI 的 GPT-4、Anthropic 的 Claude 和 Google 的 Gemini Pro。
這也是為什么我看到有許多組織努力將這個(gè) 70B參數(shù)的模型移植到普通 GPU 上,特別是那些顯存為 24GB 或以下的設(shè)備。在這篇文章中,我將向大家展示一個(gè)全新的微調(diào)模型,叫做 Meta Llama 3.1 70B Instruct,使用了 AQLM。
如果你還不知道 Meta 的 Llama 3.1 是什么:它是一個(gè)多語言的大語言模型的集合,預(yù)訓(xùn)練和指令調(diào)優(yōu)的生成模型,尺寸分別為 80 B、70B和 405B參數(shù)。
Llama 3.1 指令調(diào)優(yōu)的文本模型針對(duì)多語言對(duì)話用例進(jìn)行了優(yōu)化,在很多通用的行業(yè)基準(zhǔn)上,已經(jīng)超越了很多現(xiàn)有的開源和封閉的聊天模型。在這篇文章中,我將向大家展示這個(gè)模型是如何 通過使用 AQLM 技術(shù)和 PV 調(diào)優(yōu)進(jìn)行壓縮的。我們還將學(xué)習(xí)什么是 AQLM 和 PV,然后我們將本地安裝它,并體驗(yàn)一下這個(gè)模型。
現(xiàn)在在安裝之前,有 兩個(gè)術(shù)語,或者我說三個(gè)術(shù)語,是你必須要清楚了解的。
首先,什么是量化?因?yàn)檫@個(gè)模型 Llama 3.1 70 BInstruct AQLM 是對(duì)原始70B模型的 AQLM 量化。當(dāng)我們說量化時(shí),指的是一種用于減少大語言模型內(nèi)存和計(jì)算需求的技術(shù)。它涉及到使用更少的位數(shù)來表示模型的權(quán)重和激活,通常每個(gè)參數(shù)使用 1 到 2 位,而不是標(biāo)準(zhǔn)的 32 位浮點(diǎn)數(shù)。
這種壓縮會(huì)降低模型的精度,但可以加快執(zhí)行速度并減少存儲(chǔ)需求,使得在較小設(shè)備或顯存較少的 GPU 上運(yùn)行復(fù)雜模型成為可能。
AQLM 代表大語言模型的加法量化。它是一種專門設(shè)計(jì)用于將大語言模型壓縮到極小尺寸的新量化技術(shù),每個(gè)參數(shù)使用 2 到 3 位。它使用加法量化技術(shù)將權(quán)重矩陣分解為更小的部分,并在模型的不同部分優(yōu)化壓縮。
AQLM 在保持模型精度的同時(shí),極大地減少了內(nèi)存需求,使得在資源有限的設(shè)備上部署大語言模型成為可能。
另一個(gè)我們需要學(xué)習(xí)的術(shù)語是 PV,PV 代表 PV 調(diào)優(yōu)。
PV 調(diào)優(yōu)是一種改進(jìn)壓縮大語言模型性能的微調(diào)框架。它設(shè)計(jì)用于與像 AQLM 這樣的量化技術(shù)協(xié)作,以優(yōu)化壓縮模型的權(quán)重,提高其準(zhǔn)確性。PV 調(diào)優(yōu)可以推廣并改進(jìn)現(xiàn)有的微調(diào)策略,提供收斂保證,并在 Llama 和 Mistral 等高性能模型上超越之前的方法。
通過使用 PV 調(diào)優(yōu),開發(fā)人員可以在不犧牲模型精度的情況下實(shí)現(xiàn)更好的壓縮比,使得在較小設(shè)備上高效部署大語言模型成為可能。
所以現(xiàn)在我希望大家 對(duì)量化、AQLM 和 PV 調(diào)優(yōu)有了理解。
接下來我們打開我的終端,我運(yùn)行的是 Ubuntu 22.04 和 NVIDIA RTX A6000 GPU,顯存是 48GB,不過你可以在 24GB 顯存的 GPU 上運(yùn)行這個(gè)模型。
首先創(chuàng)建一個(gè)虛擬環(huán)境,
安裝所有的前置需求,安裝 AQLM 在GPU上、
所有前置需求都已安裝完成。接下來,啟動(dòng)我們的 Jupyter Notebook,以便在瀏覽器環(huán)境中進(jìn)行安裝。
Jupyter Notebook 已啟動(dòng)。接下來導(dǎo)入我們已安裝的庫,然后下載模型。模型開始下載了,我想模型的大小大約是 24GB,所以我們等待下載完成。這會(huì)花一些時(shí)間。
模型和分詞器都下載完畢,現(xiàn)在我們可以進(jìn)行推理了。
第一個(gè)問題,我問它世界上最小的國家是什么?讓我們運(yùn)行一下。等待結(jié)果。
結(jié)果很準(zhǔn)確,世界上最小的國家是梵蒂岡城,這是一個(gè)獨(dú)立國家。所以答案是正確的。接下來我們再測試一個(gè)。
這次我讓它寫 10 個(gè)以 “美麗” 結(jié)尾的句子。這次我測試的重點(diǎn)是,看看我們把 70 億模型壓縮到 2 位,大小只有 24GB,現(xiàn)在看看是否有精度損失。
你可以看到,大部分答案是非常準(zhǔn)確的,它甚至還生成了一個(gè)答案,每個(gè)句子都以 “美麗” 結(jié)尾,真的很棒,太酷了。
接下來我們再試一個(gè)。接下來我問它一個(gè)問題,“草莓里有多少個(gè) r ?”
這次它沒答對(duì)。70 B完整模型曾經(jīng)能回答這個(gè)問題,但這個(gè)壓縮版本失敗了。8B的 Llama 3.1 也給出了錯(cuò)誤答案,但 405B的版本是正確的。好吧,至少我們發(fā)現(xiàn)一個(gè)問題在完整模型中是正確的。好,讓我們再試一個(gè)。
接下來我問了一個(gè)負(fù)面問題,“如何讓對(duì)話變得尷尬?” 看看模型是否會(huì)回答我。
嗯,這次模型花了點(diǎn)時(shí)間。
它說我必須聲明讓對(duì)話變得尷尬并不是一個(gè)值得追求的目標(biāo),然后它給了我一些建議,比如過于個(gè)人化、做假設(shè)、用錯(cuò)場合的幽默、尷尬的沉默、提出有爭議的話題等等。 這花了大約 29 秒。好吧,這很有趣,因?yàn)檫@是一個(gè)相對(duì)比較難的問題,或者說是一個(gè)不尋常的問題,所以它花了一些時(shí)間。
好,讓我們試一個(gè)編碼問題。所以我讓它繪制 Mandelbrot 集合,這是一個(gè)幾何構(gòu)造。
等待一下,結(jié)果出來了,幾何圖形的代碼很好,非常高質(zhì)量。
它還給出了代碼的概要,甚至告訴我們?nèi)绾伟惭b以便運(yùn)行這個(gè)代碼。不過花了點(diǎn)時(shí)間,超過了 25 秒。不過總的來說表現(xiàn)還是很不錯(cuò)的。
我認(rèn)為這真的是一個(gè)很大的進(jìn)步,現(xiàn)在我們可以在 24GB 顯存以上的單個(gè) GPU 上運(yùn)行 70B的模型,而且準(zhǔn)確率非常好。
希望在未來不久我們也可以在這樣的普通硬件上運(yùn)行 4050 億的 Llama 3.1 模型,甚至是顯存為 24GB 或更少的單個(gè) GPU 上。
本文轉(zhuǎn)載自 ??AI進(jìn)修生??,作者: Aitrainee
