❌

Vue lecture

20 ans de Fedora-fr : quatriÚme entretien avec Timothée contributeur des systÚmes immuables et KDE

Dans le cadre des 20 ans de Fedora-fr et du Projet Fedora en lui-mĂȘme, Nicolas Berrehouc alias Nicosss et moi-mĂȘme (Charles-Antoine Couret alias Renault) avons souhaitĂ© poser des questions Ă  des contributeurs francophones du Projet Fedora et de Fedora-fr.

La diversitĂ© des profils permet de voir le fonctionnement du projet Fedora sous diffĂ©rents angles, au-delĂ  de la distribution, mais aussi comment il est organisĂ© et conçu. Certains points s’appliquent d’ailleurs Ă  d’autres distributions.

N’oublions pas que le Projet Fedora reste un projet mondial et un travail d’équipe, ce que ces entretiens ne permettent pas forcĂ©ment de reflĂ©ter. Mais la communautĂ© francophone a la chance d’avoir suffisamment de contributeurs et de contributrices de qualitĂ© pour permettre de donner un aperçu de beaucoup de sous-projets de la distribution.

Chaque semaine un nouvel entretien sera publié sur le forum Fedora-fr.org, LinuxFr.org et le blog de Renault.

L’entretien du jour concerne TimothĂ©e Ravier, contributeur au Projet Fedora en particulier aux systĂšmes dits immuables et Ă  l’environnement KDE Plasma.

    Sommaire

    Bonjour TimothĂ©e, peux-tu prĂ©senter briĂšvement ton parcours ?

    J’ai commencĂ© Ă  m’intĂ©resser aux logiciels open source autour de 2004 lorsque j’ai dĂ©couvert Firefox (version 1.0 Ă  l’époque) par l’intermĂ©diaire d’un ami qui l’a tĂ©lĂ©chargĂ© pour moi sur un CD rĂ©-inscriptible, car je n’avais pas encore l’ADSL Ă  l’époque. J’ai ensuite dĂ©couvert Linux avec Ubuntu 6.06. AprĂšs mes Ă©tudes d’ingĂ©nieur en sĂ©curitĂ© informatique, j’ai travaillĂ© Ă  l’ANSSI pendant cinq ans sur le projet CLIP OS et je travaille dĂ©sormais pour Red Hat oĂč je co-dirige l’équipe CoreOS, qui est responsable de la maintenance de Fedora CoreOS et de Red Hat Enterprise Linux CoreOS pour OpenShift.

    Peux-tu prĂ©senter briĂšvement tes contributions au Projet Fedora ?

    Mes contributions Ă  Fedora sont liĂ©es Ă  mon intĂ©rĂȘt pour les systĂšmes orientĂ©s conteneurs, parfois dĂ©nommĂ©s immuables (immutable). Je fais ainsi partie de l’équipe qui maintient Fedora CoreOS, je suis un mainteneur des Fedora Atomic Desktops (principalement Silverblue et Kinoite) et je suis membre du KDE Special Interest Group (SIG).

    Qu’est-ce qui fait que tu es venu sur Fedora et que tu y es restĂ© ?

    Je suis passé par plusieurs distributions Linux (Ubuntu, Gentoo, Arch Linux) mais je suis désormais sur Fedora.

    Je pense que les « Four Foundations Â» de Fedora reprĂ©sentent bien mon parcours :

    • Freedom : Je suis lĂ  parce que je suis intĂ©ressĂ© par les logiciels libres, car ils permettent un partage, une mise en commun au bĂ©nĂ©fice de tous.
    • Features, First : C’est la force de la communautĂ© Fedora d’un point de vue technologique. Je dĂ©veloppe ce point dans les questions suivantes.
    • Friends : Je me suis fait des amis dans la communautĂ© Fedora et cela contribue Ă  la bonne ambiance et la motivation pour continuer Ă  contribuer.

    Pourquoi contribuer Ă  Fedora en particulier ?

    Je prĂ©fĂšre ĂȘtre proche des projets upstream et des derniĂšres Ă©volutions. C’est pour cela que j’étais pendant un long moment sous Arch Linux.

    Mais le processus pour pousser des changements dans Arch Linux Ă©tait plutĂŽt flou. Il est important de noter que cela a peut-ĂȘtre changĂ© dĂ©sormais. Mon expĂ©rience date de plus de 6 ans et je crois qu’ils ont un processus de RFC maintenant. Le fonctionnement d’Arch Linux impose aussi des mises Ă  jour rĂ©guliĂšres et une certaine discipline lors des mises Ă  jour liĂ©e au modĂšle de dĂ©veloppement sans version fixe.

    Je commençais alors Ă  m’intĂ©resser de plus en plus aux systĂšmes Ă  base d’images (CoreOS Container Linux et Fedora Atomic Host Ă  l’époque) et je suis donc allĂ© voir Fedora Atomic Workstation (ancien nom de Silverblue) pour crĂ©er une version Ă  base de l’environnement KDE Plasma, qui est devenue Fedora Kinoite.

    Le processus pour pousser des changements dans Fedora est ce qui fait la force de la distribution. Il permet d’obtenir des discussions et des dĂ©cisions sur les Ă©volutions Ă  apporter Ă  la distribution pour la prochaine version.

    Contribues-tu Ă  d’autres Logiciels Libres ? Si oui, lesquels et comment ?

    En dehors de Fedora, je contribue principalement au dĂ©veloppement des projets KDE. Je fais partie de l’équipe qui maintient les applications KDE empaquetĂ©es avec Flatpak et publiĂ©es sur Flathub.

    Je contribue aussi occasionnellement à différents projets open source en fonction des besoins.

    Utilises-tu Fedora dans un contexte professionnel ? Et pourquoi ?

    Oui, mes ordinateurs professionnels et personnels tournent sous Fedora Kinoite et mes serveurs personnels utilisent Fedora CoreOS. Une partie des serveurs que nous utilisons pour dĂ©velopper et produire les versions de Fedora CoreOS sont aussi sous Fedora CoreOS. D’autres sont sous Red Hat Enterprise Linux CoreOS, car ils font partie d’un cluster OpenShift.

    En gros, nous sommes aussi des utilisateurs directs des logiciels que nous développons.

    Est-ce que tes contributions dans Fedora se font entiĂšrement dans le cadre de ton travail ? Si non, pourquoi ?

    Une grosse partie de mes contributions se font dans le cadre de mon travail, mais toute la partie liée à KDE et aux Fedora Atomic Desktops est faite sur mon temps personnel.

    Est-ce que ĂȘtre employĂ© Red Hat te donne d’autres droits ou opportunitĂ©s au sein du Projet Fedora ?

    Je n’ai pas plus de droits dans Fedora parce que je travaille pour Red Hat. Je dois suivre tous les processus de Fedora comme n’importe quel contributeur. J’ai d’ailleurs commencĂ© Ă  contribuer Ă  Fedora avant d’avoir Ă©tĂ© employĂ© par Red Hat.

    En revanche, il est indĂ©niable que cela m’aide pour contribuer, car j’ai rĂ©guliĂšrement l’occasion de discuter avec d’autres contributeurs Fedora dans le cadre de mon travail.

    Tu as dĂ©butĂ© une carriĂšre dans la sĂ©curitĂ© pour finalement travailler pour Red Hat en tant que mainteneur de CoreOS, Silverblue, Kinoite et contributeur Ă  KDE, pourquoi ne pas avoir continuĂ© dans la sĂ©curitĂ© pour cet Ă©cosystĂšme ?

    Quelque part je continue Ă  faire de la sĂ©curitĂ© mais sous un autre angle. La sĂ©curitĂ© que je faisais avant ne bĂ©nĂ©ficiait qu’à un petit nombre de personnes qui avait accĂšs aux systĂšmes que l’on dĂ©veloppait. La nouvelle version open source de CLIP OS devait rendre le systĂšme plus accessible mais le projet Ă©tait complexe et je crois qu’il est dĂ©sormais archivĂ©.

    Je travaille dĂ©sormais Ă  amĂ©liorer la sĂ©curitĂ© de Fedora CoreOS et des Fedora Atomic Desktops sans compromettre leur utilisabilitĂ©. L’objectif est de fournir une distribution Linux avec des mises Ă  jour robustes qui soit utilisable par des non dĂ©veloppeurs.

    Tu participes Ă  CoreOS pour RHEL, CentOS Stream et Fedora. Peux-tu expliquer le but de CoreOS et ses principales caractĂ©ristiques ? Quelles sont les diffĂ©rences entre RHEL, CentOS Stream et Fedora Ă  ce sujet ?

    L’objectif pour les systĂšmes CoreOS est de faire tourner au mieux des applications dans des conteneurs. Pour Fedora CoreOS, c’est un systĂšme minimal, avec des mises Ă  jour automatiques, proposant Ă  la fois podman et moby-engine (Docker) installĂ©s par dĂ©faut, prĂȘt Ă  faire tourner des conteneurs sur un seul nƓud ou dans le cadre d’un cluster Kubernetes.

    Pour Red Hat Enterprise Linux CoreOS (et CentOS Stream CoreOS), ce sont des systùmes qui forment le socle d’OpenShift (et d’OKD), une plateforme qui intùgre plein de projets open source dont Kubernetes.

    Bien qu’il n’y ait pas une correspondance exacte un pour un dans la liste des logiciels inclus, Fedora CoreOS est l’upstream de CentOS Stream CoreOS et Red Hat Enterprise Linux CoreOS, de la mĂȘme façon que Fedora est l’upstream de CentOS Stream, qui l’est de Red Hat Enterprise Linux.

    L’architecture atomic a gagnĂ© du terrain sur les systĂšmes pour le bureau avec Silverblue et Kinoite et devient relativement populaire, peux-tu expliquer quel en est l’intĂ©rĂȘt d’une telle conception pour ce genre de systĂšmes ?

    Le principal intĂ©rĂȘt pour un utilisateur est la robustesse et rapiditĂ© des mises Ă  jour. Celles-ci sont prĂ©parĂ©es en arriĂšre plan alors que le systĂšme fonctionne normalement. Il suffit alors de redĂ©marrer pour mettre Ă  jour son systĂšme. Il n’y a pas d’attente supplĂ©mentaire ni Ă  l’extinction ni au dĂ©marrage.

    Si une mise Ă  jour Ă©choue, le systĂšme reste dans l’état actuel, et il est possible de rĂ©essayer plus tard.
    Si une mise Ă  jour introduit un problĂšme important empĂȘchant le dĂ©marrage du systĂšme par exemple, il est possible de redĂ©marrer et de choisir la version prĂ©cĂ©dente dans le menu de dĂ©marrage de GRUB.

    Les utilisateurs sont aussi poussés à utiliser Flatpak pour installer leurs applications graphiques et toolbox (ou distrobox) pour utiliser les applications en ligne de commandes dans des conteneurs.

    Quels sont les dĂ©fis techniques de proposer cette conception dans ces systĂšmes par rapport Ă  CoreOS par exemple ?

    La principale diffĂ©rence est la prĂ©sence d’une interface graphique. Les applications graphiques doivent ĂȘtre parfois adaptĂ©es pour fonctionner avec Flatpak. C’est dĂ©sormais le cas de la plupart d’entre elles.

    Tu y contribues en tant que membre de Fedora Atomic Desktops SIG, peux-tu expliquer son rĂŽle dans Fedora et ton activitĂ© dedans ?

    Le rĂŽle du Fedora Atomic Desktops SIG est de regrouper l’ensemble des contributeurs Fedora des diffĂ©rentes variantes Atomic : Silverblue, Kinoite, Sway Atomic et Budgie Atomic. Bien que chacun de ces systĂšmes propose un environnement de bureau distinct, ils partagent Ă©normĂ©ment d’élĂ©ments, tant au niveau des composants de base du systĂšme que de l’infrastructure Fedora. Le SIG permet donc de regrouper les contributeurs pour pouvoir les inclure dans les prises de dĂ©cisions qui impactent ces systĂšmes.

    Je participe Ă  la maintenance des Fedora Atomic Desktops et plus principalement de Silverblue et Kinoite. Cela peut impliquer des mises Ă  jour de paquets, des corrections de bugs dans des projets upstream ou des rajouts de fonctionnalitĂ©s pour amĂ©liorer l’expĂ©rience sur ces systĂšmes. Je surveille aussi que tous les Atomic Desktops continuent de recevoir des mises Ă  jour rĂ©guliĂšrement.

    Penses-tu qu’un jour ces systĂšmes atomic deviendront la rĂ©fĂ©rence par dĂ©faut ? Si oui Ă  quelle Ă©chĂ©ance ? Quelles sont les difficultĂ©s actuelles Ă  rĂ©soudre ?

    Je l’espĂšre ! Il est impossible de donner une Ă©chĂ©ance et cela ne dĂ©pend pas vraiment de moi. La difficultĂ© la plus importante est la prise en charge du matĂ©riel et les pilotes qui ne sont pas intĂ©grĂ©s dans Fedora. C’est un problĂšme que l’on ne peut pas rĂ©soudre dans Fedora Ă  cause des contraintes lĂ©gales et qui sont traitĂ©es par le projet Universal Blue, dont la variante Bazzite (https://bazzite.gg/), est trĂšs populaire.

    Pour la problĂ©matique des pilotes, est-ce que l’initiative du noyau unifiĂ© (d’avoir une image universelle et signĂ©e comprenant le noyau, initrd, la ligne de commande) te semble ĂȘtre une solution Ă  cette problĂ©matique ?

    Ces deux sujets ne sont pas liés.

    Le problÚme des pilotes externes au noyau Linux upstream est divisé en deux cas principaux :

    • Les pilotes propriĂ©taires : Ils ne seront jamais ajoutĂ©s directement Ă  Fedora pour des raisons lĂ©gales et de licence.
    • Les pilotes open source mais non inclus dans le noyau Linux upstream : Fedora met Ă  jour le noyau Linux trĂšs rĂ©guliĂšrement et suit les nouvelles versions stables peu de temps aprĂšs leur sortie officielle. Il faut donc que ces pilotes soient mis Ă  jour pour suivre les nouvelles versions du noyau et cela demande toujours du temps lorsque ceux-ci ne font pas partie du noyau upstream.

    Les images noyau unifiĂ©es (Unified Kernel Images ou UKI) incluent le noyau, l’initrd et la ligne de commande du noyau dans un seul fichier. Cela prĂ©sente des avantages pour mettre en place une chaĂźne de boot mesurĂ©e, notamment Ă  l’aide du TPM, et donc pour offrir de meilleures garanties de sĂ©curitĂ©. Leur intĂ©gration est encore en cours dans les variantes CoreOS et Atomic Desktops.

    Les dĂ©veloppeurs et administrateurs systĂšmes ont souvent besoin d’outils qui Ă  ce jour nĂ©cessitent souvent de recourir Ă  rpm-ostree plutĂŽt que Flatpak ou Fedora toolbox dans le cadre d’un systĂšme immuable. Penses-tu que ces verrous sont un rĂ©el problĂšme et qu’ils seront Ă©ventuellement rĂ©solus dans le temps ?

    L’un des objectifs de la nouvelle initiative conteneurs bootables (« Bootable Containers Â») est justement de rendre plus ergonomique la modification du systĂšme de base. Le systĂšme est distribuĂ© sous forme d’une image de conteneur standard (image OCI) et il est possible de la modifier Ă  l’aide d’un Containerfile / Dockerfile et d’outils natifs aux conteneurs. Cela permet aux utilisateurs de rĂ©-utiliser leurs habitudes et outils pour modifier aussi leur systĂšme de façon sĂ»re et de partager le rĂ©sultat Ă  l’aide d’un registre d’image de conteneurs.

    Nous allons aussi ajouter Ă  nouveau dnf (version 5) dans ces images de conteneurs pour mettre Ă  disposition des utilisateurs une interface familiĂšre et toutes les options de dnf lors de la construction de ces images.

    Une autre piste est d’utiliser le concept des extensions systĂšmes de systemd (systemd system extensions ou sysexts), qui permettent d’ajouter du contenu dynamiquement Ă  un systĂšme sans perdre les avantages de la gestion Ă  base d’images. Les sysexts utilisent la mĂȘme technologie que pour les conteneurs (overlayfs) pour ajouter des Ă©lĂ©ments (merge) au contenu des dossiers /usr et /opt de l’image de base. Je suis en train d’investiguer cette option pour rendre son usage ergonomique pour ces systĂšmes : https://github.com/travier/fedora-sysexts.

    Il est aussi possible de modifier temporairement le systĂšme en utilisant un systĂšme de fichier temporaire montĂ© au-dessus des emplacements en lecture seule (overlayfs). Les fichiers de /usr peuvent alors ĂȘtre modifiĂ©s et de nouveaux paquets RPM installĂ©s Ă  la demande. Les modifications disparaĂźtront au redĂ©marrage.

    Tu participes aussi Ă  l’équipe de KDE SIG, peux-tu expliquer son rĂŽle dans Fedora et ton activitĂ© dedans ?

    L’objectif du KDE SIG est de proposer la meilleure expĂ©rience possible de KDE sur Fedora. Nous suivons et contribuons aussi au dĂ©veloppement de KDE upstream.

    Je participe au KDE SIG en tant que mainteneur de Kinoite et développeur KDE.

    GNOME reste le bureau principal de Fedora Ă  ce jour, cependant la qualitĂ© de l’intĂ©gration de KDE progresse depuis de nombreuses annĂ©es maintenant, penses-tu que la qualitĂ© entre les deux est aujourd’hui Ă©quivalente ? Est-ce que les contributions pour KDE sont freinĂ©es de par le statut de GNOME au sein du projet ?

    C’est une question trĂšs difficile, car elle est trĂšs subjective. J’utilise principalement KDE sur mes systĂšmes, mais j’apprĂ©cie Ă©normĂ©ment le travail de design fait sur GNOME. Pour moi c’est un choix personnel.

    D’un point de vue technologique, il est possible de trouver des Ă©lĂ©ments “meilleurs” dans GNOME que dans KDE et l’inverse.

    Il n’y a pas de bĂ©nĂ©fice Ă  opposer ces deux projets. C’est au contraire la collaboration qui amĂ©liore l’expĂ©rience utilisateur.

    Je ne pense pas que les contributions à KDE soient freinées par le status de GNOME dans Fedora.

    L’équipe KDE SIG a rĂ©cemment proposĂ© d’amĂ©liorer le statut de KDE au sein du projet, quitte Ă  mĂȘme remplacer GNOME pour Fedora Workstation, peux-tu expliquer cette demande ? Penses-tu qu’un jour KDE remplacera GNOME au sein de Fedora ou de RHEL par exemple ?

    L’idĂ©e des membres soutenant cette proposition (qui ne vient pas uniquement de personnes faisant partie du KDE SIG) est de remettre en question la place de GNOME « par dĂ©faut Â» dans le projet Fedora (notamment Fedora Workstation). Poser cette question force le projet Ă  clarifier les critĂšres qui font qu’un environnement de bureau est considĂ©rĂ© comme majeur et donc autorisĂ© Ă  ĂȘtre reprĂ©sentĂ© par une â€œĂ©dition” comme Fedora Workstation. Tous les environnements de bureau non-GNOME ne sont actuellement pas bien prĂ©sentĂ©s sur le site de Fedora notamment.

    Il est important pour un projet communautaire de pouvoir justifier ses choix, que l’on soit d’accord ou non avec les arguments prĂ©sentĂ©s. Si ces choix sont perçus comme arbitraires (« c’est comme ça que cela a toujours Ă©tĂ© Â», « c’est un employĂ© de Red Hat qui l’a dĂ©cidĂ© Â»), alors le projet Fedora perd en crĂ©dibilitĂ©. Il faut, par exemple, pouvoir justifier que GNOME est un bon choix Ă  prĂ©senter aux utilisateurs dĂ©couvrant Fedora.

    Je ne pense pas que KDE va “remplacer” GNOME dans Fedora et ce n’est pas vraiment l’idĂ©e derriĂšre cette proposition qui a Ă©tĂ© formulĂ©e explicitement de la sorte pour forcer la discussion. L’objectif est de rendre KDE plus visible dans Fedora.

    Pour ce qui est de remplacer GNOME dans RHEL, c’est peu probable et cela serait une dĂ©cision de Red Hat.

    Penses-tu que Fedora est une distribution de rĂ©fĂ©rence pour utiliser KDE aujourd’hui ? Par le passĂ© OpenSUSE, Kubuntu ou Mageia Ă©taient souvent recommandĂ©es pour utiliser cet environnement.

    Oui ! :) Fedora propose depuis plusieurs annĂ©es les derniĂšres versions de KDE Ă  des frĂ©quences trĂšs proches des sorties upstream. Nous sommes actuellement l’une des premiĂšres distributions Ă  proposer le bureau KDE Plasma dans sa version 6. Le KDE SIG suit et participe activement au dĂ©veloppement de KDE upstream et certains dĂ©veloppeurs KDE recommandent dĂ©sormais Fedora.

    Je travaille avec Fedora Kinoite à rendre le développement de KDE plus abordable, notamment pour le test des versions en cours de développement.

    Si tu avais la possibilitĂ© de changer quelque chose dans la distribution Fedora ou dans sa maniĂšre de fonctionner, qu’est-ce que ce serait ?

    Je regrouperai l’intĂ©gralitĂ© des dĂ©pĂŽts Git, codes sources, projets, suivi des bugs, etc. sur une (ou plusieurs) instance GitLab hĂ©bergĂ©e par le projet Fedora. C’est un projet qui est dĂ©sormais en cours pour migrer vers Forgejo. Finies les instances Pagure (forge de dĂ©veloppement Git), plus de Bugzilla (suivi des bugs). Il faudrait aussi abandonner les listes de diffusion pour utiliser Discourse Ă  la place (transition aussi en cours).

    D’un point de vue personnel, la migration du projet KDE vers GitLab fut un facteur dĂ©terminant dans ma capacitĂ© Ă  contribuer au projet KDE. Le mode de contributions Ă  l’aide de Pull Requests / Merge Requests Ă  travers une interface web est devenu un standard qui rĂ©duit significativement la difficultĂ© pour un premier contributeur Ă  participer Ă  un projet.

    Je pense que c’est la prochaine Ă©tape importante pour rendre le dĂ©veloppement de Fedora plus accessible et donc pour attirer plus de contributeurs.

    À l’inverse, est-ce qu’il y a quelque chose que tu souhaiterais conserver Ă  tout prix dans la distribution ou le projet en lui-mĂȘme ?

    Le processus pour proposer un changement (Change Process). C’est la clĂ© de ce qui fait de Fedora une distribution Ă  la pointe, qui Ă©volue Ă  chaque nouvelle version et qui pousse l’écosystĂšme en avant.

    Que penses-tu de la communautĂ© Fedora-fr que ce soit son Ă©volution et sa situation actuelle ? Qu’est-ce que tu amĂ©liorerais si tu en avais la possibilitĂ© ?

    Malheureusement, je n’ai pas eu beaucoup d’interactions avec la communautĂ© Fedora-fr, donc je n’ai pas grand-chose Ă  dire.

    Quelque chose Ă  ajouter ?

    Merci pour l’entretien !

    Si vous souhaitez en apprendre plus sur ces systĂšmes, je vous recommande les documentations officielles des projets ou les prĂ©sentations que j’ai rĂ©alisĂ©es (une ou deux en français).

    Merci TimothĂ©e pour ta contribution !

    Conclusion

    Nous espĂ©rons que cet entretien vous a permis d’en dĂ©couvrir un peu plus sur les systĂšmes immuables de Fedora et l’environnement KDE Plasma.

    Si vous avez des questions ou que vous souhaitez participer au Projet Fedora ou Fedora-fr, ou simplement l’utiliser et l’installer sur votre machine, n’hĂ©sitez pas Ă  en discuter avec nous en commentaire ou sur le forum Fedora-fr.

    À dans 10 jours pour un entretien avec Thomas Canniot, ancien traducteur de Fedora en français et fondateur de l’association Fedora-fr.

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    •  

    Une intelligence artificielle libre est-elle possible ?

    Ces derniers temps, on a beaucoup parlĂ© d’intelligence artificielle sur LinuxFr.org. D’IA propriĂ©taires, et d’IA libres. Mais peut-on vraiment faire une IA libre ? La notion n’est pas sans poser quelques difficultĂ©s. Une (pas si) courte discussion du problĂšme.

      Sommaire

      On appellera IA un rĂ©seau de neurones artificiels

      Commençons par dĂ©finir notre objet d’étude : qu’est-ce qu’une IA ? Par « intelligence artificielle Â», on pourrait entendre tout dispositif capable de faire rĂ©aliser par un ordinateur une opĂ©ration rĂ©putĂ©e requĂ©rir une tĂąche cognitive. Dans cette acception, un systĂšme expert qui prend des dĂ©cisions mĂ©dicales en implĂ©mentant les recommandations d’une sociĂ©tĂ© savante est une IA. Le pilote automatique d’un avion de ligne est une IA.

      Cependant, ce n’est pas la dĂ©finition la plus couramment employĂ©e ces derniers temps. Une IA a battu Lee Sedol au go, mais ça fait des annĂ©es que des ordinateurs battent les humains aux Ă©checs et personne ne prĂ©tend que c’est une IA. Des IA sont employĂ©es pour reconnaĂźtre des images alors que reconnaĂźtre un chien nous semble absolument Ă©lĂ©mentaire, mais l’algorithme de Youtube qui te suggĂšre des vidĂ©os pouvant te plaire parmi les milliards hĂ©bergĂ©es fait preuve d’une certaine intelligence et personne ne l’appelle IA. Il semble donc que le terme « IA Â» s’applique donc Ă  une technique pour effectuer une tĂąche plus qu’à la tĂąche en elle-mĂȘme, ou plutĂŽt Ă  un ensemble de techniques partageant un point commun : le rĂ©seau de neurones artificiels.

      Dans la suite de cette dĂ©pĂȘche, j’utiliserai donc indiffĂ©remment les termes d’IA et de rĂ©seau de neurones1.

      Pour comprendre le réseau de neurones, il est nécessaire de disposer de bases statistiques

      Les statistiques (ou la statistique, on peut dire les deux, comme en Alexandrie), c’est la branche des mathĂ©matiques qui s’intĂ©resse aux moyens, Ă  partir de donnĂ©es observĂ©es et fondamentalement probabilistes, d’en tirer des conclusions gĂ©nĂ©ralisables (et idĂ©alement, de prĂ©dire l’avenir Ă  partir du passĂ©).

      La data science, c’est la branche de l’informatique qui s’intĂ©resse aux moyens, Ă  partir de donnĂ©es emmagasinĂ©es sur lesquelles on ne fait pas d’hypothĂšse de mode de gĂ©nĂ©ration, d’en tirer des conclusions gĂ©nĂ©ralisables (et idĂ©alement, de prĂ©dire les donnĂ©es futures).

      Ça vous semble similaire ? Ça l’est. Les deux champs vont avoir des divergences de vocabulaire, de langages (les stateux prĂ©fĂšreront R, les data scientists Python), de formation (les stateux sont plutĂŽt des universitaires, les data scientists plutĂŽt des informaticiens au niveau licence, mais ils ont les mĂȘmes masters et doctorats), mais fondamentalement, et surtout mathĂ©matiquement, c’est la mĂȘme chose. Les connaissances en infĂ©rence statistique (notamment bayĂ©sienne, pour ceux Ă  qui ça parle) se gĂ©nĂ©ralisent trĂšs bien Ă  la data science.

      Pour faire court, un statisticien est un data scientist qui se la pĂšte, alors qu’un data scientist est un informaticien qui, n’étant pas assez bon pour survivre Ă  la rude concurrence universitaire, a multipliĂ© son salaire par 10 ou 20 en allant vendre ses compĂ©tences statistiques Ă  Facebook.

      Les statistiques reposent sur la modélisation

      En statistique, la maniĂšre la plus courante de rĂ©pondre Ă  une question est de construire un modĂšle. Prenons une question simple : je dispose d’un jeu de donnĂ©es oĂč j’ai enregistrĂ©, pour 1000 personnes, leur IMC et leur taux de cholestĂ©rol. Je souhaite savoir s’il y a un lien entre les deux. On souhaiterait, dans ce cas simple, rechercher une relation monotone, sans faire d’hypothĂšse sur le type de relation.

      Un exemple : la rĂ©gression linĂ©aire

      Une maniĂšre de rĂ©pondre Ă  ma question est d’écrire CholestĂ©rol = A\times IMC + B et de trouver les meilleurs A et B pour que la droite « colle » le mieux possible au nuage de points. On dĂ©montre que la meilleure droite est celle qui minimise un certain critĂšre, la somme des carrĂ©s des erreurs. Une fois qu’on a la meilleure droite possible, on peut faire plein de choses avec :

      • On peut rĂ©tro-prĂ©dire le taux de cholestĂ©rol des personnes dĂ©jĂ  observĂ©es et voir de combien la prĂ©diction s’écarte du rĂ©el, ce qui fournit une erreur moyenne de prĂ©diction ;
      • On peut faire de mĂȘme en prĂ©disant juste le taux de cholestĂ©rol moyen pour tous les individus et comparer les erreurs moyennes de prĂ©diction, ce qui permet de voir de combien le modĂšle amĂ©liore la prĂ©diction (et donc de quantifier la quantitĂ© d’info apportĂ©e par la donnĂ©e IMC sur la variable cholestĂ©rol) ;
      • On peut Ă©tudier le signe de A : si A est nĂ©gatif, prendre du poids fait baisser le cholestĂ©rol : si A est positif, prendre du poids augmente le cholestĂ©rol : si A est nul, le poids n’apporte pas d’info sur le cholestĂ©rol.
      • Par contre, on ne peut rien dire de la causalitĂ©. Tout ce qu’on a observĂ©, ce sont des personnes qui, au mĂȘme moment, avaient un IMC et un taux de cholestĂ©rol donnĂ©s. Impossible de dire s’ils ont ce cholestĂ©rol parce qu’ils ont cet IMC, s’ils ont cet IMC parce qu’ils ont ce cholestĂ©rol, ou s’ils ont ce cholestĂ©rol et cet IMC parce qu’ils ont une troisiĂšme exposition.
      • On peut enfin faire effectuer de la prĂ©diction Ă  notre modĂšle : en lui passant une personne dont on ne connaĂźt que l’IMC, on peut estimer son taux de cholestĂ©rol et assortir cette prĂ©diction d’un niveau de certitude (ça demande un peu plus de maths, mais c’est l’idĂ©e).

      On peut vouloir ajouter une troisiÚme variable, mettons le tabagisme. On écrira alors :

      Avec la variable tabac codĂ©e Ă  0 (non fumeur) ou 1 (fumeur). Noter que notre modĂšle est alors passĂ© en dimension 3 : on ne cherche plus Ă  faire passer la meilleure droite par rapport au nuage de points en 2D, mais Ă  faire passer le meilleur plan par rapport au nuage de points en 3D. Noter aussi qu’on peut facilement inclure des variables qualitatives : il suffit de les coder 0 ou 1. On peut d’ailleurs inclure des variables Ă  n modalitĂ©s : il suffit de les recoder en n-1 sous-variables en 0-1 (la modalitĂ© de rĂ©fĂ©rence Ă©tant celle pour laquelle toutes les sous-variables sont Ă  0).

      Les \beta sont appelĂ©s des paramĂštres : c’est en les faisant varier qu’on ajuste le modĂšle aux donnĂ©es.

      On peut ainsi ajouter un nombre quelconque de variables
 Ou peut-ĂȘtre pas. En effet, on va finir par atteindre un seuil oĂč le meilleur hyperplan est tout simplement celui qui passe par tous les points ! Si j’ai 50 individus et 50 paramĂštres, il est facile de choisir un plan qui passe par tous les individus. C’est ce qu’on appelle le surapprentissage : le modĂšle a tout simplement appris le jeu de donnĂ©es par cƓur ! Le surapprentissage est un Ă©cueil des modĂšles trop complexes et un rĂ©seau de neurones est tout Ă  fait capable de surapprendre.

      Le réseau de neurones

      Le neurone naturel

      Les neurones sont les cellules du systĂšme nerveux. Elles sont spĂ©cialisĂ©es dans la transmission d’information.

      Neurone naturel

      Comme tu peux le voir sur cette image issue de Wikimedia (source), un neurone comprend un nombre quelconque de dendrites, un corps cellulaire, et un axone. Point crucial : l’axone est unique. Il peut lui-mĂȘme transmettre de l’information Ă  diffĂ©rents neurones en aval, mais il transmet la mĂȘme information. Or l’information, dans un neurone, peut entrer par les dendrites et par le corps cellulaire, mais elle ne peut ressortir que par l’axone (on peut faire abstraction de la gaine de myĂ©line et des nƓuds de Ranvier, qui ont un rĂŽle central dans la vitesse de conduction de l’information mais qui ne changent rien aux calculs effectuĂ©s). Autrement dit, un neurone transmet la mĂȘme information Ă  tous les neurones d’aval, et si ceux-ci en font un usage diffĂ©rent, c’est uniquement liĂ© Ă  leurs propres calculs en interne.

      Le neurone formel

      On peut modĂ©liser un neurone, par analogie avec le neurone naturel. Notre neurone formel pourra donc prendre un nombre quelconque d’entrĂ©es, mais comme un neurone naturel, il ne produira qu’une seule sortie. Notre neurone est donc une fonction de ses entrĂ©es :

      En pratique (mais ça n’a rien d’obligatoire), on prend souvent une fonction d’une combinaison linĂ©aire des entrĂ©es :

      Avec une contrainte : la fonction f (qu’on appelle fonction d’activation) doit ĂȘtre monotone (idĂ©alement strictement monotone), dĂ©rivable presque partout (c’est nĂ©cessaire Ă  l’optimisation du rĂ©seau, qu’on verra plus tard), dĂ©finie sur un intervalle suffisamment large pour qu’on soit toujours dedans, et non linĂ©aire (sinon mettre les neurones en rĂ©seau n’a aucun intĂ©rĂȘt, autant faire directement une unique rĂ©gression linĂ©aire).

      En pratique, on prend donc quelques fonctions classiques :

      • La fonction binaire : f(x) = 0 si x < 0, 1 sinon
      • La fonction logistique, une amĂ©lioration de la fonction binaire : f(x) = \frac{1}{1 + e^{-x}}. Avantage : elle est strictement monotone, dĂ©rivable partout, et elle prend quand mĂȘme ses valeurs entre 0 et 1.
      • La fonction Rectified Linear Unit (ReLU, qu’on peut prononcer « relou ») : f(x) = 0 si x<0, x sinon. Avantage : elle est trĂšs facile (donc rapide) Ă  calculer et Ă  dĂ©river. On peut la rendre strictement monotone en la modifiant Ă  la marge : f(x) = \epsilon\times x si x<0, x sinon, avec 0<\epsilon << 1.

      La mise en réseau

      Tout l’intĂ©rĂȘt du neurone formel rĂ©side dans sa mise en rĂ©seau. Un unique neurone ne fait pas mieux qu’une rĂ©gression linĂ©aire. On construit donc un rĂ©seau de neurones. Pour ce faire, on va donc gĂ©nĂ©rer plusieurs neurones, chacun prenant en entrĂ©e la sortie de plusieurs neurones et produisant une sortie unique, qui sera Ă  son tour utilisĂ©e en entrĂ©e par d’autres neurones. On ajoute un ensemble de neurones qu’on pourrait qualifier de « sensitifs Â», au sens oĂč ils prennent en entrĂ©e non pas la sortie d’un neurone antĂ©rieur, mais directement l’input de l’utilisateur, ou plutĂŽt une partie de l’input : un pixel, un mot
 Enfin, une sortie est ajoutĂ©e : elle produit le rĂ©sultat final.

      Étant donnĂ© que les neurones sont virtuels et n’ont pas d’emplacement gĂ©ographique, il est assez logique de les reprĂ©senter en couches : la couche 0 est constituĂ©e des neurones sensitifs, la couche 1 prend en entrĂ©e les rĂ©sultats de la couche 0, et ainsi de suite. Classiquement, tous les neurones de la couche n+1 prennent en entrĂ©e les sorties de tous les neurones de la couche n.

      Se pose alors la question : combien de neurones par couche, et combien de couches au total ?
      On peut considĂ©rer deux types de topologies : soit il y a plus de neurones par couche que de couches : le rĂ©seau est plus large que long, on parlera de rĂ©seau large. Soit il y a plus de couches que de neurones par couche, auquel cas le rĂ©seau est plus long que large, mais on ne va pas parler de rĂ©seau long parce que ça pourrait se comprendre « rĂ©seau lent Â». On parlera de rĂ©seau profond. C’est de lĂ  que viennent les Deep et les Large qu’on voit un peu partout dans le marketing des IA. Un Large Language Model, c’est un modĂšle, au sens statistique, de langage large, autrement dit un rĂ©seau de neurones avec plus de neurones par couche que de couches, entraĂźnĂ© Ă  traiter du langage naturel. On constate empiriquement que certaines topologies de rĂ©seau sont plus efficaces pour certaines tĂąches. Par exemple, Ă  nombre de neurones constant, un modĂšle large fera mieux pour du langage. À l’inverse, un modĂšle profond fera mieux pour de la reconnaissance d’images.

      Le réseau de neurones est Turing-complet

      Un rĂ©sultat thĂ©orique important est que les rĂ©seaux de neurones sont Turing-complets. C’est-Ă -dire que, pour tout programme que l’on peut coder et qui sorte une rĂ©ponse algorithmique, il existe un rĂ©seau de neurones qui donne le mĂȘme rĂ©sultat. La rĂ©ciproque est vraie aussi : ce qui est faisable avec un rĂ©seau de neurones est faisable en C ou dans un autre langage, au pire en recodant le rĂ©seau dans ce langage.

      Le réseau de neurones présente un effet boßte noire important

      Prenons maintenant un Ă©lĂ©ment d’information et essayons de suivre son trajet dans le modĂšle jusqu’à la sortie. Dans une rĂ©gression linĂ©aire, c’est assez facile : le poids de l’IMC va peser pour \beta_{IMC} dans le rĂ©sultat final. Dans une forĂȘt alĂ©atoire, on peut toujours isoler les arbres oĂč apparaĂźt une donnĂ©e et essayer de regarder combien elle pĂšse. C’est fastidieux mais ça reste faisable. Dans un rĂ©seau de neurones, c’est impossible. Chaque neurone de la couche 1 va passer un rĂ©sultat agrĂ©gĂ© Ă  la couche 2, oĂč chaque donnĂ©e de la couche 0 ne compte plus que comme partie d’un tout. De mĂȘme, chaque neurone de la couche 2 va agrĂ©ger tous les rĂ©sultats de la couche 1. Il devient impossible d’individualiser l’effet d’une donnĂ©e ou mĂȘme celui d’un neurone.

      Ainsi, mĂȘme si je connais l’intĂ©gralitĂ© du contenu du modĂšle, il m’est impossible de donner du sens Ă  une partie du modĂšle, prise isolĂ©ment. Le modĂšle se comporte comme un bloc monolithique, et la seule maniĂšre d’étudier un nouvel exemple est de lui appliquer tout le modĂšle et de voir ce qui sort. C’est ce qu’on nomme l’effet boĂźte noire.

      Attention : l’effet boĂźte noire n’est pas liĂ© au nombre de paramĂštres du modĂšle. Si je fais de la gĂ©nĂ©tique, et que j’étudie 2000 mutations gĂ©nĂ©tiques individuelles (des SNP, pour single nucleotide polymorphism), je peux assez facilement ajuster un modĂšle de rĂ©gression logistique (qui est une variante de la rĂ©gression linĂ©aire oĂč on fait prĂ©dire non pas une variable quantitative, mais une probabilitĂ©) Ă  2000 paramĂštres (un \beta pour chaque SNP). Chaque paramĂštre sera parfaitement comprĂ©hensible et il n’y aura pas d’effet boĂźte noire.

      Il n’est pas non plus liĂ© Ă  ta mĂ©connaissance des mathĂ©matiques, cher lectorat. Des statisticiens chevronnĂ©s se cassent les dents sur l’effet boĂźte noire. Il est intĂ©gralement liĂ© Ă  la structure du modĂšle. Certains types de modĂšles en ont, d’autres n’en ont pas. Les rĂ©seaux de neurones en ont.

      Cet effet a une consĂ©quence perturbante : mĂȘme si on sait ce que fait un rĂ©seau de neurones, il est impossible de savoir comment il le fait ! On pourrait argumenter que ce n’est pas forcĂ©ment diffĂ©rent de ce que nous faisons : si on montre Ă  un enfant de 3 ans une photo de chien, il saura dire que c’est un chien, mais il ne saura pas dire pourquoi c’est un chien. Cependant, on demande rarement Ă  un programme d’ĂȘtre rĂ©flexif, mais on demande toujours Ă  son auteur de savoir comment il tourne. C’est un peu la base de la programmation.

      Le réseau de neurones est un modÚle statistique

      Reprenons : on a un paradigme (le rĂ©seau de neurones) capable d’effectuer n’importe quelle tĂąche pour laquelle il existe une solution algorithmique, Ă  condition de le programmer correctement
 Mais on ne sait pas le programmer ! Heureusement, il existe un contournement : on ne va pas le programmer, on va l’ajuster, comme un modĂšle statistique. Ou l’entraĂźner, si on prĂ©fĂšre le terme de « machine learning Â».

      Tu t’en souviens, cher lecteur, un rĂ©seau de neurones est un ensemble de fonctions dont chacune prend en entrĂ©e diffĂ©rentes donnĂ©es avec des coefficients (les fameux \beta_i). On va commencer par initialiser l’apprentissage en donnant des valeurs alĂ©atoires Ă  ces coefficients. Ensuite, on va soumettre Ă  notre rĂ©seau de neurones des tas et des tas de donnĂ©es correctes, et qu’on va comparer ce qu’il prĂ©dit Ă  ce qu’on attend. La diffĂ©rence s’appelle l’erreur. Et Ă  chaque itĂ©ration, on va identifier les neurones les plus gĂ©nĂ©rateurs d’erreur et les pĂ©naliser (rĂ©duire leur poids, ou plutĂŽt rĂ©duire leur poids dans les neurones oĂč c’est nĂ©cessaire), tout en favorisant les meilleurs neurones. Les dĂ©tails de la technique (qui s’appelle la rĂ©tropropagation de l’erreur) dĂ©passent largement le cadre de cette courte introduction, mais l’essentiel est qu’à la fin, on obtient un rĂ©seau capable de donner des rĂ©ponses proches de ce qui existait dans l’ensemble des donnĂ©es correctes qu’on lui a passĂ© et de gĂ©nĂ©raliser quand la demande est diffĂ©rente d’une donnĂ©e de l’ensemble d’apprentissage. Avantage : en pratique, un rĂ©seau de neurones est capable de prendre en entrĂ©e n’importe quel type de structure de donnĂ©es : image, texte, son
 Tant que les neurones d’entrĂ©e sont adaptĂ©s et qu’il existe un ensemble d’apprentissage suffisamment grand, c’est bon.

      Tous les modĂšles sont faux, certains sont utiles, et c’est vrai aussi pour le rĂ©seau de neurones

      Bien sĂ»r, il y a des limites. La premiĂšre est la complexitĂ© algorithmique. Un rĂ©seau de neurones nĂ©cessite de rĂ©aliser un nombre astronomique d’opĂ©rations simples : pour chaque couche, il faut, pour chaque neurone, calculer la somme des produits des coefficients avec toutes les sorties de la couche antĂ©rieure, soit c\times n^2 multiplications, oĂč n est le nombre de neurones par couche et c le nombre de couches. Par exemple, pour un petit rĂ©seau de 10 couches de 20 neurones, plus une couche d’entrĂ©e, on rĂ©aliserait Ă  chaque itĂ©ration 10\times 20^2 = 4000 multiplications en virgule flottante, et encore, c’est ici un tout petit rĂ©seau : un rĂ©seau comme ChatGPT a des neurones qui se comptent par millions, voire dizaines de millions !

      Une autre limite est la prĂ©cision des rĂ©ponses. Le rĂ©seau de neurones Ă©tant un modĂšle statistique, il n’est capable que d’interpoler, c’est-Ă -dire trouver une rĂ©ponse Ă  partir de cas similaires. Cette interpolation est rarement aussi prĂ©cise que celle que donnerait une rĂ©ponse formelle si elle existait : si Newton avait eu accĂšs Ă  des rĂ©seaux de neurones, nous aurions une prĂ©diction du mouvement des planĂštes qui ne baserait sur aucune thĂ©orie, qui serait Ă  peu prĂšs exacte mais insuffisamment prĂ©cise pour envoyer des sondes sur Mars. Quant Ă  s’interroger sur la prĂ©cession du pĂ©rihĂ©lie de Mercure, on oublie.

      De maniĂšre gĂ©nĂ©rale, on peut s’interroger sur ce qui amĂšne un rĂ©seau de neurones Ă  se planter. On peut diviser les erreurs en plusieurs catĂ©gories :

      • La question posĂ©e n’a aucun rapport avec les donnĂ©es passĂ©es en entrĂ©e. Par exemple : « Sachant que la derniĂšre personne que j’ai croisĂ©e dans la rue avait 42 ans, indique-moi son genre Â». Le modĂšle n’a pas assez d’information pour rĂ©pondre.
      • La question posĂ©e n’a aucun rapport avec l’ensemble d’apprentissage. Par exemple, demander Ă  un modĂšle entraĂźnĂ© Ă  reconnaĂźtre des photos de chien de reconnaĂźtre une voiture. En gĂ©nĂ©ral, ce problĂšme est rĂ©solu en contraignant le format des questions ; dans cet exemple, il suffirait de ne pas permettre Ă  l’utilisateur de poser une question, juste de poster une photo et de recevoir une rĂ©ponse. D’ailleurs, on ne voit pas trĂšs bien pourquoi entraĂźner un tel modĂšle Ă  traiter du langage.
      • L’ensemble d’apprentissage est trop restreint/biaisĂ©. L’exemple typique est le modĂšle qui prĂ©tendait reconnaĂźtre les dĂ©linquants Ă  une simple photo et identifiait en fait tous les noirs : ben oui, ils Ă©taient majoritaires dans les dĂ©linquants de l’ensemble d’apprentissage. Noter qu’il existe des problĂšmes oĂč l’ensemble d’apprentissage sera toujours trop restreint pour un certain niveau de prĂ©cision exigĂ©. Si on demande Ă  un rĂ©seau de dire si un point donnĂ© est Ă  l’intĂ©rieur ou Ă  l’extĂ©rieur d’un flocon de Koch, il va falloir lui passer une infinitĂ© de donnĂ©es d’apprentissage pour qu’il apprenne les cas limites juste par interpolation (alors qu’avec un modĂšle formel, ça serait assez facile).
      • Le modĂšle est parasitĂ© par une donnĂ©e annexe : c’est une problĂ©matique assez spĂ©cifique du rĂ©seau de neurones. L’exemple le plus classique est celui des images de mains : aprĂšs tout, le voisin le plus probable d’un doigt, c’est un autre doigt. L’amusant, c’est que ce problĂšme serait rĂ©solu assez facilement en demandant au modĂšle de compter 4 doigts et un pouce. Mais comme on ne peut pas programmer directement un rĂ©seau de neurones

      • Enfin, si les motifs prĂ©cĂ©dents ont Ă©tĂ© Ă©cartĂ©s, je dois me demander si mon modĂšle n’est pas inadaptĂ© : soit qu’il n’a pas assez de neurones, soit que la topologie n’est pas bonne. Plus de neurones permettent de traiter des donnĂ©es plus complexes et leur disposition permet d’augmenter leur efficacitĂ©.

      En dĂ©finitive, on peut voir le rĂ©seau de neurones comme un outil qui rĂ©sout approximativement un problĂšme mal posĂ©. S’il existe une solution formelle, et qu’on sait la coder en un temps acceptable, il faut le faire. Sinon, le rĂ©seau de neurones fera un taf acceptable.

      Le but du logiciel libre est de rendre le pouvoir à l’utilisateur

      On a beaucoup glosĂ©, et on continuera de le faire longtemps, sur la philosophie du Libre. Free Software Foundation d’un cĂŽtĂ©, Open Source Initiative de l’autre, les sujets de discorde ne manquent pas. Mais il faut au moins crĂ©diter l’OSI sur un point : avoir clarifiĂ© le fait que le Libre est avant tout un mouvement politique, au sens noble du terme : il vise Ă  peser sur la vie de la citĂ©, alors que l’Open Source vise avant tout Ă  disposer de logiciels de qualitĂ©.

      La premiÚre des libertés est celle de savoir ce que je fais

      Ça paraĂźt Ă©vident dans la vie de tous les jours : je sais ce que je fais. Si je dĂ©cide de prendre une pelle et de planter un arbre dans mon jardin, je sais que je suis en train de prendre une pelle et de planter un arbre dans mon jardin. Si je dĂ©cide de prendre un couteau et de le planter dans le thorax de mon voisin, je sais ce que je fais. C’est une libertĂ© fondamentale, au sens oĂč elle fonde toutes les autres. Si je ne sais pas ce que je fais, je ne peux signer un contrat, par exemple (c’est d’ailleurs le principe qui sous-tend le rĂ©gime de la tutelle en droit). D’ailleurs, comme toute libertĂ©, elle fonde une responsabilitĂ©. Si je ne savais pas ce que je faisais (et que je peux le prouver), je peux plaider l’abolition du discernement et Ă©chapper Ă  ma responsabilitĂ© pĂ©nale, quelle que soit l’infraction commise, mĂȘme les plus graves2

      Dans la vie de tous les jours, donc, il est Ă©vident que je sais ce que je fais. Mais avec un ordinateur, c’est beaucoup moins Ă©vident. Quand j’exĂ©cute Windows, je ne sais pas ce que je fais. Pas seulement parce que je ne connais pas la sĂ©quence de boot, mais de façon beaucoup plus fondamentale : parce que n’ayant pas accĂšs au code source, je ne sais pas ce que fait le programme que j’exĂ©cute. Ce qui pose un problĂšme majeur de confiance dans le logiciel exĂ©cutĂ© :

      • Confiance dans le fait que le programme fait bien ce que son programmeur a voulu qu’il fasse (absence de bugs)
      • Confiance dans le fait que le programmeur avait bien mon intĂ©rĂȘt en tĂȘte et pas seulement le sien (sincĂ©ritĂ© du programmeur, frĂ©quemment prise en dĂ©faut dans le logiciel non libre)

      Dans le systĂšme des 4 libertĂ©s du logiciel libre, cette libertĂ© est la libertĂ© 1. Elle passe aprĂšs la libertĂ© 0 (libertĂ© d’exĂ©cuter le programme) et avant la libertĂ© 2 (libertĂ© de redistribuer le programme). On pourrait lĂ©gitimement discuter de sa prioritĂ© par rapport Ă  la libertĂ© 0 (est-il raisonnable d’exĂ©cuter un programme dont on ne sait pas ce qu’il fait ?) mais ça dĂ©passerait l’objet de cette dĂ©pĂȘche.

      Si je sais ce que je fais, je dois pouvoir modifier ce que je fais

      ConsĂ©quence logique de la libertĂ© prĂ©cĂ©dente : si je n’aime pas ce que fait un programme, je dois pouvoir l’amĂ©liorer. Si je ne sais pas le faire moi-mĂȘme, je dois pouvoir payer quelqu’un pour l’amĂ©liorer. LĂ  encore, ça suppose l’accĂšs au code source, ne serait-ce que pour savoir ce que fait le programme. Il s’agit de la libertĂ© 3 du logiciel libre.

      Le réseau de neurones est difficilement compatible avec le libre

      Personne ne sait vraiment ce que fait un réseau de neurones

      On l’a vu, les rĂ©seaux de neurones prĂ©sentent un effet boĂźte noire important. DĂ©jĂ , la plupart des IA commerciales ne sont accessibles qu’au travers d’une interface ou une API. Elles n’exposent que rarement les neurones. Mais mĂȘme pour une personne disposant de tous les neurones, autrement dit de la description complĂšte du rĂ©seau, l’effet boĂźte noire est tel que le fonctionnement du rĂ©seau de neurones est inintelligible. D’ailleurs, s’il Ă©tait intelligible, il serait trĂšs vite simplifiĂ© !

      En effet, on peut recoder tout rĂ©seau de neurones dans un langage plus rapide, dĂšs lors qu’on comprend ce qu’il fait (puisqu’il est Turing-complet). Vu la consommation astronomique d’énergie des rĂ©seaux de neurones, s’il existait un moyen de comprendre ce que fait un rĂ©seau de neurones et de le traduire dans un autre langage, on le ferait trĂšs vite. Ce qui fournirait d’ailleurs des rĂ©ponses Ă  des questions thĂ©oriques ouvertes comme : qu’est-ce que comprendre une phrase ? Comment reconnaĂźt-on un chien, un visage, un avion ?

      Disposer de la description complĂšte d’un rĂ©seau de neurones ne permet pas de l’amĂ©liorer

      On l’a vu : si je dispose de la totalitĂ© des neurones, je dispose de la totalitĂ© de la description du rĂ©seau de neurones. Mais comme je suis incapable de savoir ce qu’il fait, je ne suis pas plus avancĂ© pour l’amĂ©liorer, qu’il s’agisse de retirer un dĂ©faut ou d’ajouter une fonctionnalitĂ©. Noter d’ailleurs que ceci n’est pas forcĂ©ment impactant de la mĂȘme maniĂšre pour tous les aspects du rĂ©seau de neurones : si je n’ai aucun moyen d’ĂȘtre sĂ»r de l’absence de bugs (c’est mĂȘme le contraire ! Il y a forcĂ©ment des bugs, c’est juste que je ne les ai pas trouvĂ©s ou qu’ils ne sont pas corrigeables), j’ai en revanche peu d’inquiĂ©tude Ă  avoir concernant la sincĂ©ritĂ© du programmeur : comme lui non plus ne maĂźtrise pas sa bestiole, pas de risque qu’il soit insincĂšre3.

      La dĂ©finition du code source d’un rĂ©seau de neurones est ambiguĂ«

      Posons-nous un instant la question : qu’est-ce que le code source d’un rĂ©seau de neurones ? Est-ce la liste des neurones ? Comme on l’a vu, ils ne permettent ni de comprendre ce que fait le rĂ©seau, ni de le modifier. Ce sont donc de mauvais candidats. La GPL fournit une dĂ©finition : le code source est la forme de l’Ɠuvre privilĂ©giĂ©e pour effectuer des modifications. Dans cette acception, le code source d’un rĂ©seau de neurones serait l’algorithme d’entraĂźnement, le rĂ©seau de neurones de dĂ©part et le corpus sur lequel le rĂ©seau a Ă©tĂ© entraĂźnĂ©.

      Cette ambiguïté fait courir un risque juridique sous certaines licences libres

      Tu devines alors, cher lecteur, lĂ  oĂč je veux en venir
 Si le corpus comprend des Ɠuvres non libres, tu n’as tout simplement pas le droit de le diffuser sous une licence libre ! Et si tu t’es limitĂ© Ă  des Ɠuvres libres pour entraĂźner ton modĂšle, tu risques fort d’avoir un ensemble d’apprentissage trop restreint, donc un rĂ©seau de neurones sans intĂ©rĂȘt.

      Alors il y a quatre moyens de tricher.
      Le premier, c’est de t’asseoir sur la GPL et de considĂ©rer qu’en distribuant les neurones, tu as fait le taf. La ficelle est grossiĂšre. Je viens de passer une dĂ©pĂȘche Ă  te dĂ©montrer que c’est faux, tu pourrais au moins me montrer un peu plus de respect.

      Le deuxiĂšme, c’est de distribuer sous une licence non copyleft, genre BSD ou WTFPL. Une licence qui ne nĂ©cessite pas de distribuer le code source. Certes, mais en fait tu ne fais pas du Libre.

      Le troisiĂšme, c’est de considĂ©rer le rĂ©seau de neurones comme une donnĂ©e, pas un exĂ©cutable. Donc pas de code source. La partie sous GPL serait alors l’interface graphique, et le rĂ©seau, une donnĂ©e. C’est assez limite. Une donnĂ©e exĂ©cutable, ça s’approche dangereusement d’un blob binaire.

      Le quatriĂšme, c’est de repenser complĂštement le paradigme du logiciel libre et de considĂ©rer qu’il vise avant tout Ă  rééquilibrer les rapports de pouvoir entre programmeur et utilisateur, et qu’en redistribuant les neurones, tu as fait le job. Sur les rapports de pouvoir, tu n’as pas tort ! Mais d’une part, ça ne tiendra pas la route devant un tribunal. D’autre part, il persiste une asymĂ©trie de pouvoir : tu as accĂšs au corpus, pas l’utilisateur.

      Quand bien mĂȘme on admettrait que le code source est l’ensemble corpus + algorithme d’optimisation + rĂ©seau de neurones de dĂ©part, l’optimisation d’un rĂ©seau de neurones consomme autrement plus de ressources que la compilation d’un programme plus classique, des ressources qui sont loin d’ĂȘtre Ă  la portĂ©e du quidam classique. À quoi servirait un code source impossible Ă  compiler ?

      Enfin, mĂȘme cette dĂ©finition du code source pose problĂšme : elle n’est en fait pas beaucoup plus lisible que le rĂ©seau lui-mĂȘme. Ce n’est pas parce que j’ai accĂšs aux centaines (de milliers) de textes sur lesquels un rĂ©seau a Ă©tĂ© entraĂźnĂ© que je peux prĂ©dire comment il va se comporter face Ă  une nouvelle question.

      Comment les boĂźtes qui font de l’IA non libre rĂ©solvent-elles ce dilemme ? Elles ne le rĂ©solvent pas

      C’est presque enfoncer une porte ouverte que dire que l’IA pose de nombreuses questions de droit d’auteur, y compris dans le petit microcosme du non-libre. Cependant, les IA non-libres ont un avantage sur ce point : si le rĂ©seau de neurones ne permet pas de remonter au corpus initial (donc en l’absence de surapprentissage), alors elles peuvent tranquillement nier avoir plagiĂ© une Ɠuvre donnĂ©e. Tu ne me verras pas dĂ©fendre les pauvres auteurs spoliĂ©s, car j’ai toujours considĂ©rĂ© que la nature mĂȘme de l’information est de circuler sans barriĂšres (Information wants to be free, tout ça) et que le droit d’auteur en est une, et particuliĂšrement perverse.

      La dĂ©finition d’une IA open source ressemble furieusement Ă  un constat d’échec

      L’OSI a publiĂ© une dĂ©finition d’IA open source. Cette dĂ©finition mĂ©rite qu’on s’y attarde.

      Premier point intĂ©ressant : aprĂšs des annĂ©es Ă  tenter de se dĂ©marquer du Libre, notamment via la dĂ©finition de l’Open Source qui tente de reformuler les 4 libertĂ©s sans recopier les 4 libertĂ©rs, l’OSI baisse les bras : est open source une IA qui respecte les 4 libertĂ©s.

      DeuxiĂšme point intĂ©ressant : est open source une IA qui publie la liste des neurones, le corpus d’entraĂźnement et la mĂ©thode d’entraĂźnement. En fait, ça revient Ă  ne pas choisir entre les neurones et leur mĂ©thode d’entraĂźnement. Soit, mais ça ne rĂ©sout pas le problĂšme de l’effet boĂźte noire. Au mieux, ça revient Ă  admettre qu’il est le mĂȘme pour le programmeur et l’utilisateur.

      Conclusion : qu’attendre d’une IA libre ?

      Il ne fait aucun doute que dĂ©velopper des IA libres exigera de nouvelles licences. La GPL, on l’a vu, expose Ă  un risque juridique du fait de l’ambiguĂŻtĂ© de la dĂ©finition du code source.

      Il est Ă  noter, d’ailleurs, qu’une IA repose rarement exclusivement sur son rĂ©seau de neurones : il y a systĂ©matiquement au moins un logiciel classique pour recueillir les inputs de l’utilisateur et les passer au rĂ©seau de neurones, et un second en sortie pour prĂ©senter les outputs. Ces briques logicielles, elles, peuvent tout Ă  fait suivre le paradigme classique du logiciel libre.

      En dĂ©finitive, cher lecteur qui ne dĂ©veloppes pas d’IA, je t’invite surtout Ă  te demander : qu’attends-tu d’une IA ? Qu’entends-tu quand on te parle d’IA libre ? Plus fondamentalement, l’IA serait-elle un des rares domaines oĂč il existe une distinction pratique entre libre et Open Source ?

      Il n’y a pas de façon simple de faire une IA libre, il n’y a peut-ĂȘtre pas de façon du tout. Mais le principe du libre, c’est que c’est Ă  l’utilisateur in fine de prendre ses dĂ©cisions, et les responsabilitĂ©s qui vont avec. Je n’espĂšre pas t’avoir fait changer d’avis : j’espĂšre modestement t’avoir fourni quelques clĂ©s pour enrichir ta rĂ©flexion sur le sens Ă  donner au vocable IA open source qu’on voit fleurir ici et lĂ .


      1. Et je mettrai « artificiel Â» Ă  la poubelle parce que Implicit is better than explicit, rien que pour embĂȘter Guido). â†©

      2. Bon, certaines infractions complexes Ă  exĂ©cuter, comme le trafic de drogue ou le gĂ©nocide, requiĂšrent une certaine implication intellectuelle et sont donc peu compatibles avec l’altĂ©ration du discernement, mais c’est liĂ© au fait que l’infraction elle-mĂȘme requiert un certain discernement. â†©

      3. Du moins au niveau du rĂ©seau de neurones lui-mĂȘme. Les entrĂ©es et les sorties peuvent tout Ă  fait passer par une moulinette insincĂšre et codĂ©e dans un langage tout Ă  fait classique. â†©

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      •