Saltar al contenido

¿Cómo evitar que tensorflow asigne la totalidad de la memoria de una GPU?

Presta atención porque en este artículo vas a encontrar el hallazgo que buscas.Este escrito fue analizado por nuestros expertos para asegurar la calidad y exactitud de nuestro contenido.

Solución:

Puede establecer la fracción de memoria GPU que se asignará cuando construya un tf.Session al pasar un tf.GPUOptions como parte de la opción config argumento:

# Assume that you have 12GB of GPU memory and want to allocate ~4GB:
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)

sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))

los per_process_gpu_memory_fraction actúa como un límite superior rígido en la cantidad de memoria de GPU que usará el proceso en cada GPU en la misma máquina. Actualmente, esta fracción se aplica uniformemente a todas las GPU en la misma máquina; no hay forma de configurar esto por GPU.

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

https://github.com/tensorflow/tensorflow/issues/1578

Aquí hay un extracto del Libro Deep Learning with TensorFlow

En algunos casos, es deseable que el proceso solo asigne un subconjunto de la memoria disponible, o que solo aumente el uso de la memoria a medida que el proceso la necesite. TensorFlow proporciona dos configuraciones opciones en la sesión para controlar esto. El primero es el allow_growth opción, que intenta asignar solo la cantidad de memoria de GPU basada en las asignaciones de tiempo de ejecución, comienza asignando muy poca memoria y, a medida que se ejecutan las sesiones y se necesita más memoria de GPU, ampliamos la región de memoria de GPU que necesita el proceso de TensorFlow.

1) Permitir el crecimiento: (más flexible)

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config, ...)

El segundo método es per_process_gpu_memory_fraction opción, que determina la fracción de la cantidad total de memoria que each Debe asignarse una GPU visible. Nota: No se necesita liberación de memoria, incluso puede empeorar la fragmentación de la memoria cuando se hace.

2) Asignar memoria fija:

Para asignar solamente 40% de la memoria total de cada GPU por:

config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
session = tf.Session(config=config, ...)

Nota:
Sin embargo, eso solo es útil si realmente desea vincular la cantidad de memoria GPU disponible en el proceso TensorFlow.

Reseñas y valoraciones del artículo

Si te mola la idea, tienes la habilidad dejar un tutorial acerca de qué te ha impresionado de este escrito.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *