L'IA déferle depuis quelques mois. Impossible d'y échapper et ça va vite, très vite comme s'il était question de faire le casse du siècle tant que personne n'a pris assez de recul pour imposer des règles à ces IA. Alors nous voyons débarquer de l'IA à tous les étages... vous pouvez par exemple constater l'utilisation de moteurs d'IA dans des forums de discussions qui permettent aux utilisateurs de "chercher en langage naturel" (voire même dans n'importe quelle langue, l'IA se chargeant de tout traduire).
Très pratique, très très très pratique même mais lorsque les administrateurs du forum ont activé l'option ont-ils bien lu le contrat et la contrepartie ? n'y a-t-il pas (au hasard) une contrepartie qui "autorise l'IA à aspirer les données" (pour en faire n'importe quoi) par exemple ? et en échange du petit service d'indexation/traduction vous lui avez fait un superbe cadeau qui lui permet d'apprendre avec vos données et celles de vos usagers ?
Chez CAP-REL l'apport de l'IA est bien envisagé et depuis longtemps, comme toute évolution technologique elle demande du temps pour être suffisamment assimilée pour pouvoir ensuite l'utiliser tout en respectant notre éthique : du logiciel libre, des données libres, des process libres et l'absence d'exploitation à l'insu des utilisateurs ... gros challenge non ?
C'est en ayant tout ceci en tête que nous nous refusons à l'utilisation de logiciels non libres, de services "cloud" non auto-hébergés (non souverains pour reprendre un terme dans l'air du temps) ... et donc pour les moteurs d'IA : auto-hébergés, dont le code serait libre et que nous pourrions gérer de A à Z y compris sur la base de données d'apprentissage ...
Que faut-il d'après nous pour valider une I.A. "libre" ?
Selon nos critères pour que nous puissions mettre en place une IA elle doit:
- être uniquement composée d'éléments logiciels libres;
- la base d'apprentissage doit être ouverte, libre et reproductible, re-jouable pour relancer l'apprentissage de zéro si nécessaire;
- elle doit pouvoir être auto-hébergée et ne pas faire "fuiter" des données vers un "central" hors du contrôle des utilisateurs;
Ce sont finalement les mêmes contraintes qui nous animent depuis le début de notre implication dans l'informatique libre !
Des éléments logiciels libres ?
Lorsqu'on se pose la question de savoir s'il y a des logiciels libres dans le domaine de l'I.A. la réponse peut donner le vertige !
On peut même dire qu'il y a le choix ! De très nombreux moteurs d'I.A. libres existent ou au moins des éléments permettant d'en créer. Vous trouverez des "moteurs" spécialisés dans différents domaines d'application: catégorisation automatique de documents, discussion en langage naturel avec l'utilisateur, génération d'images, de musiques etc.
Dans cette longue liste notre attention s'est portée sur TensorFlow (qui est sous licence Apache) : depuis plusieurs années nous "jouons" avec pour constater l'étendue des situations où nous pourrions l'utiliser. Il permet entre autres de lancer les calculs sur des CPU ou des GPU et n'est donc pas "lié" à un système matériel particulier et fonctionne sur différentes plates-formes.
Le langage de prédilection pour développer est python, ça tombe bien nous avons des compétences dans ce langage depuis de longues années (souvenirs du projet AbulÉdu).
Des bases de données d'apprentissage libre ?
C'est là que le principal problème se présente: les jeux de données (dataset) proposés sont souvent gratuits mais pas reproductibles, en résumé les "sources" des bases de données d'apprentissage ne sont pas disponibles. C'est un peu comme nous livrer un logiciel sous forme binaire (un .exe par exemple) sans le code source permettant de le recompiler.
Dernièrement vous pouvez même lire de la part des auteurs de ChatGPT qu'il serait impossible de créer une IA sans "pirater du contenu" d'apprentissage ... (source: The Guardian) ce qui revient à la assez classique situation des entreprises qui ne respectent pas la loi, deviennent très grosses, très puissantes et tentent ensuite d'imposer leur "point de vue" sur les infractions commises et qui leur ont permis d'atteindre une situation de quasi monopole. C'est donc tout l'opposé de notre manière de concevoir l'informatique.
Au milieu de toute cette véritable jungle il existe tout de même quelques plates-formes où vous pouvez trouver des sources de dataset: paperswithcode et kaggle.com par exemple. Mais bien souvent la licence est notée "Unknown" en faisant donc une ressource non libre même si gratuite.
Ce qui nous amène à la situation suivante : nous devons donc créer nos dataset, et c'est finalement le plus gros challenge qui se dresse devant nous. C'est clairement David contre Goliath mais peu importe tentons notre chance.
La question qui se pose toujours est de savoir quelle est la taille minimale du dataset pour que le résultat de l'apprentissage soit assez bon pour permettre le passage en production (et donc être "commercialisé" permettant ainsi d'envisager un "retour sur investissement"). Il n'y a pas de réponse "toute prête": ça dépend de ce que vous manipulez, de ce que vous cherchez, du type de données, du nombre de paramètres etc. seuls des tests "en aveugle" permettent de savoir où se place votre I.A. sur sa courbe d'apprentissage ...
Un exemple d'utilisation de l'I.A. chez CAP-REL: l'analyse des tickets de notes de frais ...
Un exemple concret de l'apport de l'Intelligence Artificielle pour nous concernerait l'analyse automatique des tickets de notes de frais pour notre projet DoliSCAN.
Vous allez me dire que "tout le monde le fait déjà", sans doute mais il est peu probable que ça soit sans l'aide d'un GAFAM ... et nous pourrions en effet nous abonner à un "webservice" d'extraction de données, nos utilisateurs seraient sans doute très heureux du résultat mais le piège se refermerait sur nous sous la forme d'une dette technologique qu'il faudra payer un jour ou l'autre.
Et quand on vous dit que notre implication dans le domaine "IA" ne date pas d'hier sachez que pour avancer sur ce sujet nous avons lancé en 2021 une initiative visant à collecter une grande masse de données pour constituer un corpus (dataset) d'apprentissage pour une I.A. d'analyse automatique.
Pour essayer d'aller vite, pour apprendre, pour expérimenter et pour valider nos idées nous nous sommes restreints à des tickets (facturette de carburant) délivrés par les stations-service et nous avons mis en place le site https://carbu.org pour proposer à tout le monde de contribuer à l'effort.
Nous en avons parlé autour de nous, et sur LinuxFR: https://linuxfr.org/forums/programmationautre/posts/creation-d-une-collection-de-tickets-de-carburants ... Le résultat de la collecte est placé sous licence libre, c'est publié sur un dépôt Git hébergé par Framasoft : https://framagit.org/erics/tickets/... difficile de faire plus ouvert, transparent, collectif ... libre et même non lié à CAP-REL !
Avec tout ça en main nous pensions naïvement que la communauté participerait activement à l'effort et que nous aurions des milliers de tickets de carburant en quelques semaines.
Malheureusement la collecte ne marche pas. Pour quelles raisons ? peu de publicité, peu d'envie et d’enthousiasme de la part des utilisateurs et contributeurs ... le constat est là. Ce projet est donc tombé plus ou moins en sommeil.
Mais comme tout projet qui mijote régulièrement nous reprenons nos notes et nous avançons sur les idées liées à l'utilisation de l'I.A. et de temps en temps une idée "tombe" ou une envie se transforme en évidence, il FAUT tester ce truc, il FAUT tenter ça, il FAUT creuser cette piste ...
Et puis ... pourquoi pas commencer avec quelques tickets ?
Le corpus actuel est tout de même composé de 400 tickets ... pourquoi ne pas essayer avec les moyens du bord pour voir ? En ajoutant nos tickets et quelques ressources locales la liste s'allonge suffisamment pour envisager des résultats pas trop mauvais.
Quelques ... dizaines ... centaines ... d'heures plus tard nous avons notre corpus propre, nettoyé.
Le code (python) pour lancer l'apprentissage profond avec TensorFlow est implémenté (quelques dizaines d'heures de plus, pas loin de la centaine même), il est temps de faire chauffer le CPU et le petit GPU de la carte graphique disponible.
Premiers échecs: pas assez de mémoire vidéo (une carte nvidia 1080 avec 8Go c'est petit), modification du code (optimisation), ajustement des paramètres pour ne lancer qu'un seul pipeline et limiter la quantité de données envoyées à CUDA, ça semble marcher. Ça bosse pendant des heures à la vitesse d'un escargot asthmatique qui transpire en plein soleil, ça consomme des Watt ... et ça nous laisse le temps de rêver devant les dernières cartes de nvidia a 10.000€ voir même le double décidément ce monde est dingue. Tout ça pour "économiser" quelques secondes de saisie aux utilisateurs qui n'auront plus à taper 123,25€ mais à vérifier que l'I.A. l'a fait à leur place ... on en arrive même à se demander si c'est vraiment une bonne idée !
Mais derrière ce "simple" exemple ce qui nous pousse à continuer c'est de pouvoir dire que nous maîtrisons cette technologie et qu'il sera donc possible de la mettre en œuvre dans d'autres domaines bien plus sérieux et dont le potentiel sera bien plus important (et pour le coup que nos utilisateurs ne pourraient pas faire d'eux-même comme regrouper tous les tickets de gasoil pour comparer les prix des fournisseurs par périodes et les évolutions géographiques, exemple idiot mais qui illustre le champ des possibles).
Quelques jours plus tard : premiers tests
Voici enfin notre dataset compilé. Les premiers tests semblent laisser imaginer une belle surprise ... puis des tests plus poussés pour "voir" si le système est capable d'extraire le montant d'un ticket de carburant "inconnu" ... Nous en avons fait une petite vidéo muette, technique, c'est vraiment la sortie du laboratoire.
C'est lent: une dizaine de secondes pour analyser un ticket mais l'optimisation sera pour plus tard (voir plus loin).
Si comme nous votre sentiment est "ha oui, quand même !" continuez la lecture ... et préparez votre carnet de chèque !
La suite !
Comme vous pouvez le voir le résultat est très prometteur, l'i.a. arrive à trouver toute seule la bonne information dans suffisamment de cas pour nous encourager dans cette direction.
Il nous reste à tester sur un grand nombre de tickets, votre participation sur https://carbu.org est donc plus que toujours importante. Plus nous aurons de tickets et plus il sera possible de valider la courbe d'apprentissage de l'I.A. sur ce projet, si les tests dépassent les 80% de résultats positifs ça part en prod' si ce n'est pas le cas il faudra augmenter le dataset, relancer l'apprentissage ... et re-tester le résultat !
Il faudra sans aucun doute s'équiper de nouveaux matériels (GPU) qui pourront "encaisser la charge" et si vous voulez parrainer ce genre d'investissement n'hésitez pas une seconde et envoyez-nous un message !
L'intégration dans les outils CAP-REL, c'est pour quand ?
Dès que possible ! ... modulo la vérification que les réponses sont cohérentes et fiables ! Notre objectif est d'atteindre le 80% de résultats positifs. Dès que ce niveau est atteint sur 1000 tickets inconnus l'outil sera qualifié pour passer en production.
Testez avec vos tickets !
Pour cette 2° phase du challenge "I.A." nous avons mis en place la page spéciale https://carbu.org/challenge.php (flashez le qrcode ci-dessous depuis votre smartphone) qui vise à vous permettre de prendre en photo votre ticket de carburant et de vérifier si notre I.A. arrive à extraire toute seule le montant dans son état actuel de ses connaissances ... n'hésitez pas à jouer, au passage vous contribuerez à l'effort global de collecte des tickets !
Autre chose que les tickets de carburant ?
Nous n'allons pas nous limiter aux tickets de carburants, ils nous permettent de monter en compétence sur cette technologie mais une fois bien assimilée vous pouvez être sûrs que ça sera implémenté dans beaucoup d'autres projets !
Crédits photos: Growtika