Construire à partir des sources sous Windows,Construire à partir des sources sous Windows

Créez un package pip TensorFlow à partir de la source et installez-le sur Windows.

Configuration pour Windows

Installez les outils de build suivants pour configurer votre environnement de développement Windows.

Installer Python et les dépendances du package TensorFlow

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

Installez les dépendances du package pip de TensorFlow :

pip3 install -U pip
pip3 install -U six numpy wheel packaging
pip3 install -U keras_preprocessing --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, consultez les configurations de compilation testées pour Windows. Configurez Bazel pour compiler du C++ .

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

Installer MSYS2

Installez MSYS2 pour les outils bin nécessaires à la création de TensorFlow. Si MSYS2 est installé dans C:\msys64 , ajoutez C:\msys64\usr\bin à votre variable d'environnement %PATH% . Ensuite, avec cmd.exe , exécutez :

pacman -Syu (requires a console restart)
pacman -S git patch unzip
pacman -S git patch unzip rsync

Installer Visual C++ Build Tools 2022

Installez les outils de build Visual C++ 2022. Ils sont fournis avec Visual Studio Community 2022, mais peuvent être installés séparément :

  1. Accédez aux téléchargements de Visual Studio ,
  2. Sélectionnez Outils pour Visual Studio ou Autres outils, Framework et Redistribuables ,
  3. Télécharger et installer :
    • Outils de création pour Visual Studio 2022
    • Redistribuables Microsoft Visual C++ pour Visual Studio 2022

Installer LLVM

  1. Accédez aux téléchargements LLVM ,
  2. Téléchargez et installez LLVM compatible Windows dans C:/Program Files/LLVM, par exemple, LLVM-17.0.6-win64.exe

Installer le support GPU (facultatif)

Consultez le guide de prise en charge du GPU 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 référentiel TensorFlow ( git est installé avec MSYS2) :

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

Le dépôt utilise par défaut la branche de développement master . Vous pouvez également consulter une branche de publication pour compiler :

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

Facultatif : Configuration des variables environnementales

Exécutez les commandes suivantes avant de lancer la commande de compilation pour éviter tout problème lors de la création des paquets : (Si les commandes ci-dessous ont été configurées lors de l'installation des paquets, veuillez les ignorer.) Exécutez set pour vérifier que tous les chemins sont correctement définis. Exécutez echo %Environmental Variable% , par exemple echo %BAZEL_VC% pour vérifier le chemin configuré pour une variable d'environnement spécifique.

Problème de configuration du chemin Python tensorflow:issue#59943 , tensorflow:issue#9436 , tensorflow:issue#60083

set PATH=path/to/python;%PATH% # [e.g. (C:/Python311)]
set PATH=path/to/python/Scripts;%PATH% # [e.g. (C:/Python311/Scripts)] 
set PYTHON_BIN_PATH=path/to/python_virtualenv/Scripts/python.exe 
set PYTHON_LIB_PATH=path/to/python virtualenv/lib/site-packages 
set PYTHON_DIRECTORY=path/to/python_virtualenv/Scripts 

Problème de configuration du chemin Bazel/MSVC/CLANG tensorflow:issue#54578

set BAZEL_SH=C:/msys64/usr/bin/bash.exe 
set BAZEL_VS=C:/Program Files/Microsoft Visual Studio/2022/BuildTools 
set BAZEL_VC=C:/Program Files/Microsoft Visual Studio/2022/BuildTools/VC 
set Bazel_LLVM=C:/Program Files/LLVM (explicitly tell Bazel where LLVM is installed by BAZEL_LLVM, needed while using CLANG)
set PATH=C:/Program Files/LLVM/bin;%PATH% (Optional, needed while using CLANG as Compiler)

Facultatif : configurer la build

Les builds TensorFlow sont configurées par le fichier .bazelrc , situé dans le répertoire racine du dépôt. Les scripts ./configure ou ./configure.py permettent d'ajuster les paramètres courants.

Si vous devez modifier la configuration, exécutez le script ./configure à partir du répertoire racine du référentiel.

python ./configure.py

Ce script vous demande l'emplacement des dépendances TensorFlow et des options de configuration de build supplémentaires (par exemple, les options du compilateur). Voici un exemple d'exécution de python ./configure.py (votre session peut être différente) :

Construire et installer le package pip

La création du package pip se fait en deux étapes. Une commande bazel build crée un programme « package-builder ». Vous exécutez ensuite ce programme pour créer le package.

Construire le générateur de paquets

Le dépôt tensorflow:master a été mis à jour vers la version 2.x par défaut. Installez Bazel et utilisez bazel build pour créer le générateur de paquets TensorFlow.

bazel build //tensorflow/tools/pip_package:wheel

CPU uniquement

Utilisez bazel pour créer le générateur de packages TensorFlow avec prise en charge du processeur uniquement :

Construire avec MSVC
bazel build --config=opt --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
Construisez avec CLANG

Utilisez --config= win_clang pour créer TenorFlow avec le compilateur CLANG :

bazel build --config=win_clang --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu

Prise en charge du GPU

Pour créer le générateur de packages TensorFlow avec prise en charge GPU :

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

Commandes pour nettoyer le cache bazel pour résoudre les erreurs dues à des données en cache invalides ou obsolètes, bazel clean avec l'indicateur --expunge supprime les fichiers définitivement

bazel clean 
bazel clean --expunge  

Options de construction de Bazel

Utilisez cette option lors de la construction pour éviter les problèmes de création de paquets : tensorflow:issue#22390

--define=no_tensorflow_py_deps=true

Consultez la référence de la ligne de commande Bazel pour les options de construction .

La compilation de TensorFlow à partir des sources peut consommer beaucoup de RAM. Si votre système est limité en mémoire, limitez l'utilisation de la RAM par Bazel avec : --local_ram_resources=2048 .

Si vous construisez avec la prise en charge du GPU, ajoutez --copt=-nvcc_options=disable-warnings pour supprimer les messages d'avertissement nvcc.

Construire le package

Pour créer un package pip, vous devez spécifier l'option --repo_env=WHEEL_NAME. Le package sera créé selon le nom fourni. Par exemple :

Pour créer le package CPU tensorflow :

bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu

Pour créer un package nocturne, définissez tf_nightly au lieu de tensorflow , par exemple pour créer un package CPU nocturne :

bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tf_nightly_cpu

En conséquence, la roue générée sera située dans

bazel-bin/tensorflow/tools/pip_package/wheel_house/

Installer le paquet

Le nom du fichier .whl généré dépend de la version de TensorFlow et de votre plateforme. Utilisez pip install pour installer le package, par exemple :

pip install bazel-bin/tensorflow/tools/pip_package/wheel_house/tensorflow-version-tags.whl

Construire à l'aide du shell MSYS

TensorFlow peut également être créé à l'aide du shell MSYS. Effectuez les modifications ci-dessous, puis suivez les instructions précédentes pour la ligne de commande native Windows ( cmd.exe ).

Désactiver la conversion de chemin MSYS

MSYS convertit automatiquement les arguments ressemblant à des chemins Unix en chemins Windows, ce qui ne fonctionne pas avec bazel . (L'étiquette //path/to:bin est considérée comme un chemin absolu Unix car elle commence par une barre oblique.)

export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"

Définissez votre CHEMIN

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

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

Pour la prise en charge du GPU, ajoutez les répertoires bin CUDA et cuDNN à votre $PATH :

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

Configurations de build testées

processeur

Version Version Python Compilateur Créer des outils
tensorflow-2.20.0 3.9-3.13 CLANG 18.1.4 Bazel 7.4.1
tensorflow-2.19.0 3.9-3.12 CLANG 18.1.4 Bazel 6.5.0
tensorflow-2.18.0 3.9-3.12 CLANG 17.0.6 Bazel 6.5.0
tensorflow-2.17.0 3.9-3.12 CLANG 17.0.6 Bazel 6.5.0
tensorflow-2.16.1 3.9-3.12 CLANG 17.0.6 Bazel 6.5.0
tensorflow-2.15.0 3.9-3.11 MSVC 2019 Bazel 6.1.0
tensorflow-2.14.0 3.9-3.11 MSVC 2019 Bazel 6.1.0
tensorflow-2.12.0 3.8-3.11 MSVC 2019 Bazel 5.3.0
tensorflow-2.11.0 3.7-3.10 MSVC 2019 Bazel 5.3.0
tensorflow-2.10.0 3.7-3.10 MSVC 2019 Bazel 5.1.1
tensorflow-2.9.0 3.7-3.10 MSVC 2019 Bazel 5.0.0
tensorflow-2.8.0 3.7-3.10 MSVC 2019 Bazel 4.2.1
tensorflow-2.7.0 3,7-3,9 MSVC 2019 Bazel 3.7.2
tensorflow-2.6.0 3,6-3,9 MSVC 2019 Bazel 3.7.2
tensorflow-2.5.0 3,6-3,9 MSVC 2019 Bazel 3.7.2
tensorflow-2.4.0 3,6-3,8 MSVC 2019 Bazel 3.1.0
tensorflow-2.3.0 3,5-3,8 MSVC 2019 Bazel 3.1.0
tensorflow-2.2.0 3,5-3,8 MSVC 2019 Bazel 2.0.0
tensorflow-2.1.0 3,5-3,7 MSVC 2019 Bazel 0,27,1-0,29,1
tensorflow-2.0.0 3,5-3,7 MSVC 2017 Bazel 0.26.1
tensorflow-1.15.0 3,5-3,7 MSVC 2017 Bazel 0.26.1
tensorflow-1.14.0 3,5-3,7 MSVC 2017 Bazel 0,24,1-0,25,2
tensorflow-1.13.0 3,5-3,7 Mise à jour 3 de MSVC 2015 Bazel 0.19.0-0.21.0
tensorflow-1.12.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Bazel 0.15.0
tensorflow-1.11.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Bazel 0.15.0
tensorflow-1.10.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3
tensorflow-1.9.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3
tensorflow-1.8.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3
tensorflow-1.7.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3
tensorflow-1.6.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3
tensorflow-1.5.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3
tensorflow-1.4.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3
tensorflow-1.3.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3
tensorflow-1.2.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3
tensorflow-1.1.0 3,5 Mise à jour 3 de MSVC 2015 Cmake v3.6.3
tensorflow-1.0.0 3,5 Mise à jour 3 de MSVC 2015 Cmake v3.6.3

GPU

Version Version Python Compilateur Créer des outils cuDNN CUDA
tensorflow_gpu-2.10.0 3.7-3.10 MSVC 2019 Bazel 5.1.1 8.1 11.2
tensorflow_gpu-2.9.0 3.7-3.10 MSVC 2019 Bazel 5.0.0 8.1 11.2
tensorflow_gpu-2.8.0 3.7-3.10 MSVC 2019 Bazel 4.2.1 8.1 11.2
tensorflow_gpu-2.7.0 3,7-3,9 MSVC 2019 Bazel 3.7.2 8.1 11.2
tensorflow_gpu-2.6.0 3,6-3,9 MSVC 2019 Bazel 3.7.2 8.1 11.2
tensorflow_gpu-2.5.0 3,6-3,9 MSVC 2019 Bazel 3.7.2 8.1 11.2
tensorflow_gpu-2.4.0 3,6-3,8 MSVC 2019 Bazel 3.1.0 8.0 11.0
tensorflow_gpu-2.3.0 3,5-3,8 MSVC 2019 Bazel 3.1.0 7.6 10.1
tensorflow_gpu-2.2.0 3,5-3,8 MSVC 2019 Bazel 2.0.0 7.6 10.1
tensorflow_gpu-2.1.0 3,5-3,7 MSVC 2019 Bazel 0,27,1-0,29,1 7.6 10.1
tensorflow_gpu-2.0.0 3,5-3,7 MSVC 2017 Bazel 0.26.1 7.4 10
tensorflow_gpu-1.15.0 3,5-3,7 MSVC 2017 Bazel 0.26.1 7.4 10
tensorflow_gpu-1.14.0 3,5-3,7 MSVC 2017 Bazel 0,24,1-0,25,2 7.4 10
tensorflow_gpu-1.13.0 3,5-3,7 Mise à jour 3 de MSVC 2015 Bazel 0.19.0-0.21.0 7.4 10
tensorflow_gpu-1.12.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Bazel 0.15.0 7.2 9.0
tensorflow_gpu-1.11.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Bazel 0.15.0 7 9
tensorflow_gpu-1.10.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3 7 9
tensorflow_gpu-1.9.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3 7 9
tensorflow_gpu-1.8.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3 7 9
tensorflow_gpu-1.7.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3 7 9
tensorflow_gpu-1.6.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3 7 9
tensorflow_gpu-1.5.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3 7 9
tensorflow_gpu-1.4.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3 6 8
tensorflow_gpu-1.3.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3 6 8
tensorflow_gpu-1.2.0 3,5-3,6 Mise à jour 3 de MSVC 2015 Cmake v3.6.3 5.1 8
tensorflow_gpu-1.1.0 3,5 Mise à jour 3 de MSVC 2015 Cmake v3.6.3 5.1 8
tensorflow_gpu-1.0.0 3,5 Mise à jour 3 de MSVC 2015 Cmake v3.6.3 5.1 8