Oups : le code du modèle de Ferguson qui a justifié le confinement est tellement merdique qu’il ne donne jamais les mêmes résultats

Captain Harlock
Démocratie Participative
08 Mai 2020

Nous ne sommes qu’au tout début d’un voyage qui s’annonce très divertissant et aussi très destructif.

Comme nos lecteurs le savent, le génie britannique qui a convaincu Macron de confiner totalement la France, Neil Ferguson, croyait tellement en ses théories qu’il sautait une femme mariée pendant le confinement.

Pour vendre ce concept absurde aux politiciens, ce type avait utilisé un « modèle » prédictif dont on vient d’apprendre que le code ferait honte à des programmeurs indiens fâchés avec le PQ.

Axis of Easy :

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 pour coucher avec une femme mariée).

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.

Lol.

Désolé goy, c’est juste une erreur de code

Cela n’a jamais été qu’une grosse grippe.

Je ne suis pas informaticien et encore moins un codeur mais je sais lire ce que les programmeurs disent de cette affaire. Ils appellent à retirer ce code de la circulation. Vous pouvez voir les reviews sur Github, c’est violent.

J’imagine que Bill Gates, qui a donné des centaines de millions de dollars à Ferguson, en voulait pour son argent. Je veux dire, en termes de prédictions délirantes, pas en termes de qualité de code. Gates voulait un chiffre effrayant pour obtenir le basculement dans la dictature sanitaire globale à laquelle cette crapule de Macron participe en échange de kilos de cocaïne gratuite.

Ferguson doit être immédiatement arrêté. Tout comme Gates et ses acolytes. Ces gens ont vaporisé l’économie occidentale dans le but explicite de monter un coup d’état mondial.

Commentez l’article sur EELB