logo_ju

L'Intelligence Artificielle, un petit pas pour nous, les développeurs, et un grand bond en informatique.

Workflow IA

workflow IA

My Skills & Tools for AI

Honnêtement, comment puis-je les présenter, sans les exagérer ou les sous-estimer ... ? Lire la suite

Entre les langages, outils, technos et concepts que j'emploie tout le temps, ceux que j'ai utilisé plus ou moins dans les projets passés (autodidacte & Ecole IA), ceux que j'aime, ceux avec lesquels je travaille actuellement, etc... M'autoévaluer est compliqué et risqué.
Bref, j'ai choisi un simple code couleur :
  • Ceux, souvent utilisés avec lesquels je suis à l'aise. Sans prétendre être expert ! 😉
  • Ceux que j'ai pu tester plus longtemps ou ceux que j'ai intégrés dans mes projets.
  • Ceux que j'ai pu tester et que je trouve tres intéressants. (En cours)

data - eda - db

  • logo python library pandas

    Pandas

  • logo mysql

    MySQL

  • logo MySQLWorkbench

    Workbench

  • logo mongodb

    MongoDB

  • logo python library seaborn

    Seaborn

  • logo matplotlib

    Matplotlib

  • logo python library plotly

    Plotly

Preprocessing & Algorithms

  • logo scikit learn

    Sklearn

  • logo scikit image

    Skimage

  • logo tensorflow

    TensorFlow

  • logo keras

    Keras

  • logo statsmodels

    StatsModels

  • logo pytorch

    Pytorch

  • logo azureML

    AzureML

  • logo nltk

    NLTK

  • logo spacy

    Spacy

  • logo opencv

    OpenCV

  • logo numpy

    Numpy

  • logo scipy

    Scipy

Toolbox

  • logo python

    Python

  • logo bash

    Terminal

  • logo docker

    Docker

  • logo vscode

    VSCode

  • logo Visual Studio 2019

    VS-2019

  • logo java

    Java

  • logo c#

    C#

  • logo hyperv

    HyperV

  • logo eclipse

    Eclipse

  • logo anaconda

    Anaconda

web mobile application

  • logo html5

    Html

  • logo css3

    Css

  • logo flask

    Flask

  • logo django

    Django

  • logo js

    Js

  • logo xamarin

    Xamarin

project management & methods

  • logo git

    Git

  • logo kanban

    Kanban

  • logo scrum

    Scrum

  • logo neptuneIA

    Monitoring

  • logo itil

    Itil

  • logo pytest

    Pytest

Numériser, Programmer & Coder

La formule est un clin d'œil à l'adage connu de tous pilotes d’aéronefs : Naviguer, Piloter, Communiquer...
Elle me sert de prétexte à présenter les trois grandes parties constitutives du développement de solutions basées sur les données et sur les techniques d’IA. Bien évidemment, ce découpage est arbitraire, dans les détails ce que j’évoque dans chacune de ses parties pourrait être présenter différemment, mais il permet d’appréhender de manière logique et synthétique un workflow IA.

Numérisation

La Numérisation dans un sens élargi : rendre les données brutes y compris catégorielles et sémantiques, digestes à un algorithme d’Intelligence Artificielle passant le plus souvent par un processus d’apprentissage automatique. En effet, si comme le dit Richard Hamming, The purpose of computing is insight, not numbers. , la numérisation n'est pas la finalité, les nombres sont le moyen d'y parvenir.

Collecte, qualification, mise à disposition, nettoyage, préparation, traitements, feature engineering, encodage, régularisation, normalisation, imputation, feature selection, gestion des outliers, discrétisation, data transformation, data augmentation, ACP font parties des techniques de preprocessing les plus courantes de l’IA, mais cette liste est loin d’être exhaustive. Suivant le besoin client, précisé si nécessaire avec lui, elles permettent le passage de données brutes à des données consolidées afin de résoudre numériquement une problématique. Chacun des trois grands domaines génériques d’application des techniques de l’intelligence artificielle, que sont le traitement du langage naturel (NLP), la vision par ordinateur (CV) et l’analyse prédictive (souvent TS) possède ses propres techniques et concepts, sans compter leurs outils et leurs méthodes spécifiques. La collecte, l’exploration, l’analyse, notamment l’analyse statistique, la visualisation, le traitement des données, la conception de la base de données constitue une première étape, y compris dans un processus itératif rapide. C’est en quelque sorte la première marche du développement en intelligence artificielle et c'est le moment ou la donnée est centrale.

Programmation

La programmation dans un sens élargi : capacité à concevoir un projet dans son ensemble et son contexte (environnement, milieu, époque, temporalité) et planifier la solution après la préparation et l’analyse des données ou comme le dit si joliment Frederick Brooks , prix Turing 1999 : The programmer , like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures.

Cependant au-delà de l’abstraction, la projection et la recherche, programmer c’est aussi choisir des méthodes de travail et d’organisation, quantifier et répartir les tâches, bref dimensionner et gérer le projet globalement. Autrement dit, avec le vocabulaire d'ITIL, il s'agit de bien définir les processus, les fonctions et les rôles. La problématique d’ensemble d’un projet c’est aussi les moyens de stockage et de déploiement, et les besoins des personnes (clients finaux, utilisateurs, décideurs, structures,…). Techniquement, la conception du pipeline de preprocessing, le choix des algorithmes et des découpages dans les données pour les parties ‘train’ et ‘test’, la conception de la validation croisée, l’optimisation, la recherche des hyperparamètres et donc l’évaluation du modèle avec les bonnes metrics, la recherche d’un juste équilibre entre biais & variance ou pour le dire avec le vocabulaire de l’IA d’un compromis entre underfitting & overfitting, avec dans le viseur la qualité, la performance voire l’explicabilité du modèle constitue une seconde phase du processus. C'est le moment où la problématique (et les moyens à disposition) du client est centrale.

Codage

Coder dans un sens élargi : construire et réaliser la solution informatique. Passé l’étape de l’optimisation du modèle, c’est-à-dire avec un taux d’erreurs acceptable par le client, il s’agit de bâtir la solution dans l’environnement technique du client suivant ses capacité de stockage et de déploiement et la rendre efficiente dans son milieu et par ses utilisateurs, pas uniquement sur le papier, ou comme le dit Jeff Atwood, l'un des cofondateur de Stack overflow et de stack exchange : Writing code? That's the easy part. Getting your application in the hands of users, and creating applications that people actually want to use—now that's the hard stuff.

Au cœur de cette logique de service aux clients, le référentiel des bonnes pratiques ITIL (V4) trône. Les méthodes agiles ou devops ne sont qu’un moyen, parmi d’autres, de répondre au mieux à l’objectif de service, avec comme corolaire la stimulation et la préservation des ressources humaines d’un projet. Afin que le service apporte concrètement de la valeur au client, la compatibilité de la solution IA avec l’environnement client, comme le choix de frameworks adaptés ou déjà utilisés par le client, ainsi que l’intégration de sa chartre graphique, n’est pas la seule variable à maîtriser pour la rendre véritablement fiable. Les questions de cyber sécurité, de disponibilité du service, de gestion des incidents, de référencement naturel (SEO, si solution commerciale), d’Ux design et plus généralement d’ergonomie, comme les valeurs du client ou son image peuvent avoir une importance critique suivant le besoin client. Les tests, d’unitaire à E2E, le monitoring du modèle comme le monitoring de l’applicatif et la gestion automatique des alertes, les capacités d’évolutions fonctionnelles et globalement le développement continu, les questions sociétales et particulièrement le cadre légal et les enjeux juridiques (RGPD par exemple) sont aussi à prendre en charge. Enfin, dans cette optique de valeur de service apportée par la solution IA et du développement continu, la maintenabilité du code, et sa transmission font aussi parti de ce panel des bonnes pratiques, qui garantissent au mieux la valeur réelle de la solution IA. Le codage est le moment ou le client est encore plus central.

Veille

De ces considérations et réflexions très générales sur les solutions IA, il reste un dernier point qui n’a pas été abordé précédemment : la veille et l’état de l’art. De fait, la veille est intégrée tout au long du processus de la solution IA, car l’accélération vertigineuse et enivrante de l’informatique rend obligatoire et permanent l’acuité sur les nouveaux concepts (algorithmes de ML, architecture ensembliste ou DL, etc…), les nouveaux outils (frameworks et librarys) ou les méthodes de travail et d’organisation. Cependant, il faut garder à l’esprit que le slogan publicitaire « l’essayer, c’est l’adopter » n’est pas une règle, mais une option…