🔥 Gate 動態大使專屬發帖福利任務第三期報名正式開啓!🏆 第二期獲獎名單將於6月3日公布!
👉️ 6月3日 — 6月8日期間每日發帖,根據帖子內容評級瓜分 $300獎池
報名即可參與:https://www.gate.com/zh/questionnaire/6761
報名時間:6月3日10:00 - 6月8日 24:00 UTC+8
🎁 獎勵詳情:
一、S級周度排名獎
S級:每週7日均完成發帖且整體帖子內容質量分數>90分可獲S級,挑選2名優質內容大使每人$50手續費返現券。
二、A/B 等級瓜分獎
根據各位動態大使發帖數量及帖子內容質量獲評等級,按評定等級獲獎:
A級:每週至少5日完成發帖且整體帖子內容質量90>分數>80可獲A級,從A級用戶中選出5名大使每人$20手續費返現券
B級:每週至少3日完成發帖且整體帖子內容質量80>分數>60可獲B級,從B級用戶中選出10名大使每人$10手續費返現券
📍 活動規則:
1.每週至少3日完成發帖才有機會獲獎。
2.根據發帖天數和整體發帖內容質量分數給予等級判定,分爲S/A/B等級,在各等級下選擇幸運大使獲獎。
💡 帖子評分標準:
1.每帖不少於30字。
2.內容需原創、有獨立見解,具備深度和邏輯性。
3.鼓勵發布市場行情、交易知識、幣種研究等主題,使用圖例或視頻可提高評分。
4.禁止發布FUD、抄襲或詆毀內容,違規將取
GPT-4內幕大洩露,1.8萬億巨量參數,13萬億token訓練,斥資6300萬美元
來源:“新智元”(ID:AI_era)
就在剛剛,OpenAI的GPT-4又被業內人士「開源」了!
其中包括GPT-4的架構、訓練和推理的基礎設施、參數量、訓練數據集、token數、成本、混合專家模型(Mixture of Experts,MoE)等非常具體的參數和信息。
如此重磅的爆料,出自何許人也?
值得一提的是,此前曾在業內引起軒然大波的谷歌內部文件洩漏事件(「我們沒有護城河,OpenAI也沒有」),作者之一同樣是Dylan Patel。
可見,Dylan Patel的確有一些特殊渠道,這就讓今日這份爆料的真實性又提高了幾分。
很多企業都能做出GPT-4
在爆料文章作者看來,OpenAI之所以不open,不是為了確保人類不被AI毀滅,而是因為他們構建的東西是可複制的。
他甚至預計,未來所有中國和美國的互聯網大廠或者AI頭部初創企業,都會有能力構建出和GPT-4一樣,甚至是超過GPT-4的模型。
但他同時也承認,GPT-4是OpenAI的偉大傑作。它凝結了工程師的匠心設計,複雜的構架和各種巧妙的工程上的取捨。
模型框架
首先爆料作者認為,GPT-4在120層中總共包含了1.8萬億參數,而GPT-3只有約1750億個參數。
也就是說,GPT-4的規模是GPT-3的10倍以上。
為了保持合理的成本,OpenAI採用了MoE模型來進行構建。
具體而言,GPT-4擁有16個專家模型,每個MLP專家大約有1110億個參數。其中,有兩個專家模型被用於前向傳播。
雖然文獻中大量討論了選擇每個token指向哪些專家的高級算法,但是據說,OpenAI用於GPT-4的算法,其實非常簡單。
此外,模型中還有大約550億個參數,被用做注意力機制的共享。
在每次的前向傳播推理(生成一個token)中,GPT-4只需要使用大約2800億參數和560TFLOPs。
這與很多純密集模型每次前向傳播需要大約1.8萬億參數和3700TFLOPs形成了鮮明的對比。
數據集的構成
OpenAI用13萬億的token訓出了GPT-4。
這個數據集不單單是包含了13萬億的token,而且因為沒有高質量的token,這個數據集還包含了許多個epoch。
在Scale AI和數據集內部,還包含了數百萬行的指令微調數據。
不過爆料作者說,在這些RLHF數據上,他們並沒有找到太多信息。
在預訓練階段的上下文長度達到了8K(seqlen),而32k的版本是基於預訓練後的8K版本微調而來的。
批大小在集群中是幾天之內逐漸增加的,最終OpenAI使用的批大小為6000萬。
當然,這「只是」每個750萬token的專家模型的大小,因為不是每個專家模型都會看到全部的token。
並行策略
並行策略對於A100GPU是相當重要的。
OpenAI採用了8路張量並行,因為NVLink最高只支持這麼多。
但除此之外,爆料作者聽說OpenAI採用15路並行管線。
理論上,考慮到數據通信和計算時間,15個管線就有些多了。
但是因為受到內存容量的限制,這麼多的管線就是有意義的了。
當純管線和張量並行時,每個GPU的FP16參數大約是30GB。
但是一旦加上了KV緩存和成本,如果OpenAI使用的GPU大部分是40GB的A100,那這樣的構架在理論上就是有意義的。
可能OpenAI使用的是ZeRo Stage 1,並且可能使用的是塊級FSDP或者是混合共享數據並行。
為什麼他們沒有使用FSDP的全模型呢?可能是因為過高的通信成本。
雖然OpenAI大多數節點之間都有高速網絡,但是沒有覆蓋所有的節點。
其中,至少有一些集群的連接帶寬會比其他的集群低很多。
但是作者表示,他並不是太明白OpenAI在如此高的管線並行度下,如何避免在每批中產生如下圖這樣的「泡泡」(huge bubbles),很有可能OpenAI就是生生地抗下了這些成本。
訓練成本
OpenAI訓練GPT-4的FLOPS約為2.15e25,在大約25000個A100上訓練了90到100天,利用率在32%到36%之間。
這種極低的利用率,部分原因是故障數量過多,這就會導致需要重新從之前的檢查點開始訓練。比如上面提到的氣泡成本。
這種情況浪費的訓練成本極高。
另一個原因是這麼多GPU之間的all-reduce非常昂貴。
爆料作者懷疑,如果這種集群實際上是一群具有較弱網絡連接的較小集群構成的,那麼集群不同部分之間的非阻斷(non-block)連接速度為800G/1.6T,但這些部分之間的連接速度僅為200G/400G。
如果OpenAI雲計算的成本是差不多1美元/每A100小時的話,那麼在這樣的條件下,訓練成本大約是6300萬美元。
這還不包括所有的實驗、失敗的訓練和其他成本,比如數據收集、RLHF、人力成本等。
如果考慮到剛剛說的這些因素,真實成本要高得多的多。
此外,這還得是在能別人買得到芯片/網絡/數據中心,承擔資本支出組建了這些系統,並將它們租給OpenAI的前提下。
但是放到今天,在2美元/每H100小時的條件下,預訓練可以在大約8,192個H100上進行,只需要55天,費用為2150萬美元。
不過,爆料作者稱到今年年底,至少將會有9個公司擁有超過上述大小的H100集群。
雖然並非所有這些公司都會將它們全部用於單個模型訓練,但如果有公司這樣做的話,他們將擁有比GPT-4更大的模型。
比如Meta到今年年底將擁有超過100,000個H100,但其中相當一部分將分佈在自己的數據中心進行推理。
但是它最大的單個集群仍將超過25,000個H100。
總之,到今年年底,許多公司都會擁有足夠的算力資源,來訓練GPT-4大小的模型。
混合專家模型方面的權衡
MoE(混合專家模型)是一種在推理過程中減少參數量的很好方法,雖然同時會增加參數量。
但是這對於每個訓練標記來編碼更多信息是必要的,因為獲取足夠高質量的標記非常困難。
如果OpenAI真的想追求最佳性能,他們需要訓練兩倍的token才能達到。
話雖如此,OpenAI還是做出了不少的取捨。
例如,在推理過程中處理MoE非常困難,因為模型的每個部分並不在每個token生成時都被使用。
這意味著有些部分可能處於休眠狀態,而其他部分在工作。
當為用戶提供服務時,這種情況會大大降低利用率。
研究人員已經證明,使用64-128個專家模型比使用16個專家模型能夠獲得更好的損失情況,但這僅僅是研究結果。
採用相對比較少的專家模型的原因很多,OpenAI選擇16個專家的原因之一是因為在許多任務上更多的專家模型很難泛化。
使用更多的專家模型也更難實現收斂。
在如此龐大的訓練過程中,OpenAI選擇在專家模型數量上反而更為保守。
此外,使用較少的專家模型還有助於他們的推理基礎架構。在切換到混合專家模型推理架構時,存在各種困難的取捨和權衡。
爆料作者從對LLM推理的基本取捨開始討論,然後再討論OpenAI面臨的問題和他們所做的選擇。
推理權衡
在介紹推理權衡之前,順帶提一下,爆料者與所有的LLM公司交談過後,發現英偉達的FasterTransformer推理庫非常糟糕,TensorRT更是如此。
這意味著,如果英偉達不修改,人們還需要從頭開始創建自己的解決方案。
推理大型語言模型有三個主要的權衡,即批大小(同時處理用戶數)維度和使用的芯片數量,具體如下:
1. 延遲
模型必須在合理的延遲時間內做出響應。誰也不想在聊天APP中等待幾秒鐘才開始收到輸出。預填(輸入token)和解碼(輸出token)的處理時間各不相同。
2. 吞吐量
模型必須以每秒輸出一定數量的token。人類大約需要每秒30個token。對於其他各種用例,較低和較高的吞吐量都可以接受。
3. 利用率
運行模型的硬件必須實現高利用率,否則成本過高。雖然更高的延遲和較低的吞吐量,可以用來將更多用戶請求組合在一起,從而實現更高的利用率,但也會增加難度。
LLM推理的關鍵是平衡內存帶寬和計算這兩個要點。
簡單來講,每個參數都必須被讀取,並且與之相關的有2個FLOP。
因此,大多數芯片的比率(H100 SXM僅有3TB/s內存帶寬,但FP8有2,000 TFLOP/s)在批大小為1的推理中完全是不平衡的。
如果只有一個用戶(批大小為1),那麼在每次生成token時,為了讀取每個參數所需的內存帶寬,會主要佔據推理時間,而計算時間幾乎可以忽略不計。
為了將大型語言模型高效地擴展到多個用戶,批處理大小必須超過1。多個用戶將參數讀取成本分攤。例如,在批大小為256/512時,每個字節的內存讀取可以獲得512 FLOP/s或1024 FLOP/s。
這個比率更接近H100的內存帶寬與FLOPS之間的平衡。這有助於實現更高的利用率,但代價是更高的延遲。
很多人認為內存容量是LLM推理的一個主要瓶頸,因為大型模型需要多個芯片進行推理,而較高的內存容量意味著它們可以適應較少的芯片。
然而,實際上更好的方法是使用更多的芯片,以便將延遲降低,增加吞吐量,並且可以使用更大的批大小以實現更高的利用率。
GPT-4推理權衡和基礎設施
以上所提到的,對GPT-4推理來說非常困難。但是作為一個MoE模型,再次引入了一系列全新的困難。
每個生成token的前向傳遞可以路由到不同的專家組。這對在較大的批大小下的吞吐量、延遲和利用率之間的權衡造成了困擾。
OpenAI的GPT-4有16個專家,每個前向傳遞路由到其中2個專家。
這意味著如果批大小為8,每個專家的參數讀取可能只有批大小為1。
更糟糕的是,這可能意味著一個專家的批大小為8,而其他專家的批大小為4、1或0。
每个生成token,路由算法都会将前向传递发送到不同的方向,导致token之间的延迟和专家批大小显著变化。
推理基礎設施是OpenAI選擇較少數量的專家的主要原因之一。如果他們選擇更多的專家,內存帶寬會成為推理的瓶頸。
OpenAI的推理集群通常可以達到4k+的批大小,這意味著即使在專家之間實現最佳的load平衡,專家的批大小也只有大約500左右。這需要非常大量的使用才能實現。
爆料者稱,我們了解到OpenAI在一個由128個GPU組成的集群上進行推理。他們在多個數據中心和地理位置上都有多個這樣的集群。
推理採用8路張量並行和16路管線並行。每個由8個GPU組成的節點只有約130B的參數,或者在FP16下每個GPU不到30GB,在FP8/int8下不到15GB。
這樣可以在40GB的A100上運行推理,只要所有批的KV緩存大小不會過大。
不同節點上的包含不同專家的層不會被分割,因為那樣會導致網絡流量過於不規則,而在每個生成token之間重新計算KV緩存的代價太高。
對於未來的MoE模型擴展和條件路由,最大的困難是如何處理KV緩存的路由。
模型的層數為120,所以可以簡單地將它們分配給15個不同的節點,但是因為第一個節點需要進行數據加載和嵌入,所以在推理集群的主節點上放置較少的層是有意義的。
此外,有一些關於「推測解碼」(後續)的傳聞,這也解釋了為什麼主節點需要包含較少的層。
推理成本
與擁有1750億參數的Davinchi模型相比,GPT-4的成本是其3倍,儘管其前饋參數只增加了1.6倍。
這主要是因為GPT-4需要更大的集群,並且實現的利用率更低。
作者認為,在128個A100上推理GPT-4的8k序列長度每1,000個標記的成本為0.0049美元,而在128個H100上推理GPT-4的8k序列長度每1,000個標記的成本為0.0021美元。
需要注意的是,這是假設有相當高的利用率,並保持較高批大小的情況下。
但很明顯,OpenAI有時的利用率非常低。
如果OpenAI不這樣做,他們的利用率會更低,而成本也將增加一倍以上。
多查詢注意力
除此之外,OpenAI也在使用多查詢注意力(Multi-Query Attention,MQA)。
简而言之,只需要一个注意力头,并且可以显著减少KV缓存的内存占用。
即便如此,32k長度的GPT-4肯定無法在40GB的A100上運行,而8k的最大批大小也有上限。
連續批處理
OpenAI實現了可變批大小和連續批處理。
這樣做可以允許一定程度的最大延遲,並優化推理成本。
推測解碼(Speculative Decoding)
爆料稱,OpenAI在GPT-4的推理過程中使用了「推測解碼」,這其中還有100%的不確定性。
token到token的延遲變化,以及在進行簡單的檢索任務和更複雜的任務時差異,似乎表明這一點是可能的,不過還是有太多的變量無法確定。
在此,爆料者通過DeepMind的一項研究「Accelerating LLM Inference with Staged Speculative Decoding」中的文本,進行了適當修改/添加一些細節,進行了解釋。
首先是預填充(prefill),將提示文本輸入模型中以生成KV緩存和第一個輸出的對數機率(可能的token輸出的概率分佈)。這個過程通常很快,因為整個提示文本可以並行處理。
第二個階段是解碼(decoding)。從輸出的對數機率中選擇一個token,並將其反饋到模型中,模型將生成下一個token的對數機率。重複這個過程,直到生成所需數量的token。
由於解碼必須按順序進行,每次都需要將權重流通過計算單元以生成單個token。因此當以小量批運行時,這個第二階段的計算密集度(即計算FLOP/內存帶寬的字節數)非常低。因此,解碼通常是自回歸生成中最昂貴的部分。
這就是為什麼OpenAI的API調用中,輸入token比輸出token便宜得多的原因。
「推測解碼」的基本思想是使用一個更小、更快的草案模型提前解碼多個token,然後將它們作為一個批輸入到預測模型中。
如果草案模型的預測是正確的,即更大的模型也同意這些預測,那麼可以使用單個批解碼多個token,這樣可以節省大量的內存帶寬和時間。
然而,如果更大的模型拒絕了草案模型預測的token,則剩餘的批將被丟棄,算法自然會恢復到標準的逐個token解碼。
「推測解碼」可能還伴隨著拒絕抽樣的方案,以從原始分佈中進行採樣。值得注意的是,這僅在帶寬是瓶頸的小批設置中有用。
「推測解碼」以計算換取帶寬,而成為一個有吸引力的性能工程目標有兩個關鍵原因:
首先,它不會降低模型質量。其次,它提供的性能改進通常與其他方法正交,因為其性能來自於將「順序執行」轉換為「並行執行」。
當前的推測方法為批預測的單獨序列。然而,這種方法不能很好地拓展到大量的批,或低草案模型對齊上。
直觀地說,兩個模型在連續長序列的token上達成一致的概率呈指數級低,這意味著隨著算術密度的增加,推測解碼的收益會迅速減少。
爆料者認為,如果OpenAI使用「推測解碼」,他們可能只在大約4個token的序列中使用。
順便提一句,有關OpenAI閹割,而導致GPT-4質量降低的整個陰謀,可能只是因為他們讓預測模型接受了「推測解碼」模型的低概率序列。
另外有人推測,Bard也使用了「推測解碼」,因為谷歌在將整個序列發送給用戶之前會等待其完全生成,但在爆料者認為,這種猜測是完全不正確的。
視覺多模態
視覺多模態能力是GPT-4中最不令人印象深刻的部分,至少與領先的研究相比是如此。
當然,現在還沒有人將多模態LLM的研究成果商業化。
爆料者稱,它是一個獨於文本編碼器的視覺編碼器,還有交叉注意力,架構類似於Flamingo,並在GPT-4 1.8T上增加了更多參數。
GPT-4多模態能力是在文本預訓練之後,又用大約2萬億token進⾏了微調。
據稱,在視覺模型上,OpenAI原本希望從頭開始訓練,但因其不夠成熟,無奈從文本訓練模型進行微調。
而下一代模型GPT-5,其訓練應該從零開始訓練視覺模型,並且能夠生成圖像,甚至生成音頻。
這樣的視覺能力主要目的之一,讓自主智能體能夠閱讀網頁,並轉錄圖像,視頻中的內容。
值得一提的是,OpenAI用來訓練多模態模型的數據包括:「聯合數據」(LaTeX/文本)、網頁屏幕截圖、YouTube視頻(採樣幀,以及運行Whisper獲取字幕)。
關於LLM的過度優化,一個有趣的事實是視覺模型的IO成本不同於文本模型。在視覺模型中,數據加載IO大約是文本模型的150倍。
視覺模型中的每個token 600字節,文本是4字節/token。
因此這需要在圖像壓縮方面做很多工作。這對於硬件供應商來說極為重要,因為他們正在圍繞LLM的用例和比率優化2-3年後的硬件。
他們可能會發現自己身處的世界中,每個模型都具有強大的視覺和音頻功能。
他們可能會發現自己的架構適應性會很差。
總的來說,架構肯定會超越我們今天看到的基於文本簡化的密集模型,和MoE模型。
參考資料