關於 AI 模型的硬件需求與解決方案
難以企及的尖端開源模型
突然來個小測驗。有什麼東西你能看到、能複製,甚至能擁有,但卻不能使用?答案是尖端的開源模型。除非你富有到擁有至少價值 40 萬的硬件,否則對大多數人來說,運行一份 Deep Seek V3 的複製品只是一個白日夢。
研究人員的應對策略
為了應對這個問題,研究人員製作了更小的模型,甚至將它們精煉成更小的尺寸。在某些情況下,硬件需求降低了高達 10 倍。然而,即使便宜了 10 倍,仍然需要一個價值高達 2 萬的 GPU 才能運行。
其他選擇與局限性
如果你真的想自己運行一個 AI 模型,基本上只剩下一個選擇,那就是選擇一個參數更少的模型。根據你的 GPU,70 億參數或 15 億參數的模型可能看起來不錯。但這意味著你必須使用一個「腦袋」非常小的 AI,有時和它交談會讓人感到非常沮喪。
降低大型模型的硬件需求
模型內部機制
為了降低大型模型的硬件需求,研究人員著眼於模型內部,也就是影響輸入如何映射到輸出的方式。簡單來說,AI 模型就像一個函數 f,如果你傳入一個輸入 X,它會給你一個結果 Y。在這個函數(也就是 AI 模型)中,通常會有一個權重將 X 轉換為輸出 Y,這個權重是通過訓練確定的。
權重的存儲與參數
在典型的模型設置中,權重使用 FP16 存儲,這是一種使用 16 位存儲一個數字的數字系統。這個權重基本上代表了我們所說的參數。例如,一個 70 億參數的模型意味著有 70 億個以 16 位表示的數字,大約是 14 GB。為了確保模型生成速度快,我們將這 14 GB 的權重放入 GPU VRAM 中,以確保計算速度不會太慢。
硬件限制與解決方法
但假設你只有一個 8 GB VRAM 的 GPU,你無法將所有東西都放進去。從技術上講,你可以主動輪換不同的權重(也就是卸載),但這會大大降低整個過程的速度,即使你可能保持了性能。
量化模型
一種不常見的解決方案是量化模型。與其使用 16 位存儲一個權重,我們可以只用一半甚至四分之一的位數來存儲一個權重。但這意味著我們會損失很多數字之間的精度。因為在 FP16 中,數字之間的最小增量約為 0.001,在 FP8 中約為 0.125,而在 int4 中,基本上都是整數,增量為 1。更不用說,可表示的數字數量也會呈指數級縮減。權重將不得不四捨五入,這將影響函數的預測精度。
量化後的微調
為了使量化模型可用,會有一個校準數據集,在量化後再次微調模型。
為何選擇大型模型
既然我們可以運行一個更小的模型,為什麼還要費這麼大的勁去運行一個更大的模型呢?通過這種方法,我們確實能夠將內存使用量至少減少一半。此外,FP16 和 FP8 之間的性能下降並沒有那麼大。因此,在大多數情況下,當你想運行一個模型時,以 FP8 運行可能會更好,因為它會更聰明、更經濟。
相關研究證明
有研究論文支持使用量化模型通常比使用具有全精度的較小模型更好的事實。實際上,有不少研究已經證明了這一點。你可以在我的網站 findmy papers.ai 上找到更多相關信息,該網站深入探討了它的工作原理、為證明這一點所做的實驗以及可能的例外情況。
極端量化:一位權重模型
BitsNet 的提出
這個想法最早是在 2023 年 10 月的一篇名為《BitNet:Scaling One Bit Transformers for Large Language Models》的研究論文中提出的。在這篇論文中,他們提出了一個問題:如果我們有一個只有一位權重的 LM 模型,只能表示 1 或 -1 會怎麼樣?想象一下,一個模型可能需要比標準模型少 16 倍的存儲空間。此外,由於只需要對兩個數字進行簡單的加法和減法,因此不需要矩陣乘法。
BitsNet 的挑戰
然而,這不僅引入了一些極端的數學挑戰,因為你只有兩個整數可以使用,而且也不可能將所有權重都轉換為一位,尤其是注意力機制的權重和層之間傳遞的信號(也就是激活)非常重要。與在全精度訓練後量化的模型不同,BitsNet 是從頭開始使用這種一位設置進行訓練的,這提供了更好的穩定性,因為你的目標不是挽救性能,而是從頭開始構建表示。
BitsNet 的實現與優勢
因此,即使實際上只有某些層(如線性投影)可以實現一位權重,他們仍然能夠用位線性等組件代替標準矩陣乘法,這將使用更少的計算資源,因為同樣你只有兩個數字。雖然他們沒有明確說明這個一位 LM 需要多少更少的內存,但與具有 70 億個全精度參數的模型相比,它仍然使用了 30 倍更少的能量,這甚至比我們最初預期的 16 倍還要好。
BitsNet B1.58 的改進
但這種純粹的一位設置有一個主要缺陷。即使它可以表示 1 和 -1,它在數學上仍然總是提供信號。這並不是一件好事,因為有時無效信號也同樣重要。為了解決這個問題,同一批研究人員在 4 個月後推出了 BitsNet B1.58。這一次,除了 1 和 -1,他們引入了一個新的狀態,即 0。0 的力量在於它引入了稀疏性,本質上允許模型關閉神經元之間的連接。這不僅顯著提高了模型性能,而且還保持了不需要矩陣乘法的好處。
BitsNet B1.58 的性能數據
這一次,他們實際上分享了在使用 Llama 1 模型(13 億參數)作為基線時使用 BitsNet 的確切內存節省情況。BitsNet B1.58 使用的內存幾乎少了三倍,速度快了 66 倍。對於 30 億參數的 Llama 1 模型,BitsNet B1.58 使用的內存少了 3.5 倍,速度快了 2.7 倍。即使在 13 億參數時,BitsNet 的性能比全精度 Llama 模型差,但對於 30 億參數的模型,它仍然能夠在各方面與之匹配甚至超越,這表明了一個非常有前途的擴展規律,即參數越多,性能越好。至於內存節省,它也有類似的趨勢。當 BitsNet 從 13 億參數擴展到 70 億參數時,它需要的內存比 Llama 70B 少 7.16 倍,而在 13 億參數時僅為三倍。最好的部分是,一個 70 億參數的 BitsNet B1.58 在生成速度、內存使用和能耗方面仍然比一個 13 億參數的全精度 LLM 更高效。
名稱由來
之所以稱為 B1.58,是因為與原來可以用一位存儲的兩個狀態不同,現在你在技術上有三個數字要存儲。因此,每個權重的信息內容現在約為 1.58 位。
BitsNet A4.8 的進一步優化
激活的量化
雖然這篇研究論文在證明 BitsNet 有效方面取得了巨大成功,尤其是在較大的參數數量下,但它仍然沒有改變 BitsNet 只解決權重大小問題的事實。激活仍然以 8 位傳遞,而 KV 緩存仍然是一個瓶頸,隨著上下文窗口的加長,很容易堆積起來。因此,為了提高一些額外的效率,同一批研究人員在 8 個月後深入研究了將激活從 8 位減少到 4 位。在這篇名為《BitsNet A4.8》的研究中,它對注意力和前饋網絡輸入使用 4 位激活,同時對中間狀態(如注意力的輸出)使用 8 位規範化。8 位必須存在,否則由於其特定的數據分佈(通常包括非常重要的異常值),會引入量化誤差。
性能表現
從他們的實驗中可以看出,全精度和 A4.8 的性能差異很大,這表明位數非常重要,因為可以看到 4 位甚至無法收斂。
KV 緩存的優化
至於上下文窗口,KV 緩存可以隨著上下文的加長而呈二次方堆積,並使用大量內存,尤其是如果它們以 FP16 甚至 FP8 存儲。因此,BitsNet A4.8 引入了 3 位 KV 緩存。如果你查看基準性能,它在平均精度上幾乎沒有下降。擁有這個 3 位 KV 緩存意味著與 16 位緩存相比,你基本上可以在使用相同內存量的情況下擁有五倍大的上下文窗口。
稀疏性的引入
更酷的是,BitsNet A4.8 也不是一個密集模型,這意味著它並不是對每個輸入都使用 100%的參數進行計算。這要歸功於 BitsNet B1.58 引入的數字 0。所以現在有一個可選的什麼都不做的狀態。這使得研究人員能夠通過對每個輸入只使用 55%的參數來引入一些相當數量的稀疏性。有點像具有活動參數數量的混合專家模型。
BitsNet 的訓練與成本
訓練令牌數量
到目前為止,即使 BitsNet 已經測試到 70 億參數並且表現優於 Llama 基線,但它只使用了 1000 億個令牌進行訓練。因此,最後一個障礙是將訓練令牌數量提高到萬億級,並證明 BitsNet 在規模上真正有效。
成本估算
為了向你展示為什麼 BitsNet 實際上很了不起,讓我列出一些粗略的數字來給你一些概念。由於一個 20 億參數的 BitsNet 模型使用的能量大約少 20 倍,我假設它需要的 FLOPS 比典型的 20 億參數變壓器模型少 20 倍。通過使用 findmy papers.ai 為我找到的一篇研究論文中的公式,訓練一個模型所需的 FLOPS 可以用這個公式估算:6 * n * d,其中 6 是每個參數所需 FLOPS 的經驗近似值,n 是模型中的參數數量,d 是訓練期間處理的令牌總數。因此,訓練一個 20 億參數、10 億令牌的一位 BitsNet,加上 20 倍的能耗降低,大約需要 6 的 19 次方 FLOPS。使用 A100(每秒提供 1 * 10 的 15 次方 FLOPS,GPU 每小時租賃價格為 2 美元),每次運行大約需要 33 美元。對於最新發表的關於 BitsNet 的論文《B1.5A to B4T》,這基本上意味著他們用 4 萬億個令牌訓練了一個 20 億參數的模型。這將使他們每次訓練運行花費大約 1300 美元。相比之下,沒有 20 倍能耗降低的模型估計每次訓練運行要花費 26000 美元。
優勢總結
這個預算使得 BitsNet 非常有吸引力,尤其是它只有 0.44 GB 的內存佔用,同時與 Quinn 2.5 1.5B(是其五倍大小)相當。更不用說 Quinn 2.5 1.5B 是用 18 萬億個令牌訓練的,是 BitsNet 的 4.5 倍。他們還在這個表格中估算了能耗。所以它並不是正好 20 倍的能耗降低,而是大約 12.4 倍。然而,這仍然非常驚人。與所有其他模型相比,能耗降低了 10 倍,同時具有相同的性能,並且內存使用量減少了 5 到 12 倍。它展示的擴展規律非常有前途。也許 BitsNet 的時代確實已經到來。
BitsNet 的未來展望
長上下文性能
關於 BitsNet,下一個值得期待的是它的長上下文性能,尤其是 A4.8 的 3 位 KV 緩存,它可以在使用相同計算資源的情況下將上下文窗口擴展 5 到 12 倍。
硬件優化
此外,由於目前還沒有針對其 1.58 位(也就是三進制操作)進行優化的硬件,因此仍有一些性能有待挖掘。因此,在當前的硬件技術下,BitsNet 仍然沒有以最佳狀態運行。
模型可用性
如果你想嘗試一下,BitsNet B1.58 B4T 模型現在可以在 Hugging Face 上獲得。你可以自己下載,也可以在線試用他們的演示。
其他相關研究
還有很多其他研究論文深入探討了解決變壓器的三進制操作問題,解決了許多有趣的技術挑戰,我在本視頻中沒有機會介紹。因此,我將在這裡留下一個列表,如果你感興趣,可以查看,或者你也可以向 findmy papers.ai 詢問更多信息。
感謝與支持
感謝大家的觀看。非常感謝 Andrew Chelas、Chris Leo、Degan Gan、News Research、Kanan、Robert Zaviasa、Lewis、Muk、Ben Shainer、Marcelo Ferraria、Zane、Sheep、Poof 和 Enu、DX Research Group 以及許多其他通過 Patreon 或 YouTube 支持我的人。如果你還沒有關注我,請在 Twitter 上關注我,我們下次再見。
贊助商推廣
在我們深入探討之前,我們都知道工作生活有多混亂。Slack 消息散亂,電子郵件線程被埋沒,關鍵上下文從你的工作中溜走,而你花在尋找答案上的時間比實際工作的時間還多。這就是為什麼我想和你分享 Tena,你的新 AI 工作夥伴,它讓你的工作生活像簡單的問答一樣輕鬆。想象一下。與其從 Slack、Gmail 和 Drive 中拼湊筆記,你只需打開 Tena,就能立即找到你需要的確切聊天、文檔或指標。就這麼簡單。不再需要在 10 個不同的應用程序中挖掘,打開 20 個不同的選項卡,仍然迷失方向。你發送的每個回復都由最新的上下文提供支持,因此你的回復速度快、符合品牌形象,而且高度相關。更具體地說,Tena 提供結構化記憶和即時搜索。這將分散的聊天、日曆和文檔轉換為一個可搜索的團隊大腦。因此,你可以通過一個提示找到任何東西。而且 Tena 不僅解決了信息碎片化的問題。它通過代理技術管道將內部通信與知識管理相結合,創建了一個統一的通信中心,就像一個真正的 AI 員工,實際上可以交付成果。因此,每個團隊成員都將有一個多功能的隊友,提高你的生產力,將組織溝通變成一個無縫的過程,並讓它為你完成工作。它是一個易於即插即用的集成,具有知識圖譜。它可以實時與 Slack、WhatsApp、Gmail、Outlook、Notion 和 Sheets 同步,將你的工具編織成一個有凝聚力的記憶。這使你能夠起草完美量身定制的消息,智能投票表面,群體共識,並自動生成任務列表。他們擁有的最酷的東西是 AI 記憶繼承和轉移。因此,當你的規則發生變化時,Tena 會將該人的整個知識圖譜交給下一個隊友,在幾小時內完成他們的入職,而不是幾周。因此,如果你準備好提高工作效率,Tena 提供 3 個月的免費高級版,如果你今天註冊。你還可以推薦一個團隊,每人賺取 20 美元。所以現在就通過描述中的鏈接下載 Tena。感謝 Tena 贊助本視頻。