Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. TensorFlow et Keras
  3. Confrontation aux réalités opérationnelles
Extrait - TensorFlow et Keras L'intelligence artificielle appliquée à la robotique humanoïde
Extraits du livre
TensorFlow et Keras L'intelligence artificielle appliquée à la robotique humanoïde Revenir à la page d'achat du livre

Confrontation aux réalités opérationnelles

Se doter de divers environnements de travail

1. Le problème

Nous sommes confrontés à plusieurs réalités :

  • Les environnements de travail sont changeants et parfois difficiles à installer.

  • Les environnements à créer pour fabriquer des modèles, les tester et les déployer en exploitation sont naturellement différents.

  • Nos codes peuvent avoir été construits dans un environnement donné et ne pas fonctionner dans un autre.

  • Certaines ressources machines sont parfois coûteuses et il est donc économe de n’exécuter certains scripts que sur des temps courts sur des machines ou sur un cloud loués ou mobilisés ponctuellement pour cela.

  • Les modèles IA sont souvent exécutés en edge computing sur de petites machines déportées, c’est typiquement notre problème dans le cas d’une intelligence embarquée et incarnée comme nous l’appréhendons dans l’ouvrage.

  • À l’inverse on a parfois besoin d’exposer ses travaux de façon scalable, sécurisée, à de nombreux utilisateurs sans pour autant posséder soi-même des compétences d’exploitation et full stack (comme ce que l’on nomme aujourd’hui DevOps).

  • Les applications modernes ne sont plus monolithiques et agrègent divers services et API.

2. Les pistes de solution

Les solutions à ces problèmes comprennent :

  • la mise en place d’une excellente gestion de configuration et d’un workflow maîtrisé (CI/CD : intégration et déploiement continus, gestion des pipelines de code, mais aussi des transformations de données et des évolutions des modèles, des hyperparamètres…),

  • l’utilisation d’environnements virtuels comme ceux fournis par Conda et le VirtualEnv de Python,

  • l’utilisation de technologies de conteneurisation comme Docker et d’orchestration comme Kubernetes.

3. En pratique

a. Éléments de configuration de base

La configuration de votre environnement Keras se trouve dans le fichier keras.json

Par défaut, il contient les lignes suivantes :

{ 
    "floatx": "float32", 
    "epsilon":...

Répartition des traitements

1. Le problème

La répartition des traitements sur plusieurs CPU et/ou GPU peut être un enjeu majeur en termes de performances. On peut agir à trois étapes :

1. la préparation des données,

2. la création des modèles,

3. l’exploitation des modèles.

2. Éléments de solution

a. Préparation des données

L’usage de l’API TensorFlow tf.data procure un certain confort dans la préparation des données.

Comme le savent tous les utilisateurs de R, car c’est natif dans cet environnement, la vectorisation de vos traitements est de toute façon une bonne idée. De plus, cela améliore la lisibilité et la testabilité. L’idée générale est de ne manipuler vos tenseurs qu’au travers d’opérations globales (donc pas de boucle sur les indices).

Un des mots-clés est le concept de map transformation. Dans le cas de la préparation des données, on est également amené à gérer la taille des batchs de tenseur avant le map. Nous avons mis un exemple de code map en annexe.

Quand les espaces de travail en mémoire saturent, on peut utiliser tf.data.Dataset.cache pour profiter de l’espace disque à notre disposition pour swapper les data.

C’est un sujet qui peut évoluer en fonction des implémentations. Nous vous conseillons de surveiller la liste de bonnes pratiques éditées par l’équipe TensorFlow, ici : https://www.tensorflow.org/guide/performance/datasets#summary_of_best_practices

Certaines données nécessitent des préparations spéciales, c’est le cas des données sonores comme celles que nous avons étudiées au chapitre Simuler les attributs de l’intelligence en utilisant le package librosa.

Le package Kapre peut également vous aider à traiter les fichiers audio, c’est un package Keras qui vous permet de décoder, de resampler avant de les stocker dans des fichiers binaires.

L’idée est de vous apporter la même facilité...

Le cas particulier du robot humanoïde autonome et des systèmes embarqués légers

Embarquer une IA assez puissante pour satisfaire nos aspirations est encore délicat, car sa consommation électrique est importante si on lui en demande beaucoup.

Le poids des batteries nécessaires s’avère alors excessif.

En 2019, ce papier se focalisant en partie sur la simple utilisation du modèle pré-entrainé SSD MobileNet directement acquis à partir du référentiel de modèles Tensorflow model zoo le met en évidence en comparant plusieurs plateformes, dont le NVIDIA Jetson TX2, taillé pour des petites consommations pour des réseaux neuronaux embarqués et une configuration comprenant une NVIDIA GTX1080Ti: (Biddulph et al. 2018).

Il faudra également surveiller les initiatives Google autour de ses TPU, comme par exemple le stick USB Edge TPU Accelerator USB Stick ou les initiatives Intel de la série Movidius sur le même principe.

Le problème de la fiabilité peut également être exacerbé par ce problème de consommation électrique, car pour fiabiliser un système informatique il peut être efficace de le rendre redondant ce qui consomme d’autant plus.

Nous espérons que ces considérations très opérationnelles vous permettront de mettre vos applications...

Bibliographie du chapitre

Biddulph, Alex, Trent Houliston, Alexandre Mendes, and Stephan K. Chalup. 2018. "Comparing Computing Platforms for Deep Learning on a Humanoid Robot." CoRR abs/1809.03668. http://arxiv.org/abs/1809.03668.

Choi, Keunwoo, Deokjin Joo, and Juho Kim. 2017. "Kapre: On-GPU Audio Preprocessing Layers for a Quick Implementation of Deep Neural Network Models with Keras," June. http://arxiv.org/abs/1706.05781.