火山引擎多模態數據湖:基于 Daft 與 Lance,構筑 AI 時代數據湖新范式
在 AI 技術飛速發展的當下,數據作為 AI 的 “燃料”,其形態與處理方式正發生深刻變革。本篇文章來自火山引擎LAS團隊琚克儉在“2025AICon 全球人工智能開發與應用大會”分享,主要圍繞 “AI 場景下多模態數據處理” 主題,介紹LAS團隊基于 Daft+ Lance打造的多模態數據湖方案,為 AI 時代數據湖的建設提供全新思路。
AI 驅動下,數據湖場景的變革與挑戰
傳統數據湖更多聚焦于大數據領域的結構化數據處理,而 AI 場景的繁榮,正從存儲、計算、數據管理等多個維度,對數據湖提出全新要求。
在存儲側,AI 場景下的數據來源愈發多元,多模態數據(如圖片、視頻等)大量涌現,同時還需滿足結構化與非結構化數據統一存儲的需求。不同于大數據場景對 “降低存儲成本” 的追求,AI 場景更看重 “數據讀取 IO 速度”,以支撐高效的模型訓練與推理。
計算側的變化同樣顯著。過去大數據場景以純 CPU 處理為主,而 AI 場景下,模型的引入催生了 CPU 與 GPU 異構的計算需求。此外,業務主導權向 AI 傾斜,數據處理范式也從大數據時代的 SQL,逐漸轉向 AI 算法團隊更熟悉的 Dataframe。
數據管理與應用層面也在迭代。數據源管理不再局限于 Database、table等,文件模型、函數等均需納入管理范疇;上層應用也不斷迎來爆發,未來還將向 agent、具身智能等場景延伸。
基于 湖計算Daft+湖存儲Lance的AI數據湖方案
LAS(LakeHouse AI Service)
傳統數據處理技術棧難以應對這些新變化。多模態數據用傳統方式存儲,易引發 IO 放大等問題;將完整多模態數據直接導入計算側,又會帶來巨大的 IO 與內存壓力。
正是基于這些痛點,火山引擎LAS團隊沉淀出了面向 AI 場景的數據湖解決方案 ——LakeHouse AI Service。
LAS產品全景圖 (LakeHouse AI Service)
LAS 核心框架可概括為 “AI 數據湖”,包含數據湖計算、湖存儲與湖管理三大模塊。此次分享重點聚焦 “湖計算” 與 “湖存儲”,分別對應 Daft 與 Lance 兩大核心組件。
Daft:多模態數據的 “湖計算” 引擎
Daft 是基于 Ray 構建的計算框架,旨在解決 AI 場景下多模態數據處理的四大核心需求:
- 快速實現單機到分布式擴展:AI 場景中,數據量往往龐大,單機調試完成后,需快速擴展為分布式處理以提升效率。Daft 依托 Ray 的 Runtime 優勢,可輕松實現這一擴展,滿足客戶對大規模數據處理的訴求。
- 統一多模態與結構化數據處理:無需在不同框架間切換,Daft 能在同一框架內完成多模態數據與結構化數據的統一存儲與計算,簡化數據處理流程。
- 支持 CPU 與 GPU 異構調度:AI 數據處理常需加載模型,Daft 可在同一工作流中統籌 CPU 算子與 GPU 算子,充分發揮硬件性能,適配復雜的計算需求。
- 打通大數據與 AI 團隊協作壁壘:大數據團隊習慣 SQL 開發,AI 算法團隊擅長 Dataframe 數據加工。Daft 在接入層適配 Python 與 SQL 兩種方式,讓兩類團隊能在同一技術棧下高效協作,同時避免因技術差異導致的組織協作問題。
從架構來看,Daft 的設計邏輯清晰且高效。其底層基于 Ray 實現分布式擴展,中間層整合了大數據場景的優化經驗,優化器與執行器均采用 Rust 編寫,打造 native 執行引擎 —— 既保留了 Python 生態(如 Pandas、Polars)的數據預處理習慣,又大幅提升了執行效率。
在核心應用場景上,Daft 展現出強大能力:
- Python 腳本分布式轉化:針對基于模型或 Python UDF 的單機執行邏輯,Daft 提供無狀態(task)與有狀態(class)兩種分布式 UDF。有狀態 UDF 可實現模型一次加載、反復使用,降低模型加載成本,尤其適用于推理場景。
- CPU 與 GPU 異構調度:借助 Ray 的能力,Daft 可實現 CPU 數據準備與 Python 訓練框架的流式銜接,提升數據處理與模型訓練的協同效率。
- 多模態數據延遲計算:以圖文混排場景為例,Daft 無需將圖片與文本全部讀取后再進行 shuffle 和 join,而是通過 URL(或后續的 Row Id)關聯數據,在需要時才進行下載與處理,大幅減少不必要的 IO 與內存消耗。同時,Daft 支持多模數據類型定義,如視頻抽幀可僅讀取關鍵幀、圖片 resize 無需加載完整圖片,進一步優化處理效率。
此外,Daft 還能實現數據處理與訓練的無縫銜接。通過將數據加載過程部署到異構 CPU 集群,以遠端隊列作為數據緩存,流式供給訓練框架,從軟件層面解決了數據加載性能差導致的 GPU 訓練效率低問題,同時支持訓練狀態存儲,便于后續快速恢復訓練。
Lance:多模態數據的 “湖存儲” 方案
Lance 作為配套的存儲格式,主要解決多模態數據存儲的三大核心問題:
- 多模態數據列式存儲:借鑒大數據場景下列式存儲的優勢,Lance 可對多模態數據進行列式存儲,實現高壓縮比。在實際生產中,100G 的 Tensor 數據經 Lance 壓縮后可降至 2G,大幅節省存儲成本。
- 大小列數據統一存儲:針對多模態數據(如圖片)及其標簽信息(如描述等),Lance 能將兩者統一存儲在同一系統中,降低數據管理成本,同時支持高性能點查,滿足 AI 訓練對數據快速訪問的需求。
- schema 變更 Zero copy:多模數據常需基于標簽列或模型打標,Lance 支持 schema 變更時的 Zero copy,避免數據反復拷貝帶來的效率損耗。
值得注意的是,Lance 與 Daft 并非矛盾關系,而是相輔相成。Daft 初期通過 URL 關聯多模態數據,實現延遲計算;Lance 則將多模態數據以列式存儲,并以 row ID 替代 URL 作為數據標識。兩者通過 Arow 類型接口對接,既保留了 Daft 延遲計算的優勢,又能享受 Lance 列式存儲的高壓縮比,完美統一多模態數據處理與存儲流程。
實踐驗證:Daft+Lance 方案的落地成效
在實際落地中,Daft 與 Lance 的組合方案已在多個場景中展現出顯著價值,為客戶帶來效率提升與成本優化。
自動駕駛場景:端到端效率提升 70%
此前,某自動駕駛客戶采用 Argo+K8S 調度 + LMDB 的方案,Python 分布式處理依賴 Argo+K8S,數據存儲通過 LMDB 加 index 文件組織。
該方案存在明顯短板:K8S 調度無法支持 CPU 與 GPU 異構,需將中間結果落盤,導致效率低下;同時,GPU使用率超95%之后會Block GPU指令調用,進而影響數據訓練。
引入 Daft+Lance 方案后,客戶將調度流程替換為 Daft on Ray,存儲方式升級為 Lance。新方案通過 Daft on Ray 實現數據在內存中的流式處理,可分別擴展 CPU 與 GPU 資源,避免中間結果落盤的效率損耗;Lance 則將源數據與原始數據統一管理,支持高性能點查,實現數據預處理與訓練的無縫銜接。最終,該客戶端到端處理時間縮短 70%,大幅提升自動駕駛數據處理與模型迭代效率。
LLM圖文混排場景:解決大 join 穩定性難題
某LLM客戶需處理爬蟲獲取的圖文混排數據,原始方案采用 Webdataset 存儲,通過 Spark 讀取數據后進行大 join。盡管嘗試了 remote shuffle 等優化手段,但仍面臨穩定性差、處理效率低的問題。
采用 Daft+Lance 方案后,客戶無需基于圖片與文本內容進行大 join,而是通過 row ID 關聯源數據,在需要時再加載具體數據。這一優化徹底解決了大 join 的穩定性問題,同時顯著提升了數據處理速度,為LLM 場景的內容處理提供了可靠支撐。
未來規劃:完善多模態生態,推動開源協作
展望未來,火山引擎LAS團隊將持續深化 Daft 與 Lance 的能力。在 Daft 方面,將補全多模態數據類型支持,重點加入視頻處理能力(滿足自動駕駛等場景的視頻抽幀、訓練需求),同時拓展 LeRobot、MCP 等行業特定數據類型;在生態融合上,將進一步加強與 Lance 的對接,打造更高效的 “計算 + 存儲” 協同方案。
我們也歡迎感興趣的開發者們加入Daft和Lance中文社區!

浙公網安備 33010602011771號