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 .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow