Tensorflow

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Autres langues :anglais 90% • ‎français 100%

TensorFlow est un outil open-source d'apprentissage automatique développé par Google.

Cette page rassemble les informations nécessaires à la compilation et à l'utilisation de Tensorflow sur les grappes GPUs de Calcul Québec.

Sommaire

Utilisation sur Guillimin

Lister les versions disponibles

Pour connaître les versions disponibles, entrez la commande suivante:

 
 [nom@lg-1r14-n04 ~]$ module spider Tensorflow
 


Charger les modules requis

Ces modules devront être chargés préalablement à toute utilisation de Tensorflow:

 
 [nom@lg-1r14-n04 ~]$ module load foss/2015b
 


Python 2

 
 [nom@lg-1r14-n04 ~]$ module load Tensorflow/1.0.0-Python-2.7.12
 


Python 3

 
 [nom@lg-1r14-n04 ~]$ module load Tensorflow/1.0.0-Python-3.5.2
 


Utilisation sur Helios

Lister les versions disponibles

La version la plus récente de Tensorflow est rendue disponible dans les semaines qui suivent sont lancement. Pour connaître les versions disponibles, entrer la commande suivante

 
 [nom@helios ]$ ls /software-gpu/apps/python/wheelhouse/tensorflow-*
 


Charger les modules requis

Ces modules devront être chargée préalablement à toute utilisation de Tensorflow.


 
 [nom@helios ]$ module load compilers/gcc/4.8.5 cuda/8.0.44 libs/cuDNN/6
 


Python 2

 
 [nom@helios ]$ module load apps/python/2.7.10
 


Python 3

 
 [nom@helios ]$ module load apps/python/3.5.0
 


Installer avec pip

Pour installer la dernière version disponible, créez et activez un environnement virtuel. Puis entrez la commande suivante:

 
 [nom@helios venv]$ pip install tensorflow
 


Tester l'installation de Tensorflow

 
 [nom@helios venv]$ python -m tensorflow.models.image.mnist.convolutional
 


Compiler Tensorflow

Instructions de compilation détaillées pour Helios (v1.0.1)

Charger les modules requis

 
 [nom@helios ]$ module purge -f
 [nom@helios ]$ module load compilers/gcc/4.8.5 compilers/java/1.8 apps/buildtools \
                            cuda/7.5 libs/cuDNN/5 compilers/swig apps/git apps/bazel/0.4.3
 


Récupérer les sources de Tensorflow et se déplacer dans le répertoire des sources

 
 [nom@helios ]$ git clone https://github.com/tensorflow/tensorflow.git
 [nom@helios ]$ cd tensorflow
 


Sélectionner la version du code (checkout)

 
 [nom@helios tensorflow]$ git checkout 1.0.1
 


Configurer les options de compilation

 
 [nom@helios tensorflow]$ cp third_party/gpus/crosstool/CROSSTOOL.tpl{,.orig}
 [nom@helios tensorflow]$ GCC_PREFIX=$(dirname $(dirname $(which gcc)))
 [nom@helios tensorflow]$ sed -i "\;linker_flag: \"-B/usr/bin/\";a \
 > \ \ linker_flag: \"-Wl,-rpath=$GCC_PREFIX/lib64\"" third_party/gpus/crosstool/CROSSTOOL.tpl
 [nom@helios tensorflow]$ sed -i "\;linker_flag: \"-B/usr/bin/\";a \
 > \ \ linker_flag: \"-Wl,-rpath=$GCC_PREFIX/lib\"" third_party/gpus/crosstool/CROSSTOOL.tpl
 


Créer un environnement virtuel Python pour la compilation.

Python 2
 
 [nom@helios tensorflow]$ module load apps/python/2
 [nom@helios tensorflow]$ virtualenv buildenv
 


Python 3
 
 [nom@helios tensorflow]$ module load apps/python/3
 [nom@helios tensorflow]$ pyvenv buildenv
 


Activer l'environnement virtuel

 
 [nom@helios tensorflow]$ source buildenv/bin/activate
 


Installer les packages Python requis

 
 (buildenv)[nom@helios tensorflow]$ pip install numpy wheel
 Collecting numpy
 Collecting wheel
 Installing collected packages: numpy, wheel
 


Adapter le script crosstool wrapper et corriger des bogues de version

 
 (buildenv)[nom@helios tensorflow]$ sed -i "/cmd = 'PATH=' + PREFIX_DIR + ' ' + cmd/s/^/#/" third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc.tpl
 


Configurer les options de compilation

 
 (buildenv)[nom@helios tensorflow]$ PYTHON_BIN_PATH=$(which python) \
 USE_DEFAULT_PYTHON_LIB_PATH=1 \
 TF_NEED_GCP=0 \ 
 TF_NEED_HDFS=0 \
 TF_NEED_OPENCL=0 \
 TF_NEED_CUDA=1 \
 TF_NEED_JEMALLOC=0 \
 TF_ENABLE_XLA=0 \
 GCC_HOST_COMPILER_PATH=$(which gcc) \
 TF_CUDA_VERSION=7.5 \
 CUDA_TOOLKIT_PATH=$CUDA_HOME \
 TF_CUDNN_VERSION=5 \
 CUDNN_INSTALL_PATH="/software-gpu/libs/cuDNN/5_cuda7.5" \
 TF_CUDA_COMPUTE_CAPABILITIES="3.5,3.7" \
 ./configure
 


Compiler Tensorflow et l'application build_pip_package

 
 (buildenv)[nom@helios tensorflow]$ MALLOC_ARENA_MAX=4 bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
 


Créer le paquet wheel pour Tensorflow

 
 (buildenv)[nom@helios tensorflow]$ mkdir dist
 (buildenv)[nom@helios tensorflow]$ bazel-bin/tensorflow/tools/pip_package/build_pip_package $PWD/dist
 


Le paquet wheel compilé de Tensorflow se trouvera dans le sous-répertoire dist.

Quitter l'environnement virtuel de compilation

 
 (buildenv)[nom@helios tensorflow]$ deactivate
 


Arrêter le serveur de compilation bazel

 
 [nom@helios tensorflow]$ bazel shutdown
 


Scripts de compilation

Instructions spécifiques à Guillimin

Utiliser les notes de compilation sur Helios et les notes de SHARCNET.

Ajustements pour v0.10.0

Voir /software/CentOS-6/tools/python/tensorflow-0.10.diff

Il était essentiel d'avoir les chemins vers /sb/software et /software. Par exemple:

  • cxx_builtin_include_directory: "/sb/software/CentOS-6/eb/software/Core/GCCcore/4.9.3/include"
  • cxx_builtin_include_directory: "/software/CentOS-6/eb/software/Core/GCCcore/4.9.3/include"
Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager