This article discusses how Vortex, an open-source columnar file format, rethinks data loading for ML training to achieve high-throughput from S3 directly to GPUs. It focuses on eliminating CPU/NVMe bottlenecks through techniques like cascading lightweight encodings, layout-based segment pruning, and zero-copy memory pipelines. The core idea is to reduce data movement taxes and decision taxes, enabling faster iteration on ML models by processing data on the fly without costly reprocessing.
Read original on InfoQ ArchitectureTraditional machine learning data loading pipelines, especially when dealing with large datasets stored in object storage like S3, involve multiple steps that introduce significant overhead. Data typically moves from S3 to NVMe disk, then to RAM (where it's decompressed by the CPU), and finally to the GPU via PCIe. This multi-stage process is bottlenecked by CPU decompression and NVMe throughput, leading to underutilized, expensive GPUs and slow iteration cycles for ML engineers.
The author identifies two primary 'taxes' paid when utilizing GPUs for ML training:
Vortex, an open-source columnar file format, addresses these issues by designing a pipeline that streams data from S3 directly to GPUs. Key architectural differences from formats like Parquet include:
Core Design Principle
Vortex aims to maximize GPU utilization by minimizing data movement and preprocessing. It achieves this by pushing query optimizations (projections, filters) down into the file format itself, allowing data to be streamed from S3 to GPU at speeds up to 60 Gbps, making ML training iterations significantly faster.