C’est le modèle informatique de l’Imperial College qui prévoyait 500 000 morts au Royaume-Uni (et 2,5 millions aux États-Unis) si les décideurs politiques adoptaient une approche d’ »immunité collective » (à la suédoise) , c’est ce qui les a incité à changer de stratégie et à mettre en place un confinement général. Le modèle a été conçu par une équipe dirigée par Neil Ferguson , (qui a récemment démissionné de son poste de conseiller auprès du gouvernement britannique lorsqu’il s’est avéré qu’il violait lui-même les directives de confinement en rompant l’auto-isolement).
Le code source du modèle devait être mis à la disposition du public et, après de nombreux retards et excuses, il a finalement été publié sur GitHub
Une révision du code a été entreprise par un ancien ingénieur logiciel anonyme de Google, qui nous dit que le code du dépôt GitHub a été fortement retravaillé par les ingénieurs de Microsoft , et d’autres, pour essayer de remettre le code en forme afin de le montrer au public en toute sécurité. Hélas, ils semblent avoir raté et de nombreuses failles et bugs du logiciel original persistent dans la version publiée . Les demandes concernant la version non-éditée du code original qui se trouve derrière le modèle sont restées sans réponse.
Le résultat le plus inquiétant de l’examen est que le code produit des « résultats non déterministes »
Résultats non déterministes. En raison de bugs, le code peut produire des résultats très différents avec des entrées identiques. Ils agissent couramment comme si ce n’était pas important.
Ce problème rend le code inutilisable à des fins scientifiques , étant donné qu’un élément clé de la méthode scientifique est la capacité à reproduire les résultats. Sans réplication, les résultats pourraient ne pas être réels du tout – comme le domaine de la psychologie l’a découvert à ses dépens. Même si le code non-édité était publié, il est évident que les mêmes chiffres que ceux du rapport 9 pourraient ne pas en sortir.
La documentation propose la rationalisation suivante : il faut exécuter des itérations du modèle, puis faire la moyenne des différents résultats pour produire un modèle résultant. Cependant, tout logiciel décent, en particulier celui qui crée un modèle, devrait produire le même résultat s’il est alimenté par les mêmes données initiales, ou « seed ». Ce n’est pas le cas de ce code.
« La documentation dit :
Le modèle est stochastique. Il faut faire plusieurs essais avec différentes graines pour voir un comportement moyen.
« Stochastique » n’est qu’un mot à consonance scientifique pour « aléatoire ». Ce n’est pas un problème si le caractère aléatoire est un pseudo-aléatoire intentionnel, c’est-à-dire que le caractère aléatoire est dérivé d’une « graine » de départ qui est itéré pour produire les nombres aléatoires. Ce caractère aléatoire est souvent utilisé dans les techniques de Monte Carlo. Il est sûr car la graine peut être enregistrée et les mêmes nombres (pseudo-)aléatoires peuvent être produits à partir de celle-ci à l’avenir. Tout enfant qui a joué à Minecraft est familier avec le pseudo-aléatoire parce que Minecraft vous donne les graines qu’il utilise pour générer les mondes aléatoires, donc en partageant les graines, vous pouvez partager des mondes.
De toute évidence, la documentation veut nous faire croire que, étant donné une graine de départ, le modèle produira toujours les mêmes résultats.
L’enquête révèle la vérité : le code produit des résultats très différents, même pour des graines de départ et des paramètres identiques. »
Dans un cas, une équipe de l’université d’Édimbourg a tenté de modifier le code afin de pouvoir stocker les données dans des tableaux qui rendraient le chargement et l’exécution plus efficaces. Outre les questions de performance, le simple déplacement ou l’optimisation de la provenance des données d’entrée ne devrait pas avoir d’effet sur la sortie du traitement, étant donné que les données d’entrée sont les mêmes. L’équipe d’Édimbourg a cependant constaté que cette optimisation produisait une variation dans les résultats , « les prévisions résultantes variaient d’environ 80 000 décès après 80 jours », ce qui représente près de 3 fois le nombre total de décès au Royaume-Uni à ce jour.
Édimbourg a signalé le bug à Imperial, qui l’a rejeté comme « un petit non-déterminisme » et leur a dit que le problème disparaît s’ils exécutaient le code sur un seul processeur (qui, selon l’examinateur, « est aussi éloigné que possible de la superinformatique »).
Hélas, l’équipe d’Edimbourg a constaté que les logiciels produisaient toujours des résultats différents s’ils étaient exécutés sur un seul processeur . Il ne devrait pas en être ainsi, à condition qu’il soit correctement codé. Que le logiciel soit exécuté sur une seule unité centrale ou sur plusieurs processeurs, la seule différence devrait être la vitesse à laquelle le résultat est produit. Si les conditions d’entrée sont les mêmes, les sorties devraient être les mêmes. Ce n’est pas le cas, et Imperial le savait.
Néanmoins, c’est ainsi qu’Imperial utilise le code : ils savent qu’il se casse quand ils essaient de le faire tourner plus vite. Il est clair, à la lecture du code, qu’en 2014, Imperial a essayé de faire en sorte que le code utilise plusieurs processeurs pour accélérer son exécution, mais n’a jamais réussi à le faire fonctionner de manière fiable . Ce type de programmation est connu pour être difficile et nécessite généralement des ingénieurs expérimentés et chevronnés pour obtenir de bons résultats. Les résultats qui changent aléatoirement d’une exécution à l’autre sont une conséquence courante des bugs de sécurité des threads. Plus familièrement, ces bogues sont connus sous le nom de « Heisenbugs ».
Une autre équipe a même constaté que les résultats variaient en fonction du type d’ordinateur sur lequel ils étaient exécutés.
Dans le numéro 30, quelqu’un signale que le modèle produit des sorties différentes selon le type d’ordinateur sur lequel il fonctionne (indépendamment du nombre de CPU). Là encore, l’explication est que bien que ce nouveau problème « ne fera qu’ajouter aux problèmes » … « Ce n’est pas un problème de faire fonctionner le modèle dans son intégralité car il est de toute façon stochastique ».
La réponse illustre cette question brûlante : pourquoi l’équipe de l’Imperial College n’a-t-elle pas réalisé que son logiciel était si défectueux ?
Parce que leur code est si profondément truffé de bugs similaires et qu’ils ont eu tellement de mal à les corriger qu’ils ont pris l’habitude de simplement faire la moyenne des résultats de plusieurs exécutions pour le couvrir… et ce comportement s’est finalement normalisé au sein de l’équipe.
La plupart d’entre nous connaissons l’adage informatique « Garbage In/Garbage Out » et le lecteur non formé peut penser que c’est ce qui est affirmé dans cette revue de code. Ce n’est pas le cas. Ce que l’on affirme, c’est que la sortie est un déchet, indépendamment de l’entrée.
Dans le cas présent, la production que nous connaissons en conséquence est un verrouillage et un arrêt de l’économie mondiale, et nous ne savons pas vraiment si cela était nécessaire ou non parce que nous n’avons pas de données réelles (en dehors de la Suède) et des modèles gravement défectueux.
Je pensais pas (Principe d’Incertitude), mais même les programmeurs ont de l’humour ! Ok, donc si je comprends bien, la réaction mondiale face à cette épidémie s’est basée uniquement sur cette seule source : une projection informatique foireuse, générant des erreurs aléatoires.
Le taux de mortalité lié au virus est déjà malheureusement très élevé (de l’ordre de 2% à 10% en fonction de différents facteurs comme l’âge par exemple). Mais il est vrai que les estimations données du nombre de morts, étaient à la base plus proche du MERS (virus ayant touché la péninsule arabique en 2015, et qui avait un taux de létalité de 40%. Il a été « facile » à contenir et endiguer parce que les personnes devenaient contaminantes uniquement lors des premiers symptômes. Ce n’est pas le cas du type COVID19, où la transmission est déjà effective 2 à 4 jours avant).
Bref, j’ai tiqué quand j’ai vu que, malgré notre retard à l’allumage (pour toi, cher ministre qui « refuse que l’on dise qu’il y a eu du retard »), le nombre de décès était « modéré » (ce qui est toujours trop, on est d’accord). Du coup, je m’étais demandé d’où venaient ces projections, sans jamais vraiment chercher.
Donc merci pour cet article, même si sous ses atours techniques, il cache un gros foirage, une incompétence crasse, et met à nue des systèmes d’hyperpuissances qui ont pignon sur rue, et surtout ; cette capacité à déséquilibrer le monde, sans aucun verrou de sécurité en face. Il en va de même par exemple avec les agences de notation, le FMI, les banques systémiques etc.
Ce sont des organismes qui se couvrent, jusqu’à ce qu’on découvre par la force des choses des horreurs aux conséquences inouïes. Des têtes vont tomber, c’est certain, mais le mal est fait.
Coucou
Merci de l’info et de la traduction … Rien à dire de plus que Ragetaurus.
Si une chose en fait, " Heureusement " que le bug a été de sur estimé le nombre de personne décédés. Les gouvernements ont donc plus sur protégé. Parce que quand je regarde ce qui s’est passé, je n’imagine même pas ce que cela aurait donné si les prédictions avaient été … peu de mort
Je trouve ca quand même bizarre que les décisions de plusieurs grands pays ne se soient basées que sur l’étude d’une seule « personne » (aussi importante soit-elle), sans comparer les résultats avec ceux apportés par d’autres sources.
Pour travailler dans le monde de la recherche, je ne fais pas confiance aux résultats d’une seule personne. Je regarde si d’autres personnes pensent pareil…
Coucou
Une seule explication. Ils ont été prit de court et se ils se sont spontanément dirigés vers celui qui leur proposait une solution …
En réalité, les facteurs de risques de défaillance du processus de production d’un logiciel sont nombreux et d’ailleurs ça sera un cas d’école intéressant pour les scientifiques et les informaticiens.
Sortir des résultats corrigés à la moyenne c’est de la correction frauduleuse, on rajoute une verrue pour corriger la sortie. Et cela conduit de fait à modifier clandestinement le modèle et ça c’est de la fraude scientifique pure et simple.
Tout ça nous éclaire d’ailleurs sur un point, c’est l’incapacité de nos dirigeants à intégrer le risque de se tromper à cause d’experts foireux. Ce qui montre factuellement que nous sommes dirigés par des incapables.
Je parlais hier de la « dictature médiatique de l’expertise ». Ça rejoint ton propos.
Tiens!? Ca me rappelle les agences de notation en 2008.
C’est pire que ça, puisque Ferguson s’est systématiquement trompé ces 20 dernières années mais cela n’a eu aucun impact sur sa carrière, bien au contraire. Plus il se plante, plus il gagne mystérieusement en influence.
C’est lui qui, en 2001, avait convaincu le Premier ministre Tony Blair de faire abattre 6 millions de bovins pour stopper l’épidémie de fièvre aphteuse (une décision qui coûta 10 milliards de livres et qui est aujourd’hui considérée comme aberrante)
En 2002, il calcula que la maladie de la vache folle tuerait environ 50 000 britanniques et 150 000 de plus lorsqu’elle se transmettrait aux moutons. Il y en eu en réalité 177.
En 2005, il prédit que la grippe aviaire tuerait 65 000 Britanniques . Il y en eu au total 457.
C’est lui qui fit parvenir le 12 mars une note confidentielle à Macron annonçant un demi-million de morts en France. La décision de confinement généralisée était prise le soir même.
Et finalement le 16 mars, en s’appuyant sur le modèle prédictif foireux dont il est question, il annonçait publiquement que si rien n’était fait on aurait 500 000 morts au Royaume-Uni et 2,5 millions aux États-Unis.
Coucou
Sans vouloir dédouaner qui que ce soit, il faut bien que les dirigeants s’appuient sur des gens qui sont sensés être experts dans leur domaine …
Oui mais comme tu dis, sur des gens, pas sur un seul.
Pour le défendre, la modélisation, c’est quelque chose de très compliqué : on demande de prédire le futur, et c’est facile de dire une fois que c’est passé : « tu t’es planté », alors que c’était pas évident au départ.
Comme pour les devs avec le DH tu veut dire ?
sans oublier que la majorité des données initial provenais de la chine , qui n’est pas un système fiable d’information
Le manque de fiabilité des données provenant de Chine, une marge d’erreur sur des projections, aucun souci avec ça.
Utiliser des logiciels foireux en connaissance de cause, les corrections frauduleuses, c’est différent.
Vision purement américano-européenne, emprunte de sinophobie et russophobie.
J’aime bien j’apprends toujours des nouveaux mots avec toi.
Voir ces enfants à qui on apprend à considérer les autres comme un danger potentiel dont il faut rester à distance, ça laisse une impression étrange. Je trouve pas vraiment les mots pour exprimer ce ressenti.
On vit vraiment une drôle d’époque.
C’est juste ultra flippant, ça me donne envie de pleurer.
Ta pleurer devant lucy toi.
j’avoue qu’a moi aussi cette image me fais mal au coeurs.