tutorial mac instalar found for python tensorflow

python - mac - Tensorflow asigna memoria GPU cuando usa tf.device(''/ cpu: 0'')



no matching distribution found for tensorflow (2)

Información del sistema : 1.1.0, GPU, Windows, Python 3.5, el código se ejecuta en las consolas ipython.

Estoy tratando de ejecutar dos sesiones diferentes de Tensorflow, una en la GPU (que hace un trabajo por lotes) y otra en la CPU que uso para pruebas rápidas mientras la otra funciona.

El problema es que cuando with tf.device(''/cpu:0'') la segunda sesión especificando with tf.device(''/cpu:0'') la sesión intenta asignar memoria GPU y bloquea mi otra sesión.

Mi código:

import os os.environ["CUDA_VISIBLE_DEVICES"] = "" import time import tensorflow as tf with tf.device(''/cpu:0''): with tf.Session() as sess: # Here 6 GBs of GPU RAM are allocated. time.sleep(5)

¿Cómo obligo a Tensorflow a ignorar la GPU?

ACTUALIZAR:

Como sugerí en un comentario de @Nicolas, eché un vistazo a esta respuesta y corrí

import os os.environ["CUDA_VISIBLE_DEVICES"] = "" import tensorflow as tf from tensorflow.python.client import device_lib print(device_lib.list_local_devices())

que imprime:

[name: "/cpu:0" device_type: "CPU" memory_limit: 268435456 locality { } incarnation: 2215045474989189346 , name: "/gpu:0" device_type: "GPU" memory_limit: 6787871540 locality { bus_id: 1 } incarnation: 13663872143510826785 physical_device_desc: "device: 0, name: GeForce GTX 1080, pci bus id: 0000:02:00.0" ]

Me parece que incluso si explícitamente le digo al script que ignore cualquier dispositivo CUDA, aún los encuentra y los usa. ¿Podría ser esto un error de TF 1.1?


¿Te importaría probar una de estas opciones de configuración?

config = tf.ConfigProto() config.gpu_options.allow_growth = True # or config.gpu_options.per_process_gpu_memory_fraction = 0.0 with tf.Session(config=config) as sess: ...

Según la documentación , debería ayudarlo a administrar su memoria GPU para esta sesión en particular y, por lo tanto, su segunda sesión debería poder ejecutarse en GPU.

EDITAR: según esta respuesta , también debes probar esto:

import os os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" # see issue #152 os.environ["CUDA_VISIBLE_DEVICES"]="-1"


Resulta que establecer CUDA_VISIBLE_DEVICES en la cadena vacía no enmascara los dispositivos CUDA visibles para la secuencia de comandos.

De la documentación de CUDA_VISIBLE_DEVICES (énfasis agregado por mí):

Solo los dispositivos cuyo índice está presente en la secuencia son visibles para las aplicaciones CUDA y se enumeran en el orden de la secuencia. Si uno de los índices no es válido, solo los dispositivos cuyo índice precede al índice no válido son visibles para las aplicaciones CUDA . Por ejemplo, establecer CUDA_VISIBLE_DEVICES en 2,1 hace que el dispositivo 0 sea invisible y que el dispositivo 2 se enumere antes del dispositivo 1. Establecer CUDA_VISIBLE_DEVICES en 0,2, -1,1 hace que los dispositivos 0 y 2 sean visibles y el dispositivo 1 sea invisible .

Parece que la cadena vacía solía manejarse como "no existen dispositivos válidos", pero cambió el significado, ya que no se menciona en la documentación.

Cambiar el código a os.environ["CUDA_VISIBLE_DEVICES"] = "-1" soluciona el problema. Corriendo

import os os.environ["CUDA_VISIBLE_DEVICES"]="-1" import tensorflow as tf from tensorflow.python.client import device_lib print(device_lib.list_local_devices())

ahora imprime

[name: "/cpu:0" device_type: "CPU" memory_limit: 268435456 locality { } incarnation: 14097726166554667970 ]

y crear instancias de una tf.Session ya no tf.Session memoria de la GPU.