Je vous invite de tout coeur à visionner la vidéo suivante publiée cette semaine par Andrej Karpathy sur Youtube. Andrej Karpathy est un des chercheurs les plus en pointe en IA. Il est un des cofondateurs d’ OpenAI et combine l’ excellence technique avec un remarquable talent pédagogique.
La vidéo fait le tour du fonctionnement et des perspectives des modèles de langage. Le niveau est plus technique que celui de mes articles habituels tout en restant très accessible.
Dans la vidéo, Andrej Karpathy explique successivement :
comment les modèles de langage génèrent le texte;
l’ entraînement des modèles de langage;
le principe de fonctionnement des modèles de langage;
le passage d’ un modèle généraliste à un modèle conversationnel;
les agents : utilisation d’ outils par les modèles de langage;
le futur des modèles de langage : multimodalité, raisonnement, auto-amélioration;
le modèle de langage comme futur système d’ exploitation;
risques et failles de sécurité spécifiques aux modèles de langage.
Vous pouvez visionner la vidéo ici :
J’ en profite aussi pour vous rappeler la liste des chercheurs en IA à suivre sur X/twitter (dont Andrej Karpathy fait évidemment partie), que j’ avais publié dans un article précédent que vous pourrez consulter ici.
L’ idée de cet article est de vous fournir un aperçu et quelques pistes de réflexion sur l’ état de la législation européenne sur l’ Intelligence Artificielle.
En effet, l’ European Union Artificial Intelligence Act, pour l’appeler par son nom, est actuellement en discussion avancée auprès des Institutions Européennes. L’ objectif est de finaliser le texte pour la fin de l’ année 2023 afin de le faire voter par le Parlement Européen avant les prochaines élections européennes de juin 2024. Il faudra ensuite encore au moins 18 mois pour mettre en place les structures et procédures d’ exécution. La loi deviendrait donc opérationnelle à partir de début 2026 au plus tôt.
La récente montée en puissance de l’ IA « généraliste » -qui englobe l’ IA générative- complique les choses car elle ne s’ intègre pas facilement dans le cadre réglementaire que je vais décrire ci-dessous; sa prise en compte dans l’ AI Act fait actuellement l’ objet d’ intenses tractations.
Afin de ne pas allonger trop cet article, je vais ici me concentrer sur le traitement de l’ IA « traditionnelle », et je couvrirai la problématique de l’IA généraliste dans le prochain article.
Je ne suis pas juriste et donc le texte qui suit ne saurait se substituer à l’avis éclairé d’un homme de l’ art; mais si je peux vous permettre de comprendre la situation d’ensemble et de poser les bonnes questions aux spécialistes en la matière j’ estimerai avoir atteint mon but.
1. Contexte
Le but de l’ EU AI Act est de réglementer de manière uniforme la vente et l’ utilisation de produits et services basés sur l’ IA dans l’ Union Européenne. Cette législation est potentiellement très importante car elle est la première au monde qui adresse explicitement les risques causés par l’ Intelligence Artificielle.
Elle vient complémenter les autres législations européennes qui réglementent l’ économie digitale : le RGPD, le Digital Services Act et le Digital Markets Act. Le RGPD couvre la protection des données personnelles des citoyens de l’ UE, le DMA empêche les grandes plateformes systémiques (Google, Apple, Meta, Microsoft… ) d’ abuser de leur position dominante, et le DSA réglemente les différents aspects de l’ offre de services en ligne comme par exemple la lutte contre les contenus illégaux.
Comme le RGPD, l’ EUAI Act aura très probablement un impact global car son champ d’action couvre non seulement tous les systèmes IA mis sur le marché dans l’ UE mais aussi tous les services en ligne mis à disposition des citoyens de l’ UE, indépendamment de la localisation des fournisseurs de services….
Trois domaines sont exclus du champ de la législation : les applications militaires, les systèmes IA développés dans un but de recherche scientifique et les modèles gratuits et/ou open-source.
2. Approche basée sur le risque
L’idée fondamentale de la législation est d’ évaluer chaque système IA en fonction du niveau de risque qu’ il fait courir aux utilisateurs; ceci donne lieu à un classement de l’ application parmi quatre catégories. Ces catégories vont déterminer le niveau de réglementation qui sera d’ application.
Ces catégories sont : risque inacceptable, risque élevé, risque limité et risque minimal. Assez logiquement, ce sont surtout les deux premières catégories qui font l’ objet des attentions de l’ AI Act.
Figure 1 : la pyramide des risques de l ‘AI Act
Cette approche est logique vu le but de protection des citoyens recherché. La loi est neutre au niveau technologique et réduit les contraintes sur les applications peu risquées afin de limiter autant que possible la charge administrative sur les développeurs.
Voyons maintenant chacune des catégories plus en détail.
3. Risque inacceptable
Ces applications sont considérées comme faisant courir un risque inacceptable aux utilisateurs et sont donc interdites par l’ AI Act.
La liste actuelle de ces applications comprend trois catégories de systèmes :
les systèmes qui manipulent les utilisateurs à travers des messages subliminaux ou en exploitant les vulnérabilités de certains groupes d’utilisateurs (comme les enfants);
les systèmes de crédit social, qui attribuent un score de fiabilité aux citoyens en fonction de leur comportement social;
les systèmes d’identification biométrique en temps réel dans les espaces publics (notamment la reconnaissance faciale).
Certaines dérogations sont en discussion, comme l’ identification biométrique en cas de suspicion de crime grave ou de recherche de mineurs disparus.
La mention des systèmes de crédit social me semble curieuse car elle ne nécessite pas en soi de l’ IA pour être mise en place. Il me semble qu’ il s’ agit surtout d’une réaction au projet chinois en ce sens et de s’ assurer qu’ aucun pays européen n’ a la mauvaise idée de les imiter.
4. Risque élevé
C’ est la catégorie-clé de l’ EUAI Act.
Les applications IA sont considérées comme présentant un risque élevé si une des deux conditions suivantes est réunie :
l’ IA est intégrée dans un produit qui est lui-même soumis à une réglementation existante en matière de sécurité. C’ est par exemple le cas des automobiles, des avions, des jouets, des équipements médicaux ou encore des ascenseurs.
l’IA est exploitée pour remplir une tâche sensible dans un des huit domaines ci-dessous :
les systèmes d’identification biométrique qui ne constituent pas un risque inacceptable;
la gestion des infrastructures critiques : route, chemin de fer, eau, gaz, électricité…;
l’ éducation et l’apprentissage professionnel;
l’ emploi et la gestion des travailleurs;
l’ accès aux services publics essentiels : logement, aide sociale, soins de santé…;
la police;
le contrôle aux frontières, la migration et l’ asile;
la justice et les processus démocratiques (élections etc…).
La définition précise de ce qui constitue une tâche sensible est toujours en discussion, mais l’ idée est de se concentrer sur les tâches qui jouent un rôle dans la prise de décision.
Ces systèmes à haut risque seront soumis à un processus d’ évaluation au cours duquel ils devront démontrer que toutes les mesures possibles ont été prises pour assurer leur fiabilité et leur sécurité. Après la mise sur le marché, les exploitants devront mettre en place un mécanisme de supervision et de suivi des incidents sérieux qui devront être notifiés aux autorités.
Vous remarquerez que les soins de santé ne sont pas repris dans la liste, ce qui peut surprendre. La raison est que ce secteur est déjà largement couvert par des législations spécifiques de sécurité, c’est donc la première condition mentionnée ci-dessus qui va s’appliquer.
5. Risque limité
Les applications à risque limité sont typiquement celles dans lesquelles l’ utilisateur interagit directement avec une IA mais sans tomber dans le champ des risques élevés (ou inacceptables) définis ci-dessus.
Dans ce cas, l’exploitant est uniquement soumis à une obligation de transparence : il doit informer l’ utilisateur qu’ il interagit avec une IA afin d’ éviter toute manipulation et lui permettre de choisir de continuer ou non l’interaction.
Cette catégorie inclut les systèmes de chatbot, les générateurs d’images, d’audio et/ou de vidéo de synthèse, ainsi que les générateurs de deepfakes.
6. Risque minimal
Ces applications utilisent l’ IA dans une fonction qui ne pose aucun risque pratique pour l’utilisateur, comme des jeux vidéo ou des filtres anti-spam.
Elles ne sont soumise à aucune contrainte spécifique par l’ AI Act.
La grande majorité des systèmes IA actuels entre dans cette dernière catégorie.
7. Conclusions
La législation n’est pas encore votée donc des évolutions auront encore lieu, et il sera très intéressant de voir quels compromis seront adoptés dans la version finale. Mais la pierre d’ achoppement principale est sans conteste la réglementation de l’ IA généraliste, dont je reparlerai.
Une autre partie importante des discussions en cours porte sur les mécanismes de mise en oeuvre, et ces derniers sont absolument cruciaux. Il ne suffit pas de faire voter un beau texte pour changer le cours des choses; il faut aussi que les provisions de la loi soient implémentables et exécutables, faute de quoi l’ AI Act restera lettre morte dans la pratique.
L’ offre de solutions génératives va bien au-delà des modèles de langage qui ont défrayé la chronique en 2023. Différentes modalités et services sont en effet accessibles à l’ utilisateur, et il est temps d’ en faire le tour avant l’ arrivée imminente des modèles multimodaux qui promettent de bouleverser l’offre.
La liste qui suit n’ a pas la prétention d’ être exhaustive, de nouvelles sociétés apparaissant sur une base presque quotidienne. Mon but est plutôt d’ illustrer l’ éventail des possibilités disponibles aujourd’hui, particulièrement dans des domaines moins souvent évoqués comme la vidéo ou la 3D.
Les modalités que je couvre dans cet article sont les suivantes :
Conversation textuelle
Assistance à la programmation
Génération et analyse audio (voix et musique)
Génération et analyse d’image
Génération vidéo
Génération de modèles 3D
Voici la liste complète des services mentionné dans cet article. La fonctionnalité proposée par le service est indiquée en vert au-dessus de l’ icône représentant le service. Vous trouverez les liens d’ accès aux différents services dans les paragraphes ci-dessous.
Figure 1 : L’ offre générative disponible, classée par modalité
Analysons maintenant l’ offre pour chacune des modalités.
1. Modèles conversationnels (texte)
Il s’ agit des modèles avec lesquels il est possible de dialoguer de manière interactive comme chatGPT, Claude, Bard etc… je n’ en parlerai pas plus en détail ici vu le nombre d’ article que je leur ai déjà consacrés dans le passé.
Juste un petit mot pour indiquer que Llama 2, Mistral et Falcon sont des modèles open-source et qu’ il vous est possible de les exécuter localement, sous réserve de disposer d’une machine suffisamment puissante.
2. Assistants de programmation
Les assistants de programmation sont en réalité des modèles conversationnels qui ont été affinés sur du code informatique et intégrés dans un environnement de programmation (IDE).
Ils vous proposent des suggestions de code sur base de votre code existant et/ou de descriptions textuelles que vous introduisez.
Github Copilot et Amazon CodeWhisperer sont offerts comme modules additionnels (plug-ins) qui s’intègrent dans un environnement de développement installé localement comme VSCode.
Replit et Tabnine fonctionnent de manière similaire mais l’ensemble de l’environnement, assistant compris, se trouve dans le cloud.
3. Modèles audio
Les modèles audio offrent de nombreuses possibilités. OpenAI TTS et Elevenlabs proposent de faire réciter un texte par une voix synthétique, tandis que Google MusicLM et OpenAI Jukebox génèrent de la musique synthétique (paroles comprises) sur base d’une idée musicale décrite de manière textuelle.
Vous pouvez accéder ici à une série de morceaux de musique générés par MusicLM.
Mais il est aussi possible de travailler en sens inverse : c’est la reconnaissance vocale; elle génère le texte correspondant à une voix. OpenAI Whisper offre une fonctionnalité de ce type, et OpenAI a intégré à la fois TTS et Whisper à l’application mobile ChatGPT ce qui vous permet de discuter verbalement avec votre modèle conversationnel favori lorsque vous êtes en déplacement…
De son côté, Veed.io exploite la reconnaissance vocale pour générer automatiquement des sous-titres dans une vidéo.
4. Modèles d’image
Comme pour les modèles audio, on retrouve deux grandes familles de services : ceux qui génèrent une image à partir d’une description textuelle, et ceux qui interprètent le contenu d’une image que vous leur fournissez.
Dans la première catégorie, on retrouve Dall-E 3, Midjourney et StableDiffusion XL, et dans la seconde catégorie OpenAI GPT-4V et Google VisionAI.
Ces moteurs sont en général accessibles de manière transparente via l’assistant conversationnel :
ChatGPT permet de générer des images via DALL-E 3 et de les analyser via GPT4-V;
Google Bard peut analyser des images via VisionAI selon un mécanisme analogue;
Bing chat peut générer des images via DALL-E 3.
L’ accès à Midjourney est plus complexe car il faut rejoindre le serveur Midjourney sur Discord et demander la génération d’ image à travers un des canaux de chat après inscription préalable.
Enfin, Wonder vous permet de créer des avatars à partir d’ une photo et d’ une description textuelle de vos idées.
5. Modèles vidéo
Alors là, c’est carrément bluffant : vous tapez une simple description textuelle et le modèle génère une vidéo en retour. RunwayML, Fliki et Genmo offrent cette fonctionnalité.
Voici ce que j’ai obtenu avec RunwayML en tapant simplement le texte : Make a video showing the colosseum in Rome with a Porsche driving in front. La vidéo accessible ici ne dure que quatre secondes car c’est la limite permise par Runway pour l’ abonnement gratuit (que je vous conseille d’essayer).
Synthesia est semblable mais se spécialise dans la génération de vidéos dans lesquelles un speaker récite un texte que vous lui soumettez. Ici encore, voici la preuve par l’exemple : une présentation de mon blog par une interlocutrice virtuelle accessible ici.
Enfin, Wonder Studio vous permet d’ intégrer et d’ animer des personnages d’ animation 3D dans une séquence vidéo existante. L’animation peut se faire en remplaçant un acteur réel par le personnage d’animation, et dans ce cas le modèle tiendra compte de l’ éclairage de la scène, des mouvements de la caméra et même des mimiques faciales de l’ acteur. Regardez plutôt ceci pour une présentation des capacités de l’ application…
Mais tant que nous y sommes, peut-on aussi créer un personnage d’ animation grâce à l’ IA générative? La réponse est oui et nous allons maintenant voir comment…
6. Modèles 3D
Il est en effet possible de générer un modèle 3D à partir d’une description textuelle. C’est ce que permet aujourd’hui le modèle Genie de Luma Labs, et bientôt aussi avec Stable3D de StabilityAI et Magic3D de Nvidia.
Comme Midjourney, Genie est accessible via Discord. Après inscription, il vous suffit d’ entrer dans une des sessions de chat et de taper /genie suivi d’une description de l’ objet 3D que vous désirez. Par exemple, le texte exotic otherworldly blue flamingo a généré le modèle 3D que vous pouvez voir ici.
Et voilà, il ne vous reste plus qu’ à réintégrer vos modèles 3D dans Wonder Studio pour débuter dans l’animation….
Aujourd’hui, nous pouvons discuter avec l’intelligence artificielle et lui permettre de générer des réponses semblables à celles des humains. Les modèles de langage combinent les informations contenues dans l’ invite (en anglais : le prompt) avec celles intégrées dans le modèle pendant l’entraînement pour générer leurs réponses. Les informations contenues dans l’ invite peuvent être vues comme une forme complémentaire d’ apprentissage limitée au dialogue en cours.
La formulation du prompt est donc déterminante et forme le socle d’ une discipline naissante appelée prompt engineering. Le prompt engineering comprend à la fois des techniques de bases que j’ illustre ici, mais aussi des techniques plus avancées que je couvrirai ultérieurement. Il faut bien noter que toutes ces techniques sont de nature empirique, elles se sont constituées au fil des expérimentations des utilisateurs sur les modèles. Il n’ y a pas de théorie formelle sous-jacente. Dès lors, il est tout à fait possible que de nouvelles approches plus efficaces soient identifiées à l’ avenir.
Plus concrètement, je vous présente dans cet article une méthodologie structurée de construction d’ une invite efficace, applicable à tous les modèles conversationnels actuels (ChatGPT, Bing chat, Claude, Llama 2, Bard…).
1. Structure
Nous allons construire notre prompt suivant une structure en six parties. Ces parties, par ordre d’importance décroissante sont :
La tâche : décrit ce que vous voulez obtenir comme information du modèle. C’est évidement l’information fondamentale;
Le contexte : reprend des informations complémentaires expliquant les circonstances et l’environnement dans lesquels la tâche doit être exécutée;
La guidance : guide le modèle à fournir le contenu de réponse que vous attendez;
La personnalité : décrit la personnalité que le modèle va chercher à incarner dans sa réponse;
Le format : décrit le format de la réponse;
Le ton : décrit l’humeur et la tonalité de la réponse : formelle, humoristique, enthousiaste..
A l’ exception de la tâche, aucune partie n’ est absolument requise mais elles contribuent à la qualité de la réponse en fonction de leur importance respective. L’ ordre dans lequel les différentes parties sont rédigées dans l’ invite peut varier, pour autant que l’ ensemble reste cohérent et mette l’ emphase sur les éléments les plus importants.
Voici une illustration de prompt complet montrant la contribution de chaque partie à l’ ensemble :
Figure 1 : Un prompt complet avec illustration des parties
J’en profite pour faire un lien avec les instructions personnalisées de ChatGPT que j’avais mentionnées dans un article précédent : Il vous est possible de placer certaines des parties de l’invite que vous réutilisez systématiquement dans les Custom Instructions, comme la personnalité, le format, le ton et potentiellement certains élements de contexte.
Voyons maintenant chaque partie plus en détail.
2. Définition de la tâche
La tâche est le coeur de l’ invite: elle indique au modèle ce qu’ il doit faire en retour. Il est essentiel d’ être clair et concis pour garantir que le modèle comprend votre demande.
Quelques verbes typiques de la description d’une tâche : traduis, résume, analyse, trie, classe, rédige, génère, explique, décris, planifie, organise, demande….
Pensez à bien décrire l’ objectif que vous recherchez, et n’ hésitez pas à détailler si nécessaire.
Exemples :
simple : Génère un programme d’entraînement approprié pour courir un marathon;
complexe : Analyse le retour des abonnées à notre lettre d’information, résume les trois points d’amélioration principaux et catégorise le reste par ordre d’importance décroissante.
3. Définition du contexte
Comme dans toute conversation, plus vous fournissez de contexte lors de la rédaction des invites, plus les résultats d’ un modèle linguistique comme ChatGPT seront pertinents. Votre contexte devrait reprendre des informations sur l’ environnement et des circonstances dans lequel se fait la demande ainsi que la situation des intervenants et leurs objectifs. Si possible, reliez cela à l’ objectif de votre demande et les facteurs de succès qui y sont liés.
Exemples :
sportif : Je suis un homme de 54 ans qui court environ 10 kilomètres tous les deux jours. J’ai déjà couru deux marathons il y a environ 15 ans et je voudrais recommencer. Cependant je n’ai plus du tout l’habitude de courir de longues distances. Mon but pour le marathon est de terminer dans le temps imparti (4h30 minutes) pour ne pas être disqualifié.
ingéniérie : Nous sommes un bureau d’études en charge de rénover un pont ferroviaire sur la Meuse. Ce pont de 165 mètres de long a été construit dans les années 1970. Il compte cinq piles qui portent six travées et possède un tablier en béton. Le pont montre des signes d’usure et des rénovations sont nécessaires au niveau du béton, des joints étanches sous les voies et des supports entre les tabliers de pont et les piles. Lors de la rénovation, il est essentiel que les passants et les riverains subissent le moins de désagréments possible.
4. Définition de la guidance
La guidance a pour but d’aider le modèle à fournir une réponse correcte.
L’ approche la plus simple est de recourir à une description du contenu que vous attendez. La guidance vient épauler la définition de la tâche et se confond parfois avec elle. La guidance n’est pas toujours nécessaire, cela dépend du type de tâche demandé par l’utilisateur.
Exemple : dans votre réponse, listez les trois causes les plus probables de la panne de courant et pour chacune, expliquez votre raisonnement en mettant en concordance les causes proposées avec le déroulement des événements.
L’ autre approche est de fournir un ou plusieurs exemples reprenant une séquence questions/réponses qui va offrir un cadre au modèle. Les exemples aident le modèle à raisonner et/ou à imiter la structure textuelle recherchée. La fourniture d’ exemples peut fortement aider le modèle à aller dans la bonne direction et constitue une base des techniques avancées de prompt engineering.
5. Incarnation d’une personnalité
En définissant une personnalité, vous demandez au modèle de répondre selon une perspective particulière, ce qui peut fortement impacter la qualité de la réponse.
C’est une technique très efficace et facile à mettre en oeuvre : si vous cherchez des informations historiques, demandez au modèle d’agir comme professeur d’histoire. Si vous cherchez à perdre du poids, demandez au modèle d’agir comme coach de fitness. Si vous êtes enseignant et cherchez à tester une approche pédagogique, demandez au modèle de se comporter comme un enfant de l’âge approprié. Les possibilités sont presque infinies…
Détail amusant, vous pouvez même demander au modèle d’incarner une personnalité connue, comme Albert Einstein, Winston Churchill, Paul Bocuse ou Albert Camus. Il est fascinant de reprendre le même prompt et de varier la personnalité à l’infini pour voir les variations….
6. Définition du format de la réponse
Ceci consiste à spécifier le format de la réponse. Les modèles sont en effet assez doués pour formatter leur réponse selon un format particulier comme :
une table
une liste numérotée
un email
un texte structuré au format Markdown
un tweet (n’hésitez pas à demander d’ajouter les hashtags pertinents)
un bloc de code informatique : procédure, fonction…
un fichier structuré (csv, json, yaml…)
Il suffit de mentionner un texte du style : formate le résultat sous forme de table / de code…. Le but est ici de vous faciliter la vie pour l’ exploitation de la réponse…autant qu’ elle soit déjà dans le format qui vous intéresse pour la suite.
7. Définition du ton de la réponse
Le ton définit l’humeur et le sentiment de la réponse: attendez-vous une réponse structurée et analytique ou une réponse enthousiaste et motivante ? Voulez-vous que le ton soit formel et professionel ou familier et informel ? L’humour ou l’ironie sont-ils acceptables ? Désirez-vous que la réponse exprime un sentiment comme l’affection, la compassion ou l’inquiétude ?
Quelques exemples :
Réponds dans un style formel
Utilise un style familier dans la réponse
Fournis une réponse ironique ou sarcastique
Sois enthousiaste dans la réponse
Donne une réponse pessimiste
A vous de jouer.
8. Limitations
Soyez toujours conscients des limitations des modèles :
Bien que les modèles de langage soient capables de présenter une liste de sources d’apparence plausible, il arrive souvent que ces sources soient inventées. Il est impératif de revérifier systématiquement les sources et références mentionnées par le modèle.
Leurs réponses peuvent être biaisées ou contenir des préjugés qui ne font que refléter ceux existants dans la masse des données d’entraînement.
Ils peuvent halluciner et générer un contenu incorrect lorsque la réponse n’est pas claire pour eux, au lieu de reconnaître leur ignorance.
Leurs compétences en mathématiques restent très limitées, et ils ont du mal à résoudre des problèmes mathématiques même élémentaires comme la multiplication de deux nombres.
Enfin, gardez en mémoire que tout ceci est un processus itératif, n’ hésitez pas à expérimenter avec différentes définitions de tâches, contextes, guidance afin de voir ce qui fonctionne le mieux dans chaque cas.