Google s'est engagé à promouvoir l'équité raciale pour les communautés noires. Regarde comment.

Compiler à partir de la source sous Windows

Ce guide explique comment compiler un package pip TensorFlow à partir de la source et l'installer sous Windows.

Configuration pour Windows

Installez les outils de compilation suivants pour configurer un environnement de développement Windows.

Installer Python et les dépendances de package TensorFlow

Installez une version 64 bits de Python 3.5.x ou 3.6x pour Windows. Sélectionnez la fonctionnalité facultative pip et ajoutez-la à votre variable d'environnement %PATH%.

Installez les dépendances du package pip TensorFlow :

pip3 install six numpy wheel
pip3 install keras_applications==1.0.6 --no-deps
pip3 install keras_preprocessing==1.0.5 --no-deps

Les dépendances sont répertoriées dans le fichier setup.py sous REQUIRED_PACKAGES.

Installer Bazel

Installez Bazel, l'outil de compilation utilisé pour compiler TensorFlow. Pour la version de Bazel requise, consultez la page Configurations de compilation testées pour Windows. Configurez Bazel pour compiler C++.

Ajoutez l'emplacement de l'exécutable Bazel à votre variable d'environnement %PATH%.

Installer MSYS2

Installez MSYS2 pour disposer des outils binaires nécessaires à la compilation de TensorFlow. Si MSYS2 est installé dans C:\msys64, ajoutez C:\msys64\usr\bin à votre variable d'environnement %PATH%. Ensuite, à l'aide de l'outil cmd.exe, exécutez la commande suivante :

pacman -S git patch unzip

Installer Visual C++ Build Tools 2019

Installez Visual C++ Build Tools 2019. Ce package est fourni avec Visual Studio 2019, mais il peut également être installé séparément :

  1. Accédez à la page de téléchargement de Visual Studio.
  2. Sélectionnez Redistributables et outils de génération.
  3. Téléchargez et installez les éléments suivants :
    • Redistributable Microsoft Visual C++ 2019
    • Microsoft Build Tools 2019

Installer la compatibilité avec les GPU (facultatif)

Consultez le guide sur la compatibilité avec les GPU sous Windows pour installer les pilotes et les logiciels supplémentaires requis pour exécuter TensorFlow sur un GPU.

Télécharger le code source de TensorFlow

Utilisez Git pour cloner le dépôt TensorFlow (git est installé avec MSYS2) :

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

Le dépôt est défini par défaut sur la branche de développement master. Vous pouvez également effectuer la compilation en vous positionnant sur une branche de publication :

git checkout branch_name  # r1.9, r1.10, etc.

Configurer la compilation

Configurez la compilation pour votre système en exécutant la commande suivante à la racine de votre arborescence source TensorFlow :

python ./configure.py

Le script vous invite à indiquer l'emplacement des dépendances TensorFlow et à définir des options de configuration de compilation supplémentaires (indicateurs de compilation, par exemple). Voici un exemple d'exécution de python ./configure.py (votre session peut se présenter différemment) :

Options de configuration

Pour inclure la compatibilité avec les GPU, spécifiez les versions de CUDA et de cuDNN. Si plusieurs versions de CUDA ou de cuDNN sont installées sur votre système, définissez-la explicitement au lieu d'utiliser la version par défaut. La commande ./configure.py crée des liens symboliques vers les bibliothèques CUDA de votre système. Ainsi, si vous modifiez les chemins d'accès de votre bibliothèque CUDA, cette étape de configuration doit être exécutée à nouveau avant la compilation.

Créer le package pip

TensorFlow 2.x

Le dépôt tensorflow:master a été mis à jour pour la version 2.x. Installez Bazel et utilisez bazel build pour créer le package TensorFlow.

bazel build //tensorflow/tools/pip_package:build_pip_package

TensorFlow 1.x

Pour compiler la version 1.x de TensorFlow à partir de la branche master, utilisez bazel build --config=v1 pour créer un package TensorFlow 1.x.

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

Processeur uniquement

Utilisez bazel pour préparer le compilateur de packages TensorFlow avec la compatibilité du processeur uniquement :

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

Compatibilité avec les GPU

Pour créer un package TensorFlow avec la compatibilité GPU, procédez comme suit :

bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package

Options de compilation Bazel

Utilisez cette option lors de la compilation pour éviter le problème suivant lors de la création du package : tensorflow:issue#22390

--define=no_tensorflow_py_deps=true

Consultez la documentation de référence sur la ligne de commande Bazel pour connaître les options de compilation.

Compiler TensorFlow à partir de la source peut utiliser beaucoup de mémoire RAM. Si votre système dispose d'une mémoire RAM limitée, vous pouvez restreindre l'utilisation qu'en fait Bazel en ajoutant l'argument : --local_ram_resources=2048.

Si vous effectuer une compilation pour la compatibilité GPU, ajoutez l'argument --copt=-nvcc_options=disable-warnings pour désactiver les messages d'avertissement nvcc.

Créer le package

La commande bazel build crée un fichier exécutable intitulé build_pip_package. Il s'agit du programme qui permet de créer le package pip. Ainsi, la commande suivante crée un package .whl dans le répertoire C:/tmp/tensorflow_pkg :

bazel-bin\tensorflow\tools\pip_package\build_pip_package C:/tmp/tensorflow_pkg

Bien qu'il soit possible de créer des configurations CUDA et non-CUDA sous la même arborescence source, nous vous recommandons d'exécuter bazel clean lorsque vous passez de l'une à l'autre.

Installer le package

Le nom du fichier .whl généré dépend de la version de TensorFlow et de votre plate-forme. Utilisez la commande pip3 install pour installer le package, comme dans l'exemple suivant :

pip3 install C:/tmp/tensorflow_pkg/tensorflow-version-cp36-cp36m-win_amd64.whl

Compiler à l'aide de l'interface système MSYS

TensorFlow peut également être compilé à l'aide de l'interface système MSYS. Pour ce faire, effectuez les modifications ci-dessous, puis suivez les instructions précédentes pour l'outil de ligne de commande natif de Windows (cmd.exe).

Désactiver la conversion des chemin d'accès de MSYS

MSYS convertit automatiquement les arguments qui ressemblent à des chemins Unix à des chemins Windows, et cette opération n'est pas compatible avec bazel. (Le libellé //path/to:bin est considéré comme un chemin absolu Unix, car il commence par une barre oblique.)

export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"

Définir la variable PATH

Ajoutez les répertoires d'installation de Bazel et de Python à votre variable d'environnement $PATH. Si Bazel est installé dans C:\tools\bazel.exe et Python dans C:\Python36\python.exe, définissez la variable PATH à l'aide des commandes suivantes :

# Use Unix-style with ':' as separator
export PATH="/c/tools:$PATH"
export PATH="/c/Python36:$PATH"

Pour inclure la compatibilité avec les GPU, ajoutez les répertoires CUDA et cuDNN à votre variable $PATH :

export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0/bin:$PATH"
export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0/extras/CUPTI/libx64:$PATH"
export PATH="/c/tools/cuda/bin:$PATH"

Configurations de compilation testées

Processeur

VersionVersion PythonCompilateurOutils de compilation
tensorflow-2.0.03.5-3.7MSVE 2017Bazel 0.26.1
tensorflow-1.14.03.5-3.7MSVE 2017Bazel 0.24.1-0.25.2
tensorflow-1.13.03.5-3.7MSVC 2015 mise à jour 3Bazel 0.19.0-0.21.0
tensorflow-1.12.03.5-3.6MSVC 2015 mise à jour 3Bazel 0.15.0
tensorflow-1.11.03.5-3.6MSVC 2015 mise à jour 3Bazel 0.15.0
tensorflow-1.10.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.3
tensorflow-1.9.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.3
tensorflow-1.8.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.3
tensorflow-1.7.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.3
tensorflow-1.6.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.3
tensorflow-1.5.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.3
tensorflow-1.4.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.3
tensorflow-1.3.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.3
tensorflow-1.2.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.3
tensorflow-1.1.03.5MSVC 2015 mise à jour 3Cmake 3.6.3
tensorflow-1.0.03.5MSVC 2015 mise à jour 3Cmake 3.6.3

GPU

VersionVersion PythonCompilateurOutils de compilationcuDNNCUDA
tensorflow_gpu-2.0.03.5-3.7MSVE 2017Bazel 0.26.17.410
tensorflow_gpu-1.14.03.5-3.7MSVE 2017Bazel 0.24.1-0.25.27.410
tensorflow_gpu-1.13.03.5-3.7MSVC 2015 mise à jour 3Bazel 0.19.0-0.21.07.410
tensorflow_gpu-1.12.03.5-3.6MSVC 2015 mise à jour 3Bazel 0.15.079
tensorflow_gpu-1.11.03.5-3.6MSVC 2015 mise à jour 3Bazel 0.15.079
tensorflow_gpu-1.10.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.379
tensorflow_gpu-1.9.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.379
tensorflow_gpu-1.8.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.379
tensorflow_gpu-1.7.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.379
tensorflow_gpu-1.6.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.379
tensorflow_gpu-1.5.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.379
tensorflow_gpu-1.4.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.368
tensorflow_gpu-1.3.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.368
tensorflow_gpu-1.2.03.5-3.6MSVC 2015 mise à jour 3Cmake 3.6.35.18
tensorflow_gpu-1.1.03.5MSVC 2015 mise à jour 3Cmake 3.6.35.18
tensorflow_gpu-1.0.03.5MSVC 2015 mise à jour 3Cmake 3.6.35.18