Corso
L'ascesa dei large language model (LLM) è stata una tendenza determinante nel campo dell'elaborazione del linguaggio naturale (NLP), portando alla loro ampia adozione in diverse applicazioni. Tuttavia, questo progresso è spesso rimasto esclusivo: la maggior parte degli LLM sviluppati da organizzazioni con molte risorse è rimasta inaccessibile al pubblico.
Questa esclusività pone una domanda importante: e se ci fosse un modo per democratizzare l'accesso a questi potenti modelli linguistici? È qui che entra in scena BLOOM.
Questo articolo offre una panoramica completa di cosa sia BLOOM, partendo dalla sua genesi. Poi passa in rassegna le specifiche tecniche di BLOOM e come usarlo, per poi evidenziarne i limiti e le considerazioni etiche.
Che cos'è BLOOM?
BigScience Large Open-science Open-access Multilingual Language Model (in breve BLOOM) rappresenta un notevole passo avanti nella democratizzazione della tecnologia dei modelli linguistici.
Sviluppato in collaborazione da oltre 1200 partecipanti di 39 paesi, inclusi molti dagli Stati Uniti, BLOOM è il frutto di uno sforzo globale. Coordinato da BigScience in collaborazione con Hugging Face e la comunità francese di NLP, questo progetto trascende i confini geografici e istituzionali.
È open source ed è un modello transformer solo decoder con 176 miliardi di parametri, addestrato sul corpus ROOTS, un dataset con centinaia di fonti in 59 lingue: 46 lingue parlate e 13 linguaggi di programmazione.
Di seguito il grafico a torta della distribuzione delle lingue di addestramento.

Distribuzione delle lingue di addestramento (fonte)
Il modello ha ottenuto prestazioni notevoli su un'ampia varietà di benchmark e ha raggiunto risultati migliori dopo il finetuning con prompt multitask.
Il progetto è culminato in una sessione di addestramento di 117 giorni (11 marzo - 6 luglio) sul supercomputer Jean Zay a Parigi, sostenuta da un cospicuo grant computazionale delle agenzie di ricerca francesi CNRS e GENCI.
BLOOM non è solo un capolavoro tecnologico, ma anche un simbolo di cooperazione internazionale e del potere della ricerca scientifica collettiva.
Architettura del modello BLOOM
Descriviamo ora l'architettura di BLOOM in modo più dettagliato, che comprende più componenti.

Architettura di Bloom (fonte)
L'architettura del modello BLOOM, come descritto nell'articolo, include vari aspetti degni di nota:
- Metodologia di progettazione: Il team si è concentrato su famiglie di modelli scalabili con supporto in strumenti e codebase pubbliche e ha condotto esperimenti di ablation su modelli più piccoli per ottimizzare componenti e iperparametri. La generalizzazione zero-shot è stata una metrica chiave per valutare le scelte architetturali.
- Architettura e obiettivo di pretraining: BLOOM si basa sull'architettura Transformer, in particolare su un modello causale solo decoder. Questo approccio è stato validato come il più efficace per le capacità di generalizzazione zero-shot rispetto alle architetture encoder-decoder e ad altri modelli solo decoder.
- Dettagli di modellazione:
- ALiBi Positional Embeddings: ALiBi è stato preferito ai tradizionali positional embedding, poiché attenua direttamente i punteggi di attenzione in base alla distanza tra key e query. Ciò ha portato a un addestramento più regolare e a migliori prestazioni.
- Embedding LayerNorm: È stata aggiunta un'ulteriore normalizzazione subito dopo il layer di embedding, che ha migliorato la stabilità dell'addestramento. Questa decisione è stata in parte influenzata dall'uso di bfloat16 nell'addestramento finale, più stabile di float16.
Questi componenti riflettono l'attenzione del team nel bilanciare innovazione e tecniche comprovate per ottimizzare prestazioni e stabilità del modello.
Oltre ai componenti architetturali di BLOOM, vediamo altri due elementi rilevanti: il preprocessing dei dati e i dataset con prompt.
- Preprocessing dei dati: Ha comportato passaggi cruciali come deduplicazione e redazione dei dati sensibili, soprattutto per le fonti con maggiori rischi per la privacy.
- Dataset con prompt: BLOOM impiega un finetuning multitask basato su prompt, che ha mostrato forti capacità di generalizzazione zero-shot.
Come usare BLOOM
In questo esempio useremo BLOOM per generare una storia creativa. Il codice è strutturato per configurare l'ambiente, preparare il modello e generare testo a partire da un prompt. Il codice sorgente corrispondente è disponibile su GitHub ed è fortemente ispirato al tutorial di amrrs.
Configura lo spazio di lavoro
Il modello BLOOM richiede molte risorse, quindi una corretta configurazione dell'ambiente è fondamentale; i passaggi principali sono descritti di seguito.
Per prima cosa, la libreria transformer viene usata per fornire le interfacce per lavorare con il modello BLOOM e, in generale, con altri modelli basati su transformer.
!pip install transformers -q
Con nvidia-smi verifichiamo le proprietà della GPU disponibile per assicurarci di avere le risorse computazionali necessarie per eseguire il modello
!nvidia-smi

Importiamo i moduli necessari da transformers e torch. torch viene usato per impostare il tipo di tensore di default e sfruttare l'accelerazione GPU.
Poi, dato che usiamo una GPU, la libreria torch viene configurata tramite la funzione set_default_tensor_type per garantire l'uso della GPU.
from transformers import AutoModelForCausalLM, AutoTokenizer, set_seed
import torch
torch.set_default_tensor_type(torch.cuda.FloatTensor)
Uso del modello BLOOM
Il modello utilizzato è BLOOM da 7 miliardi di parametri, accessibile dal repository Hugging Face di BigScience con l'identificativo bigscience/bloom-1b7, che corrisponde all'ID univoco del modello.
model_ID = "bigscience/bloom-1b7"
Successivamente carichiamo il modello e il tokenizer preaddestrati da Hugging Face, e impostiamo il seed per la riproducibilità con la funzione set_seed usando un numero a scelta. Il valore in sé non conta, ma è importante che non sia un valore floating.
Per saperne di più sul potenziale ancora inesplorato dei Large Language Model con LangChain, un framework Python open source per costruire applicazioni IA avanzate, il nostro tutorial How to Build LLM Applications with LangChain Tutorial è la guida giusta.
Inoltre, se sei un data engineer e ti interessa l'uso di LangChain per applicazioni sui dati, il nostro articolo Introduction to LangChain for Data Engineering & Data Applications offre una panoramica su cosa puoi fare con LangChain, inclusi i problemi che risolve ed esempi di casi d'uso sui dati.
model = AutoModelForCausalLM.from_pretrained(model_ID, use_cache=True)
tokenizer = AutoTokenizer.from_pretrained(model_ID)
set_seed(2024)
Ora possiamo definire il titolo della storia da generare, insieme al prompt.
story_title = 'An Unexpected Journey Through Time'
prompt = f'This is a creative story about {story_title}.\n'
Infine, tokenizziamo il prompt e lo mappiamo sul dispositivo del modello prima di generare il risultato del modello e decodificarlo.
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)
Il risultato finale viene formattato utilizzando il modulo textwrap, per garantire un massimo di 80 caratteri per riga e migliorare la leggibilità.
import textwrap
wrapper = textwrap.TextWrapper(width=80)
formated_story = wrapper.fill(text=generated_story)
print(formated_story)
Il risultato finale è mostrato di seguito:

Storia generata con il modello BLOOM
Con poche righe di codice, siamo riusciti a generare contenuti significativi utilizzando il modello BLOOM.
Se vuoi padroneggiare il processo di addestramento dei large language model con PyTorch, dall'impostazione iniziale all'implementazione finale, il nostro tutorial How to Train an LLM with PyTorch offre una guida completa per raggiungere l'obiettivo.
Utilizzi previsti e fuori ambito
Come ogni avanzamento tecnologico, anche BLOOM ha una serie di applicazioni adatte e inadatte. Questa sezione approfondisce i casi d'uso appropriati e inappropriati, evidenziando dove le sue capacità possono essere sfruttate al meglio e dove è consigliabile procedere con cautela. Comprendere questi confini è fondamentale per sfruttare il potenziale di BLOOM in modo responsabile ed efficace.
Utilizzi previsti di BLOOM
BLOOM è uno strumento versatile progettato per spingere i confini dell'elaborazione e generazione del linguaggio. I suoi utilizzi previsti spaziano in vari domini, ognuno dei quali sfrutta le sue ampie capacità linguistiche.
- Generazione di contenuti multilingue: Con competenze in 59 lingue, BLOOM eccelle nel creare contenuti diversificati e inclusivi. Questa capacità è particolarmente preziosa nella comunicazione globale, nell'istruzione e nei media, dove l'inclusività linguistica è cruciale.
- Coding e sviluppo software: L'addestramento di BLOOM nei linguaggi di programmazione lo rende una risorsa per lo sviluppo software. Può aiutare in compiti come generazione di codice, debugging e come strumento didattico per i nuovi programmatori.
- Ricerca e mondo accademico: In ambito accademico, BLOOM è una potente risorsa per l'analisi linguistica e la ricerca sull'IA, fornendo spunti su pattern linguistici, comportamento dell'IA e altro.
Utilizzi fuori ambito per BLOOM
Comprendere i limiti di BLOOM è fondamentale per garantirne un'applicazione etica e pratica. Alcuni casi d'uso esulano dall'ambito per cui l'LLM BLOOM è pensato, principalmente per considerazioni etiche o vincoli tecnici.
- Gestione di dati sensibili: BLOOM non è progettato per elaborare dati personali sensibili o informazioni riservate. Il potenziale di violazioni della privacy o uso improprio rende il modello inadatto a questi scopi.
- Decisioni ad alto rischio: usare BLOOM in scenari che richiedono un'accuratezza critica, come diagnosi mediche o decisioni legali, non è consigliabile. Le limitazioni del modello, comuni a molti large language model, possono portare a risultati imprecisi o fuorvianti in questi ambiti sensibili.
- Sostituzione dell'interazione umana: BLOOM non dovrebbe essere visto come un sostituto dell'interazione umana, soprattutto in campi che richiedono intelligenza emotiva, come counseling, diplomazia o insegnamento personalizzato. Il modello manca della comprensione sfumata e dell'empatia proprie dell'interazione umana.
Utenti diretti e indiretti
BLOOM, in quanto avanzato Large Language Model (LLM), offre numerosi benefici che si estendono a vari gruppi di utenti. Le sue capacità influenzano direttamente alcuni professionisti e settori, ma hanno anche effetti più ampi, impattando indirettamente un ventaglio più vasto di stakeholder.
Questa esplorazione degli utenti di BLOOM mira a evidenziare come diversi gruppi sfruttino e siano influenzati da questo strumento innovativo.
Comprendendo gli utenti diretti e indiretti di BLOOM, possiamo apprezzarne l'ampia influenza e i molteplici modi in cui contribuisce all'avanzamento della tecnologia e della società.
Utenti diretti di BLOOM
- Sviluppatori e data scientist: I professionisti dello sviluppo software e della data science sono utenti primari. Utilizzano BLOOM per attività come assistenza al coding, debugging e analisi dei dati.
- Ricercatori e accademici: Questo gruppo include linguisti, ricercatori di IA e accademici che usano BLOOM per studi linguistici, analisi del comportamento dell'IA e per far progredire la ricerca in NLP.
- Creator e traduttori: Scrittori, giornalisti e traduttori usano BLOOM per generare e tradurre contenuti in diverse lingue, migliorando produttività e portata.
Utenti indiretti di BLOOM
- Aziende e organizzazioni: Le imprese di vari settori beneficiano indirettamente di BLOOM tramite servizi basati su IA migliorati, interazioni con i clienti più efficaci e gestione dei dati più efficiente.
- Istituzioni educative: Studenti e docenti sperimentano i benefici di BLOOM indirettamente attraverso strumenti e risorse educative che incorporano le sue capacità di elaborazione del linguaggio per l'apprendimento e l'insegnamento.
- Pubblico generale: La comunità più ampia è beneficiaria indiretta di BLOOM tramite esperienze tecnologiche migliorate, accesso a contenuti multilingue e applicazioni software più avanzate.
Considerazioni etiche e limitazioni
L'adozione di BLOOM, come per qualsiasi Large Language Model (LLM), comporta una serie di considerazioni etiche e limitazioni. Questi aspetti sono fondamentali per un uso responsabile e per anticipare l'impatto più ampio della tecnologia. Questa sezione affronta le implicazioni etiche, i rischi e i limiti intrinseci associati all'uso di BLOOM.
Considerazioni etiche
- Bias nei dati ed equità: Una delle principali preoccupazioni etiche è il potenziale di BLOOM di perpetuare o amplificare i bias presenti nei dati di addestramento. Ciò può influire sull'equità e la neutralità degli output, creando sfide etiche in scenari in cui l'imparzialità è cruciale.
- Privacy: Sebbene BLOOM non sia progettato esplicitamente per gestire informazioni personali sensibili, l'ampiezza dei dati di addestramento può includere involontariamente tali informazioni. Esiste il rischio di violazioni della privacy se BLOOM genera output basati su dati sensibili o che li rivelino.
Rischi associati all'uso
- Disinformazione e manipolazione: Le capacità avanzate di BLOOM possono essere usate in modo improprio per generare informazioni fuorvianti o contenuti manipolativi, con rischi significativi in ambiti come media, politica e opinione pubblica.
- Dipendenza e degrado delle competenze: Un'eccessiva dipendenza da BLOOM per attività come creazione di contenuti o traduzione potrebbe portare a un decadimento di tali competenze negli esseri umani, influenzando creatività e abilità linguistiche.
Limitazioni di BLOOM
- Comprensione contestuale: Nonostante la sua sofisticazione, BLOOM può mancare di una profonda comprensione contestuale e culturale necessaria per alcuni compiti, portando a inesattezze o output inappropriati in scenari sfumati.
- Natura in evoluzione del linguaggio: L'addestramento di BLOOM su un dataset statico fa sì che possa non tenere il passo con l'evoluzione del linguaggio, inclusi nuovi slang, termini o riferimenti culturali.
Impatto nel mondo reale e controversie
Lo sviluppo e il rilascio di BLOOM hanno implicazioni significative nel mondo reale, sia in termini di impatto sia per le controversie sollevate. Questa sezione discute questi aspetti, basandosi sugli insight del paper di BLOOM.
Impatto reale di BLOOM
- Democratizzazione della tecnologia IA: BLOOM rappresenta un passo verso la democratizzazione della tecnologia IA. Sviluppato da BigScience, uno sforzo collaborativo che coinvolge oltre 1200 persone di 38 paesi, BLOOM è un modello ad accesso aperto addestrato su un corpus diversificato che copre 59 lingue. Questa ampia partecipazione e accessibilità segnano un cambiamento rispetto all'esclusività tipica nello sviluppo dei grandi modelli linguistici.
- Diversità e inclusione: L'impegno del progetto per la diversità linguistica, geografica e scientifica è notevole. Il corpus ROOTS usato per addestrare BLOOM copre un vasto insieme di lingue e linguaggi di programmazione, riflettendo un'enfasi su inclusione e rappresentatività nello sviluppo dell'IA
Controversie e sfide
- Questioni sociali ed etiche: Lo sviluppo di BLOOM riconosce i limiti sociali e le sfide etiche nello sviluppo dei grandi modelli linguistici. Il workshop BigScience ha adottato una Carta Etica per guidare il progetto, sottolineando inclusività, diversità, apertura, riproducibilità e responsabilità. Questi principi sono stati integrati in vari aspetti del progetto, dalla cura dei dataset alla valutazione del modello.
- Questioni ambientali e di risorse: Lo sviluppo di grandi modelli linguistici come BLOOM ha sollevato preoccupazioni ambientali a causa delle ingenti risorse computazionali richieste. L'addestramento di questi modelli, tipicamente alla portata solo di organizzazioni con molte risorse, ha implicazioni sul consumo energetico e sull'impronta di carbonio
BLOOM è ancora rilevante oggi?
Nel mondo frenetico dell'intelligenza artificiale (IA), la rilevanza di LLM come BLOOM è un tema di discussione continua.
Sviluppato da un vasto team di ricercatori internazionali, BLOOM è stato un salto significativo nell'elaborazione del linguaggio. Tuttavia, il panorama dell'IA è in continua evoluzione, con nuovi modelli che emergono e spostano l'attenzione.
Vediamo se BLOOM mantiene ancora la sua posizione in questo ambito competitivo.
- Spostamento dell'attenzione: Inizialmente una grande innovazione, BLOOM si trova ora all'ombra di modelli più recenti. A differenza delle IA conversazionali come ChatGPT, BLOOM è pensato per il completamento di contenuti più che per la comunicazione interattiva.
- Vincoli hardware: Le elevate esigenze hardware di BLOOM ne limitano l'accessibilità rispetto a LLM più user-friendly come GPT-3.5 e GPT-4, più facili da integrare in varie applicazioni.
- Concorrenza crescente: L'avvento di modelli come LLaMA e strumenti come Alpaca ha democratizzato l'accesso agli LLM, offrendo capacità con requisiti di risorse ridotti e ampliandone così l'appeal e l'uso.
- Capacità multilingue: Il punto di forza unico di BLOOM è l'ampio addestramento in più lingue, che lo rende una risorsa preziosa per traduzione e creazione di contenuti multilingue.
Conclusione
Questo articolo ha fornito una panoramica del progetto BLOOM, un contributo significativo al campo in evoluzione dei Large Language Model.
Abbiamo esplorato lo sviluppo di BLOOM, evidenziando le specifiche tecniche e la collaborazione alla base della sua creazione. L'articolo è stato anche una guida per accedere e utilizzare efficacemente BLOOM, sottolineando gli utilizzi appropriati e le limitazioni.
Inoltre, ha trattato le implicazioni etiche e l'impatto reale del progetto BLOOM AI, riflettendo sulla sua accoglienza e rilevanza nell'attuale panorama dell'IA. Che tu sia coinvolto direttamente nell'IA o un appassionato, questa esplorazione di BLOOM offre prospettive essenziali per orientarti nel complesso mondo dei grandi modelli linguistici.
Per chi desidera approfondire il lavoro con modelli linguistici avanzati, il nostro corso aggiuntivo, Large Language Models (LLMs) Concepts, offre un percorso per scoprire tutto il potenziale degli LLM con un corso concettuale che copre applicazioni, metodologie di addestramento, considerazioni etiche e le ricerche più recenti.
Un data scientist poliedrico che ama condividere le proprie conoscenze e restituire valore agli altri, Zoumana è un content creator su YouTube e un top writer tech su Medium. Trova soddisfazione nel parlare in pubblico, programmare e insegnare. Zoumana ha due lauree magistrali: la prima in informatica con specializzazione in Machine Learning conseguita a Parigi, Francia, e la seconda in Data Science alla Texas Tech University negli Stati Uniti. Ha iniziato la sua carriera come Software Developer presso Groupe OPEN in Francia, per poi passare a IBM come Machine Learning Consultant, dove ha sviluppato soluzioni di IA end-to-end per compagnie assicurative. Successivamente, è entrato in Axionable, la prima startup di Sustainable AI con sede a Parigi e Montréal. Lì ha lavorato come Data Scientist e ha implementato prodotti di IA, principalmente casi d’uso di NLP, per clienti in Francia, Montréal, Singapore e Svizzera. Inoltre, ha dedicato il 5% del suo tempo ad attività di Ricerca e Sviluppo. Attualmente lavora come Senior Data Scientist presso IFC - World Bank Group.
