tutorial mac guide macos tensorflow tensorflow-gpu

macos - guide - soporte tensorflow Mac OS gpu



tensorflow sdk (4)

Aquí está mi solución para instalar un e-gpu en un mac. Tensorflow ya no es compatible con tensorflow-gpu, por lo que definitivamente hay mejores enfoques para que funcione:

Mi configuración:

  • IMac 27 ''finales de 2012
  • Nodo Aktio
  • GTX 1080 ti
  • 3 pantallas: una de ellas conectada a la GTX 1080 y las demás conectadas directamente a la mac.

Ventajas de la instalación de bootcamp de windows:

  • Puedes usar pip para instalar tensorflow-gpu.
  • Buena compatibilidad con GPU 1080 ti (controlador de pantalla descargable)

Cómo:

  • Instalar Windows 10 con bootcamp. No conecte el nodo Akito por el momento.
  • Descargue e instale el controlador de pantalla para su gpu desde la página de descarga de NVIDIA
  • Instalar Visual Studio
    • Si desea utilizar CUDA 9.x puede instalar Visual Studio 2017
    • De lo contrario instala Visual Studio 2015
  • Instala CUDA y CuDNN
    • Tenga en cuenta que la versión tensorflow-gpu debe coincidir con su Cuda y su versión CudNN. Vea las versiones disponibles de tensorflow here .
    • Después de la instalación de CUDA, puede mover los archivos CuDNN desempaquetados a la carpeta CUDA en: C: / Archivos de programa / NVIDIA GPU Computing Toolkit / CUDA / v9.0. Mueva los archivos lib a la carpeta lib, los archivos bin a la carpeta bin y los archivos incluidos a la carpeta include.
  • Instalar Python 3.5+
    • Necesitas una versión de 64 bits para instalar tensorflow-gpu con pip
    • Python 2.7 no funcionará.
  • Instale tensorflow con pip:

Mando:

pip install tensorflow-gpu==1.5.0rc0

Revisa tu instalación

El controlador de pantalla se ha instalado correctamente cuando se puede conectar una pantalla a la tarjeta GTX 1080 ti.

Llame a C: / Archivos de programa / NVIDIA Corporation / NVSMI / nvidia-smi.exe para verificar si su tarjeta de video está disponible para CUDA.

Ejecute el siguiente comando tensorflow para ver los dispositivos disponibles:

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

Solución de problemas y sugerencias:

  • Windows quiere actualizar su controlador GTX 1080. ¡Nunca permitas eso porque no podrás reiniciar tu computadora nuevamente! Aparecerá una pantalla negra con puntos en movimiento antes de que pueda iniciar sesión en Windows. ¡Juego terminado! Utilice únicamente el controlador de pantalla de la página de descarga de NVIDIA .
  • Si ya no puede iniciar Windows en OSX, presione la tecla alt al inicio para reinstalar Windows.

Solución de Ubuntu:

No pude encontrar una solución de trabajo, pero aquí hay algunos enfoques:

Parece que mi GTX 680 (iMac) y mi GTX 1080 ti no funcionarán juntas. Ubuntu no se pudo iniciar más después de instalar el controlador de pantalla a través de apt-get: Ubuntu no se inicia más . Intente descargar el controlador de pantalla oficial desde la página de descarga de NVIDIA .

Solución OSX: Tensorflow GPU solo es compatible con tensorflow 1.1. Intenté instalar una versión más nueva pero no pude compilar tensorflow-gpu con soporte de cuda. Aquí hay algunos enfoques:

  • Instale OSX Sierra para usar el script e-gpu . High Sierra no funcionará (13 de enero de 2018). Baja a sierra eliminando todas tus particiones. Luego presione Comando + R en el inicio para cargar la recuperación de Internet. No olvide hacer una copia de seguridad de sus datos primero.
  • Instalar e-gpu script .
  • Si tensorflow-gpu 1.1 es suficiente para usted, simplemente puede instalarlo a través de pip, de lo contrario deberá construir su pip con bazel.

Conclusión: la instalación de Windows es más fácil que la instalación de OSX o Ubuntu porque los controladores de pantalla funcionan correctamente y tensorflow y no deben construirse por su cuenta. Siempre revise la versión de software que usa. El debe coincidir exactamente.

¡Espero que esto ayude!

De acuerdo a

https://www.tensorflow.org/install/install_mac Nota: A partir de la versión 1.2, TensorFlow ya no proporciona soporte de GPU en Mac OS X. Ya no se proporciona soporte de GPU para OS X.

Sin embargo, me gustaría ejecutar una configuración de e-gpu como akitio node con 1080 ti mediante thunderbolt 3.

¿Qué pasos son necesarios para que esta configuración funcione? Hasta ahora se que

son requeridos. ¿Qué más se necesita para que CUDA / tensorflow funcione?


Escribí un pequeño tutorial sobre cómo compilar TensorFlow 1.2 con soporte de GPU en macOS . Creo que es costumbre copiar partes relevantes a SO, así que aquí va:

  1. Si no ha usado una configuración de TensorFlow-GPU anteriormente, sugiero que primero configure todo con TensorFlow 1.0 o 1.1, donde aún puede hacer la pip install tensorflow-gpu . Una vez que lo consiga, la configuración de CUDA también funcionará si está compilando TensorFlow. Si tienes una GPU externa, la respuesta de YellowPillow (o la mine ) podría ayudarte a configurar las cosas.
  2. Siga el tutorial oficial “ Instalando TensorFlow desde fuentes ”, pero obviamente sustituya git checkout r1.0 con git checkout r1.2 . Al hacer ./configure , preste atención a la ruta de la biblioteca de Python: a veces sugiere una incorrecta. Elegí las opciones predeterminadas en la mayoría de los casos, a excepción de: la ruta de la biblioteca de Python, el soporte de CUDA y la capacidad de cómputo. No use Clang como el compilador de CUDA: esto le llevará a un error “Configuración de crosstool inconsistente; no se ha encontrado ninguna cadena de herramientas correspondiente a ''local_darwin'' para cpu ''darwin'' ". Usar /usr/bin/gcc como su compilador en realidad usará Clang que viene con macOS / XCode. A continuación se muestra mi configuración completa.
  3. TensorFlow 1.2 espera una biblioteca de C llamada OpenMP, que no está disponible en el Apple Clang actual. Debería acelerar TensorFlow multiproceso en máquinas con múltiples CPU, pero también se compilará sin él. Podríamos intentar compilar TensorFlow con gcc 4 (que no gestioné), o simplemente eliminar la línea que incluye OpenMP del archivo de compilación. En mi caso comenté la línea 98 de tensorflow/third_party/gpus/cuda/BUILD.tpl , que contained linkopts = [“-lgomp”] (pero la ubicación de la línea obviamente podría cambiar). Algunas personas tuvieron problemas con zmuldefs , pero supongo que fue con versiones anteriores; Gracias a udnaan por señalar que está bien comentar estas líneas.
  4. Tuve algunos problemas para compilar con el último bazel 0.5.3, así que volví a usar 0.4.5 que ya tenía instalado. Pero alguna discusión en un tema de github mencionada bazel 0.5.2 tampoco tuvo el problema.
  5. Ahora compile con bazel y finalice la instalación como se indica en la guía de instalación oficial. En mi iMac de 3.2 GHz esto tomó cerca de 37 minutos.

Usando la ruta de la biblioteca de Python: /Users/m/code/3rd/conda/envs/p3gpu/lib/python3.6/site-packages

¿Desea construir TensorFlow con soporte MKL? [s / N] N

No se habilitará soporte MKL para TensorFlow

Especifique los indicadores de optimización para usar durante la compilación cuando se especifique la opción de bazel "--config = opt" [El valor predeterminado es -march = native]:

¿Desea crear TensorFlow con el soporte de Google Cloud Platform? [s / N]

No se habilitará el soporte de Google Cloud Platform para TensorFlow

¿Desea compilar TensorFlow con el soporte del sistema de archivos Hadoop? [s / N]

No se habilitará la compatibilidad con el sistema de archivos Hadoop para TensorFlow

¿Desea compilar TensorFlow con el compilador XLA justo a tiempo (experimental)? [s / N]

No se habilitará el soporte de XLA para TensorFlow

¿Desea construir TensorFlow con soporte VERBS? [s / N]

No se habilitará el soporte VERBS para TensorFlow

¿Deseas construir TensorFlow con soporte OpenCL? [s / N]

No se habilitará soporte de OpenCL para TensorFlow

¿Desea construir TensorFlow con soporte CUDA? [y / N] y

El soporte de CUDA estará habilitado para TensorFlow

¿Quieres usar clang como compilador de CUDA? [s / N]

nvcc será usado como compilador CUDA

Especifique la versión de CUDA SDK que desea usar, por ejemplo, 7.0. [Deje vacío para usar el sistema por defecto]:

Por favor, especifique la ubicación donde está instalado el kit de herramientas CUDA. Consulte README.md para más detalles. [El valor predeterminado es / usr / local / cuda]:

Especifique qué gcc debe usar nvcc como el compilador del host. [El valor predeterminado es / usr / bin / gcc]:

Por favor, especifique la versión de cuDNN que desea utilizar. [Deje vacío para usar el sistema por defecto]:

Por favor, especifique la ubicación donde está instalada la biblioteca cuDNN. Consulte README.md para más detalles. [El valor predeterminado es / usr / local / cuda]:

Especifique una lista de las capacidades de cálculo Cuda separadas por comas con las que desea compilar.

Puede encontrar la capacidad de cálculo de su dispositivo en: https://developer.nvidia.com/cuda-gpus .

Tenga en cuenta que cada capacidad de cálculo adicional aumenta significativamente su tiempo de compilación y tamaño binario.

[El valor predeterminado es: "3.5,5.2"]: 6.1

INFO: Empezando limpio (esto puede tardar un rato). Considere usar --async si la limpieza lleva más de varios minutos.

Configuración terminada


Finalmente pude hacerlo funcionar con la siguiente configuración.

Hardware

Versiones de software

  • macOS Sierra Versión 10.12.6
  • Versión de controlador GPU: 10.18.5 (378.05.05.25f01)
  • Versión del controlador CUDA: 8.0.61
  • cuDNN v5.1 (20 de enero de 2017), para CUDA 8.0: Necesidad de registrarse y descargar
  • tensorflow-gpu 1.0.0
  • Keras 2.0.8

Escribí una esencia con el procedimiento:

https://gist.github.com/jganzabal/8e59e3b0f59642dd0b5f2e4de03c7687


Suponiendo que ya ha configurado su caja de eGPU y ha conectado el cable TB3 de la eGPU a su puerto TB3:

1. Descargue el script automatate-eGPU y ejecútelo.

curl -o ~/Desktop/automate-eGPU.sh https://raw.githubusercontent.com/goalque/automate-eGPU/master/automate-eGPU.sh && chmod +x ~/Desktop/automate-eGPU.sh && cd ~/Desktop && sudo ./automate-eGPU.sh

Usted podría obtener un error diciendo:

"Inicie en la partición de recuperación y escriba: csrutil disable"

Todo lo que necesita hacer ahora es reiniciar su computadora y cuando se reinicie, mantenga presionado cmd + R para habilitar el modo de recuperación. Luego ubique la Terminal en modo de recuperación y escriba:

csrutil disable

Luego reinicie su computadora y vuelva a ejecutar el script automate-eGPU.sh

2: Descargar e instalar CUDA

Ejecute el archivo cuda_8.0.61_mac.dmg y continúe durante la fase de instalación. Luego, después tendrás que establecer los caminos.

Ve a tu terminal y escribe:

vim ~/.bash_profile

O si ha almacenado sus variables de entorno y luego agregue estas tres líneas:

export CUDA_HOME=/usr/local/cuda export DYLD_LIBRARY_PATH="$CUDA_HOME/lib:$CUDA_HOME:$CUDA_HOME/extras/CUPTI/lib" export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH

3. Descargando e instalando cuDNN

Para descargar cuDNN es un poco más problemático, tienes que registrarte para ser desarrollador de Nvidia y luego puedes descargarlo. Asegúrese de descargar la cuDNN v5.1 Library for OSX ya que es la que espera Tensorflow v1.1. Tenga en cuenta que no podemos usar Tensorflow v1.2 ya que no hay soporte de GPU para Mac: ((

[! [ingrese la descripción de la imagen aquí] [1]] [1]

Ahora descargará un archivo zip llamado cudnn-8.0-osx-x64-v5.1.tgz , descomprimir y, que creará un archivo llamado cuda y cd utilizando el terminal. Suponiendo que la carpeta está en Descargas

Abra el terminal y escriba:

cd ~/Downloads/cuda

Ahora necesitamos copiar los archivos cuDNN donde se almacena CUDA para:

sudo cp include/* /usr/local/cuda/include/ sudo cp lib/* /usr/local/cuda/lib/

4. Ahora instale Tensorflow-GPU v1.1 en su conda / virtualenv

Para mí, desde que uso conda , creé un nuevo entorno usando Terminal:

conda create -n egpu python=3 source activate egpu pip install tensorflow-gpu # should install version 1.1

5. Verificar que funciona.

Primero tienes que reiniciar tu computadora y luego:

En la terminal escribe python y escribe:

import tensorflow as tf with tf.device(''/gpu:0''): a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name=''a'') b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name=''b'') c = tf.matmul(a, b) with tf.Session() as sess: print (sess.run(c))

Si tiene una GPU, esto debería ejecutarse sin problemas, si es así, debería obtener un seguimiento de la pila (solo un grupo de mensajes de error) y debería incluir

No se puede asignar un dispositivo al nodo ''MatMul'': no ​​se pudo satisfacer la especificación explícita del dispositivo ''/ device: GPU: 0'' porque no se han registrado dispositivos que coincidan con esa especificación en este proceso

Si no, entonces has terminado ¡felicidades! Acabo de instalar el mío hoy y está funcionando perfectamente :)