# How to Check if GPU Is Available for TensorFlow in AI for Beginners

> Learn to check GPU availability for TensorFlow in AI For Beginners. Use tf.config.list_physical_devices('GPU') to ensure TensorFlow utilizes GPU acceleration for faster AI model training.

- Repository: [Microsoft/AI-For-Beginners](https://github.com/microsoft/AI-For-Beginners)
- Tags: how-to-guide
- Published: 2026-08-22

---

**Use `tf.config.list_physical_devices('GPU')` to detect GPU availability in TensorFlow; if the returned list contains one or more `PhysicalDevice` objects, TensorFlow will automatically utilize GPU acceleration for model training and inference.**

The Microsoft **AI for Beginners** curriculum uses TensorFlow extensively in labs covering computer vision and natural language processing, and verifying GPU availability is essential before training deep neural networks like VGG-16 or LSTMs. Detecting hardware acceleration ensures learners can reduce training time from hours to minutes while avoiding out-of-memory errors through proper memory configuration.

## The Standard API: tf.config.list_physical_devices('GPU')

TensorFlow exposes hardware detection through the `tf.config` module. The `list_physical_devices('GPU')` function returns a list of all GPU devices visible to the runtime, providing a reliable, non-deprecated method for checking acceleration capabilities.

```python
import tensorflow as tf

# Detect available GPUs

physical_devices = tf.config.list_physical_devices('GPU')
print(physical_devices)

# Output example: [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

# Boolean check

gpu_available = len(physical_devices) > 0
print("GPU available:", gpu_available)

```

If the list is empty, TensorFlow falls back to CPU execution. This method replaces the legacy `tf.test.is_gpu_available()` and offers granular control over device enumeration.

## GPU Detection in the AI for Beginners Notebooks

### TransferLearningTF.ipynb (Computer Vision)

In `lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb`, the curriculum implements GPU checking within the "GPU computations" section (lines 610-629). The notebook verifies GPU availability before loading the VGG-16 model for transfer learning, ensuring that feature extraction runs on accelerated hardware when possible.

### RNNTF.ipynb (Natural Language Processing)

The RNN lab located at `lessons/5-NLP/16-RNN/RNNTF.ipynb` performs GPU detection at initialization (lines 52-57) before processing the AG News dataset. This check precedes memory growth configuration to prevent allocation errors during recurrent layer training.

### TextRepresentationTF.ipynb (Embeddings)

Additionally, `lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb` includes GPU detection cells to verify that text embedding computations can leverage hardware acceleration when available.

## Enabling Memory Growth for Stable GPU Training

When a GPU is detected, the AI for Beginners notebooks configure memory growth to prevent TensorFlow from allocating all GPU memory at startup. This is critical for large models that might otherwise trigger out-of-memory (OOM) errors.

```python
import tensorflow as tf

gpus = tf.config.list_physical_devices('GPU')
if gpus:
    try:
        # Enable memory growth on each detected GPU

        for gpu in gpus:
            tf.config.experimental.set_memory_growth(gpu, True)
        print(f"Detected {len(gpus)} GPU(s) with memory growth enabled")
    except RuntimeError as e:
        # Memory growth must be set before GPUs are initialized

        print(e)
else:
    print("No GPU detected – training will proceed on CPU")

```

This pattern appears consistently across the repository's TensorFlow implementations to ensure compatibility with consumer-grade GPUs that have limited VRAM.

## Alternative Detection Method (Deprecated)

While `tf.config.list_physical_devices('GPU')` is the current standard, some legacy codebases use `tf.test.is_gpu_available()`. This function returns a boolean but is deprecated in TensorFlow 2.x. Modern implementations in the AI for Beginners repository favor the explicit device list approach for greater transparency and control.

```python

# Deprecated but still functional in older TensorFlow versions

import tensorflow as tf
print(tf.test.is_gpu_available())  # Returns True/False

```

## Summary

- **Use `tf.config.list_physical_devices('GPU')`** to return a list of available GPU devices in TensorFlow; a non-empty list confirms GPU acceleration is possible.
- **Enable memory growth** via `tf.config.experimental.set_memory_growth()` immediately after detection to prevent OOM errors during model training.
- **Reference implementations** exist in `lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb` (lines 610-629) and `lessons/5-NLP/16-RNN/RNNTF.ipynb` (lines 52-57).
- **Avoid deprecated methods** like `tf.test.is_gpu_available()` in favor of the explicit configuration API used throughout the AI for Beginners curriculum.

## Frequently Asked Questions

### How do I verify that TensorFlow is actually using the GPU during training?

Check the device placement by printing `physical_devices` after calling `tf.config.list_physical_devices('GPU')`. If the list contains `PhysicalDevice` objects with `device_type='GPU'`, TensorFlow will automatically place supported operations on the GPU. You can also monitor GPU utilization through system tools like `nvidia-smi` while training executes.

### What is the difference between `tf.config.list_physical_devices` and `tf.test.is_gpu_available`?

`tf.config.list_physical_devices('GPU')` returns a detailed list of device objects and is the recommended API in TensorFlow 2.x, allowing explicit device management and memory configuration. `tf.test.is_gpu_available()` returns only a boolean value and is deprecated, offering no insight into specific device names or memory capabilities.

### Why does the AI for Beginners curriculum enable memory growth after detecting a GPU?

GPUs often have limited VRAM, and TensorFlow's default behavior allocates all available GPU memory immediately, which can cause out-of-memory errors when other processes request resources. By calling `tf.config.experimental.set_memory_growth(physical_devices[0], True)`, the notebooks ensure TensorFlow allocates memory only as needed, preventing crashes during intensive operations like transfer learning or RNN training.

### Can I run the AI for Beginners notebooks without a GPU?

Yes. The notebooks are designed to fall back to CPU execution automatically when `tf.config.list_physical_devices('GPU')` returns an empty list. While training will be significantly slower—especially for convolutional and recurrent neural networks—all code remains functional on CPU-only systems.