español - tensorflow neural network
tensorflow en la GPU: no se conocen dispositivos, a pesar de que el dispositivo de cuda devuelve un resultado "PASS" (4)
Nota: esta pregunta se hizo inicialmente en github , pero se pidió que estuviera aquí en su lugar
Tengo problemas para ejecutar tensorflow en gpu, y no parece ser el problema habitual de configuración de cuda, porque todo parece indicar que cuda está configurada correctamente.
El síntoma principal: cuando ejecuto tensorflow, mi gpu no se detecta ( el código que se está ejecutando y su salida ).
Lo que difiere de los problemas habituales es que cuda parece estar instalado correctamente y ejecutar ./deviceQuery
desde muestras de cuda es satisfactorio ( output ).
Tengo dos cartas gráficas:
- una antigua GTX 650 utilizada para mis monitores (no quiero usarla con tensorflow)
- una GTX 1060 que quiero dedicar a tensorflow
Yo suelo:
- tensorflow-1.0.0
- cuda-8.0 ( ls -l / usr / local / cuda / lib64 / libcud * )
- cudnn-5.1.10
- python-2.7.12
- nvidia-drivers-375.26 (esto fue instalado por cuda y reemplazó mi paquete de controlador de distro)
He intentado:
- agregando
/usr/local/cuda/bin/
a$PATH
- forzando la colocación de gpu en el script tensorflow usando
with tf.device(''/gpu:1''):
(ywith tf.device(''/gpu:0''):
cuando falló, para una buena medida) - incluir en la lista blanca la GPU que quería usar con
CUDA_VISIBLE_DEVICES
, en caso de que la presencia de mi antigua tarjeta noCUDA_VISIBLE_DEVICES
causara problemas - ejecutar el script con sudo (porque por qué no)
Aquí están las salidas de nvidia-smi y nvidia-debugdump -l , en caso de que sea útil.
En este punto, siento que he seguido todas las migas de pan y no tengo idea de qué podría probar. Ni siquiera estoy seguro de si estoy contemplando un error o un problema de configuración. Cualquier consejo sobre cómo depurar esto sería muy apreciado. ¡Gracias!
Actualización : con la ayuda de Yaroslav en github, recopilé más información de depuración elevando el nivel de registro, pero no parece decir mucho sobre la selección del dispositivo: https://gist.github.com/oelmekki/760a37ca50bf58d4f03f46d104b798bb
Actualización 2 : el uso de theano detecta gpu correctamente, pero curiosamente se queja de que cuDNN es demasiado reciente, y luego de recurrir a la CPU ( código ejecutado , output ). Tal vez ese podría ser el problema con Tensorflow también?
A partir de la salida de registro, parece que está ejecutando la versión de CPU de TensorFlow (PyPI: tensorflow-1.0.0 ) y no la versión de GPU (PyPI: tensorflow-gpu
). La ejecución de la versión de la GPU podría registrar información sobre las bibliotecas de CUDA, o un error si no puede cargarlas o abrir el controlador.
Si ejecuta los siguientes comandos, debería poder usar la GPU en ejecuciones posteriores:
$ pip uninstall tensorflow
$ pip install tensorflow-gpu
En mi caso:
pip3 uninstall tensorflow
no es suficiente. Porque cuando reinstalar con:
pip3 install tensorflow-gpu
Todavía es reinstalar tensorflow con la CPU no gpu. Por lo tanto, antes de instalar tensorfow-pgu, traté de eliminar todas las carpetas de tensores relacionadas en los paquetes de sitio. Desinstalación de protobuf, ¡y funciona!
Para la conclusión:
pip3 uninstall tensorflow
Elimine todas las carpetas de tensor en ~ / Python35 / Lib / site-packages
pip3 uninstall protobuf
pip3 install tensorflow-gpu
Ninguna de las otras respuestas aquí funcionó para mí. Después de un poco de retoques descubrí que esto solucionó mis problemas cuando se trataba de Tensorflow construido a partir de binario:
Paso 0: desinstala protobuf
pip uninstall protobuf
Paso 1: Desinstalar tensorflow
pip uninstall tensorflow
pip uninstall tensorflow-gpu
Paso 2: Forzar reinstalar Tensorflow con soporte de GPU
pip install --upgrade --force-reinstall tensorflow-gpu
Paso 3: Si aún no lo has hecho, configura CUDA_VISIBLE_DEVICES
Entonces para mí con 2 GPU sería
export CUDA_VISIBLE_DEVICES=0,1
Puede parecer tonto, pero un sudo reboot
ha solucionado exactamente el mismo problema para mí y un par de otros.