¿Aprendizaje automático en GPU externa con CUDA y MBP tardío 2016?

Quisiera saber cuáles son las opciones de la GPU externa (eGPU) para macOS en 2017 con la MacBook Pro tardía de 2016.

Hice mi investigación, sin embargo, en Internet encuentro mucha información confusa. Algunos dicen que puede funcionar, pero requiere Windows (arranque dual). Otros dicen que solo puede funcionar para las tarjetas gráficas más antiguas, ya que CUDA no es compatible con las tarjetas gráficas más nuevas (GTX 1080). Idealmente, me gustaría ejecutar 1080 GTX de NVIDIA. Mi único propósito es usar Keras y TensorFlow con él. Sin embargo, no sé todas las cosas que son importantes para que funcione. Por lo tanto, mi pregunta es, ¿es posible utilizar TensorFlow con CUDA y eGPU en la última MacBook Pro 2016 (15 ")? Quiero usar la tarjeta gráfica en macOS (con la última MacBook Pro 15") como una eGPU (sin doble partición de arranque / Windows / Linux).

  • ¿Hay algún Mac actual capaz de ejecutar el SDK de CUDA basado en NVIDIA?
  • ¿Qué GPU puedo poner en mi Mac Pro 5,1?
  • Caída de la velocidad de cuadros de iOS sin la máxima utilización del dispositivo
  • Problemas con la tarjeta gráfica MBP Freeze +
  • ¿Desactiva la GPU AMD que falla en un MBP 2011? de Linux, debido al SIP de Sierra?
  • Diferentes opciones de cambio de charts en Yosemite
  • Nota al margen: he visto usuarios haciendo uso de eGPU en macbook antes (Razor Core, nodo AKiTiO), pero nunca en combinación con CUDA y Machine Learning (o la GTX 1080 para el caso). La gente sugirió alquilar espacio en el server en su lugar, o usar Windows (mejor soporte para tarjetas gráficas) o incluso build una nueva PC por el mismo precio que le permite usar una eGPU en Mac. (No prefiero esa opción)

  • ¿Cuál es la relación entre "Usuarios y grupos" y / etc / group?
  • No se puede habilitar iCloud Drive en OS X Sierra
  • iCloud Music Library y disco duro externo
  • MacBook Pro: el indicador de batería del sistema operativo no coincide con el indicador de batería del hardware
  • Abrir en la checkbox de baja resolución en Retina MacBook Pro marcado y deshabilitado
  • ¿Por qué una MacBook Retina funciona con granulado 1440x900 en Boot Camp?
  • 3 Solutions collect form web for “¿Aprendizaje automático en GPU externa con CUDA y MBP tardío 2016?”

    Finalmente pude instalar Nvidia Titan XP + MacBook Pro + Akitio Node + Tensorflow + Keras

    Escribí una esencia con el procedimiento, espero que ayude

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

    Aquí esta lo que hice:

    Esta configuration funcionó para mí, espero que ayude

    Se basa en: https://becominghuman.ai/deep-learning-gaming-build-with-nvidia-titan-xp-and-macbook-pro-with-thunderbolt2-5ceee7167f8b

    y en: https://stackoverflow.com/questions/44744737/tensorflow-mac-os-gpu-support

    Hardware

    • Tarjeta de video Nvidia: Titan Xp
    • EGPU: Nodo Akitio
    • MacBook Pro (Retina, 13 pulgadas, principios de 2015)
    • Adaptador Apple Thunderbolt3 a Thunderbolt2
    • Cable Apple Thunderbolt2

    Versiones de software

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

    Procedimiento:

    Instalar el controller GPU

    1. Apague su sistema, vuelva a encenderlo presionando las teclas (⌘ y R) hasta que vea , esto le permitirá acceder al modo de recuperación.
    2. Desde la barra de menu, click Utilidades> Terminal y escriba 'csrutil disable'; reiniciar 'presione enter para ejecutar este command.
    3. Cuando tu mac se reinicie, ejecuta este command en Terminal:

      cd ~/Desktop; git clone https://github.com/goalque/automate-eGPU.git chmod +x ~/Desktop/automate-eGPU/automate-eGPU.sh sudo ~/Desktop/automate-eGPU/./automate-eGPU.sh 
    4. Desconecte su eGPU de su Mac y reinicie. Esto es importante si no desenchufa su eGPU puede terminar con pantalla negra después de reiniciar.

    5. Cuando tu Mac se reinicie, abre el terminal y ejecuta este command:

       sudo ~/Desktop/automate-eGPU/./automate-eGPU.sh -a 
      1. Conecte su eGPU a su mac a través de TH2.
      2. Reinicia tu Mac.

    Instalar CUDA, cuDNN, Tensorflow y Keras

    En este momento, Keras 2.08 necesita tensorflow 1.0.0. Tensorflow-gpu 1.0.0 necesita CUDA 8.0 y cuDNN v5.1 es el que funcionó para mí. Intenté otras combinaciones, pero parece que no funciona

    1. Descargar e instalar CUDA 8.0 CUDA Toolkit 8.0 GA2 (Feb 2017)
    2. Instálalo y sigue las instrucciones
    3. Establecer variables env

       vim ~/.bash_profile 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 

    (Si tu perfil bash_profile no existe, créelo. Esto se ejecuta cada vez que abras una window de terminal)

    1. Descargar e instalar cuDNN (cudnn-8.0-osx-x64-v5.1) Necesidad de registrarse antes de downloadlo
    2. Copie los files cuDNN a CUDA

       cd ~/Downloads/cuda sudo cp include/* /usr/local/cuda/include/ sudo cp lib/* /usr/local/cuda/lib/ 
    3. Crea un entorno e instala tensorflow

       conda create -n egpu python=3 source activate egpu pip install tensorflow-gpu==1.0.0 
    4. Verificar que funcione

    Ejecute el siguiente script:

     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)) 
    1. Instale Keras en el entorno y configure tensorflow como back-end:

       pip install --upgrade --no-deps keras # Need no-deps flag to prevent from installing tensorflow dependency KERAS_BACKEND=tensorflow python -c "from keras import backend" 

      Salida:

       Using TensorFlow backend. I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcublas.8.0.dylib locally I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcudnn.5.dylib locally I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcufft.8.0.dylib locally I tensorflow/stream_executor/dso_loader.cc:126] Couldn't open CUDA library libcuda.1.dylib. LD_LIBRARY_PATH: /usr/local/cuda/lib:/usr/local/cuda:/usr/local/cuda/extras/CUPTI/lib I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcuda.dylib locally I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcurand.8.0.dylib locally 

    Pude get una NVIDIA GTX 1080 Ti trabajando en el Nodo Akitio en mi iMac (a finales de 2013). Estoy usando un adaptador Thunderbolt 2> 3, aunque en los Mac más nuevos puedes usar el TB3 más rápido directamente.

    Hay varias configuraciones de eGPU descritas en eGPU.io, y es posible que encuentre una que describa su computadora / gabinete / tarjeta con precisión. Estos tutoriales son principalmente para acelerar una pantalla con una eGPU, aunque para entrenar NN no es necesario que sigas todos los pasos.

    Esto es más o less lo que hice:

    • Instale CUDA de acuerdo con la documentation oficial.
    • Deshabilitar SIP (Google para un tutorial). Es necesario por el script eGPU.sh y luego también por TensorFlow.
    • Ejecute el script automate-eGPU.sh (con sudo) que todo el mundo en eGPU.io parece confiar.
    • Instala cuDNN. Los files del website de NVIDIA deben ir bajo /usr/local/cuda con el rest de las bibliotecas de CUDA e incluyen.
    • Desinstale TensorFlow solo de CPU e instale uno con soporte de GPU. Al instalar con pip install tensorflow-gpu , no tuve errores de installation, pero obtuve una segfault al requerir TensorFlow en Python. Resulta que hay algunas variables de entorno que deben establecerse (un poco diferente de lo que sugiere el instalador de CUDA), que se describieron en un comentario de un problema de GitHub .
    • También intenté comstackr TensorFlow desde la fuente, que no funcionó antes de configurar los files como se describe en el paso anterior.

    Desde iStat Menus, puedo verificar que mi GPU externa efectivamente se usa durante el entrenamiento. Sin embargo, esta installation de TensorFlow no funcionaba con Jupyter, pero es de esperar que haya una solución para eso.

    No he usado mucho esta configuration, así que no estoy seguro del aumento del performance (o limitaciones de ancho de banda), pero eGPU + TensorFlow / CUDA ciertamente es posible ahora, ya que NVIDIA comenzó a lanzar los controlleres adecuados para macOS.

    El soporte de eGPU en macOS es un tema difícil, pero haré todo lo posible para responder a su pregunta.

    Comencemos con tarjetas gráficas! Por el bien del time, y porque estamos hablando de CUDA, nos quedaremos con las tarjetas de Nvidia. Cualquier tarjeta gráfica funcionará con los controlleres adecuados en Windows. Apple, sin embargo, solo admite oficialmente algunas tarjetas gráficas de Nvidia, principalmente las más antiguas. Sin embargo, los controlleres charts de Nvidia realmente funcionan en casi todas las tarjetas GeForce y Quadro de Nvidia, con una gran exception. Las tarjetas GTX 10xx NO FUNCIONARÁN. En cualquier sistema operativo Mac. Período. Los controlleres de Nvidia no son compatibles con esta tarjeta. Si está buscando potencia, querrá mirar la GTX 980Ti o Titan X (muchas buenas tarjetas Quadro también funcionarían bien).

    Ahora que lo tenemos cubierto, pasemos a los gabinetes de eGPU. Voy a suponer, porque usted mencionó específicamente eGPU, que ha presupuestado para un gabinete eGPU real (usemos el Nodo AKiTiO como ejemplo), en lugar de un chasis de expansión PCIe con una fuente de alimentación externa, ya que esto no es Una gran idea.

    Entonces ahora tenemos una tarjeta gráfica (GTX 980Ti) en un gabinete eGPU (Nodo AKiTiO) y queremos que funcione. Bueno, eso es más fácil decirlo que hacerlo. Hice un poco de investigación de eGPU hacia finales de 2016, y la información que recibí fue relativamente confusa, así que si alguien tiene comentarios o correcciones, por favor avíseme. Por lo que entiendo, para utilizar la potencia de la eGPU, debes conectar un monitor externo a la eGPU. No creo que pueda ejecutar la eGPU sin un monitor externo en macOS. Tampoco verás la pantalla de inicio de Apple en el monitor conectado a eGPU (a less que compres una tarjeta flash de MacVidCards), pero entonces deberías poder usar la eGPU para manejar tus charts.

    Suponiendo que hagas todo esto con éxito, deberías tener una potencia de charts habilitada con CUDA de gran potencia.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).