[Mise à jour 1] Comment créer et installer le processeur graphique / processeur TensorFlow pour Windows à partir du code source à l'aide de bazel et Python 3.6

Ceci est une mise à jour de mon histoire précédente. Quoi de neuf ici:

  • TensorFlow v1.11
  • CUDA v10.0
  • cuDNN v7.3

Il y a un guide sur le site officiel. Il n'est pas très complet mais parfois utile.

Sommaire

  1. Installer Git pour Windows
  2. Installer Bazel
  3. Installer MSYS2 x64 et les outils de ligne de commande
  4. Installer Visual Studio 2017 Build Tools, y compris Visual Studio 2015 Build Tools
  5. Installer Python 3.6 64 bits
  6. Installez NVIDIA CUDA 10.0 et cuDNN 7.3 (pour l'accélération GPU)
  7. Configurer l'environnement de génération
  8. Clonez le code source de TensorFlow v1.11 et appliquez le correctif obligatoire
  9. Configurer les paramètres de construction
  10. Créer TensorFlow à partir de sources
  11. Créer un fichier de roue TensorFlow pour Python 3.6
  12. Installez le fichier de roue TensorFlow pour Python 3.6 et vérifiez le résultat

Étape 1: installer Git pour Windows

Téléchargez et installez Git pour Windows. Je le prends ici. Assurez-vous que le chemin d'accès à git.exe est ajouté à la variable d'environnement% PATH%. J'installe Git sur le

C: \ Bin \ Git

dossier pour ce tutoriel.

Étape 2: installer MSYS2 x64 et les outils de ligne de commande

Téléchargez et installez la distribution 64 bits ici. Bazel utilise grep, patch, unzip et d'autres ports des outils Unix pour construire des sources. Vous pouvez essayer de trouver des binaires autonomes pour chacun d'eux, mais je préfère utiliser le bundle MSYS2. Je l'installe sur le

C: \ Bin \ msys64

dossier pour ce tutoriel. Vous devez ajouter un dossier avec des outils à la variable d'environnement% PATH%. Il s'agit de «C: \ Bin \ msys64 \ usr \ bin» dans mon cas.

Démarrez le raccourci «MSYS2 MinGW 64 bits» à partir du menu Démarrer. Exécutez la commande suivante pour mettre à jour (redémarrez «MSYS2 MinGW 64 bits» s'il vous le demande):

pacman -Syu

Exécutez ensuite:

pacman -Su

Les outils d'installation sont nécessaires pour la construction:

pacman -S Patch décompresser

Fermez le shell «MSYS2 MinGW 64 bits» par la commande «exit». Nous n'en avons plus besoin.

Étape 3: installer Visual Studio 2017 Build Tools, y compris Visual Studio 2015 Build Tools

Nous devons installer «VC ++ 2015.3 v14.00 (v140) toolset for desktop» à partir de Visual Studio 2017 Build Tools pour construire TensorFlow v1.11:

Étape 4: installer Bazel

Téléchargez le dernier Bâle ici. Recherchez le fichier bazel- -windows-x86_64.exe. J'ai testé ce tutoriel avec bazel 0.17.2. Renommez le binaire en bazel.exe et déplacez-le dans un répertoire sur votre% PATH%, afin que vous puissiez exécuter Bazel en tapant bazel dans n'importe quel répertoire. Voir les détails de l'installation de Bazel pour Windows x64 en cas de problème.

Ajoutez la variable d'environnement globale BAZEL_SH pour l'emplacement bash. Mon chemin est

C: \ Bin \ msys64 \ usr \ bin \ bash.exe

Ajoutez la variable d'environnement global BAZEL_VC pour l'emplacement de la chaîne d'outils «VC ++ 2015.3 v14.00 (v140) pour ordinateur de bureau»:

C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC

Étape 5: installer Python 3.6 64 bits

TensorFlow ne prend pas en charge Python 3.7, vous devez donc installer la version 3.6.
Il semble que TensorFlow v1.11 ne supporte plus Anaconda / Miniconda pour la construction - j'obtiens une erreur étrange. C’est pourquoi j’utilise un environnement virtuel Python pour la construction.

Python 3.6 est disponible en téléchargement ici. Installez-le et ajoutez l'emplacement à python.exe à la variable% PATH%.

Étape 6: Installez NVIDIA CUDA 10.0 et cuDNN 7.3 (pour l'accélération GPU)

Cette section est réelle si vous disposez d'une carte graphique NVIDIA prenant en charge CUDA. Sinon, ignorez cette section.
Voir l'installation étape par étape de CUDA ici si vous avez besoin d'aide. Je copie-colle ce guide mais coupe quelques détails.

Accédez à https://developer.nvidia.com/cuda-downloads et téléchargez le programme d'installation CUDA 10.0 pour Windows [votre version]. Pour moi, la version est Windows 10.

Installez-le à l'emplacement par défaut avec les paramètres par défaut, mais décochez l'option d'intégration VisualStudio. Il mettra à jour votre pilote GPU si nécessaire et redémarrera.

Aller à exécuter (Win + R) type cmd

La commande suivante vérifie la version de nvcc et s'assure qu'elle est définie dans la variable d'environnement path.

nvcc --version

Passez ensuite à https://developer.nvidia.com/cudnn (adhésion requise).

Après la connexion, téléchargez les éléments suivants:

cuDNN v7.3.1 Library for Windows [votre version] pour moi Windows 10. Aller au dossier téléchargé et extraire le fichier zip.

Allez dans le dossier extrait et copiez tous les fichiers et le dossier du dossier cuda (par exemple bin, include, lib) et collez-le dans «C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0».

La dernière étape consiste à ajouter «C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ extras \ CUPTI \ libx64» à la variable d'environnement% PATH%.

Étape 7: configurer l'environnement de génération

Démarrez le shell VC ++ 2015 pour x64 (raccourci «Invite de commandes des outils natifs VS2015 x64») dans le menu Démarrer.

Ensuite, vous devez créer, activer et configurer l'environnement Python. Exécutez à l'intérieur des commandes du shell «Invite de commandes des outils natifs VS2015 x64» ci-dessous (corrigez les chemins en fonction de vos emplacements).

pip3 install -U virtualenv
virtualenv --system-site-packages C: \ Users \ amsokol \ tensorflow-v1.11
C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ activate.bat

Votre shell devrait ressembler à ça après l'application des commandes:

Installez les packages Python obligatoires:

pip3 installer six roue numpy
pip3 install keras_applications == 1.0.5 --no-deps
pip3 install keras_preprocessing == 1.0.3 --no-deps

Exécutez «pip3 list» pour vous assurer que les packages obligatoires sont installés:

C'est tout pour le moment. Ne fermez pas la coque.

Étape 8: Clonez le code source de TensorFlow et appliquez le correctif obligatoire

Tout d'abord, vous devez choisir le dossier où cloner le code source de TensorFlow. Il s'agit de «C: \ Users \ amsokol \ Development \ tensorflow-build» dans mon cas. Revenir au shell et exécuter:

cd C: \ Users \ amsokol \ Development \ tensorflow-build

Cloner le code source:

git clone https://github.com/tensorflow/tensorflow

Commander la dernière version de 1.11:

cd tensorflow
git checkout v1.11.0

Maintenant, nous avons des sources.

Il existe un BUG dans la bibliothèque tierce eigen. Nous devons le réparer avant la construction.
  • Téléchargez le patch ici et enregistrez-le sous le nom de fichier eigen_half.patch dans le dossier third_party
  • Ajoutez patch_file = clean_dep («// third_party: eigen_half.patch»), ligne vers la section eigen_archive dans le fichier tensorflow / workspace.bzl.

Le fichier tensorflow / workspace.bzl devrait ressembler à ceci:

...
tf_http_archive (
  name = "eigen_archive",
  urls = [
"https://mirror.bazel.build/bitbucket.org/eigen/eigen/get/fd6845384b86.tar.gz",
    "https://bitbucket.org/eigen/eigen/get/fd6845384b86.tar.gz",
   ],
sha256 = "d956415d784fa4e42b6a2a45c32556d6aec9d0a3d8ef48baee2522ab762556a9",
  strip_prefix = "eigen-eigen-fd6845384b86",
  build_file = clean_dep ("// third_party: eigen.BUILD"),
  patch_file = clean_dep ("// third_party: eigen_half.patch"),
)
...

Terminé.

Étape 9: configurer les paramètres de génération

Assurez-vous que nous sommes dans le dossier racine du code source:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow

Exécutez le configurateur:

python ./configure.py

Tout d'abord, il demande l'emplacement de Python. Appuyez sur Entrée pour laisser la valeur par défaut:

...
Vous avez installé bazel 0.17.2.
Veuillez spécifier l'emplacement de python. [La valeur par défaut est C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ python.exe]:

Ensuite, il demande l'emplacement des chemins de bibliothèque Python. Appuyez sur Entrée pour laisser la valeur par défaut:

Traceback (dernier appel le plus récent):
  Fichier "", ligne 1, dans 
AttributeError: le module 'site' n'a pas d'attribut 'getsitepackages'
Chemins de bibliothèque Python possibles trouvés:
  C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-packages
Veuillez saisir le chemin de la bibliothèque Python à utiliser. La valeur par défaut est [C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-packages]

Ensuite, il pose des questions sur le support de nGraph. Nous n'en avons pas besoin. Appuyez sur "n":

Souhaitez-vous construire TensorFlow avec le support nGraph? [o / N]: n
Aucun support nGraph ne sera activé pour TensorFlow.

Ensuite, il pose des questions sur le soutien de CUDA:

Souhaitez-vous créer TensorFlow avec le support CUDA? [o / N]:

Répondez «y» si vous comptez utiliser l'accélération GPU. Sinon, appuyez sur "n".

Si Oui, le configurateur CUDA pose des questions supplémentaires:
Réponse 10.0 en tant que version du SDK CUDA:
Veuillez spécifier la version du SDK CUDA que vous souhaitez utiliser. [Laisser vide par défaut pour CUDA 9.0]: 10,0
Appuyez sur Entrée pour quitter l'emplacement par défaut de la boîte à outils CUDA:
Veuillez spécifier l'emplacement d'installation de la boîte à outils CUDA 10.0. Reportez-vous à README.md pour plus de détails. [La valeur par défaut est C: / Program Files / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Réponse 7.3.1 en tant que version cuDNN:
Veuillez spécifier la version cuDNN que vous souhaitez utiliser. [Laisser vide par défaut pour cuDNN 7.0]: 7.3.1
Appuyez sur Entrée pour quitter l'emplacement par défaut de la bibliothèque cuDNN:
Veuillez spécifier l'emplacement d'installation de la bibliothèque cuDNN 7. Reportez-vous à README.md pour plus de détails. [La valeur par défaut est C: / Program Files / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
La question suivante concerne les capacités de calcul de CUDA avec lesquelles construire. Vous pouvez trouver la capacité de calcul de votre appareil sur: https://developer.nvidia.com/cuda-gpus. J'ai GTX 1070, c'est pourquoi je réponds 6.1:
Veuillez spécifier une liste des capacités de calcul Cuda séparées par des virgules avec lesquelles vous souhaitez créer.
Vous pouvez trouver la capacité de calcul de votre appareil sur: https://developer.nvidia.com/cuda-gpus.
Veuillez noter que chaque capacité de calcul supplémentaire augmente considérablement votre temps de génération et votre taille binaire. [La valeur par défaut est: 3,5,7,0]: 6,1

La question suivante consiste à définir des indicateurs d'optimisation. J'ai un processeur Intel de 6e génération, c'est pourquoi je réponds / archivez: AVX2:

Veuillez spécifier les indicateurs d'optimisation à utiliser pendant la compilation lorsque l'option bazel "--config = opt" est spécifiée [La valeur par défaut est / arch: AVX]: / arch: AVX2

La dernière question concerne eigen. Répondez «y». Il réduit considérablement le temps de compilation.

Souhaitez-vous remplacer la forte ligne propre pour une compilation C ++ afin de réduire le temps de compilation? [O / n]: y
Eigen fort inline surchargé.

Configuration terminée. Construisons.

Étape 10: créer TensorFlow à partir de sources

Assurez-vous que nous sommes dans le dossier racine du code source:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
La construction prend beaucoup de temps. Je recommande fortement de désactiver le logiciel antivirus, y compris la protection en temps réel de Windows Defender Antivirus.

Exécuter la construction:

bazel build --config = opt // tensorflow / tools / pip_package: build_pip_package

Asseyez-vous et détendez-vous quelque temps.

Étape 11: créer un fichier de roue TensorFlow pour Python 3.6

Exécutez la commande pour créer un fichier de roue Python:

mkdir .. \ out
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out

Il échoue:

Il existe un problème connu. Regardez le dossier «bazel-bin \ tensorflow \ tools \ pip_package». Il contient un fichier «simple_console_for_windows.zip» de longueur nulle. C'est le problème. Bazel contient un utilitaire zip 32 bits qui échoue pour un fichier 2 Go plus gros. Voir les liens pour plus de détails et solution:

  • https://github.com/tensorflow/tensorflow/issues/20332
  • https://stackoverflow.com/questions/52394305/creating-pip-package-for-tensorflow-with-gpu-support-results-in-0-byte-simple-co

Il existe des étapes pour résoudre le problème:

cd. \ bazel-bin \ tensorflow \ tools \ pip_package

Ouvrez le fichier «simple_console_for_windows.zip-0.params» et supprimez la ligne contenant «mnist.zip»:

...
runfiles / org_tensorflow / tensorflow / contrib / eager / python / examples / gan / mnist.zip = bazel-out / x64_windows-opt / bin / tensorflow / contrib / eager / python / examples / gan / mnist.zip
...
Ça m'aide. Au cas où cela ne vous aiderait pas, supprimez simplement les autres lignes avec des fichiers zip (voir les détails ici). Le but de cette activité est de rendre la longueur de "simple_console_for_windows.zip" inférieure à 2 Go.

Supprimez le fichier vide «simple_console_for_windows.zip».

Regardez ensuite le dossier home. Vous devez voir le dossier avec un nom comme "_bazel_ ". C'est "_bazel_amsokol" dans mon cas. Il contient un dossier avec des fichiers de construction. C'est «lx6zoh4k» dans mon cas. Retour à l'interpréteur de commandes (corrigez en fonction des noms de dossier):

cd C: \ Users \ amsokol \ _bazel_amsokol \ lx6zoh4k \ execroot \ org_tensorflow

Créez manuellement le fichier «simple_console_for_windows.zip»:

external \ bazel_tools \ tools \ zip \ zipper \ zipper.exe vcC bazel-out / x64_windows-opt / bin / tensorflow / tools / pip_package / simple_console_for_windows.zip @ bazel-out / x64_windows-opt / bin / tensorflow / tools / pip_package / simple_console_for_windows.zip-0.params

Exécutez la commande pour créer un fichier de roue Python:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out

Il crée le fichier tensorflow-1.11.0-cp36-cp36m-win_amd64.whl dans le dossier ".. \ out".

Étape 12: Installez le fichier de roue TensorFlow pour Python 3.6 et vérifiez le résultat

Exécutez la commande pour installer le fichier de roue Python:

installation pip3 .. \ out \ tensorflow-1.11.0-cp36-cp36m-win_amd64.whl

Quittez le répertoire «tensorflow» (des erreurs se produisent parfois lorsque j'exécute des scripts Python dans le dossier de code source de Tensoflow - je ne connais pas la raison):

cd ..

Pour vérifier le script de téléchargement ici ou copier-coller et exécuter:

importer tensorflow en tant que tf
bonjour = tf.constant ('Bonjour, TensorFlow!')
session = tf.Session ()
print (session.run (bonjour))

Si le système sort ce qui suit, alors tout va bien:

Bonjour, TensorFlow!

Ma sortie:

Vous avez maintenant installé avec succès TensorFlow sur une machine Windows.

Faites-moi savoir dans les commentaires ci-dessous si cela a fonctionné pour vous. Ou si vous avez des erreurs. Merci!