GPT-4各項功能最全揭秘!open AI使用12 個關鍵細節(jié)
GPT-4大揭秘今天半導體分析機構 SemiAnalysis 發(fā)布了一篇 GPT-4 內部技術解密文檔:GPT-4 Architecture,Infrastructure,Training Dataset, Costs,Vision, MoE?。
該文檔披露了GPT-4 的架構、基礎設施、訓練數據集、成本、視覺 和 MoE 等關鍵信息。
過去幾個月都陸續(xù)有一些關于 GPT-4 架構的猜測和爆料,這篇則是最為詳細的解密,該文作者表示:「最有趣的地方是理解 OpenAI 為什么做出某些架構決策。
」出品:Web3天空之城 x 愛范兒,把全球頂級的 AI 認知內容帶到中文世界。
劃重點:1.OpenAI 保持 GPT-4 架構的封閉性,并非因為對人類存在著某種存在風險,而是因為他們所構建的東西是可復制的。
2.Google、Meta、Anthropic、Inflection、Character、騰訊、字節(jié)跳動、百度等公司在短期內都會擁有與 GPT-4 同樣甚至更強大的模型。
3. GPT-4 的規(guī)模是 GPT-3 的 10 倍以上。
我們認為它在 120 個層中擁有大約 1.8萬 億個參數,而 GPT-3 只有大約 1750 億個參數。
4.OpenAI 在其模型中使用了 16 個使用混合專家(MoE)模型,每個專家的 MLP 參數約為 1110 億個。
5.據說 OpenAI 的算法相當簡單,適用于當前的 GPT-4 模型。
此外,大約有 550 億個共享參數用于注意力機制。
6.每次前向傳遞的推理(生成 1 個標記)僅利用了約 2800 億個參數和 560 TFLOP 的計算。
這與純密集模型每次前向傳遞所需的約 1.8 萬億個參數和 3700 TFLOP 形成了對比。
7.OpenAI 訓練了 GPT-4 使用大約 13 萬億個標記(token)。
8.預訓練階段的上下文長度(seqlen)為 8k。
GPT-4 的 32k seqlen 版本是在預訓練后對 8k 進行微調得到的。
9.將所有的 A100 GPU 并行化的策略非常重要。
他們采用了8 路張量并行,因為這是 NVLink 的限制。
10.盡管 GPT-4 的前向參數僅為 1750 億的 Davinchi 模型的 1.6 倍,但其成本是 Davinchi 模型的 3 倍。
這主要是由于 GPT-4 需要更大的集群和較低的利用率所致。
?? 以下是全文編譯,enjoy:OpenAI 保持 GPT-4 架構的封閉性,并非因為對人類存在著某種存在風險,而是因為他們所構建的東西是可復制的。
事實上,我們預計 Google、Meta、Anthropic、Inflection、Character、騰訊、字節(jié)跳動、百度等公司在短期內都會擁有與 GPT-4 同樣甚至更強大的模型。
不要誤會,OpenAI 具有令人驚嘆的工程能力,他們所構建的東西令人難以置信,但他們達到的解決方案并非魔法。
這是一個優(yōu)雅的解決方案,涉及許多復雜的權衡。
擴大規(guī)模只是戰(zhàn)斗的一部分。
OpenAI 最持久的優(yōu)勢在于他們在實際應用中具有最多的使用情況、領先的工程人才,并且可以繼續(xù)在未來的模型中超越其他公司。
我們從許多來源收集了關于 GPT-4 的大量信息,今天我們想要分享。
其中包括模型架構、訓練基礎設施、推理基礎設施、參數數量、訓練數據集的組成、標記數量、層數量、并行策略、多模態(tài)視覺適應、不同工程權衡背后的思考過程、實現的獨特技術,以及他們如何減輕與龐大模型推理相關的一些最大瓶頸。
GPT-4 最有趣的方面是理解他們?yōu)槭裁醋龀隽四承┘軜嫑Q策。
此外,我們將概述在 A100 上訓練和推理 GPT-4 的成本,并說明它在下一代模型架構中如何與 H100 進行擴展。
首先,讓我們來談談問題陳述。
從 GPT-3 到GPT-4,OpenAI 希望將規(guī)模擴大 100 倍,但成本是一個困擾的問題。
密集的 Transformer 模型將無法進一步擴展。
密集 Transformer 是 OpenAI GPT-3、Google PaLM、Meta LLAMA、TII Falcon、MosaicML MPT 等所使用的模型架構。
我們可以輕松列舉出 50 家公司正在使用相同的架構進行 LLM(Large Language Models)訓練。
這是一個不錯的架構,但對于擴展來說存在問題。
請參閱我們在 GPT-4 發(fā)布之前關于密集模型訓練成本的討論,涉及即將出現的 AI 瓶頸問題。
在那里,我們透露了 OpenAI 在 GPT-4 架構和各種現有模型的訓練成本方面的高級內容。
在過去的 6 個月里,我們意識到訓練成本是無關緊要的。
當然,表面上看起來瘋狂,需要花費數千萬甚至數億美元的計算時間來訓練一個模型,但對于這些公司來說,這種支出微不足道。
這實際上是一個固定資本支出項目,通過擴大規(guī)??梢猿掷m(xù)獲得更好的結果。
唯一的限制因素是將計算資源擴展到人類能夠獲得反饋并修改架構的時間尺度上。
在未來幾年里,包括 Google、Meta 和 OpenAI/Microsoft 在內的多家公司將在價值超過 1000 億美元的超級計算機上訓練模型。
Meta 每年在「元宇宙」上燒掉 160 億美元,Google 每年浪費 100 億美元用于各種無法實現的項目。
亞馬遜在 Alexa 上已經虧損了超過 500 億美元。
加密貨幣在沒有價值的東西上浪費了1000 億美元。
這些公司和整個社會可以并且將會花費超過 1000 億美元來創(chuàng)建能夠訓練單個大規(guī)模模型的超級計算機。
然后,這些大規(guī)模模型可以以各種方式產品化。
這個努力將在多個國家和公司中復制。
這是一場新的太空競賽。
與以前的浪費不同的是,現在的AI具有明顯的價值,短期內將從人類助理和自主代理中獲得實際價值。
擴展人工智能的一個更重要問題,真正的AI瓶頸,是推理。
目標是將訓練計算與推理計算分離。
這就是為什么訓練超出最佳狀態(tài)對于任何將被部署的模型都是有意義的。
這也是為什么要使用稀疏模型架構;在推理過程中,并非每個參數都被激活。
真正的挑戰(zhàn)是將這些模型擴展到用戶和代理上的成本過高。
推理的成本比訓練的成本高出多倍。
這就是 OpenAI 在模型架構和基礎設施方面的創(chuàng)新目標。
對于密集模型來說,大型模型的推理是一個多變量問題。
我們在這里詳細討論了邊緣計算方面的問題,但對于數據中心來說,問題陳述非常相似。
簡單來說,設備永遠無法提供足夠的內存帶寬來實現大型語言模型的某些吞吐量水平。
即使它們有足夠的帶寬,邊緣設備上的硬件計算資源利用率也將很低。
在數據中心和云計算中,利用率是至關重要的。
Nvidia 之所以因軟件卓越而受到贊揚,部分原因是因為在 GPU 的一代代生命周期中,Nvidia 不斷更新低級軟件,通過更智能地在芯片、芯片之間以及內存之間傳輸數據,提高了 FLOPS 的利用率。
在當前大多數應用場景中,LLM 推理的目標是作為實時助手,這意味著它必須實現足夠高的吞吐量,以使用戶能夠真正使用它。
人類平均閱讀速度約為每分鐘 250 個單詞,但有些人的閱讀速度高達每分鐘 1000 個單詞。
這意味著你需要每秒輸出至少 8.33 個標記,但更接近每秒輸出 33.33 個標記以涵蓋所有情況。
根據數學計算,一個擁有萬億參數的密集模型在最新的 Nvidia H100 GPU 服務器上也無法實現這樣的吞吐量,因為它需要更大的內存帶寬。
每生成一個標記,都需要將每個參數從內存加載到芯片中。
然后將生成的標記輸入到提示信息中,生成下一個標記。
此外,用于注意機制的 KV 緩存也需要額外的帶寬進行流式傳輸。
該圖表假定無法融合每個操作帶來的低效率,注意力機制所需的內存帶寬以及硬件開銷等同于參數讀取。
實際上,即使使用 Nvidia 的 FasterTransformer 等「優(yōu)化」庫,總開銷會更大上面的圖表顯示了推理一個 LLM 所需的內存帶寬,以實現足夠高的吞吐量以為個體用戶提供服務。
圖表顯示,即使使用 8 個 H100 GPU,也無法以每秒 33.33 個標記的速度為擁有萬億參數的密集模型提供服務。
此外,8 個 H100 GPU 在每秒 20 個標記的情況下的 FLOPS 利用率仍然不到 5%,導致推理成本非常高。
因此,目前對于 8 路張量并行的 H100 系統,存在著約 3000 億前饋參數的推理約束。
然而,OpenAI 使用 A100 GPU 實現了人類的閱讀速度,并且使用超過萬億參數的模型,以每 1000 個標記僅需 0.06 美元的低價格廣泛提供服務。
這是因為模型是稀疏的,即并非每個參數都被使用。
讓我們來討論一下 GPT-4 模型架構、訓練基礎設施、推理基礎設施、參數數量、訓練數據集組成、標記數量、層次數量、并行策略、多模態(tài)視覺編碼器、不同工程權衡背后的思考過程、獨特的實施技術,以及他們如何減輕與大規(guī)模模型推理相關的一些最大瓶頸。
模型架構GPT-4 的規(guī)模是 GPT-3 的 10 倍以上。
我們認為它在 120 個層中擁有大約 1.8萬 億個參數,而 GPT-3 只有大約 1750 億個參數。
OpenAI 通過使用混合專家(MoE)模型來保持成本合理。
如果您對 MoE 不熟悉,請閱讀我們六個月前關于廣義 GPT- 4 架構和訓練成本的帖子。
此外,OpenAI 在其模型中使用了 16 個專家,每個專家的 MLP 參數約為 1110 億個。
每次前向傳遞有 2 個專家進行路由。
雖然文獻中對于選擇將每個標記路由到哪些專家的先進路由算法進行了很多討論,但據說 OpenAI 的算法相當簡單,適用于當前的 GPT-4 模型。
此外,大約有 550 億個共享參數用于注意力機制。
每次前向傳遞的推理(生成 1 個標記)僅利用了約 2800 億個參數和 560 TFLOP 的計算。
這與純密集模型每次前向傳遞所需的約 1.8 萬億個參數和 3700 TFLOP 形成了對比。
數據集構成OpenAI 訓練了 GPT-4 使用大約 13 萬億個標記(token)。
鑒于 CommonCrawl中包含約 5 萬億個高質量標記的RefinedWeb數據,這是有道理的。
作為參考,Deepmind的Chinchilla 模型和 Google的PaLM 模型分別使用了約 1.4 萬億個標記和約 7800 億個標記進行訓練。
據稱,即使 PaLM 2 也是基于約 5 萬億個標記進行訓練。
這個數據集不包含 13 萬億個獨特的標記。
相反,由于缺乏高質量的標記,該數據集包含多個時期。
對于基于文本的數據有 2 個時期,對于基于代碼的數據有 4 個時期。
有趣的是,這遠遠不及 Chinchilla 的最優(yōu)解,表明需要對模型進行雙倍數量的標記訓練。
這表明在網絡上獲取易得的標記的數量有限。
高質量的文本標記有 1000 倍之多,而音頻和視頻則更多,但獲取它們并不像網頁抓取那么簡單。
還有來自 ScaleAI 和內部的數百萬行指令微調數據。
不幸的是,我們在RLHF數據方面找不到太多信息。
預訓練階段的上下文長度(seqlen)為 8k。
GPT-4 的 32k seqlen 版本是在預訓練后對 8k 進行微調得到的。
在集群上,批次大小逐漸在幾天內逐步增加,但到最后,OpenAI 使用的批次大小為 6000 萬!當然,由于并非每個專家都能看到所有標記,這「僅僅」是每個專家的批次大小為 750 萬個標記。
并行策略將所有的 A100 GPU 并行化的策略非常重要。
他們采用了8 路張量并行,因為這是 NVLink 的限制。
此外,我們聽說他們還使用了 15 路流水線并行。
從理論上講,在考慮數據通信和計算時間時,這太多的流水線了,但如果他們受限于內存容量,那么這是有道理的。
僅僅通過流水線+張量并行,每個GPU的參數在FP16下就占用了約 30GB。
一旦加上 KV 緩存和開銷,從理論上講,如果 OpenAI 的大部分 GPU 都是 40GB 的 A100,那么這是有道理的。
他們可能使用了 ZeRo 階段 1 。
他們可能還使用了塊級 FSDP 或混合共享數據并行。
至于為什么他們沒有使用完整模型的 FSDP,可能是因為更高的通信開銷。
雖然 OpenAI 的大多數節(jié)點之間具有高速網絡連接,但并非所有節(jié)點之間都是如此。
我們相信至少一些集群的帶寬要低得多。
我們不明白他們是如何在如此高的流水線并行度下避免每個批次產生巨大的延遲。
很可能他們只是吸收了這個成本。
訓練費用OpenAI 用于 GPT-4 的訓練 FLOPS 約為 2.15e25,使用了約 25000 個 A100 GPU 進行了 90 到 100 天的訓練,利用率約為 32% 至 36%。
極低的利用率部分是由于大量的故障導致需要重新啟動檢查點。
上述提到的延遲代價極高。
另一個原因是在這么多 GPU 之間進行全局歸約的代價極高。
如果我們的猜測是正確的,那么集群實際上是許多較小集群的組合,在它們之間的網絡連接非常薄弱,即在集群的各個部分之間的非阻塞連接速度為 800G/1.6T,但這些部分之間的連接速度只有 200G/400G。
如果他們在云中的成本為每個 A100 的小時費用約為 1美元,僅此次訓練的成本將約為 6300 萬美元。
這還不包括所有的實驗、訓練失敗的運行和其他成本,如數據收集、RLHF、統計等。
由于這些因素,實際成本要高得多。
此外,這意味著您需要有人購買芯片/網絡/數據中心,承擔資本支出,并將其租給您使用。
今天,使用約 8192個H100 在大約 55 天內進行預訓練的成本約為 2150 萬美元,每個 H100 的小時費用為 2 美元。
請注意,我們相信到今年年底將有 9 家公司擁有更多的 H100。
這些公司并不會將所有 H100 都用于單次訓練運行,但那些使用所有 H100 進行訓練的公司將會有更大規(guī)模的模型。
Meta 將在今年年底擁有超過 100000 個H100,但其中相當一部分將分布在他們的數據中心進行推理。
他們最大的單個集群仍將超過 25000 個 H100。
到今年年底,許多公司將擁有足夠的計算資源來訓練一個與 GPT-4 規(guī)模相當的模型。
混合專家模式的權衡MoE 是一種在推理過程中減少參數數量的絕佳方法,同時仍然增加參數數量,這對于每個訓練標記來說是必需的,因為需要編碼更多的信息。
這是必要的,因為獲取足夠高質量的標記非常困難。
如果 OpenAI 真的試圖達到 Chinchilla的最佳狀態(tài),他們將不得不在訓練標記上訓練 2 倍的數量。
話雖如此,OpenAI 做出了多個權衡。
例如,MoE 在推理過程中非常難處理,因為模型的每個部分并不在每個標記生成時都被利用。
這意味著在使用其他部分時,某些部分可能處于休眠狀態(tài)。
對于為用戶提供服務,這真的會對利用率造成很大的影響。
研究人員已經證明使用 64 到 128 個專家比使用 16 個專家的損失更好,但這僅僅是研究結果。
選擇較少的專家有多個原因。
OpenAI 選擇 16 個專家的一個原因是更多的專家在許多任務上難以進行泛化。
更多的專家也可能更難實現收斂。
在如此大規(guī)模的訓練中,OpenAI 選擇在專家數量上更為保守。
此外,使用較少的專家還有助于他們的推理基礎設施。
在轉向專家混合推理架構時,存在許多困難的權衡。
讓我們從 LLMs 的推理基本權衡開始,然后再轉向OpenAI面臨的困境和他們所做的選擇。
推理的權衡在開始之前,我們想指出,我們與所有的 LLM公 司交流后發(fā)現,Nvidia 的 FasterTransformer 推理庫非常糟糕,TensorRT 更糟糕。
無法使用Nvidia的模板并進行修改意味著人們需要從零開始創(chuàng)建自己的解決方案。
如果你是 Nvidia的工作人員,你需要盡快改進 LLM 推理的這個問題,否則事實上將成為一個開放的工具,可以更容易地添加第三方硬件支持。
大規(guī)模模型的浪潮正在來臨。
如果在推理中沒有軟件優(yōu)勢,并且仍然需要手動編寫內核,那么 AMD 的 MI300 和其他硬件將有更大的市場。
對于大型語言模型的推理,存在 3 個主要的權衡,涉及批處理大小(同時為多個用戶提供服務的數量)和使用的芯片數量。
1.延遲 – 模型必須以合理的延遲響應。
人們不希望在等待輸出開始流動到聊天應用程序中之前等待幾秒鐘。
預加載(輸入令牌)和解碼(輸出令牌)需要不同的處理時間。
2.吞吐量 – 模型必須輸出每秒鐘一定數量的令牌。
對于人類使用,大約需要每秒鐘30個令牌。
較低和較高的吞吐量對于其他各種用例也可以接受。
3.利用率 – 運行模型的硬件必須實現高利用率,否則成本太高。
盡管較高的延遲和較低的吞吐量可以用于將更多的用戶請求分組,并實現更高的利用率,但這使得情況變得更加困難。
LLM 推理的關鍵是平衡兩個主要因素,即內存帶寬和計算。
簡單來說,每個參數都必須讀取,并且與之相關聯的有 2 個 FLOP。
因此,大多數芯片的比例(H100 SXM 僅具有 3TB/s 的內存帶寬,但具有 2000 TFLOP/s 的 FP8)在批處理大小為 1 的推理中完全不平衡。
如果只為一個用戶提供服務,批處理大小為 1,那么為每個令牌生成流式傳輸所需的內存帶寬將占據推理時間的主導地位,而計算時間幾乎可以忽略不計。
要將大型語言模型有效地擴展到多個用戶,批處理大小必須大于 1。
多個用戶分攤參數讀取成本。
例如,在批處理大小為 256 或 512 時,每個內存字節(jié)的讀取對應 512 FLOP/s 或 1024 FLOP/s。
這個比例更接近 H100 的內存帶寬與 FLOPS 之間的比例。
這有助于實現更高的利用率,但代價是更高的延遲。
許多人認為 LLM 推理的一個主要瓶頸是內存容量,因為模型的大小限制了它可以適應的芯片數量,但這是不正確的。
雖然大型模型需要多個芯片進行推理,較高的內存容量使其適應的芯片數量減少,但最好使用比所需容量更多的芯片,以便將延遲降低,增加吞吐量,并使用更大的批處理大小以實現越來越高的利用率。
Google 在他們的 PaLM 推理論文中展示了這些權衡。
然而,值得注意的是,這是針對像 PaLM 這樣的稠密模型,而不是像 GPT4 這樣的稀疏模型。
如果一個應用程序需要最低的延遲,我們需要應用更多的芯片,并以盡可能多的方式對模型進行分區(qū)。
較低的延遲通??梢酝ㄟ^較小的批處理大小實現,但較小的批處理大小也會導致更差的 MFU(利用率),從而導致每個令牌的總成本(以芯片秒或美元計)更高。
如果一個應用程序需要離線推理,而延遲不是一個問題,主要目標是最大化每個芯片的吞吐量(即最小化每個令牌的總成本)。
增加批處理大小是最高效的,因為較大的批處理通常會導致更好的 MFU(利用率),但某些在小批處理大小下不高效的分區(qū)策略在批處理大小增大時變得高效。
更多的芯片和更大的批處理大小是最便宜的,因為它們提高了利用率,但同時也引入了第三個變量,即網絡時間。
將模型分配到多個芯片上的某些方法對于延遲來說更加高效,但與利用率有一定的權衡。
內存加載部分的時間和非 attention 計算時間與模型大小成正比,與芯片數量成反比。
然而,對于給定的分區(qū)布局,芯片間通信所需的時間隨著使用的芯片數量減少得更慢(或根本不減少),因此隨著芯片數量的增加,這成為一個越來越重要的瓶頸。
雖然今天我們只是簡要討論一下,但應該注意的是,隨著批處理大小和序列長度的增長,KV緩存的內存需求會急劇增加。
如果一個應用程序需要生成具有長注意力上下文的文本,那么推理時間將大大增加。
對于具有多頭注意力的 500B+ 模型,注意力KV緩存會變得很大:對于批處理大小為 512 和上下文長度為 2048,KV緩存總共需要 3TB 的容量,這是模型參數大小的 3 倍。
芯片上的內存需要從芯片外的內存中加載這個KV緩存,而在此期間,芯片的計算核心基本上處于空閑狀態(tài)。
較長的序列長度對內存帶寬和內存容量尤其具有挑戰(zhàn)性。
OpenAI 的 16k 序列長度的 GPT 3.5 Turbo 和 32k 序列長度的 GPT 4 要昂貴得多,因為它們由于內存限制無法利用更大的批處理大小。
較小的批處理大小導致較低的硬件利用率。
此外,隨著序列長度的增加,KV 緩存也會增大。
KV緩存無法在用戶之間共享,因此需要進行單獨的內存讀取,進一步限制了內存帶寬。
稍后會詳細介紹 MQA 的更多內容。
GPT-4 推理權衡和基礎設施以上所有內容對于 GPT-4 的推理來說都很困難,因為作為 Mixture of Experts(MoE)的模型架構引入了一整套新的困難。
每個標記生成的前向傳遞可以路由到不同的專家集合。
這在吞吐量、延遲和利用率的權衡方面引入了一種新的困境,尤其是在較大的批次大小下。
OpenAI 的 GPT-4 擁有 16 個專家,每個前向傳遞路由到其中的 2 個專家。
這意味著如果批次大小為 8,每個專家的參數讀取可能只有批次大小為 1。
更糟糕的是,這可能意味著一個專家的批次大小為8,而其他專家的批次大小可能為 4、1 或 0。
每個標記生成,路由算法都會將前向傳遞發(fā)送到不同的方向,導致標記之間的延遲以及專家批次大小出現顯著的變化。
推理基礎設施是 OpenAI 選擇采用較少專家的主要原因之一。
如果他們選擇更多的專家,內存帶寬將更加成為推理的瓶頸。
OpenAI 的推理集群通常達到 4k+ 的批次大小,這意味著即使在專家之間進行最佳負載均衡,專家們的批次大小也只有約500。
這需要非常大量的使用才能實現。
我們了解到 OpenAI 在一個由 128 個 GPU 組成的集群上運行推理。
他們在多個數據中心和地理位置擁有多個這樣的集群。
推理采用 8 路張量并行和 16 路管道并行。
每個由8個GPU組成的節(jié)點僅擁有約 130B 的參數,或者在FP16模式下每個 GPU 不到 30GB,在 FP8/int8 模式下不到 15GB。
這使得推理可以在 40GB 的 A100 上運行,前提是所有批次中的 KV 緩存大小不會膨脹得太大。
包含各種專家的各個層不會在不同的節(jié)點之間分割,因為這會使網絡流量過于不規(guī)則,并且在每個標記生成之間重新計算 KV 緩存的代價會過高。
對于任何未來的MoE模型擴展和條件路由,最大的困難是如何處理 KV 緩存的路由問題。
模型的層數為 120,因此在 15 個不同的節(jié)點之間進行簡單的分配,但由于第一個節(jié)點需要進行數據加載和嵌入,所以在推理集群的頭節(jié)點上放置較少的層是有道理的。
此外,有一些關于推測解碼的傳聞,我們稍后會討論,但我們不確定是否相信這些傳聞。
這也可以解釋為什么頭節(jié)點需要包含較少的層。
GPT-4 推理成本盡管 GPT-4 的前向參數僅為 1750 億的 Davinchi 模型的 1.6 倍,但其成本是 Davinchi 模型的 3 倍。
這主要是由于 GPT-4 需要更大的集群和較低的利用率所致。
我們認為,在 128 個 A100 進行 GPT-4 8k 序列長度的推理過程中,每 1000 個標記的成本為 0.0049 美元,而在 128 個H100 進行 GPT-4 8k 序列長度的推理過程中,每 1000 個標記的成本為 0.0021 美元。
需要注意的是,我們假設有良好的高利用率,并且保持批次大小較大。
這可能是一個錯誤的假設,因為很明顯OpenAI有時利用率非常低。
我們假設 OpenAI 會在低峰時段關閉集群,并重新利用這些節(jié)點來從檢查點中恢復訓練,用于較小的測試模型,嘗試各種新技術。
這有助于降低推理成本。
如果 OpenAI 不這樣做,他們的利用率將更低,我們的成本估計將翻倍以上。
多查詢注意力MQA 是其他所有人都在做的事情,但我們想指出 OpenAI 也在做。
簡而言之,只需要一個頭部,而且可以顯著減少KV緩存的內存容量。
即便如此,32k 長度的 GPT-4 絕對無法在 40GB 的 A100 上運行,而 8k 的批次大小也受到限制。
如果沒有MQA,8k長度的模型將在批次大小上受到顯著限制,甚至到了不經濟的程度。
連續(xù)批處理OpenAI 實現了可變批處理大小和連續(xù)批處理。
這樣做是為了在最大延遲和優(yōu)化推理成本之間達到一定的平衡。
如果您對這個概念不熟悉,可以閱讀 AnyScale 的這個內容:使用靜態(tài)批處理完成四個序列。
在第一次迭代(左邊),每個序列從提示令牌(黃色)生成一個令牌(藍色)。
經過幾次迭代(右邊),完成的序列因為在不同的迭代中發(fā)出了它們的序列結束令牌(紅色),所以它們的大小各不相同。
盡管序列 3 在兩次迭代后完成,但靜態(tài)批處理意味著 GPU 在批處理中的最后一個序列完成之前處于未充分利用的狀態(tài)(在這個例子中是序列 2 在六次迭代后完成)。
使用連續(xù)批處理完成七個序列。
左側顯示了單次迭代后的批次,右側顯示了經過多次迭代后的批次。
一旦一個序列發(fā)出一個序列結束令牌,我們會插入一個新的序列來取代它,例如序列 S5、S6 和 S7。
這樣可以實現更高的 GPU 利用率,因為 GPU 不需要等待所有序列完成后才開始新的序列。
猜測解碼我們從一些可靠的消息來源得知,OpenAI 在 GPT-4 的推理過程中使用了猜測解碼(speculative decoding)。
我們不確定是否應該相信這個說法。
從令牌到令牌的推理時間的一般變化以及在執(zhí)行簡單的檢索任務與執(zhí)行更復雜任務時的差異似乎表明這是可能的,但是有太多的變量無法確定。
為了確保,我們將在此處使用「加速LLM推理的分階段猜測解碼」一文中的一些文本,并進行適當的修改和補充。
使用LLM通常分為兩個階段。
首先是預填充(prefill)階段,將提示語通過模型運行以生成KV緩存和第一個輸出的對數幾率(可能的令牌輸出的概率分布)。
這通常很快,因為整個提示語可以并行處理。
第二個階段是解碼。
從輸出的對數幾率中選擇一個令牌,并將其反饋到模型中,模型會為下一個令牌生成對數幾率。
這個過程會重復進行,直到生成所需數量的令牌。
由于解碼必須按順序進行,每次計算單元都需要流式傳輸權重以生成單個令牌,因此這個階段的算術強度(即計算的浮點運算數/內存帶寬字節(jié))在小批次中非常低。
因此,解碼通常是自回歸生成中最耗費資源的部分。
這就是為什么在 OpenAI 的 API 調用中,輸入令牌比輸出令牌更便宜的原因。
猜測解碼的基本思想是使用一個較小、更快的草稿模型預先解碼多個令牌,然后將它們作為一個批次輸入到正式模型中。
如果草稿模型的預測是正確的,即與較大的模型達成一致,那么可以使用單個批次解碼多個令牌,這樣可以節(jié)省大量的內存帶寬和時間。
然而,如果較大的模型拒絕了草稿模型預測的令牌,那么剩余的批次將被丟棄,算法會自然地恢復到標準的逐令牌解碼方式。
猜測解碼可能還會伴隨著拒絕抽樣方案,用于從原始分布中進行抽樣。
請注意,這僅在帶寬成為瓶頸的小批次設置中才有用。
猜測解碼通過犧牲計算資源來換取帶寬。
有兩個關鍵原因使得猜測解碼成為一個有吸引力的性能優(yōu)化目標。
首先,它不會降低模型質量。
其次,它所提供的優(yōu)勢通常與其他方法無關,因為它的性能來自于將順序執(zhí)行轉換為并行執(zhí)行。
目前的猜測方法是為批次預測一個單獨的序列。
然而,這種方法在大批次規(guī)?;虿莞迥P蛯R度較低時無法很好地擴展。
直觀地說,兩個模型在長連續(xù)的令牌序列上達成一致的概率是指數級低的,這意味著隨著算術強度的增加,猜測解碼的收益會迅速減少。
我們認為如果 OpenAI 在使用猜測解碼,他們可能只會在長度約為 4 個令牌的序列中使用。
另外,有人猜測 GPT-4 降低質量的整個陰謀可能是因為他們允許正式模型接受猜測解碼模型中概率較低的序列。
另外有人猜測 bard 使用猜測解碼,因為谷歌在向用戶發(fā)送完整序列之前會等待序列全部生成,但我們不相信這種猜測是正確的。
視覺多模態(tài)GPT-4 的視覺多模態(tài)能力相對于領先的研究來說是最不引人注目的部分。
當然,目前還沒有任何人將多模態(tài) LLM 的研究商業(yè)化。
GPT-4 的視覺編碼器與文本編碼器是分開的,但存在交叉注意力。
據我們所知,該架構類似于 Flamingo。
這使得 GPT-4 的參數數量增加了。
在文本預訓練之后,通過另外約 2 萬億個標記進行微調。
對于視覺模型,OpenAI 原本想從頭開始訓練,但該模型還不成熟,因此他們決定通過從文本開始進行降低風險。
下一個模型 GPT-5 據說將從頭開始訓練視覺,并且能夠自主生成圖像。
此外,它還能夠處理音頻。
視覺能力的一個主要目的是使自主代理能夠閱讀網頁并轉錄圖像和視頻中的內容。
他們訓練的數據包括聯合數據(渲染的LaTeX/文本),網頁的屏幕截圖,YouTube 視頻:采樣幀,并使用 Whisper 進行轉錄。
有趣的是,對于所有這些對 LLM 過度優(yōu)化的內容來說,視覺模型的 IO 成本與文本模型不同。
在文本模型中,數據加載非常便宜,就像我們在關于亞馬遜云危機的文章中所描述的那樣。
而在視覺模型中,數據加載的 IO 成本高出約 150 倍。
每個標記的數據加載約為 600 字節(jié),而不是文本的 4 字節(jié)。
目前在圖像壓縮方面有很多工作正在進行。
這對于正在針對 2 到 3 年后 LLM 的用例和比例進行硬件優(yōu)化的硬件供應商來說非常重要。
他們可能會發(fā)現自己處于一個每個模型都具備強大的視覺和音頻功能的世界。
他們可能會發(fā)現他們的架構不太適應這種情況。
總的來說,架構肯定會進一步發(fā)展,超越當前我們所看到的基于文本的稠密模型和/或 MoE 模型的簡化形式。
原文始發(fā)于微信公眾號(愛范兒):GPT-4 最全揭秘,12 個關鍵細節(jié)被扒光。
本文內容根據網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯系刪除。