L'Intelligence Artificielle, un petit pas pour nous, les développeurs, et un grand bond en informatique.
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
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
-
Pandas
-
MySQL
-
Workbench
-
MongoDB
-
Seaborn
-
Matplotlib
-
Plotly
Preprocessing & Algorithms
-
Sklearn
-
Skimage
-
TensorFlow
-
Keras
-
StatsModels
-
Pytorch
-
AzureML
-
NLTK
-
Spacy
-
OpenCV
-
Numpy
-
Scipy
Toolbox
-
Python
-
Terminal
-
Docker
-
VSCode
-
VS-2019
-
Java
-
C#
-
HyperV
-
Eclipse
-
Anaconda
web mobile application
-
Html
-
Css
-
Flask
-
Django
-
Js
-
Xamarin
project management & methods
-
Git
-
Kanban
-
Scrum
-
Monitoring
-
Itil
-
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…