tensorflow
Configuration du GPU TensorFlow
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 .