linux_compiler_tensorflow_avec_bazel
Ceci est une ancienne révision du document !
Table des matières
Linux Compiler Tensorflow avec Bazel
Aucun tuto correct sur tous les internets, la doc de Google est maximaliste mais mal structurée, aucun exemple, comment définir des config ? Mystère
Si j'y arrive ce tuto va valoir de l'or !
Les téléchargements sont très gros: ce sont des paquets de 500 Mo !
Ressources
Contexte
- Ubuntu Mate 20.04
- python 3.8
- venv
L'objectif est de compiler Tensorflow avec les options AVX2 et FMA !
Cuda
- Compute Unified Device Architecture CUDA (initialement l'acronyme de Compute Unified Device Architecture) est une technologie de GPGPU (General-Purpose Computing on Graphics Processing Units), c'est-à-dire utilisant un processeur graphique (GPU) pour exécuter des calculs généraux à la place du processeur central (CPU).
CudNN
- cuDNN is a framework built on the top of CUDA and developed by NVIDIA for deep learning primitives. It stands for CUDA Deep Neural Network. It serves as a building block for deep learning and machine learning frameworks.
sudo apt install libcudnn8 libcudnn8-dev
TensorRT
- NVIDIA® TensorRT™ is an SDK for high-performance deep learning inference. It includes a deep learning inference optimizer and runtime that delivers low latency and high throughput for deep learning inference applications.
sudo apt install libnvinfer8 libnvinfer8-dev
Bazel et Tensorflow
# Bazel sudo apt install apt-transport-https curl gnupg curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg sudo mv bazel.gpg /etc/apt/trusted.gpg.d/ echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list sudo apt update sudo apt install bazel # Dépendances python3 -m pip install numpy wheel python3 -m pip install keras_preprocessing --no-deps # Récupération des sources de tensorflow mkdir src cd src/ git clone https://github.com/tensorflow/tensorflow.git cd tensorflow ./configure
Le plus abcons: Configurer la compilation
Très important Des questions et des réponses:
- non à ROCm (non à Rocky)
- non à TensorRT sinon ça plante
- non à clang
- non à download a fresh release of clang ça plante
- oui à GCC
- –config: -march=native
- Pour 1060 GTX –> 6.1, Pour GTX 850m –> 5.0
Comment compiler avec AVX2 et FMA: répondre -march=native
$ ./configure You have bazel 4.2.1 installed. Please specify the location of python. [Default is /usr/bin/python3]: Found possible Python library paths: /usr/lib/python3/dist-packages /usr/local/lib/python3.8/dist-packages Please input the desired Python library path to use. Default is [/usr/lib/python3/dist-packages] Do you wish to build TensorFlow with ROCm support? [y/N]: n No ROCm support will be enabled for TensorFlow. Do you wish to build TensorFlow with CUDA support? [y/N]: y CUDA support will be enabled for TensorFlow. Do you wish to build TensorFlow with TensorRT support? [y/N]: n No TensorRT support will be enabled for TensorFlow. Found CUDA 11.5 in: /usr/local/cuda-11.5/targets/x86_64-linux/lib /usr/local/cuda-11.5/targets/x86_64-linux/include Found cuDNN 8 in: /usr/lib/x86_64-linux-gnu /usr/include Please specify a list of comma-separated CUDA compute capabilities you want to build with. You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus. Each capability can be specified as "x.y" or "compute_xy" to include both virtual and binary GPU code, or as "sm_xy" to only include the binary code. Please note that each additional compute capability significantly increases your build time and binary size, and that TensorFlow only supports compute capabilities >= 3.5 [Default is: 3.5,7.0]: 5.0 Do you want to use clang as CUDA compiler? [y/N]: n nvcc will be used as CUDA compiler. Please specify which gcc should be used by nvcc as the host compiler. [Default is /usr/bin/gcc]: Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -Wno-sign-compare]: -march=native Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]: n Not configuring the WORKSPACE for Android builds. Preconfigured Bazel build configs. You can use any of the below by adding "--config=<>" to your build command. See .bazelrc for more details. --config=mkl # Build with MKL support. --config=mkl_aarch64 # Build with oneDNN and Compute Library for the Arm Architecture (ACL). --config=monolithic # Config for mostly static monolithic build. --config=numa # Build with NUMA support. --config=dynamic_kernels # (Experimental) Build kernels into separate shared objects. --config=v1 # Build with TensorFlow 1 API instead of TF 2 API. Preconfigured Bazel build configs to DISABLE default on features: --config=nogcp # Disable GCP support. --config=nonccl # Disable NVIDIA NCCL support. Configuration finished
Reset de la config
bazel clean
Compilation Création du package pip Installation
Parce que en plus bazel exige la bonne version:
sudo apt update && sudo apt install bazel-4.2.1
bazel build //tensorflow/tools/pip_package:build_pip_package
INFO: Build completed successfully, 32129 total actions
./bazel-bin/tensorflow/tools/pip_package/build_pip_package /media/data/tensorflow_pkg python3 -m pip install /media/data/src/tensorflow-2.8.0-cp38-cp38-linux_x86_64.whl
linux_compiler_tensorflow_avec_bazel.1639165243.txt.gz · Dernière modification : 2021/12/10 19:40 de serge