大模型訓練集群的存儲設(shè)計 原創(chuàng)
存儲系統(tǒng)在分布式LLM訓練中扮演著關(guān)鍵角色,需要滿足幾個關(guān)鍵要求。
- 應(yīng)與 GPU 的計算能力相匹配,以最大限度地利用其性能,避免因存儲瓶頸造成的資源浪費。
 - 應(yīng)支持大規(guī)模結(jié)構(gòu)化和非結(jié)構(gòu)化訓練數(shù)據(jù)集的存儲,并在分布式處理環(huán)境中具備可擴展性。
 - 模型checkpoint的存儲和檢索在 LLM 訓練中也帶來了挑戰(zhàn),需要系統(tǒng)滿足模型大小和訓練時長所決定的讀寫帶寬要求。
 - 滿足傳統(tǒng)企業(yè)級要求,例如數(shù)據(jù)保護、高可用性和安全性。
 
本文參考了論文 Llama3.1 405B Paper, Efficient Training of Large Language Models on Distributed Infrastructures: A Survey 以及公號之前的零一萬物《萬卡集群的AI Infra實踐分享》。兩篇paper已上傳到知識星球。

以Meta Llama 3 405B模型訓練的基礎(chǔ)設(shè)施為例。該模型是在一個配備16,000個GPU的集群上進行的訓練。支撐這一訓練的存儲系統(tǒng)由7500臺服務(wù)器組成,提供了高達240PB的SSD存儲容量。
在設(shè)計上,該存儲系統(tǒng)旨在支持持續(xù)讀寫帶寬達到2TB/s,并且在爆發(fā)式讀寫操作時,讀寫帶寬可以提升至7TB/s。這樣的設(shè)計充分考慮了Llama 3 405B模型訓練過程中的數(shù)據(jù)讀寫需求。
此外,考慮到訓練數(shù)據(jù)龐大且數(shù)量眾多,即使是文本格式,原始數(shù)據(jù)通常也是TB級別的,而語音和多模態(tài)數(shù)據(jù)則通常達到百TB的規(guī)模。因此,240PB的存儲規(guī)劃是合理的,可以滿足模型訓練過程中的數(shù)據(jù)存儲需求。
文件系統(tǒng)的高速度可以支持每一步都可以記錄一個checkpoint,當訓練過程中出現(xiàn)問題時,可以迅速從上一個checkpoint恢復訓練。這種設(shè)計大大縮短了容災(zāi)恢復的時間,提高了訓練的效率。
Checkpoint
在LLM的訓練過程中,checkpoint的數(shù)量和大小都是巨大的。模型參數(shù)量越大,所需寫入的數(shù)據(jù)量也越大,這要求存儲系統(tǒng)提供更大的寫入帶寬。例如,具有70B參數(shù)的LLM的checkpoint大小大約980GB。
在Llama3 的paper中,Meta表示采用分布式文件系統(tǒng)Tectonic使數(shù)千個GPU能夠同時保存和加載模型checkpoint,從而為廣泛的訓練操作提供了高效且可擴展的存儲解決方案。在字節(jié)的MegaScale系統(tǒng),HDFS被用于集中式模型檢查點維護,確保在規(guī)模上的一致性和可靠性。為了緩解checkpoint恢復期間的帶寬瓶頸。
分布式對象存儲,如Ceph對象存儲,則提供了更易于擴展的特性。這種優(yōu)勢源于其沒有層次化的目錄樹或命名空間,從而簡化了一致性維護。正因如此,對象存儲已在模型checkpoint存儲中得到廣泛應(yīng)用。零一萬物的數(shù)據(jù)中心就采用了Ceph。

訓練數(shù)據(jù)
LLM訓練的原始數(shù)據(jù)集是巨大的。Llama 3在超過15萬億token上進行了訓練,而Llama 2的數(shù)據(jù)集只有1.8萬億token。每個token大約2字節(jié),相當于大約30TB的數(shù)據(jù)。準備訓練數(shù)據(jù)集涉及廣泛的預處理步驟,包括數(shù)據(jù)抓取和清理,需要大量的實驗。通常,這些步驟處理的數(shù)據(jù)超過最終訓練數(shù)據(jù)集大小的100倍 。例如,WanJuan-CC數(shù)據(jù)集有選擇性地提取了大約680億個文檔,生成了大約1萬億個高質(zhì)量標記,相當于在丟棄99%的原始數(shù)據(jù)后,數(shù)據(jù)大小為2TB。因此,LLM訓練的總數(shù)據(jù)量預計將超過數(shù)十PB。
并行文件系統(tǒng),如Lustre、GPFS和BeeGFS,經(jīng)常部署在領(lǐng)先的高性能計算系統(tǒng)上,以確保高效的I/O、持久存儲和可擴展性能。這些系統(tǒng)也被廣泛用于訓練集群的數(shù)據(jù)加載,為高效處理大規(guī)模訓練數(shù)據(jù)提供了必要的基礎(chǔ)設(shè)施。此外,文件系統(tǒng)還必須使工程師能夠?qū)κ褂脭?shù)千個GPU的工作進行交互式調(diào)試,因為代碼更改需要立即對所有節(jié)點可用 。
在大多數(shù)LLM的訓練過程中,每個token通常只遇到一次。然而,采用數(shù)據(jù)緩存策略仍然至關(guān)重要,以緩解數(shù)據(jù)加載期間的I/O瓶頸。這種策略涉及從較慢的后端存儲預取訓練數(shù)據(jù)到更快的緩存存儲。Alluxio和JuiceFS通過從HDFS或?qū)ο蟠鎯Φ鹊讓哟鎯ο到y(tǒng)高效緩存訓練數(shù)據(jù),增強了LLM訓練。Quiver支持跨多個作業(yè)和用戶透明地重用緩存數(shù)據(jù)。Fluid利用Alluxio進行數(shù)據(jù)緩存,并引入了一種機制,可以根據(jù)I/O條件實現(xiàn)緩存的自適應(yīng)擴展。
本文轉(zhuǎn)載自公眾號AI時代窗口 作者:郁愈


















