用例 · 多模态模型训练

把原始多模态数据变成可发布的训练数据集

用原生文件、图像、音频和视频类型,通过 SQL 与 Python 准备训练数据。按需加入模型标注、向量化、质量过滤和去重,再写入文件或湖格式,并从本地执行扩展到 Ray 集群。

原始 · 多模态
数据集发布
执行时间线

异构资源重叠执行。

传统流水线会形成阶段屏障和流水线气泡。Vane 通过流式执行与动态批处理,将 CPU、GPU 和 I/O 工作负载重叠调度。

同一条流水线相同阶段的执行时序示意;实际性能取决于数据、模型与硬件。
城市路口相机帧
camera frame · ts 00:14.280
输入
IMAGEFILEAUDIOFILEVIDEOFILEFILE
预处理
解码与缩放重采样与抽帧
推理
模型标注向量化
筛选
过滤与去重
写入
Lance / IcebergParquet 文件
Traditional Pipeline阶段屏障 · 更长关键路径

阶段屏障使 CPU 解码、GPU 推理和 I/O 串行执行,GPU 需要等待解码批次。

Vane Pipeline重叠流式执行 · 更短关键路径

Dynamic batching 让 CPU 解码、GPU 推理和 I/O 流式传输重叠,更早完成同一条流水线。

为什么选择 Vane

更高吞吐,更简洁的代码

高性能:重叠执行 CPU、GPU 与 I/O 工作

从数据准备到向量化,流水线效率至关重要。Vane 协调异构资源上的计算与数据传输。

  • 异构执行,不让 GPU 空等异步重叠 CPU 处理、GPU 推理、数据传输与 I/O,使异构资源并发工作,避免阶段间等待。
  • 带背压与动态批处理的流式执行通过自适应批处理与流量控制,持续处理大规模媒体和传感器数据;通过背压管理内存占用。
  • Ray 原生分布式扩展将数据准备从本地运行扩展到 Ray 集群,并为各处理阶段声明 CPU、GPU 和内存需求。
查看基准测试 →

简单易用:原生类型,熟悉的接口

多模态数据工作流通常需要多套系统和多层编排。Vane 将数据处理、AI 推理与数据集准备统一到一张执行图中。

  • 原生多模态处理FILE、IMAGEFILE、AUDIOFILE 和 VIDEOFILE 承载文件引用。内置算子支持元数据检查、图像解码与缩放、音频重采样和视频抽帧。
  • 组合使用 SQL 与 Python用 SQL 做质量过滤与去重,结合自定义 Python UDF 或 AI 函数完成标注和向量化,并按需使用 GPU。
  • 对接训练数据存储通过单独安装的扩展读写 Lance 或 Iceberg,也可以像下方示例一样导出 Parquet 文件。
阅读代码 →
代表性代码

用原生类型准备统一尺寸的图像样本

使用快速开始中生成的三张样例图片,检查尺寸、保留宽度至少 300 像素的图片,并将两张 224 × 224 的 PNG 样本以字节形式写入 Parquet。无需模型密钥或 GPU。

创建样例图片 →

存储扩展: Lance · Iceberg

IMAGEFILE元数据筛选解码与缩放PNG → Parquet
prepare_training_images.py
from pathlib import Path


import vane


con = vane.connect()
assets = Path("quickstart-images").resolve()
files = vane.from_files(
    [str(assets / f"{name}.png") for name in ("large", "medium", "small")],
    connection=con,
)
images = con.sql("SELECT image_file(file) AS source FROM files")
metadata = con.sql("""
    SELECT source, image_file_metadata(source) AS info
    FROM images
""")
samples = con.sql("""
    SELECT source.url AS source_uri,
           info.width AS source_width,
           info.height AS source_height,
           encode_image(
               resize(decode_image_file(source, 'RGB'), 224, 224),
               'PNG'
           ) AS image_bytes
    FROM metadata
    WHERE info.width >= 300
""")
samples.write_parquet("training-image-samples.parquet")

构建高效简单的多模态训练数据流水线