Compilez un package pip TensorFlow à partir du code source et installez-le sous Windows.
Programme d'installation pour Windows
Installez les outils de compilation suivants pour configurer votre environnement de développement Windows.
Installez Python et les dépendances du package TensorFlow.
Installez une version 64 bits de Python 3.9 ou supérieure pour Windows . Sélectionnez pip comme fonctionnalité optionnelle et ajoutez-le à votre variable d'environnement %PATH% .
Installez les dépendances du package pip TensorFlow :
pip3 install -U pippip3 install -U six numpy wheel packagingpip3 install -U keras_preprocessing --no-deps
Les dépendances sont listées dans le fichier setup.py sous REQUIRED_PACKAGES .
Installez Bazel
Installez Bazel , l'outil de compilation utilisé pour TensorFlow. Pour connaître la version de Bazel, consultez les configurations de compilation testées sous Windows. Configurez Bazel pour compiler du code C++ .
Ajoutez l'emplacement de l'exécutable Bazel à votre variable d'environnement %PATH% .
Installer MSYS2
Installez MSYS2 pour obtenir les 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 cmd.exe , exécutez :
pacman -Syu (requires a console restart) pacman -S git patch unzip pacman -S git patch unzip rsync
Installer les outils de compilation Visual C++ 2022
Installez les outils de génération Visual C++ 2022. Ils sont inclus dans Visual Studio Community 2022 , mais peuvent être installés séparément :
- Rendez-vous sur la page de téléchargement de Visual Studio ,
- Sélectionnez Outils pour Visual Studio ou Autres outils, frameworks et redistribuables ,
- Télécharger et installer :
- Outils de génération pour Visual Studio 2022
- Composants redistribuables Microsoft Visual C++ pour Visual Studio 2022
Installer LLVM
- Rendez-vous sur la page de téléchargement de LLVM ,
- Téléchargez et installez LLVM compatible avec 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 des GPU Windows pour installer les pilotes et les logiciels supplémentaires nécessaires à l'exécution de 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.gitcd tensorflow
Le dépôt utilise par défaut la branche de développement master . Vous pouvez également utiliser une branche de publication pour la compilation :
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 afin d'éviter les problèmes lors de la création du paquet : (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, puis echo %Environmental Variable% , par exemple echo %BAZEL_VC% pour vérifier le chemin défini 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 version
La configuration des installations TensorFlow s'effectue via le fichier .bazelrc situé à la racine du dépôt. Les scripts ./configure ou ./configure.py permettent de modifier les paramètres courants.
Si vous devez modifier la configuration, exécutez le script ./configure depuis le répertoire racine du dépôt.
python ./configure.py
Ce script vous invite à indiquer l'emplacement des dépendances de TensorFlow et vous demande des options de configuration supplémentaires (par exemple, des options de compilation). Voici un exemple d'exécution de la commande python ./configure.py (votre session peut différer) :
Compilez et installez le package pip
La création du paquet pip se fait en deux étapes. Une commande bazel build génère un programme « package-builder ». Il suffit ensuite d'exécuter ce programme pour créer le paquet.
Construire le générateur de paquets
Le dépôt tensorflow:master a été mis à jour pour utiliser 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
Processeur uniquement
Utilisez bazel pour créer le générateur de packages TensorFlow avec prise en charge exclusive du processeur :
Générer 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 compiler 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 paquets 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
Les commandes permettant de nettoyer le cache Bazel afin de résoudre les erreurs dues à des données en cache invalides ou obsolètes, comme la commande `bazel clean` avec l'option `--expunge`, suppriment définitivement les fichiers.
bazel clean bazel clean --expunge
options de configuration Bazel
Utilisez cette option lors de la compilation pour éviter les problèmes liés à la création du package : tensorflow:issue#22390
--define=no_tensorflow_py_deps=true
Consultez la documentation de référence de la ligne de commande Bazel pour connaître les options de compilation .
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 compilez avec la prise en charge du GPU, ajoutez --copt=-nvcc_options=disable-warnings pour supprimer les messages d'avertissement nvcc.
Constituer le package
Pour créer un paquet pip, vous devez spécifier l'option `--repo_env=NOM_DE_LA_ROUE`. Le paquet sera créé en fonction du nom fourni. Par exemple :
Pour compiler le package CPU tensorflow :
bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
Pour créer un package nightly, définissez tf_nightly au lieu de tensorflow , par exemple pour créer un package nightly CPU :
bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tf_nightly_cpu
Par conséquent, la roue générée sera située dans
bazel-bin/tensorflow/tools/pip_package/wheel_house/
Installez le package
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
Compiler en utilisant l'interface MSYS
TensorFlow peut également être compilé à l'aide de l'interface MSYS. Apportez les modifications indiquées ci-dessous, puis suivez les instructions précédentes pour l'invite de commandes native de 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=1export MSYS2_ARG_CONV_EXCL="*"
Définissez votre chemin
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:\Python\python.exe , configurez votre PATH comme suit :
# Use Unix-style with ':' as separatorexport PATH="/c/tools:$PATH"export PATH="/c/path/to/Python:$PATH"
Pour la prise en charge du GPU, ajoutez les répertoires bin de 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 compilation testées
processeur
| Version | Version Python | Compilateur | Outils de construction |
|---|---|---|---|
| tensorflow-2.21.0 | 3.10-3.13 | CLANG 18.1.4 | Bazel 7.4.1 |
| 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 | MSVC 2015 mise à jour 3 | Bazel 0.19.0-0.21.0 |
| tensorflow-1.12.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | Bazel 0.15.0 |
| tensorflow-1.11.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | Bazel 0.15.0 |
| tensorflow-1.10.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 |
| tensorflow-1.9.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 |
| tensorflow-1.8.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 |
| tensorflow-1.7.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 |
| tensorflow-1.6.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 |
| tensorflow-1.5.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 |
| tensorflow-1.4.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 |
| tensorflow-1.3.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 |
| tensorflow-1.2.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 |
| tensorflow-1.1.0 | 3.5 | MSVC 2015 mise à jour 3 | CMake v3.6.3 |
| tensorflow-1.0.0 | 3.5 | MSVC 2015 mise à jour 3 | CMake v3.6.3 |
GPU
| Version | Version Python | Compilateur | Outils de construction | 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 | MSVC 2015 mise à jour 3 | Bazel 0.19.0-0.21.0 | 7.4 | 10 |
| tensorflow_gpu-1.12.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | Bazel 0.15.0 | 7.2 | 9.0 |
| tensorflow_gpu-1.11.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | Bazel 0.15.0 | 7 | 9 |
| tensorflow_gpu-1.10.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.9.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.8.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.7.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.6.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.5.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.4.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 | 6 | 8 |
| tensorflow_gpu-1.3.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 | 6 | 8 |
| tensorflow_gpu-1.2.0 | 3,5-3,6 | MSVC 2015 mise à jour 3 | CMake v3.6.3 | 5.1 | 8 |
| tensorflow_gpu-1.1.0 | 3.5 | MSVC 2015 mise à jour 3 | CMake v3.6.3 | 5.1 | 8 |
| tensorflow_gpu-1.0.0 | 3.5 | MSVC 2015 mise à jour 3 | CMake v3.6.3 | 5.1 | 8 |