tensorflow
Impostazione della GPU TensorFlow
Ricerca…
introduzione
Questo argomento riguarda la configurazione e la gestione delle GPU in TensorFlow.
Si presuppone che sia stata installata la versione GPU di TensorFlow (consultare https://www.tensorflow.org/install/ per ulteriori informazioni sull'installazione della GPU).
Potresti anche voler dare un'occhiata alla documentazione ufficiale: https://www.tensorflow.org/tutorials/using_gpu
Osservazioni
Risorse principali:
Esegui TensorFlow solo su CPU - usando la variabile d'ambiente `CUDA_VISIBLE_DEVICES`.
Per garantire che una versione della GPU del processo TensorFlow venga eseguita solo sulla CPU:
import os
os.environ["CUDA_VISIBLE_DEVICES"]="-1"
import tensorflow as tf
Per ulteriori informazioni su CUDA_VISIBLE_DEVICES
, dai un'occhiata a questa risposta o alla documentazione CUDA .
Esegui TensorFlow Graph solo sulla CPU - usando `tf.config`
import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(device_count={'GPU': 0}))
Tenere presente che questo metodo impedisce a TensorFlow Graph di utilizzare la GPU ma TensorFlow blocca ancora la periferica GPU come descritto in questo problema aperto su questo metodo. L'utilizzo di CUDA_VISIBLE_DEVICES
sembra essere il modo migliore per garantire che TensorFlow sia tenuto lontano dalla scheda GPU (vedi questa risposta ).
Utilizzare un particolare set di dispositivi GPU
Per utilizzare un particolare set di dispositivi GPU, è possibile utilizzare la variabile d'ambiente CUDA_VISIBLE_DEVICES
:
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
(Citato da questa risposta , ulteriori informazioni sulle variabili di ambiente CUDA qui .)
Elencare i dispositivi disponibili disponibili da TensorFlow nel processo locale.
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
Controlla l'allocazione della memoria della GPU
Per impostazione predefinita, TensorFlow pre-alloca l'intera memoria della scheda GPU (che può causare CUDA_OUT_OF_MEMORY
avviso CUDA_OUT_OF_MEMORY
).
Per cambiare questo, è possibile
cambiare la percentuale di memoria pre-allocata, usando l'opzione di configurazione
per_process_gpu_memory_fraction
,Un valore compreso tra 0 e 1 che indica quale frazione di
memoria GPU disponibile per pre-allocare per ogni processo. 1 significa
per pre-allocare tutta la memoria della GPU, 0,5 indica il processo
alloca circa il 50% della memoria della GPU disponibile.disabilitare la pre-assegnazione, usando l'opzione
allow_growth
config. L'allocazione della memoria aumenterà con l'aumentare dell'utilizzo.Se true, l'allocatore non pre-alloca l'intero specificato
Regione di memoria GPU, invece di iniziare in piccolo e crescere in base alle esigenze.
Per esempio:
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
sess = tf.Session(config=config) as sess:
o
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess= tf.Session(config=config):
Maggiori informazioni sulle opzioni di configurazione qui .