Stage barriers serialize CPU decoding, GPU inference, and I/O, leaving the GPU waiting for decoded batches.
Use native file, image, audio, and video types to prepare training data with SQL and Python. Add model labeling, embedding, quality filters, and deduplication, then write to files or lake formats and scale from local execution to Ray clusters.
Traditional pipelines create stage barriers and pipeline bubbles. Vane overlaps CPU, GPU, and I/O workloads through streaming execution and dynamic batching.

Stage barriers serialize CPU decoding, GPU inference, and I/O, leaving the GPU waiting for decoded batches.
Dynamic batching overlaps CPU decoding, GPU inference, and I/O streaming, completing the same pipeline earlier.
From data preparation to embedding, pipeline efficiency matters. Vane coordinates processing and data movement across heterogeneous resources.
Multimodal data workflows often require multiple systems and layers of orchestration. Vane unifies data processing, AI inference, and dataset preparation into a single execution graph.
Use the three sample images created in the quickstart. Inspect their dimensions, keep images at least 300 pixels wide, and export two 224 × 224 PNG samples as bytes in Parquet. No model credentials or GPU are needed.
Storage providers: Lance · Iceberg
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")