Recherche…


Introduction

Cette rubrique concerne la configuration et la gestion des GPU dans TensorFlow.

Il suppose que la version GPU de TensorFlow a été installée (voir https://www.tensorflow.org/install/ pour plus d'informations sur l'installation du GPU).

Vous pouvez également vouloir consulter la documentation officielle: https://www.tensorflow.org/tutorials/using_gpu

Remarques

Sources principales:

Exécutez TensorFlow uniquement sur la CPU - en utilisant la variable d’environnement `CUDA_VISIBLE_DEVICES`.

Pour vous assurer que le processus TensorFlow en version GPU ne fonctionne que sur CPU:

import os
os.environ["CUDA_VISIBLE_DEVICES"]="-1"    
import tensorflow as tf

Pour plus d'informations sur CUDA_VISIBLE_DEVICES , consultez cette réponse ou la documentation CUDA .

Exécuter TensorFlow Graph sur CPU uniquement - en utilisant `tf.config`

import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(device_count={'GPU': 0}))

N'oubliez pas que cette méthode empêche le graphique TensorFlow d'utiliser le GPU, mais TensorFlow verrouille toujours le périphérique GPU comme décrit dans ce problème . Utiliser CUDA_VISIBLE_DEVICES semble être le meilleur moyen de s’assurer que TensorFlow est éloigné de la carte GPU (voir cette réponse ).

Utiliser un ensemble particulier de périphériques GPU

Pour utiliser un ensemble particulier de périphériques GPU, la variable d'environnement CUDA_VISIBLE_DEVICES peut être utilisée:

import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"]="0" # Will use only the first GPU device


os.environ["CUDA_VISIBLE_DEVICES"]="0,3" # Will use only the first and the fourth GPU devices

(Cité à partir de cette réponse ; plus d'informations sur les variables d'environnement CUDA ici .)

Répertorie les périphériques disponibles disponibles par TensorFlow dans le processus local.

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

Contrôler l'allocation de mémoire GPU

Par défaut, TensorFlow pré-alloue la totalité de la mémoire de la carte GPU (ce qui peut provoquer CUDA_OUT_OF_MEMORY avertissement CUDA_OUT_OF_MEMORY ).

Pour changer cela, il est possible de

  • changer le pourcentage de mémoire pré-allouée, en utilisant l'option de configuration per_process_gpu_memory_fraction ,

    Une valeur comprise entre 0 et 1 qui indique quelle fraction de la
    mémoire GPU disponible à pré-allouer pour chaque processus. 1 signifie
    pré-allouer toute la mémoire GPU, 0.5 signifie le processus
    alloue environ 50% de la mémoire GPU disponible.

  • désactiver la pré-allocation, en utilisant l'option de configuration allow_growth . L'allocation de mémoire augmentera à mesure que l'utilisation augmente.

    Si true, l'allocateur ne pré-alloue pas l'intégralité
    Région de la mémoire GPU, au lieu de commencer petit et en croissance si nécessaire.

Par exemple:

config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
sess = tf.Session(config=config) as sess:

ou

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess= tf.Session(config=config):

Plus d'informations sur les options de configuration ici .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow