Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PCHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
FREEDOM251

Freedom251 › Blog › AI Performance

Why AI Workloads Can Underuse Fast SSDs—and How to Find the Bottleneck

By Freedom251 Team · · 11 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A fast SSD does not guarantee a fast AI workload. An iteration can spend more time decoding files, running Python transforms, waiting for data-loader workers, copying batches through host memory, launching GPU kernels, or synchronizing than reading bytes from the drive. Low or intermittent GPU utilization therefore does not prove that the SSD is slow.

Find the limiting stage by profiling the real training or inference path, then change one variable at a time. Upgrade storage only when measurements show that storage latency or throughput is constraining end-to-end examples per second, tokens per second, or request latency.

As an Amazon Associate I earn from qualifying purchases.

The short answer: SSD speed is only one link in the pipeline

A conventional input path moves data from storage into host memory and then from host memory into GPU memory. NVIDIA describes that storage-to-host-to-device route in its discussion of data-loading and transfer bottlenecks. Every handoff can add waiting, and the application may do substantial work between handoffs.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For a training job, the useful measure is not the SSD’s peak sequential-read number. It is the time required to produce a ready batch and complete an iteration. For inference, measure complete request latency and sustainable requests per second. A drive can be capable of very high bandwidth while the application issues small, serialized reads, or while the CPU and GPU are busy with other stages.

#1 Best Overall
Sale
Samsung SSD 990 PRO 2TB, PCIe 4.0 M.2 2280, Up to 7,450 MB/s | NVMe Internal Solid State Hard Drive for High End Computing, Gaming, and Heavy Duty Workstations, (MZ-V9P2T0B/AM)
  • MEET THE NEXT GEN: Consider this a cheat code; Our Samsung 990 PRO Gen4 SSD helps you reach near max performance with lightning-fast speeds; Whether you’re a hardcore gamer or a tech guru, you’ll get power efficiency built for the final boss
  • REACH THE NEXT LEVEL: Gen4 steps up with faster transfer speeds and high-performance bandwidth; With a more than 55% improvement in random performance compared to 980 PRO, it’s here for heavy computing and faster loading
  • THE FASTEST SSD FROM THE WORLD'S FLASH MEMORY BRAND: The speed you need for any occasion; With read and write speeds up to 7450/6900 MB/s you’ll reach near max performance of PCIe 4.0 powering through for any use
  • PLAY WITHOUT LIMITS: Give yourself some space with storage capacities from 1TB to 4TB; Sync all your saves and reign supreme in gaming, video editing, data analysis and more
  • IT’S A POWER MOVE: Save the power for your performance; Get power efficiency all while experiencing up to 50% improved performance per watt over the 980 PRO; It makes every move more effective with less consumption
  • Storage access: locating and reading files or blocks.
  • Decode and transforms: turning compressed or encoded data into tensors and applying augmentation.
  • Worker and runtime overhead: scheduling processes or threads, Python execution, synchronization, and queue management.
  • Host-to-device transfer: copying batches from system memory into accelerator memory.
  • GPU execution: kernel launches, synchronization, and model computation.
  • Shared infrastructure: network filesystems, containers, virtual machines, thermal limits, or other jobs competing for resources.

The first diagnostic question is therefore “which stage is waiting?” rather than “what is the advertised speed of the SSD?”

What an AI input path actually does

Storage reads are often bursty

Many datasets consist of thousands or millions of relatively small files. The application may open files, read metadata, seek, decompress, and close them repeatedly. This pattern has different latency and queue-depth characteristics from a single large sequential transfer. A high peak bandwidth figure measured with large, concurrent requests says little about a serialized small-file workload.

Decoding and augmentation can dominate

JPEG, video, text, and other formats must be decoded before a model can consume them. Random crops, resizes, tokenization, normalization, and other transforms consume CPU time. If workers cannot prepare the next batch before the GPU finishes the current one, the accelerator waits even when the SSD has spare capacity.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Host memory is a separate stage

After a read, data normally resides in host memory before it is copied to device memory. Memory allocation, copying, and synchronization can become the limiter. NVIDIA’s GPUDirect Storage material describes an alternative path that can reduce CPU and host-memory involvement in the transfer, but availability depends on the platform, software stack, filesystem, and device; it is not a universal switch or a guaranteed improvement.

GPU utilization is not a storage meter

NVIDIA’s GPU performance guidance notes that insufficient parallelism can leave compute resources underused. A model may launch small kernels, synchronize frequently, or simply lack enough concurrent work. In those cases, low GPU activity is evidence that the GPU is waiting or underfed, not proof that the SSD is at fault. Conversely, a GPU can show high utilization while the input pipeline is still inefficient if batches are buffered or other work overlaps the reads.

Symptoms and the evidence that separates them

Observed symptom Possible limiting stage Evidence to collect
GPU activity falls to near zero between batches Reads, decoding, transforms, worker scheduling, or host-to-device copies Per-batch input time, worker queue depth, CPU utilization by worker, copy duration, and trace gaps before GPU kernels
GPU is busy but throughput is low Model compute, inefficient kernels, synchronization, or insufficient batch-level parallelism Kernel timeline, step time, achieved batch or token rate, and operator-level costs
SSD utilization is low while the job is slow Serialized access, CPU transforms, transfer overhead, or compute Storage latency and queue depth alongside CPU, copy, and GPU timelines
Storage bandwidth is high but iterations do not improve Another stage is already on the critical path Controlled run with the same workload and a changed storage condition; compare end-to-end rate, not disk throughput alone
Performance degrades when other jobs run Shared storage, network, CPU, memory, or GPU resources Per-process resource traces and filesystem or network latency during contention

Use a representative interval rather than a single instantaneous percentage. Record examples or tokens per second, iteration or request latency, and relevant GPU activity while the workload is in its normal steady state. Include warm-up and steady-state behavior separately so cache effects do not hide the production path.

Rank #2
Sale
Kingston NV3 1TB M.2 2280 NVMe SSD | PCIe 4.0 Gen 4x4 | Up to 6000 MB/s | SNV3S/1000G
  • Ideal for high speed, low power storage
  • Gen 4x4 NVMe PCle performance
  • Up to 6,000MB/s read, 4,000MB/s write
  • Includes Acronis cloning software
  • 5-year limited warranty

A diagnostic workflow that identifies the bottleneck

1. Define the outcome you are trying to improve

Choose one primary metric: training examples per second, tokens per second, validation throughput, inference requests per second, or end-to-end latency. Also record batch size, sequence length or input dimensions, model version, precision, number of workers, storage location, and whether the run is local or remote. Without these controls, a hardware change can appear helpful simply because the workload changed.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

2. Establish a repeatable baseline

Run long enough to pass initialization and reach steady state. Capture multiple intervals, not just the first few batches. Note whether the dataset is warm in the operating-system or filesystem cache. A cached run measures a different path from a cold-cache run; label the condition instead of treating one as a universal result.

3. Trace model execution

PyTorch Profiler records operator costs, input shapes, device activity, and execution traces. Use it to locate gaps between GPU kernels, expensive operators, synchronization, and unexpectedly long input-related work. Keep profiling windows bounded because tracing itself adds overhead.

NVIDIA DLProf correlates timing and kernel information and reports GPU utilization and I/O duration. Its reports help answer whether the device is waiting for input, spending time in kernels, or seeing I/O activity that overlaps successfully with computation.

4. Isolate the input pipeline

Measure the time to obtain a batch before model computation, then break that interval into file access, decoding and transforms, worker wait, and host-to-device transfer where the framework exposes those timings. Compare a run using the normal dataset with a controlled run that uses cached or synthetic input only when the comparison preserves the behavior you are trying to isolate. A synthetic-input result is a diagnostic control, not a production performance claim.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

5. Check CPU, memory, and transfer pressure

Observe CPU utilization per worker, memory bandwidth or pressure, allocation and garbage-collection behavior, and host-to-device copy durations. One fully occupied CPU core can serialize a pipeline even when aggregate CPU utilization looks modest. Conversely, adding workers can increase contention, context switching, or memory use and make the job slower.

Rank #3
Sandisk Optimus 5100 500GB NVMe SSD, PCIe 4.0, M.2 2280 | Up to 6,600MB/s Read Speeds, Up to 5,600MB/s Write Speeds, Internal Solid State Drive - SDSP51500GAN
  • SPEED UP PROJECTS. Launch creator applications fast with uncompromising PCIe 4.0 read speeds up to 7,100MB/s,[2] (1TB and 2TB[1] models) and write speeds up to 6,700MB/s[2] (1TB[1]-4TB[1] models).
  • CREATE AND STORE MORE. Make more room for your 4K videos and high-resolution images with capacities from 500GB[1] up to 4TB[1] on M.2 2280 built with our trusted 8th generation SANDISK BiCS QLC 3D CBA NAND.
  • IT GOES WHERE YOU GO. With an all-new power efficient design, your drive delivers high performance with low power, giving you more time to be productive while on the go.
  • UNCOMPROMISED RELIABILITY. With up to 1,200 TBW[3] (4TB[1] model) endurance rating, your drive is designed for creators.
  • KEEP YOUR DRIVE UPDATED. Monitor your SSD’s performance and check for updates with the downloadable SANDISK Dashboard application.[5]

6. Check the storage path under the real access pattern

Look at read latency, throughput, request size, queue depth, and whether the data is local, on a network filesystem, or inside a containerized mount. Compare these observations with the time the application spends waiting. High device utilization with long read latency may indicate saturation; low device utilization with long application stalls often points to serialization, metadata work, or a different stage.

7. Change one variable

Adjust a single input-pipeline setting or storage condition, repeat the same workload, and compare the primary outcome metric. If a change improves disk bandwidth but not examples per second, storage was not the critical path. If reducing transform cost or increasing useful overlap improves throughput while storage metrics remain unchanged, focus on the CPU or transfer stages instead.

8. Confirm the diagnosis with a reversal

Where practical, undo the change and verify that performance returns toward the baseline. A reversible result is stronger evidence than a one-off improvement caused by cache state, thermal behavior, or a different process schedule.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Using PyTorch input-pipeline controls without guessing

PyTorch documents asynchronous data loading and treats worker counts as workload-dependent. There is no universally correct value for num_workers; the best setting depends on CPU capacity, accelerator speed, batch cost, storage location, and transform complexity.

loader = DataLoader( dataset, batch_size=batch_size, num_workers=worker_count, pin_memory=use_pinned_memory, persistent_workers=keep_workers_alive, prefetch_factor=prefetch_batches )

The names above are illustrative controls; use only options supported by the PyTorch version in your environment and measure each change.

num_workers

With more than zero workers, loading and preprocessing can occur asynchronously with model execution. Increase the count gradually while watching CPU saturation, memory consumption, process startup, and batch wait time. Too few workers leave the accelerator idle; too many can contend for CPU, memory, file descriptors, or storage.

Rank #4
Sale
Samsung SSD 990 PRO 1TB, PCIe 4.0 M.2 2280, Up to 7,450 MB/s | NVMe Internal Solid State Hard Drive for High End Computing, Gaming, and Heavy Duty Workstations (MZ-V9P1T0B/AM)
  • HUGE SPEED BOOST: Get random read/write speeds that are 40%/55% faster than 980 PRO; Experience up to 1400K/1550K IOPS, while sequential read/write speeds up to 7,450/6,900 MB/s reach near the max performance of PCIe 4.0*
  • BREAKTHROUGH POWER EFFICIENCY: Use less power and get more performance; Enjoy up to 50% improved performance per watt over 980 PRO, plus optimal power efficiency with max PCIe 4.0 performance**
  • SMART THERMAL CONTROL: Samsung's own nickel-coated controller delivers effective thermal control; With its slim size, 990 PRO is a perfect fit for desktops and laptops that meet the PCI-SIG D8 standard***
  • THE CHAMPION MAKER: Up to 65% improvement in random performance enables faster loads for an ultimate gaming experience on PS5 and DirectStorage PC games****
  • SAMSUNG MAGICIAN SOFTWARE: Get the most out of your SSD with Samsung Magician's advanced yet intuitive optimization tools; Monitor drive health, protect valuable data, and receive important updates for your 990 PRO

Pinned memory

Pinned host memory can help overlap or accelerate transfers to an accelerator when the surrounding code and hardware support that path. It also consumes a constrained host-memory resource. Verify that copy time or overlap actually improves; enabling it is not evidence that transfer was the bottleneck.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Persistent workers

Keeping workers alive across epochs can avoid repeated process startup costs. It matters most when epochs are short or worker initialization is expensive. It does not make slow decoding or storage reads intrinsically faster.

Prefetching

Prefetching allows workers to prepare future batches. It can hide I/O and transform latency when the producer is fast enough, but it increases memory use and can move the bottleneck to CPU, storage, or host memory. A larger queue is useful only if it stays ahead of the consumer without exhausting resources.

Dataset and transform design

Profile the cost of opening files, decoding, augmentation, and collation. Consolidating data into access patterns that match the workload can reduce metadata and seek overhead, but any reorganization should be evaluated with the same model and batch settings. Do not infer a benefit from a storage benchmark that does not reproduce the application’s reads.

How to read profiler traces

Signs of an input or storage wait

  • Repeated gaps before each batch’s first GPU kernel.
  • Data-loader or input events occupying the gap while GPU streams are idle.
  • Read or I/O duration that aligns with slow steps.
  • Worker processes blocked on file access or queue operations.

Signs of CPU transforms or collation

  • Workers consume CPU while storage latency remains low.
  • Decode, augmentation, tokenization, or collation events span most of the input interval.
  • Increasing storage throughput does not shorten the input interval, but reducing transform work does.

Signs of transfer or synchronization overhead

  • Host-to-device copies occupy the gap between preparation and kernels.
  • GPU streams wait on explicit synchronization or allocation events.
  • Pinned-memory or batching changes alter copy time while read time stays constant.

Signs of a compute or parallelism limit

  • GPU kernels occupy most of each step with little preceding input wait.
  • Low utilization occurs because kernels are brief, serialized, or launch-bound rather than because data is missing.
  • Increasing input workers has no effect on step time.

Use the trace to form a testable hypothesis. “The GPU is only 40 percent busy” is an observation; “worker-side decode occupies the 20-millisecond gap before every step” is a diagnosis that can be tested.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Controlled experiments that prevent misleading conclusions

Experiment What it isolates How to interpret the result
Normal dataset versus synthetic or cached input Whether real input preparation contributes materially If throughput rises substantially with controlled input, investigate loading, transforms, or transfer. The controlled rate is not a production result.
Same data, different worker counts Worker parallelism and queueing Improvement that plateaus identifies a useful range; degradation indicates contention or memory pressure.
Same workers, transforms simplified CPU-side preprocessing A large gain with unchanged storage metrics points to transforms rather than the SSD.
Same pipeline, local copy instead of network storage Filesystem or network path A gain implicates the remote path, but distinguish network latency from server, filesystem, or cache effects.
Same workload, storage condition changed Storage sensitivity Only an end-to-end improvement, repeated under comparable conditions, justifies treating storage as a limiting stage.

Keep batch size, model, precision, data order, worker settings, and process placement constant. Record temperatures and concurrent jobs when runs are long enough for throttling or contention to matter.

Best Value
WD_Black SN7100 1TB NVMe SSD - Gen4 PCIe, M.2 2280, Up to 7,250 MB/s Read Speed, Up to 6,900 MB/s Write Speed, Next Gen TLC 3D NAND, for Laptops, Handheld Gaming Devices - WDS100T4X0E
  • This product has been replaced by our latest generation. Please search for the SANDISK Optimus GX 7100 NVMe SSD
  • HIGH-OCTANE GAMING. Experience speeds up to 7,250MB/s read and 6,900MB/s write (1-2TB models), with up to 35% faster performance than previous generation.
  • PURPOSE-BUILT. Designed for serious on-the-go gamers, with a PCIe Gen4 interface and SANDISK’s next generation TLC 3D NAND.
  • MORE TIME TO CLEAR THAT CHECKPOINT. Built with laptops and handheld gaming devices in mind, with up to 100% more power efficiency over the previous generation.
  • DO MORE WITH DASHBOARD. Ensure your drive is optimized for prime performance with the downloadable WD_BLACK Dashboard (Windows only).

When an SSD upgrade is justified

Consider a faster SSD only after representative traces show that storage is on the critical path and a storage change improves the outcome metric. A drive that is not saturated, or whose reads are hidden behind CPU and GPU work, is unlikely to improve the job merely because its specification sheet lists higher peak bandwidth.

Compatibility

  • Confirm the system’s physical slot, protocol, lane allocation, firmware support, and operating-system visibility.
  • Check whether other devices share the relevant lanes or controller.
  • Verify that the filesystem, container, virtual machine, or network mount exposes the performance features you expect.

Workload-relevant performance

  • Match the access pattern: large sequential reads, small random reads, metadata-heavy access, mixed reads and writes, or concurrent readers.
  • Consider latency at the queue depth and concurrency your application actually generates.
  • Evaluate sustained behavior, not only short burst specifications that may depend on cache.

Capacity and endurance

  • Allow room for the dataset, staging files, checkpoints, logs, and temporary transforms without forcing constant cleanup.
  • Match endurance to the write workload, especially when preprocessing creates shards, caches, or repeated checkpoints.

No particular SSD model can be recommended from the measurements described here. The correct choice is the compatible device whose behavior matches the measured constraint.

Common diagnostic mistakes and their fixes

Mistake: treating GPU utilization as an SSD benchmark

Fix: correlate GPU idle gaps with input, CPU, transfer, and I/O events. NVIDIA’s guidance explicitly allows insufficient parallelism or other compute-side causes of underutilization.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Mistake: copying a worker count from another machine

Fix: tune num_workers, prefetching, and related settings on the target hardware. PyTorch describes these choices as workload-dependent.

Mistake: trusting peak sequential throughput

Fix: measure latency, request size, queue depth, and concurrency on the actual dataset and filesystem path.

Mistake: benchmarking only a warm cache

Fix: label cold and warm conditions and report both when they represent different operating modes.

Mistake: enabling every optimization at once

Fix: change one control, repeat the baseline, and retain only changes that improve the primary end-to-end metric without unacceptable memory or stability costs.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Mistake: assuming GPUDirect Storage is automatically available

Fix: verify platform, driver, filesystem, and application support before treating that path as an option. Its existence in NVIDIA’s architecture description is not a guarantee for a particular system.

A practical decision checklist

  1. Define examples per second, tokens per second, or end-to-end latency as the success metric.
  2. Capture a steady-state baseline with workload and cache conditions documented.
  3. Use PyTorch Profiler, NVIDIA DLProf, or equivalent traces to locate waits and kernel activity.
  4. Separate storage, decode, transforms, worker scheduling, host memory, and host-to-device transfer.
  5. Tune worker count, pinned memory, persistence, and prefetching one at a time.
  6. Measure storage latency and throughput using the application’s real access pattern.
  7. Run a controlled storage comparison and require a repeatable end-to-end improvement.
  8. Only then select a compatible SSD based on sustained, workload-relevant behavior, capacity, and endurance.

What a convincing result looks like

A defensible storage diagnosis connects three observations: the trace shows the application waiting on storage, storage metrics show pressure or latency on the relevant path, and changing storage produces a repeatable improvement in the chosen end-to-end metric. If any link is missing, keep investigating the pipeline. This method prevents an expensive SSD purchase from masking a decoder, worker, transfer, parallelism, or model-compute problem.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

AI Performancedata loadingGPU utilizationperformance profilingPyTorchSSD

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.