Buscar..


Introducción

Este tema trata sobre la configuración y administración de GPU en TensorFlow.

Se supone que se ha instalado la versión de GPU de TensorFlow (consulte https://www.tensorflow.org/install/ para obtener más información sobre la instalación de la GPU).

También es posible que desee consultar la documentación oficial: https://www.tensorflow.org/tutorials/using_gpu

Observaciones

Fuentes principales:

Ejecute TensorFlow solo en la CPU, utilizando la variable de entorno `CUDA_VISIBLE_DEVICES`.

Para asegurarse de que el proceso TensorFlow de una versión de GPU solo se ejecute en la CPU:

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

Para obtener más información sobre CUDA_VISIBLE_DEVICES , consulte esta respuesta o la documentación de CUDA .

Ejecute TensorFlow Graph solo en la CPU - usando `tf.config`

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

Tenga en cuenta que este método evita que el gráfico TensorFlow use la GPU, pero TensorFlow sigue bloqueando el dispositivo de la GPU como se describe en este tema . El uso de CUDA_VISIBLE_DEVICES parece ser la mejor manera de asegurarse de que TensorFlow se mantenga alejado de la tarjeta GPU (consulte esta respuesta ).

Utilice un conjunto particular de dispositivos GPU

Para usar un conjunto particular de dispositivos GPU, la variable de entorno CUDA_VISIBLE_DEVICES se puede usar:

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

(Citado en esta respuesta ; más información sobre las variables de entorno de CUDA aquí .)

Enumere los dispositivos disponibles disponibles por TensorFlow en el proceso local.

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

Controlar la asignación de memoria GPU

De forma predeterminada, TensorFlow preasigna toda la memoria de la tarjeta GPU (lo que puede provocar la advertencia CUDA_OUT_OF_MEMORY ).

Para cambiar esto, es posible

  • cambie el porcentaje de memoria asignada previamente, utilizando la opción de configuración per_process_gpu_memory_fraction ,

    Un valor entre 0 y 1 que indica qué fracción de la
    Memoria de GPU disponible para preasignar para cada proceso. 1 significa
    para preasignar toda la memoria de la GPU, 0.5 significa el proceso
    asigna ~ 50% de la memoria de GPU disponible.

  • deshabilita la pre-asignación, usando la opción de configuración allow_growth . La asignación de memoria crecerá a medida que crezca el uso.

    Si es verdadero, el asignador no asigna previamente la totalidad especificada
    Región de memoria de GPU, en lugar de comenzar pequeña y creciendo según sea necesario.

Por ejemplo:

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):

Más información sobre las opciones de configuración aquí .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow