Cours
La montée en puissance des grands modèles de langue (LLM) est l'une des tendances marquantes du traitement automatique du langage naturel (NLP), entraînant une adoption massive dans de nombreux cas d'usage. Pourtant, ces avancées sont souvent restées l'apanage d'organisations disposant de ressources considérables, rendant la plupart des LLM inaccessibles au grand public.
Cette exclusivité soulève une question majeure : et s'il existait un moyen d'ouvrir l'accès à ces modèles puissants ? C'est là que BLOOM entre en scène.
Cet article propose une vue d'ensemble de BLOOM : son origine, ses spécifications techniques et sa prise en main, avant d'aborder ses limites et les considérations éthiques.
Qu'est-ce que BLOOM ?
BigScience Large Open-science Open-access Multilingual Language Model (BLOOM), représente une avancée majeure vers la démocratisation des modèles de langue.
Développé de manière collaborative par plus de 1 200 participantes et participants issus de 39 pays, dont un grand nombre des États-Unis, BLOOM est le fruit d'un effort mondial. Coordonné par BigScience en collaboration avec Hugging Face et la communauté française du NLP, ce projet dépasse les frontières géographiques et institutionnelles.
Il s'agit d'un modèle open source de type transformer « decoder-only » comptant 176 milliards de paramètres, entraîné sur le corpus ROOTS, un jeu de données issu de centaines de sources en 59 langues : 46 langues parlées et 13 langages de programmation.
Ci-dessous, le diagramme circulaire de la répartition des langues d'entraînement.

Répartition des langues d'entraînement (source)
Le modèle affiche des performances remarquables sur un large éventail de benchmarks, avec des résultats renforcés après un affinement multitâche par invites (prompted finetuning).
Le projet a culminé avec 117 jours d'entraînement (du 11 mars au 6 juillet) sur le supercalculateur Jean Zay à Paris, rendus possibles par une généreuse allocation de calcul des organismes de recherche français CNRS et GENCI.
BLOOM n'est pas seulement une prouesse technologique ; c'est aussi un symbole de coopération internationale et de la force de l'effort scientifique collectif.
Architecture du modèle BLOOM
Passons maintenant à une description plus détaillée de l'architecture de BLOOM, qui repose sur plusieurs composants.

Architecture de BLOOM (source)
L'architecture de BLOOM, telle que décrite dans l'article, comprend plusieurs points notables :
- Méthodologie de conception : l'équipe a ciblé des familles de modèles extensibles, appuyées par des outils et bases de code publics, et a mené des expériences d'ablation sur des modèles plus petits pour optimiser composants et hyperparamètres. La généralisation « zero-shot » a servi de métrique clé pour évaluer les choix architecturaux.
- Architecture et objectif de préentraînement : BLOOM s'appuie sur l'architecture Transformer, spécifiquement un modèle causal « decoder-only ». Cette approche s'est avérée la plus efficace pour les capacités de généralisation zero-shot, comparée aux architectures encoder-decoder et aux autres variantes decoder-only.
- Aspects de modélisation :
- Embranchements positionnels ALiBi : ALiBi a été préféré aux embeddings positionnels classiques, car il atténue directement les scores d'attention en fonction de la distance entre clés et requêtes, favorisant un entraînement plus fluide et de meilleures performances.
- LayerNorm après l'embedding : une normalisation supplémentaire est appliquée immédiatement après la couche d'embedding, ce qui améliore la stabilité de l'entraînement. Ce choix est notamment lié à l'usage de bfloat16 lors de l'entraînement final, plus stable que float16.
Ces composants illustrent la volonté de l'équipe d'équilibrer innovation et techniques éprouvées pour optimiser performances et stabilité.
Au-delà de l'architecture de BLOOM, examinons deux éléments complémentaires : le prétraitement des données et les jeux de données pour l'apprentissage par invites.
- Prétraitement des données : étapes clés comme la déduplication et l'anonymisation, en particulier pour les sources présentant des risques accrus pour la vie privée.
- Jeux de données avec invites : BLOOM exploite un affinement multitâche par invites, qui démontre de fortes capacités de généralisation en zero-shot.
Comment utiliser BLOOM
Dans cet exemple, nous allons utiliser BLOOM pour générer une histoire créative. Le code ci-dessous prépare l'environnement, charge le modèle, puis génère du texte à partir d'une invite. Le code source correspondant est disponible sur GitHub, et s'inspire fortement du tutoriel d'amrrs.
Configurer l'espace de travail
Le modèle BLOOM est gourmand en ressources ; une configuration adéquate de l'environnement est donc essentielle. Les principales étapes sont décrites ci-dessous.
Tout d'abord, la bibliothèque transformers fournit les interfaces pour travailler avec BLOOM et, plus largement, avec les modèles de type transformer.
!pip install transformers -q
Avec nvidia-smi, nous vérifions les caractéristiques du GPU disponible afin de s'assurer de disposer de la puissance de calcul nécessaire.
!nvidia-smi

Nous importons les modules requis depuis transformers et torch. torch est utilisé pour définir le type de tenseur par défaut, afin de tirer parti de l'accélération GPU.
Puis, puisque nous utilisons un GPU, la bibliothèque torch est configurée via la fonction set_default_tensor_type pour garantir l'usage du GPU.
from transformers import AutoModelForCausalLM, AutoTokenizer, set_seed
import torch
torch.set_default_tensor_type(torch.cuda.FloatTensor)
Utiliser le modèle BLOOM
Le modèle ciblé ici est la version à 7 milliards de paramètres, accessible sur le dépôt Hugging Face de BigScience sous l'identifiant bigscience/bloom-1b7, qui correspond à l'ID unique du modèle.
model_ID = "bigscience/bloom-1b7"
Nous chargeons ensuite le modèle BLOOM préentraîné et son tokenizer depuis Hugging Face, et fixons la graine aléatoire pour la reproductibilité avec la fonction set_seed et un nombre entier quelconque.
Pour aller plus loin sur le potentiel des LLM avec LangChain, un framework Python open source pour construire des applications d'IA avancées, consultez notre tutoriel How to Build LLM Applications with LangChain Tutorial.
Par ailleurs, si vous êtes data engineer et souhaitez utiliser LangChain pour des applications data, notre article Introduction to LangChain for Data Engineering & Data Applications présente les problèmes que LangChain adresse et des exemples de cas d'usage data.
model = AutoModelForCausalLM.from_pretrained(model_ID, use_cache=True)
tokenizer = AutoTokenizer.from_pretrained(model_ID)
set_seed(2024)
Nous pouvons maintenant définir le titre de l'histoire à générer, ainsi que l'invite.
story_title = 'An Unexpected Journey Through Time'
prompt = f'This is a creative story about {story_title}.\n'
Enfin, nous tokenisons l'invite, l'envoyons sur le bon périphérique, puis générons le résultat du modèle avant de le décoder.
input_ids = tokenizer(prompt, return_tensors="pt").to(0)
sample = model.generate(**input_ids,
max_length=200, top_k=1,
temperature=0, repetition_penalty=2.0)
generated_story = tokenizer.decode(sample[0], skip_special_tokens=True)
Le résultat final est mis en forme avec le module textwrap, pour limiter chaque ligne à 80 caractères et améliorer la lisibilité.
import textwrap
wrapper = textwrap.TextWrapper(width=80)
formated_story = wrapper.fill(text=generated_story)
print(formated_story)
Voici le rendu final :

Histoire générée avec le modèle BLOOM
Avec quelques lignes de code, nous avons pu générer un contenu pertinent à l'aide de BLOOM.
Si vous souhaitez maîtriser l'entraînement de grands modèles de langue avec PyTorch, de la préparation à la mise en production, notre tutoriel How to Train an LLM with PyTorch est le guide qu'il vous faut.
Usages prévus et hors périmètre
Comme toute avancée technologique, BLOOM s'accompagne d'usages adaptés et d'autres inappropriés. Cette section détaille les cas d'usage pertinents et ceux à éviter, afin d'indiquer où ses capacités apportent le plus de valeur et où la prudence s'impose. Comprendre ces limites est essentiel pour exploiter BLOOM de manière responsable et efficace.
Usages prévus de BLOOM
BLOOM est un outil polyvalent qui repousse les frontières de l'analyse et de la génération de texte. Ses usages attendus couvrent plusieurs domaines, chacun tirant parti de ses vastes capacités linguistiques.
- Génération de contenus multilingues : compétent dans 59 langues, BLOOM excelle à créer des contenus divers et inclusifs. Un atout clé pour la communication mondiale, l'éducation et les médias, où l'inclusivité linguistique est essentielle.
- Code et développement logiciel : formé à plusieurs langages de programmation, BLOOM est un atout pour le développement : génération de code, assistance au débogage et outil pédagogique pour débuter.
- Recherche et monde académique : dans les milieux universitaires, BLOOM est une ressource puissante pour l'analyse linguistique et la recherche en IA, offrant des éclairages sur les patrons de langage, les comportements de modèles, etc.
Usages hors périmètre de BLOOM
Connaître les limites de BLOOM est crucial pour en garantir un emploi éthique et pertinent. Certains cas d'usage ne relèvent pas de son périmètre, pour des raisons éthiques ou techniques.
- Traitement de données sensibles : BLOOM n'est pas conçu pour traiter des données personnelles sensibles ni des informations confidentielles. Le risque d'atteinte à la vie privée ou d'usage abusif le rend inadapté.
- Décisions à fort enjeu : l'utiliser dans des contextes nécessitant une précision critique, comme le diagnostic médical ou les décisions juridiques, n'est pas recommandé. Comme la plupart des LLM, ses limites peuvent conduire à des résultats inexacts ou trompeurs.
- Remplacement de l'interaction humaine : BLOOM ne doit pas se substituer à l'humain, notamment dans les domaines nécessitant de l'intelligence émotionnelle (accompagnement, diplomatie, enseignement personnalisé). Il ne possède ni la compréhension nuancée ni l'empathie d'une interaction humaine.
Utilisateurs directs et indirects
BLOOM, en tant que grand modèle de langue, apporte des bénéfices à de nombreux profils. Ses capacités ont un impact direct sur certains métiers et secteurs, et un effet plus large sur d'autres parties prenantes.
Cette exploration des utilisateurs de BLOOM met en lumière la manière dont différents groupes l'exploitent ou en sont impactés.
En identifiant les utilisateurs directs et indirects, on mesure l'ampleur de son influence et la diversité de ses contributions au progrès technologique et à la société.
Utilisateurs directs de BLOOM
- Développeurs et data scientists : premiers utilisateurs, ils s'en servent pour l'assistance au codage, le débogage et certaines analyses de données.
- Chercheurs et universitaires : linguistes, chercheurs en IA et académiques exploitent BLOOM pour les études de langage, l'analyse du comportement des modèles et l'avancement de la recherche en NLP.
- Créateurs de contenu et traducteurs : auteurs, journalistes et traducteurs s'appuient sur BLOOM pour générer et traduire des contenus dans différentes langues, gagnant en productivité et en portée.
Utilisateurs indirects de BLOOM
- Entreprises et organisations : elles bénéficient indirectement de services augmentés par l'IA, d'interactions clients améliorées et d'un traitement plus efficace des données.
- Établissements d'enseignement : élèves et enseignants profitent d'outils pédagogiques intégrant ses capacités de traitement du langage pour apprendre et enseigner.
- Grand public : la communauté au sens large bénéficie d'expériences technologiques améliorées, d'un meilleur accès à des contenus multilingues et d'applications logicielles plus performantes.
Considérations éthiques et limites
Comme tout grand modèle de langue, BLOOM soulève des considérations éthiques et présente des limites. Les comprendre est essentiel pour un usage responsable et pour anticiper ses impacts. Cette section traite des implications éthiques, des risques et des limites inhérentes à BLOOM.
Considérations éthiques
- Biais et équité des données : l'un des principaux enjeux est le risque de perpétuer ou d'amplifier les biais présents dans les données d'entraînement, avec des conséquences sur la neutralité et l'équité des sorties.
- Vie privée : bien que BLOOM ne soit pas destiné à manipuler des informations personnelles sensibles, l'étendue de ses données d'entraînement peut en contenir. Un risque d'atteinte à la vie privée existe si des sorties révèlent des informations sensibles.
Risques liés à l'usage
- Désinformation et manipulation : ses capacités avancées peuvent être détournées pour générer des contenus trompeurs ou manipulateurs, avec des risques significatifs dans les médias, la politique et l'opinion publique.
- Dépendance et perte de compétences : s'en remettre excessivement à BLOOM pour la création de contenu ou la traduction peut conduire à une érosion de ces compétences humaines, au détriment de la créativité et des aptitudes linguistiques.
Limites de BLOOM
- Compréhension contextuelle : malgré sa sophistication, BLOOM peut manquer de compréhension fine des contextes et référents culturels, entraînant des erreurs ou des sorties inadaptées dans des situations nuancées.
- Langue en constante évolution : entraîné sur un corpus statique, BLOOM peut ne pas suivre le rythme des évolutions linguistiques (nouveaux usages, terminologie, références culturelles).
Impact réel et controverses
Le développement et la publication de BLOOM ont des implications concrètes, tant en termes d'impact que de controverses. Cette section en dresse un panorama, appuyé sur l'article de recherche dédié.
Impact concret de BLOOM
- Démocratisation de l'IA : BLOOM marque une étape vers la démocratisation des technologies d'IA. Développé par BigScience, un effort collectif réunissant plus de 1 200 personnes de 38 pays, BLOOM est un modèle en accès ouvert, entraîné sur un corpus couvrant 59 langues. Cette participation étendue et cette accessibilité rompent avec l'exclusivité qui caractérise souvent les LLM.
- Diversité et inclusion : l'accent mis sur la diversité linguistique, géographique et scientifique est notable. Le corpus ROOTS couvre un large éventail de langues naturelles et de langages de programmation, reflétant une volonté d'inclusion et de représentation dans le développement de l'IA.
Controverses et défis
- Enjeux sociaux et éthiques : le projet reconnaît les limites sociales et les défis éthiques liés aux LLM. L'atelier BigScience s'est doté d'une charte éthique guidant le projet, insistant sur l'inclusivité, la diversité, l'ouverture, la reproductibilité et la responsabilité, depuis la curation des données jusqu'à l'évaluation du modèle.
- Environnement et ressources : l'entraînement de LLM tels que BLOOM mobilise d'importantes ressources de calcul, avec des implications en matière de consommation énergétique et d'empreinte carbone, généralement à la portée d'organisations très dotées.
BLOOM est-il toujours pertinent aujourd'hui ?
Dans un secteur de l'intelligence artificielle (IA) en perpétuelle accélération, la pertinence de LLM comme BLOOM fait l'objet de débats constants.
Fruit d'une vaste collaboration internationale, BLOOM a constitué un saut important en traitement du langage. Cependant, le paysage évolue sans cesse, avec l'émergence de nouveaux modèles qui déplacent l'attention.
Voyons si BLOOM tient encore son rang dans cet environnement compétitif.
- Évolution du focus : d'abord une percée majeure, BLOOM se retrouve désormais dans l'ombre de modèles plus récents. À la différence d'IA conversationnelles comme ChatGPT, BLOOM est davantage taillé pour la complétion de contenu que pour l'interaction.
- Contraintes matérielles : ses besoins matériels élevés limitent son accessibilité, là où des LLM plus aisés à intégrer comme GPT-3.5 et GPT-4 s'imposent.
- Concurrence croissante : l'arrivée de modèles comme LLaMA et d'outils tels qu'Alpaca a démocratisé l'accès aux LLM, offrant des capacités avec des ressources moindres et élargissant ainsi leur adoption.
- Atout multilingue : son point fort reste son entraînement étendu sur de nombreuses langues, utile pour la traduction et la création de contenus multilingues.
Conclusion
Cet article a proposé un tour d'horizon du projet BLOOM, une contribution majeure au champ des grands modèles de langue.
Nous avons retracé son développement, mis en avant ses spécifications techniques et la collaboration qui l'a rendu possible. Nous avons également présenté comment y accéder et l'utiliser efficacement, en insistant sur ses usages adaptés et ses limites.
Enfin, nous avons abordé ses implications éthiques et son impact réel, ainsi que sa place dans l'écosystème actuel de l'IA. Que vous œuvriez directement dans l'IA ou que vous soyez curieux du sujet, cette exploration de BLOOM fournit des repères essentiels pour naviguer dans l'univers des LLM.
Pour approfondir votre maîtrise des grands modèles de langue, notre cours complémentaire Large Language Models (LLMs) Concepts vous permettra d'explorer tout le potentiel des LLM : applications, méthodes d'entraînement, considérations éthiques et dernières avancées de la recherche.
Scientifique de données aux multiples talents qui aime partager ses connaissances et rendre service aux autres, Zoumana est un créateur de contenu sur YouTube et un rédacteur technique de premier plan sur Medium. Il prend plaisir à parler, à coder et à enseigner. Zoumana est titulaire de deux masters. Le premier en informatique avec une spécialisation en apprentissage automatique à Paris, en France, et le second en science des données à l'université Texas Tech aux États-Unis. Son parcours professionnel a débuté en tant que développeur de logiciels au sein du Groupe OPEN en France, avant de rejoindre IBM en tant que consultant en apprentissage automatique, où il a développé des solutions d'IA de bout en bout pour les compagnies d'assurance. Zoumana a rejoint Axionable, la première startup d'IA durable basée à Paris et Montréal. Il y a occupé le poste de Data Scientist et a mis en œuvre des produits d'IA, principalement des cas d'utilisation NLP, pour des clients en France, à Montréal, à Singapour et en Suisse. En outre, 5 % de son temps a été consacré à la recherche et au développement. Il travaille actuellement en tant que scientifique de données senior à l'IFC, le groupe de la Banque mondiale.


