Compiler à partir de la source pour Raspberry Pi

Ce guide explique comment compiler un package TensorFlow pour un appareil Raspberry Pi sous Raspbian 9.0. Bien que ces instructions puissent fonctionner pour d'autres variantes de Raspberry Pi, elles ne sont testées et compatibles que pour cette configuration.

Nous vous recommandons de compiler de manière croisée le package TensorFlow pour Raspbian. La compilation croisée fait appel à une plate-forme différente pour la création du package. Au lieu d'utiliser la mémoire RAM limitée et le processeur relativement lent du Raspberry Pi, il est plus facile de compiler TensorFlow sur une machine hôte plus puissante sous Linux, macOS ou Windows.

Configuration pour l'hôte

Installer Docker

Dans le but de simplifier la gestion des dépendances, le script de compilation utilise Docker pour créer un environnement de développement Linux virtuel. Vérifiez votre installation Docker en exécutant la commande suivante : docker run --rm hello-world

Télécharger le code source de TensorFlow

Utilisez Git pour cloner le dépôt TensorFlow :

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.

Compiler à partir de la source

Compilez le code source TensorFlow de manière croisée pour créer un package Python pip avec des instructions NEON ARMv7 compatibles avec les appareils Raspberry Pi 2, 3 et 4. Le script de compilation exécute un conteneur Docker pour effectuer la compilation. Vous pouvez également créer un binaire ARM 64 bits (aarch64) en fournissant le paramètre "ARCH64" au script "build_raspberry_pi.sh". Utilisez les commandes Python 3.8, Python 3.7, Python 3.5 ou Python 2.7 pour créer le package cible :

Python 3.5

tensorflow/tools/ci_build/ci_build.sh PI-PYTHON3 \
    tensorflow/tools/ci_build/pi/build_raspberry_pi.sh

Python 3.7

tensorflow/tools/ci_build/ci_build.sh PI-PYTHON37 \
    tensorflow/tools/ci_build/pi/build_raspberry_pi.sh

Python 3.8 (64 bits)

tensorflow/tools/ci_build/ci_build.sh PI-PYTHON38 \
    tensorflow/tools/ci_build/pi/build_raspberry_pi.sh AARCH64

Python 2.7

tensorflow/tools/ci_build/ci_build.sh PI \
    tensorflow/tools/ci_build/pi/build_raspberry_pi.sh

Pour créer un package compatible avec tous les appareils Raspberry Pi, y compris les Raspberry Pi 1 et Zero, utilisez l'argument PI_ONE, comme illustré ci-dessous :

tensorflow/tools/ci_build/ci_build.sh PI \
    tensorflow/tools/ci_build/pi/build_raspberry_pi.sh PI_ONE

Une fois la compilation terminée (environ 30 minutes), un fichier de package .whl est créé dans le répertoire "output-artifacts" de l'arborescence source de l'hôte. Copiez le fichier wheel dans le Raspberry Pi et installez-le à l'aide de la commande pip suivante :

pip install tensorflow-version-cp35-none-linux_armv7l.whl