A team is monitoring costs for a Vertex AI training workload that uses a large cluster of A100 GPUs. They notice that GPU utilization reported in Cloud Monitoring averages only 35% throughout training runs. Which THREE actions would most effectively improve GPU utilization and reduce the cost per training run? (Select THREE)
- A. Enable Vertex AI TensorBoard to visualize training curves and identify convergence issues
- B. Migrate from synchronous data-parallel training to a larger single-GPU instance to avoid communication overhead
- C. Profile the training job using Cloud Profiler or TensorBoard's trace viewer to identify bottlenecks in the data pipeline or host-to-device transfers✓ Correct
- D. Increase the per-device batch size to better saturate GPU memory and compute✓ Correct
- E. Switch to preemptible (Spot) VMs for the training cluster to reduce per-hour costs
- F. Use a tf.data pipeline with prefetching and parallel data loading to eliminate CPU-bound data bottlenecks✓ Correct
Explanation
Low GPU utilization (35%) typically means GPUs are starved for data or compute is bottlenecked elsewhere. Increasing batch size (D) directly increases the amount of work per GPU step, improving utilization. Optimizing the data pipeline with tf.data prefetching and parallel loading (F) eliminates CPU-bound I/O bottlenecks that leave GPUs idle waiting for data. Profiling with Cloud Profiler or TensorBoard's trace viewer (C) is essential to identify the exact bottleneck (e.g., data loading, host-to-device transfers, kernel launch overhead) before applying further fixes. Option A (TensorBoard for training curves) helps with convergence analysis but does not directly address GPU utilization. Option B (migrating to a single GPU) reduces parallelism and would increase training time, not improve efficiency; it may also not be feasible for large models. Option E (Spot VMs) reduces hourly cost but does not improve GPU utilization percentage and introduces the risk of preemption mid-run, which can waste already-consumed compute.