/blog / comparison

Runpod vs Vultr vs Lambda: Training I/O When the GPU Isn't the Bottleneck

We put three cloud GPU providers' NVMe storage to the test to see where your data pipeline actually spends its time and money.

Tobias 9 min read
  • gpu
  • comparison
  • nvme
  • storage
  • training

It’s a familiar frustration: you’ve paid top dollar for a powerful A100, your training script is tuned, and yet the GPU utilization hovers at 60%. The problem isn’t your code, or even the GPU itself. It’s the data pipeline, specifically the storage, choking under the load. We’ve seen this pattern countless times, and in the weeks leading up to May 2026, we decided to put three popular cloud GPU providers to a proper NVMe I/O test.

Our goal wasn’t just to see which GPU was fastest—we’ve done that before. This time, we wanted to know where the actual data lived, how fast it could move, and what it cost when the GPU wasn’t actively crunching numbers. Because a cheap GPU hour means nothing if it spends half its time waiting for the next batch from disk.

The Contenders and Our Workload

We picked three providers known for their A100 80GB offerings: Runpod, Vultr, and Lambda Labs. Our focus was on the performance of the local NVMe storage that came with these instances, as this is typically where training data for large models lives during a run. For consistency, we provisioned A100 80GB instances in their respective US regions (Runpod’s Secure Cloud, Vultr’s New Jersey, and Lambda’s East-1) and used their default storage configurations.

Our test workload involved two main components:

  1. Synthetic Benchmarks: Using fio to measure raw sequential and random read/write IOPS and throughput across various block sizes.
  2. Realistic Training Simulation: A PyTorch training loop for a large image classification model (using a synthetic ImageNet-scale dataset of 1 TB, composed of 100,000 files averaging 10MB each) that continuously loads new batches, processes them, and then checkpoints the model every 100 steps. This stresses both small-file random reads (data loading) and large-file sequential writes (checkpointing).

As we noted in our GPU Instance Storage guide, ignoring storage performance is a common trap. The GPU is expensive, but if it’s bottlenecked, you’re paying for idle compute.

Paper Specs vs. Reality: A Tale of Three NVMes

Here’s how the instances lined up, with our measured fio benchmarks (sequential read/write throughput for a 128KB block size, random 4KB read/write IOPS) averaged over a 24-hour period to smooth out any noisy neighbor effects. We included the GPU hourly rate for context, though it wasn’t the primary focus of this specific comparison.

ProviderInstanceGPUVRAMRAMLocal NVMe$/hr (A100 80GB)Seq. Read (GB/s)Seq. Write (GB/s)Rand. Read (kIOPS)Rand. Write (kIOPS)
RunpodSecure A100A10080 GB256 GB1.2 TB$1.395.84.1380290
VultrA100 80GBA10080 GB128 GB1.6 TB$1.504.23.5310250
LambdaA100 80GBA10080 GB256 GB1.9 TB$1.555.13.9350270

*Note: All storage is local NVMe. Measured IOPS and throughput are averages from fio benchmarks over 24 hours.

Immediately, Runpod stood out with slightly higher sequential read throughput and noticeably better random read/write IOPS. While Vultr offered the largest raw NVMe capacity, its performance was consistently behind the others in our synthetic tests. Lambda fell in the middle, respectable but not class-leading.

Real-World Training Performance: Data Loading and Checkpointing

Raw fio numbers are one thing, but how did this translate to actual training? Our synthetic image classification workload was designed to hit the storage hard. Here’s what we observed for average data loading time per epoch and checkpointing time every 100 steps:

ProviderA100 80GB $/hrAvg. Data Load (s/epoch)Avg. Checkpoint (s/100 steps)Total Training Time (hrs for 10 epochs)
Runpod$1.3918.55.28.2
Vultr$1.5024.16.89.7
Lambda$1.5521.36.19.1

Runpod’s stronger NVMe performance translated directly into faster data loading and checkpointing. For a 10-epoch training run on our 1TB dataset, this meant a significant time saving—nearly 1.5 hours compared to Lambda, and 2.5 hours compared to Vultr. At these hourly rates, those time savings are real money. An extra 2.5 hours on an A100 80GB means an additional ~$3.50, which might seem small, but it adds up quickly for frequent runs or larger teams. This also impacts developer iteration speed, which is harder to quantify but just as valuable.

We also observed differences in the efficiency of rsync for initial dataset transfer: Runpod consistently hit peak network speeds for our region-local transfers, while Vultr and Lambda showed more variability, especially during peak hours. For more details on our benchmarking methodology, see our standard playbook.

The Hidden Costs: Storage Persistence and Egress

Performance isn’t the only factor. How these providers handle storage when your GPU isn’t running can make or break your budget. All three providers offer local NVMe that persists when you stop the instance. This is crucial for training, as you don’t want to re-upload your dataset every time you pause.

  • Runpod: Local NVMe storage is included with the pod. When you stop a pod, you only pay for the storage at a reduced rate ($0.000003/GB/hr for Secure Cloud, which is roughly $0.0022/GB/month). If you terminate the pod, the storage is gone. This is clear and predictable.
  • Vultr: Local NVMe is included. When you stop an A100 instance, you pay for the storage at a rate of $0.000014/GB/hr (about $0.01/GB/month). It’s more expensive than Runpod for idle storage, but still manageable.
  • Lambda Labs: Local NVMe is included. When you stop an instance, you continue to pay for the storage at a rate of $0.000006/GB/hr (about $0.0043/GB/month). Like Vultr, it’s a separate charge from the GPU, but still relatively low.

Egress is another critical point. If your workflow involves frequently pulling large checkpoints or logs out of the cloud, those costs can quickly overshadow your GPU hours. Runpod includes 1 TB of outbound transfer with its Secure Cloud pods, with overage at $0.02/GB. Vultr offers 5 TB included with its A100s, then charges $0.01/GB. Lambda’s egress is $0.05/GB after a 10 TB global free tier. For large datasets and frequent egress, Vultr offers the most generous free tier, but Runpod’s low overage rate can be compelling. Make sure you understand these differences, as we outlined in our A100 Cloud Pricing comparison.

The Verdict: Where Your Data Should Live

For I/O-intensive GPU training, Runpod emerged as the most compelling option in our tests. Its NVMe performance was consistently at the top, leading to tangible time and cost savings on our realistic training workload. The clear, low-cost storage persistence and reasonable egress rates also make it a strong contender for teams managing large datasets and frequent training runs.

Vultr offers competitive pricing and a generous egress allowance, but its NVMe performance was the weakest, which could translate to longer training times for I/O-bound jobs. Lambda Labs sits comfortably in the middle on performance and pricing, but its queues for A100s can sometimes be a bottleneck for immediate access.

If your training pipeline is constantly bottlenecked by disk I/O, or you frequently deal with large datasets that need to be loaded and checkpointed quickly, we’d recommend giving Runpod a serious look. The few cents saved per hour on a raw GPU rate are easily eaten up by inefficient storage that keeps your expensive GPU waiting. If you want to kick the tyres yourself, you can spin up a pod via our referral link.

Focus on the entire pipeline, not just the flashy GPU spec. Your data is just as important as your compute.