Stage barriers serialize CPU decoding, GPU inference, and I/O, leaving the GPU waiting for decoded batches.
A unified multimodal training data pipeline that transforms raw data into versioned, training-ready datasets with SQL processing, GPU-accelerated labeling, embedding, and scalable execution from local 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, multimodal AI workloads are bottlenecked by pipeline efficiency. Vane maximizes end-to-end throughput.
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.
File selection, media decoding, GPU captioning or auto-labeling, quality filters, deduplication, embedding, and packaged output stay in one readable pipeline.
import vane con = vane.connect() raw = con.sql(""" SELECT id, uri, media_type, content_hash FROM read_parquet('s3://training-corpus/*.parquet') WHERE split = 'train' """) def CaptionAndScore(table): ... labeled = raw.map_batches( CaptionAndScore, schema=release_schema, gpus=1, ) labeled.to_table("labeled") release = con.sql(""" SELECT id, uri, caption, quality_score, ai_embed( caption, struct_pack( provider := 'transformers', model := 'sentence-transformers/all-MiniLM-L6-v2' ) ) AS caption_embedding FROM labeled WHERE quality_score >= 0.8 QUALIFY row_number() OVER ( PARTITION BY content_hash ORDER BY quality_score DESC ) = 1 """) release.write_parquet("s3://dataset-releases/mm-v42/part-00000.parquet")