pio3 - Fotolia
BLOOM : le CNRS entraîne l’un des plus gros mégamodèles multilingues
Concocté par près de 1 000 chercheurs, BLOOM est un modèle de génération de textes multilingue entraîné sur le supercalculateur Jean Zay du CNRS. Pot-pourri des techniques les plus en vogue dans le domaine, le projet se distingue par sa dimension éthique et sa transparence.
Pourquoi les géants du cloud seraient-ils les seuls à pouvoir entraîner des mégamodèles NLP et NLG ?
C’est avec cette question rhétorique en tête que les fondateurs de l’entreprise franco-américaine Huggingface ont lancé l’initiative BigScience en mai 2021.
Ce projet de recherche a été mené en collaboration avec le GENCI (le grand équipement national de calcul intensif), et l’IDRIS (Institut du développement et des ressources en informatiques scientifiques), deux branches rattachées au CNRS.
Entre mai 2021 et mai 2022, ce groupe de recherche ouvert a réuni plus de 1 000 chercheurs en provenance de 72 pays et de 250 instituts de recherche différents, dont l’INRIA et Salesforce Research. Ils étaient organisés en groupe de travail. Ensemble, ils ont mis au point BLOOM, dont la version 1.3 a été dévoilée le 6 juillet 2022.
BLOOM (pour BigScience Large Open-science Open-access Multilingual Language Model) est un modèle multilingue autorégressif à large échelle.
Avec ses 176 milliards de paramètres, BLOOM dépasse de peu GPT-3 d’OpenAI et ses 175 milliards de paramètres. Toutefois, le corpus utilisé à l’entraînement diffère largement entre les deux mégamodèles.
Là où OpenAI – une startup propulsée par Elon Musk – s’est d’abord concentrée sur l’anglais, BLOOM a été directement formé pour générer des textes dans 46 langues et 13 langages de programmation différents.
« Il s’agit du plus gros modèle de langue multilingue entraîné de manière complètement ouverte et transparente », indique le CNRS dans un communiqué de presse.
CNRS
Le jeu de données d’entraînement disponible en open science est à la hauteur de cette prétention. Il comprend un volume 1,6 To de texte converti en 350 milliards de tokens.
Pour rappel, dans un modèle NLP/NLG, un token correspond à une portion plus ou moins grande d’un texte, par exemple une expression, un mot ou un pronom.
Seulement 30,04 % des données d’entraînement sont en anglais, 16,2 % en chinois simplifié, 10,8 % en espagnol et 12,9 % en français. Le corpus comprend aussi des textes écrits en arabe (4,6 %), en portugais (4,9 %), en vietnamien (2,7 %) ou encore dans les langues usitées en Afrique subsaharienne.
Les langages de programmation représentent 10,8 % des données d’entraînement. BLOOM a « appris » à écrire du code en Java, PHP, C++, Python, JavaScript, Ruby, Lua, Go, TypeScript, C, Scala et en Rust.
Un quart de la puissance du supercalculateur Jean Zay alloué à BLOOM
Techniquement, BLOOM est une version modifiée de Megatron-LM, un « transformer » NLP, lui-même dérivé de GPT-2. Pour rappel GPT-2 a été développé à l’origine par OpenAI.
BLOOM est un réseau de neurones comprenant 70 couches et 112 têtes d’attention. Les couches cachées, situées entre les couches de neurones d’entrée et de sortie, atteignent 14 336 dimensions. En clair, ce modèle NLG est plus dense que GPT-3 avec ses 96 couches, mais reste encore loin derrière Megatron-Turing, ses 530 milliards de paramètres et ses 104 couches.
Les chercheurs du groupe BigScience se sont appuyés sur diverses techniques de plongement lexical (couche de normalisation, protocole ALiBI, fonctions d’activation GeLU) afin de supporter des séquences de 2048 tokens.
Pour entraîner BLOOM, le GENCI et l’IDRIS ont mis à contribution le supercalculateur Jean Zay, installé dans le sud de Paris. Les deux entités rattachées au ministère de l’Enseignement supérieur ont doté BigScience d’une subvention informatique d’une valeur estimée à 3 millions d’euros.
Financé par le gouvernement français en 2019, le supercalculateur Jean Zay a été construit par HPE. En 2020, sa puissance de calcul totale a été étendue pour passer de 15,7 à plus de 28 petaFLOPS.
Le GENCI et l’IDRIS n’ont pas activé toutes les capacités du HPC. Ils se sont appuyés sur une nouvelle extension, la partition gpu_p5, officiellement accessible aux chercheurs depuis juin 2022.
Cette extension représente un quart de la puissance totale du supercalculateur. Elle comporte 52 nœuds de calcul incluant chacun 2 processeurs AMD EPYC Milan 7543 (32 cœurs à 2,8 GHz) soit 64 cœurs, couplés avec 512 Go de mémoire vive et 8 GPU Nvidia A100 SXM4 dotés de 80 Go de VRAM HBM2e, pour un total de 640 Go de VRAM par nœud.
Les huit accélérateurs graphiques utilisent quatre connexions inter-GPU via NVLink et quatre liens OmniPath, un protocole d’Intel.
Ainsi, l’entraînement final de BLOOM a duré trois mois et demi (117 jours exactement) et a été effectué sur 48 nœuds, soit 384 GPU A100. Quatre nœuds étaient disponibles en réserve.
Cela représente environ 1 million d’heures de calcul. Le coût total de fonctionnement, incluant les phases de préentraînement, est estimé entre 2 et 5 millions de dollars. Cette évaluation effectuée par Huggingface s’appuie sur la tarification des instances de calcul appliquée par les fournisseurs cloud.
Une combinaison des techniques d’optimisation imaginées par Microsoft et Nvidia
Pour un modèle de deep learning doté de 176 milliards de paramètres, la puissance de calcul mise à disposition ne paraît pas énorme. Il y a trois ans, Microsoft avait aligné 10 000 GPU pour entraîner GPT-3 au nom d’OpenAI.
C’était sans compter sur les avancées permises par Microsoft et Nvidia. En effet, les chercheurs de BigScience ont utilisé les librairies DeepSpeed et Megatron-DeepSpeed.
Concoctée par Microsoft, DeepSpeed est une librairie d’optimisation des traitements parallèles des données au sein des GPU. Elle est consacrée à l’entraînement et l’inférence de modèle de Deep Learning via Pytorch.
Pour rappel, le cœur de DeepSpeed se nomme ZeRO (Zero Redundancy Optimizer). Ce mécanisme de sharding doit à la fois partitionner les états d’un modèle via ZeRO-DP, et limiter la consommation de VRAM suivant les fonctions activées en sortie d’un réseau de neurones, à l’aide de ZeRO-R.
L’équipe de BigScience a utilisé deux autres mécanismes de DeepSpeed. L’un d’entre eux permet d’optimiser les traitements effectués en demi-précision, un format de nombre à virgule flottante binaire occupant 16 bits en mémoire, aussi nommé FP16.
Traditionnellement, les chercheurs s’appuyaient sur le format FP32, plus précis. Il s’avère que pour les réseaux de neurones la précision de calcul importe peu, selon Nvidia. En optimisant les traitements pour le format FP16, un exercice auparavant difficile, cela permet d’accélérer les traitements et donc de consommer moins de mémoire.
L’autre mécanisme, nommé parallélisme des pipelines (Pipeline Parallelism ou PP), permet de pallier les défauts des traitements des pipelines de données dans un cluster de GPU. Au lieu de diviser les données en batch, PP divise les jeux de données en microbatch, permettant à différents accélérateurs de traiter ces bouts de données au même moment.
Quant à Megatron-DeepSpeed, il s’agit d’un fork d’un projet éponyme chez Microsoft, lui-même étant une variante de Megatron-LM de Nvidia.
Le framework Megatron-LM est un modèle « transformer » développé par Nvidia. Les chercheurs du fabricant y ont inclus un système d’optimisation du parallélisme des traitements sur les cœurs Tensor des GPU.
Megratron-LM apporte deux autres mécanismes appréciés des chercheurs de BigScience : sa manière de charger les données et les kernels CUDA « fusionnés ».
Avec le data loader de Megatron-LM, « au cours du démarrage de l’apprentissage initial, chaque ensemble de données est divisé en échantillons de la longueur de séquence requise et un index est créé pour numéroter chaque échantillon », explique Stas Bekman, ingénieur logiciel actif dans le développement de BLOOM. « En fonction des paramètres d’apprentissage, le nombre d’époques pour un ensemble de données est calculé et un ordre pour ce nombre d’époques est créé, puis mélangé ».
Cette méthode assure que chaque échantillon soit vu deux fois par le modèle lors de l’apprentissage. « Cela permet de garantir une courbe d’apprentissage régulière tout au long du processus d’entraînement », assure Stas Bekman.
Les kernels CUDA « fusionnés », eux, sont là pour optimiser les opérations au sein des clusters de GPU.
Dans un accélérateur graphique, un kernel correspond à un jeu d’instruction à exécuter pour effectuer des calculs ou déplacer des données. Or, par défaut, les opérations sont séparées, ce qui implique de développer et lancer plusieurs kernels CUDA, qui écrivent des résultats intermédiaires en mémoire.
Les kernels CUDA fusionnés « remplacent principalement les multiples calculs discrets et les mouvements de données vers/depuis la mémoire par des calculs fusionnés qui limitent ces mouvements », indique Stas Bekman. « En outre, certains kernels fusionnés réécrivent les fonctions mathématiques afin que certains groupes de calculs puissent être exécutés plus rapidement ».
En l’occurrence les kernels fusionnés présents dans le framework Megatron-LM sont utilisés pour résoudre des opérations habituellement gourmandes en VRAM.
Outre la disponibilité du code du mégamodèle sur la plateforme Hugginface, il est possible d’inférer BLOOM depuis une API. Le modèle adapté avec la librairie FLAX est alors exécuté depuis des instances TPU sur Google Cloud.
BigScience prévoit déjà d’optimiser les performances du modèle, d’ajouter d’autres langages et d’en réduire la taille.
Éthique, ouvert, transparent, mais pas open source
Hormis cette volonté de généraliser l’entraînement à 59 langues et langages de programmation, BLOOM ne se différencie pas réellement par les techniques d’apprentissage et d’entraînement utilisées. Les chercheurs ont compilé les avancées cumulées ces cinq dernières années pour concocter un mégamodèle correspondant à l’état de l’art de la recherche.
BigScience différencie surtout son projet par une volonté de transparence. Une notion que les grands noms du domaine, dont OpenAI, Google et Microsoft, ne portent pas forcément en bannière. Il suffit de constater le nombre d’informations disponibles depuis la page Web d’Hugginface pour s’en convaincre. Le groupe de chercheurs s’est aussi penché sur les questions d’explicabilité, d’éthiques, d’inclusivité et d’anticipation des réglementations appliquées à l’intelligence artificielle.
En conséquence, les protagonistes impliqués dans ce projet n’ont pas choisi d’y apposer une licence open source. Ils ont anticipé les éventuelles utilisations malveillantes d’un tel mégamodèle et ont pris le parti de développer leur propre licence. Dérivée d’Apache 2.0, cette dernière nommée Responsable AI License (RAI) inclut un ensemble de restrictions. Les auteurs veulent éviter que BLOOM servent à nuire, discriminer, harceler autrui ou à commettre des délits.
Aussi RAI doit empêcher l’emploi du mégamodèle pour l’automatisation des décisions, la classification des citoyens, la prédiction des délits, ou encore l’interprétation de résultats médicaux.
La licence de BLOOM ne respecte donc pas la définition de l’open source maintenue par l’Open Source Initiative. Si la définition de l’OSI interdit toute discrimination contre des personnes ou des groupes, elle exclut également toute discrimination contre des utilisations spécifiques. BigScience est donc ouvert, mais réclame un examen juridique avant tout usage commercial ou gouvernemental.
Un tel modèle peut toutefois servir pour des tâches de traduction et de génération de réponses automatiques, de complétion de phrases ou de code, ou encore produire des résumés de livres. Pour l’instant, les responsables du CNRS et les autres membres de BigScience considèrent BLOOM comme un objet de recherche.