VLDB2025 | Magnus: 字節(jié)跳動面向大規(guī)模機(jī)器學(xué)習(xí)的數(shù)據(jù)管理方案

導(dǎo)讀
機(jī)器學(xué)習(xí)廣泛應(yīng)用于字節(jié)跳動,數(shù)據(jù)作為機(jī)器學(xué)習(xí)訓(xùn)練的核心要素,如何高效靈活的管理支撐大規(guī)模訓(xùn)練數(shù)據(jù)的存儲、生產(chǎn)以及訓(xùn)練,成為數(shù)據(jù)基礎(chǔ)設(shè)施的一大挑戰(zhàn);近兩年大模型迅猛發(fā)展,對數(shù)據(jù)集管理也提出了更多新的場景需求。
字節(jié)跳動在開源 Apache Iceberg 的基礎(chǔ)上,打造了一套面向大規(guī)模機(jī)器學(xué)習(xí)的數(shù)據(jù)管理解決方案 Magnus,在存儲格式、索引、元數(shù)據(jù)管理、更新機(jī)制、訓(xùn)練框架集成等多個維度實現(xiàn)優(yōu)化。
Magnus 已在字節(jié)內(nèi)部部署超過五年,在搜索、廣告、推薦、大模型等核心業(yè)務(wù)中大規(guī)模落地,數(shù)據(jù)規(guī)模超5EB,相關(guān)成果已被 VLDB 2025收錄。
論文標(biāo)題:Magnus: A Holistic Approach to Data Management for Large-Scale Machine Learning Workloads
論文作者:Jun Song, Jingyi Ding, Irshad Kandy, Yanghao Lin, Zhongjia Wei, Zilong Zhou, Zhiwei Peng, Jixi Shan, Hongyue Mao, Xiuqi Huang, Xun Song, Cheng Chen, Yanjia Li, Tianhao Yang, Wei Jia, Xiaohong Dong, Kang Lei, Rui Shi, Pengwei Zhao, Wei Chen
論文地址:
https://www.vldb.org/pvldb/vol18/p4964-song.pdf
背景:機(jī)器學(xué)習(xí)訓(xùn)練場景下的數(shù)據(jù)管理挑戰(zhàn)
機(jī)器學(xué)習(xí)在字節(jié)跳動深度應(yīng)用,數(shù)據(jù)規(guī)模以及豐富的場景為數(shù)據(jù)管理帶來新的挑戰(zhàn)。傳統(tǒng)方案在應(yīng)對大規(guī)模機(jī)器學(xué)習(xí)工作負(fù)載時,局限性日益凸顯:
- 存儲效率瓶頸:傳統(tǒng)列存格式(如 Parquet)在處理萬列大寬表和圖像、視頻等多模態(tài)數(shù)據(jù)時,難以滿足資源效率以及讀寫性能的需求。
- 索引能力欠缺:特征調(diào)研等場景需要更高效的主鍵索引來提升更新性能,同時大模型場景下需要更多的索引支撐各種類型的查詢,比如倒排索引、向量索引等。
- 元數(shù)據(jù)管理困難:元數(shù)據(jù)是數(shù)據(jù)的數(shù)據(jù),是各種分布式計算引擎使用數(shù)據(jù)的橋梁,海量訓(xùn)練數(shù)據(jù)帶來了 "大元數(shù)據(jù)" 問題;且現(xiàn)有方案缺乏類似 Git 的分支管理能力,無法高效支撐特征調(diào)研與模型迭代。
- 高頻更新需求:特征工程中的列添加、廣告轉(zhuǎn)化數(shù)據(jù)更新等高頻場景,要求高效的增量更新能力。Copy-on-Write(COW)策略寫入開銷過大,而開源數(shù)據(jù)湖的 Merge-on-Read(MOR)策略在讀寫效率上難以滿足機(jī)器學(xué)習(xí)場景需求。
- 大模型訓(xùn)練特殊性:現(xiàn)有方案缺乏與機(jī)器學(xué)習(xí)訓(xùn)練框架的集成以及針對性優(yōu)化,導(dǎo)致數(shù)據(jù)集管理困難、資源消耗過高、訓(xùn)練吞吐量受限。
技術(shù)突破:Magnus 核心創(chuàng)新
Magnus 圍繞大模型訓(xùn)練場景的上述四個痛點,在 Apache Iceberg 開源數(shù)據(jù)湖的基礎(chǔ)上進(jìn)行了全面優(yōu)化,具備以下核心能力:

Magnus 系統(tǒng)架構(gòu)
1 高效存儲格式與索引設(shè)計
除 Parquet 等開源列存格式外,Magnus 支持新的自研格式以解決大模型訓(xùn)練場景下的存儲挑戰(zhàn),包括 Krypton 列存與 Blob 格式。Krypton 列存格式通過與 Parquet 相比更輕量的元數(shù)據(jù)設(shè)計,在寬表場景下大幅節(jié)省了存儲空間和內(nèi)存消耗。Blob 格式將圖片、視頻等多模態(tài)數(shù)據(jù)的二進(jìn)制對象與其他列分離存儲,支持按需提取部分視頻幀,大幅減少 I/O 放大。
在原生索引構(gòu)建上,Magnus 根據(jù)不同場景的需求提供哈希索引與 HFile 索引兩種主鍵索引,寫入時高效路由數(shù)據(jù)至特定桶,桶內(nèi)數(shù)據(jù)按主鍵排序并通過單調(diào)遞增序列號解決沖突,保證了后續(xù)讀時合并的高效性能。
此外,Magnus 直接在數(shù)據(jù)湖內(nèi)構(gòu)建倒排索引與向量索引,無需將數(shù)據(jù)導(dǎo)出至 Elasticsearch 等外部系統(tǒng)。通過 Spark SQL 語句即可創(chuàng)建索引,實現(xiàn)訓(xùn)練數(shù)據(jù)存儲與檢索功能的統(tǒng)一管理。
2 輕量級元數(shù)據(jù)管理與版本控制
Magnus 對元數(shù)據(jù)進(jìn)行優(yōu)化,相較 Iceberg 精簡了 manifest 文件中 70%-80% 的冗余統(tǒng)計信息,并通過按分區(qū)排序文件條目、構(gòu)建稀疏索引,在查詢特定分區(qū)時能快速跳過無關(guān)數(shù)據(jù)塊,顯著提升了元數(shù)據(jù)解析效率。
Magnus 在 Iceberg 的快照與分支機(jī)制的基礎(chǔ)上,進(jìn)一步引入類 Git 的分支 Rebase 與 Merge 等操作,實現(xiàn)高效的調(diào)研流程,所有分支操作僅修改元數(shù)據(jù),無需復(fù)制底層數(shù)據(jù)文件。此外,Tag 作為不可變的快照引用,配合提交日志,保證模型訓(xùn)練的數(shù)據(jù)版本可追溯、可復(fù)現(xiàn)。

元數(shù)據(jù)分支與標(biāo)記
3 高性能 MOR 更新與 Upsert 機(jī)制
Magnus 基于輕量級 Merge-on-Read(MOR)策略,構(gòu)建了一套高性能 Update 與 Upsert 機(jī)制,以適配機(jī)器學(xué)習(xí)場景中數(shù)據(jù)更新需求,既規(guī)避了 Copy-on-Write(COW)的高寫入開銷,又突破了開源數(shù)據(jù)湖 MOR 策略的性能瓶頸。
Magnus 支持列級更新,僅修改目標(biāo)列,避免全行重寫,且更新文件按主鍵排序,通過高效的 sort-merge join 進(jìn)行讀時合并,大幅降低讀寫放大。
Magnus 同時支持主鍵表 Upsert,通過主鍵索引,確保相同主鍵路由至唯一桶,寫入時按主鍵排序數(shù)據(jù)文件,提交時分配全局唯一序列號標(biāo)記順序。處理并發(fā)提交無需寫時沖突檢測,沖突解決延遲至 MOR 階段,依據(jù)序列號確定數(shù)據(jù)優(yōu)先級。這種設(shè)計既能保證主鍵全局唯一(通過 HFile 索引),又避免了 Iceberg Upsert 讀寫放大的問題,Upsert 效率遠(yuǎn)超開源方案,甚至能完成 Iceberg 無法在合理時間內(nèi)處理的大規(guī)模任務(wù)。
配合 Arrow 原生引擎的謂詞下推與 IO 預(yù)取優(yōu)化,Magnus 的 MOR 機(jī)制在合并階段實現(xiàn)高效數(shù)據(jù)過濾與并行處理,最終達(dá)成“低寫入延遲+高讀取吞吐”的平衡,為特征工程、廣告數(shù)據(jù)更新等高頻場景提供堅實支撐。

數(shù)據(jù)讀取流程
4 大模型訓(xùn)練的深度適配
- 推薦大模型(Large Recommendation Model, LRM)訓(xùn)練優(yōu)化:LRM 訓(xùn)練樣本按用戶序列存儲在 Magnus 主鍵表中。Magnus 設(shè)計了 Main+Extra 表的雙表架構(gòu),將事件特征按月分區(qū)存儲在 Main 表中,而將包含較多重復(fù)部分的用戶序列特征單獨存放在 Extra 表中。訓(xùn)練時,按時間戳截取 Extra 表中所需部分序列特征,再與 Main 表拼接得到完整特征。這種方案通過降低用戶序列特征的重復(fù)存儲,將存儲空間降低約50倍;同時在增加或更新用戶序列特征時大大減少讀寫放大,提高回溯效率。

Main x Extra 表
- 多模態(tài)大模型(Large Multimodal Model, LMM) 訓(xùn)練優(yōu)化:Magnus 通過提供統(tǒng)一的目錄服務(wù)抽象 HDFS 路徑,支持?jǐn)?shù)據(jù)在不同存儲介質(zhì)間的遷移。Magnus 與 BytedStreaming 集成,直接使用 Magnus 元數(shù)據(jù)進(jìn)行 sharding 和 shuffle,引入更細(xì)粒度的 planning 與 plan cache,并實現(xiàn) lite planning 模式對 scan task 對象進(jìn)行壓縮存儲,在保證 LMM 訓(xùn)練效果的同時大幅降低內(nèi)存占用。
實證效果:生產(chǎn)環(huán)境性能驗證
- 存儲效率:在萬列寬表場景中,Krypton 格式較 Parquet 減少30%存儲占用,F(xiàn)ooter 解析時間降低80%;Blob 格式在視頻抽幀等場景中,讀取速度大幅提升。
- 讀寫性能:TB 級表的列更新場景中,Magnus 的寫入速度是 Iceberg COW 的10倍,且通過定期合并可維持讀取性能與 Iceberg 相當(dāng)。
- 大模型訓(xùn)練收益:LRM 訓(xùn)練任務(wù)中,Magnus Main x Extra 表節(jié)省50×存儲,吞吐量提升70%;LMM 訓(xùn)練中,內(nèi)存占用減少約40%,啟動性能提升一倍,訓(xùn)練耗時打平甚至更優(yōu)。
結(jié)語
Magnus 解決了字節(jié)跳動內(nèi)部 EB 級數(shù)據(jù)的管理難題,為行業(yè)提供了可復(fù)用的大規(guī)模機(jī)器學(xué)習(xí)數(shù)據(jù)管理范式。隨著大模型技術(shù)的持續(xù)演進(jìn),Magnus 也將不斷創(chuàng)新迭代提供更強(qiáng)有力的數(shù)據(jù)基礎(chǔ)設(shè)施支撐。






























