← 返回行业动态

湖仓一体:为 AI 训练构建数据基础设施

## AI 训练对数据的新要求 传统数据仓库的设计目标是**支撑报表与分析**:数据经过清洗、聚合,结构规整,供 BI 查询使用。 但大模型训练对数据的要求完全不同: | 要求 | 传统数仓 | AI 训练需求 | |------|---------|------------| | 数据形态 | 结构化表格 | 文本、图像、音视频多模态 | | 数据规模 | GB - TB | TB - PB | | 使用方式 | 聚合查询 | 全量扫描与随机采样 | | 更新频率 | 周期性 ETL | 流式持续更新 | | 数据保真 | 清洗后即可 | 需保留原始语料与清洗链路 | ## 传统数仓的三个短板 ### 短板一:不支持非结构化数据 数仓以表和列为基本单位,难以存储和查询原始文本、图像、视频。虽然部分数据库支持 JSON 字段,但缺乏针对多模态数据的处理与检索能力。 ### 短板二:存储成本高 数仓通常基于高性能存储,成本显著高于对象存储。而 AI 训练语料往往是「写一次读多次」,且冷数据占比高,用数仓存储性价比极低。 ### 短板三:难以保留数据血缘 AI 训练需要可复现性:同一个模型版本,用了哪个版本的语料、经过哪些清洗步骤,必须可追溯。传统 ETL 管道往往是「黑盒」,难以回答「这条数据是怎么来的」。 ## 湖仓一体架构 湖仓一体(Data Lakehouse)结合了数据湖的低成本存储与数据仓库的事务能力,核心是**开放表格式**(Iceberg / Hudi / Delta Lake)。 ### 分层设计(AI 场景) ``` ODS 层 — 原始语料落地(对象存储,保留原始格式) ↓ DWD 层 — 清洗、去重、脱敏(标准化处理) ↓ DWS 层 — 按主题聚合(如按领域分类的语料集) ↓ ADS 层 — 训练数据集(按版本固化,供训练直接读取) ``` ### 关键能力 **1. 多模态统一管理** 对象存储承载原始文件,表格式记录文件元数据与索引。查询时可按元数据过滤,只读取相关文件。 **2. 时间旅行(Time Travel)** Iceberg 支持查询历史快照。这意味着可以精确复现「上周三训练时用的数据集」,满足模型可复现性要求。 **3. 增量处理** 流式写入 + 增量读取,新语料可以在分钟级进入训练数据集,无需全量重跑。 **4. 数据血缘** 每个表快照记录了写入来源与处理作业,可以追溯到原始语料,构建完整血缘图。 ### 语料清洗流水线示例 ```python # 1. 原始语料落地 ODS spark.read.json(raw_path).writeTo("ods.corpus_raw").create() # 2. 清洗:去重、过滤低质、敏感内容检测 cleaned = ( spark.table("ods.corpus_raw") .transform(dedup) # MinHash 去重 .transform(filter_quality) # 语言/长度/困惑度过滤 .transform(mask_pii) # 隐私信息脱敏 ) cleaned.writeTo("dwd.corpus_clean").create() # 3. 按领域分类聚合 dwd = spark.table("dwd.corpus_clean") dwd.groupBy("domain").writeTo("dws.corpus_by_domain").create() # 4. 固化训练集版本 build_dataset(version="v2025.03", sources=["dws.corpus_by_domain"])\ .writeTo("ads.train_dataset").create() ``` ## 落地建议 湖仓一体不是纯技术选型问题,而是**数据治理体系的升级**。建议分步推进: 1. 先解决多模态数据的统一存储与元数据管理 2. 再引入表格式实现增量处理与时间旅行 3. 最后构建自动化语料清洗流水线与数据集版本管理 启数AI教育 AI 大数据课程第三、四阶段完整覆盖湖仓一体架构与 AI 语料工程,学员需完成端到端数据平台搭建。

常见问题