web-dev-qa-db-fra.com

tensorflow support du gpu sous Mac OS

Selon

https://www.tensorflow.org/install/install_mac Remarque: à partir de la version 1.2, TensorFlow ne fournit plus de prise en charge de GPU sous Mac OS X. La prise en charge de GPU pour OS X n'est plus fournie.

Cependant, je voudrais exécuter une configuration e-gpu comme un nœudkitio avec un 1080 ti via Thunderbolt 3.

Quelles étapes sont nécessaires pour que cette configuration fonctionne? Jusqu'ici je sais que

sont requis. Que faut-il de plus pour que CUDA/tensorflow fonctionne?

27
Georg Heiler

J'ai écrit un petit tutoriel sur compilation de TensorFlow 1.2 avec le support GPU sur macOS . Je pense qu'il est habituel de copier les parties pertinentes dans SO, alors voici:

  1. Si vous n’avez jamais utilisé de configuration TensorFlow-GPU auparavant, je suggère d’abord de tout configurer avec TensorFlow 1.0 ou 1.1, où vous pouvez toujours utiliser pip install tensorflow-gpu. Une fois que cela fonctionnera, la configuration CUDA fonctionnera également si vous compilez TensorFlow. Si vous avez un GPU externe, la réponse de YellowPillow (ou le mien ) peut vous aider à mettre les choses en place.
  2. Suivez le tutoriel officiel “ Installation de TensorFlow à partir de sources ”, mais remplacez évidemment git checkout r1.0 par git checkout r1.2. Lorsque vous utilisez ./configure, faites attention au chemin de la bibliothèque Python: il suggère parfois un chemin incorrect. J'ai choisi les options par défaut dans la plupart des cas, à l'exception de: Python chemin de la bibliothèque, support CUDA et capacité de calcul. N'utilisez pas Clang en tant que compilateur CUDA: cela vous mènera à une erreur "Configuration incohérente du code croisé; aucune chaîne d'outils correspondant à 'local_darwin' trouvée pour cpu 'darwin'. ”. En utilisant /usr/bin/gcc comme compilateur, vous utiliserez réellement Clang fourni avec macOS/XCode. Ci-dessous ma configuration complète.
  3. TensorFlow 1.2 attend une bibliothèque C appelée OpenMP, qui n'est pas disponible dans le Apple Clang actuel. Il devrait accélérer TensorFlow multithread sur des machines multiprocesseurs, mais il sera également compilé sans ce dernier. Nous pourrions essayer de construire TensorFlow avec gcc 4 (ce que je n’ai pas géré) ou simplement supprimer la ligne contenant OpenMP du fichier de construction. Dans mon cas, j'ai commenté la ligne 98 de tensorflow/third_party/gpus/cuda/BUILD.tpl, qui contained linkopts = [“-lgomp”] (mais l'emplacement de la ligne peut évidemment changer). Certaines personnes avaient des problèmes avec zmuldefs , mais je suppose que c'était avec les versions précédentes; Merci à Udnaan d’avoir fait remarquer que vous pouvez commenter ces lignes.
  4. J'ai eu quelques problèmes à compiler avec la dernière version bazel 0.5.3, je suis donc revenu à l’utilisation de la 0.4.5 déjà installée. Mais certaines discussions dans un numéro de github mentionné que bazel 0.5.2 n’avait pas non plus le problème.
  5. Maintenant, construisez avec bazel et terminez l'installation en suivant les instructions du guide d'installation officiel. Sur mon iMac à 3,2 GHz, cela prenait environ 37 minutes.

Utilisation de python chemin de la bibliothèque: /Users/m/code/3rd/conda/envs/p3gpu/lib/python3.6/site-packages

Souhaitez-vous construire TensorFlow avec le support MKL? [y/N] N

Aucun support MKL ne sera activé pour TensorFlow

Veuillez spécifier les indicateurs d'optimisation à utiliser lors de la compilation lorsque l'option bazel "--config = opt" est spécifiée [La valeur par défaut est -march = native]:

Souhaitez-vous construire TensorFlow avec le support de Google Cloud Platform? [y/N]

Aucune prise en charge de Google Cloud Platform ne sera activée pour TensorFlow.

Souhaitez-vous construire TensorFlow avec le support du système de fichiers Hadoop? [y/N]

Aucune prise en charge du système de fichiers Hadoop ne sera activée pour TensorFlow.

Voulez-vous construire TensorFlow avec le compilateur juste-à-temps XLA (expérimental)? [y/N]

Aucune prise en charge XLA ne sera activée pour TensorFlow

Souhaitez-vous construire TensorFlow avec le support VERBS? [y/N]

Aucun support VERBS ne sera activé pour TensorFlow.

Souhaitez-vous construire TensorFlow avec le support OpenCL? [y/N]

Aucun support OpenCL ne sera activé pour TensorFlow

Souhaitez-vous construire TensorFlow avec le support CUDA? [y/N] y

Le support CUDA sera activé pour TensorFlow

Voulez-vous utiliser Clang comme compilateur CUDA? [y/N]

nvcc sera utilisé comme compilateur CUDA

Spécifiez la version du SDK CUDA que vous souhaitez utiliser, par exemple. 7.0. [Laisser vide pour utiliser les valeurs par défaut du système]:

Veuillez spécifier l'emplacement d'installation de la boîte à outils CUDA. Reportez-vous à README.md pour plus de détails. [Par défaut/usr/local/cuda]:

Veuillez spécifier quel gcc doit être utilisé par nvcc en tant que compilateur hôte. [La valeur par défaut est/usr/bin/gcc]:

Veuillez spécifier la version du nom de fichier que vous souhaitez utiliser. [Laisser vide pour utiliser les valeurs par défaut du système]:

Veuillez spécifier l'emplacement où la bibliothèque cuDNN est installée. Reportez-vous à README.md pour plus de détails. [Par défaut/usr/local/cuda]:

Veuillez spécifier une liste des fonctionnalités de calcul Cuda séparées par des virgules que vous souhaitez créer.

Vous pouvez trouver la capacité de calcul de votre appareil à l'adresse suivante: https://developer.nvidia.com/cuda-gpus .

Veuillez noter que chaque capacité de calcul supplémentaire augmente considérablement votre temps de construction et votre taille binaire.

[La valeur par défaut est: "3.5,5.2"]: 6.1

INFO: Démarrer propre (cela peut prendre un peu de temps). Pensez à utiliser --async si le nettoyage prend plus de plusieurs minutes.

Configuration terminée

23
Mattias Arro

En supposant que vous ayez déjà configuré votre boîte eGPU et connecté le câble TB3 de l’eGPU au port TB3:

1. Téléchargez le script automate-eGPU et exécutez-le

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

Vous pourriez avoir une erreur en disant:

"Démarrez dans la partition de récupération et tapez: csrutil disable"

Tout ce que vous avez à faire maintenant est de redémarrer votre ordinateur et maintenez-le enfoncé cmd + R pour activer le mode de récupération. Ensuite, localisez le terminal en mode de récupération et entrez:

csrutil disable

Puis redémarrez votre ordinateur et relancez le automate-eGPU.sh script

2: Télécharger et installer CUDA

Exécutez le cuda_8.0.61_mac.dmg fichier et suivez la phase d’installation. Ensuite, vous devrez définir les chemins.

Allez sur votre terminal et tapez:

vim ~/.bash_profile

Ou si vous avez stocké vos variables d'environnement et ajoutez ensuite ces trois lignes:

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. Téléchargement et installation de cuDNN

Pour télécharger cuDNN est un peu plus compliqué, vous devez vous inscrire en tant que développeur pour Nvidia, puis vous pourrez le télécharger. Assurez-vous de télécharger cuDNN v5.1 Library for OSX car il s’agit de celui attendu par Tensorflow v1.1. Notez que nous ne pouvons pas utiliser Tensorflow v1.2 car il n’existe pas de prise en charge de GPU pour Mac: ((

[! [Entrez la description de l'image ici] [1]] [1]

Maintenant, vous allez télécharger un fichier Zip appelé cudnn-8.0-osx-x64-v5.1.tgz, décompressez et, qui créera un fichier nommé cuda et cd en utilisant le terminal. En supposant que le dossier est dans Téléchargements

Terminal ouvert et tapez:

cd ~/Downloads/cuda

Maintenant, nous devons copier les fichiers cuDNN dans lesquels CUDA est stocké ainsi:

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

4. Maintenant, installez Tensorflow-GPU v1.1 dans votre conda/virtualenv

Depuis que j’utilise conda j’ai créé un nouvel environnement avec Terminal:

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

5. Vérifiez que cela fonctionne

Vous devez d’abord redémarrer votre ordinateur puis:

Dans le terminal, tapez python et entrez:

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 vous avez un GPU, cela devrait fonctionner sans problème. Si c'est le cas, vous devriez obtenir une trace de la pile (juste quelques messages d'erreur) et y inclure

Impossible d'assigner un périphérique au nœud 'MatMul': impossible de satisfaire à la spécification de périphérique explicite '/ device: GPU: 0' car aucun périphérique correspondant à cette spécification n'est enregistré dans ce processus.

Sinon, vous avez terminé, félicitations! Le mien vient d'être installé aujourd'hui et il fonctionne parfaitement :)

7
YellowPillow

Je pourrais enfin le faire fonctionner avec la configuration suivante

Matériel

Versions de logiciels

  • macOS Sierra version 10.12.6
  • Version du pilote GPU: 10.18.5 (378.05.05.25f01)
  • Version du pilote CUDA: 8.0.61
  • cuDNN v5.1 (20 janvier 2017), pour CUDA 8.0: Besoin de s'inscrire et de télécharger
  • tensorflow-gpu 1.0.0
  • Keras 2.0.8

J'ai écrit un Gist avec la procédure:

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

6
Julian

Voici ma solution pour installer un e-gpu sur un mac. Tensorflow ne supporte plus tensorflow-gpu, il existe donc certainement de meilleures approches pour le faire fonctionner:

Ma configuration:

  • iMac 27 'fin 2012
  • Nœud Aktio
  • GTX 1080 ti
  • 3 écrans: l’un connecté à la GTX 1080 et les autres directement branchés sur le mac.

Avantages de l'installation du bootcamp Windows:

  • Vous pouvez utiliser pip pour installer tensorflow-gpu.
  • Bon support du GPU 1080 ti (pilote d'affichage téléchargeable)

Howto:

  • Installez Windows 10 avec bootcamp. Ne connectez pas le noeud Akito pour le moment.
  • Téléchargez et installez le pilote d’affichage de votre gpu à partir de page de téléchargement de NVIDIA
  • Installer Visual Studio
    • Si vous souhaitez utiliser CUDA 9.x, vous pouvez installer Visual Studio 2017.
    • Sinon, installez Visual Studio 2015
  • Installer CUDA et CuDNN
    • Notez que la version de tensorflow-gpu doit correspondre à votre version de Cuda et à votre version de CudNN. Voir les versions disponibles du tensorflow ici .
    • Après l'installation de CUDA, vous pouvez déplacer les fichiers CuDNN décompressés dans le dossier CUDA à l'adresse suivante: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0. Déplacez les fichiers lib dans le dossier lib, les fichiers bin dans le dossier bin et les fichiers à inclure dans le dossier à inclure.
  • Installez Python 3.5 +
    • Vous avez besoin d’une version 64 bits pour installer tensorflow-gpu avec pip
    • Python 2.7 ne fonctionnera pas.
  • Installer le tensorflow avec pip:

Commander:

pip install tensorflow-gpu==1.5.0rc0

Vérifiez votre installation

Le pilote d'affichage a été installé correctement lorsque vous pouvez connecter un écran à la carte GTX 1080 ti.

Appelez C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe pour vérifier si votre carte vidéo est disponible pour CUDA.

Exécutez la commande tensorflow suivante pour voir les périphériques disponibles:

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

Dépannage et astuces:

  • Windows veut mettre à jour votre pilote GTX 1080. N'autorisez jamais cela car vous ne pourrez plus redémarrer votre ordinateur! Un écran noir avec des points en mouvement apparaîtra avant que vous puissiez vous connecter à Windows. Jeu terminé! Utilisez uniquement le pilote d’affichage à partir de page de téléchargement de NVIDIA .
  • Si vous ne pouvez plus démarrer Windows sous OSX, appuyez sur la touche Alt au démarrage pour réinstaller Windows.

Solution Ubuntu:

Je ne pouvais pas trouver de solution de travail, mais voici quelques approches:

Il semble que ma GTX 680 (iMac) et ma GTX 1080 ti ne fonctionnent pas ensemble. Ubuntu ne peut plus être démarré après l’installation du pilote d’affichage via apt-get: buntu ne démarre plus . Essayez de télécharger le pilote d’affichage officiel depuis page de téléchargement de NVIDIA .

Solution OSX: Le GPU Tensorflow n’est pris en charge que jusqu’à tensorflow 1.1. J'ai essayé d'installer une version plus récente mais je ne pouvais pas construire tensorflow-gpu avec le support cuda. Voici quelques approches:

  • Installez OSX Sierra pour utiliser le script e-gp . High Sierra ne fonctionnera pas (13 janvier 2018). Passez à sierra en supprimant toutes vos partitions. Appuyez ensuite sur Commande + R au démarrage pour charger la récupération Internet. N'oubliez pas de sauvegarder vos données en premier.
  • Installez script e-gp .
  • Si tensorflow-gpu 1.1 vous suffit, vous pouvez simplement installer via pip, sinon vous devez construire votre pip avec bazel.

Conclusion: L'installation de Windows est plus simple que celle d'OSX ou d'Ubuntu car les pilotes d'affichage fonctionnent correctement et tensorflow et ne doivent pas être générés vous-même. Vérifiez toujours la version du logiciel que vous utilisez. Le doit correspondre exactement.

J'espère que cela t'aidera!

2
Tobias Ernst