Llama di Meta: Oltre il Linguaggio

Llama di Meta ha rapidamente trasformato il panorama dei modelli linguistici di grandi dimensioni (LLM). Inizialmente svelato nel febbraio 2023, Llama ha subito una continua evoluzione, espandendo le sue capacità ben oltre il suo design originale. Ha sconvolto un dominio precedentemente controllato da modelli a codice chiuso, offrendo un approccio rinfrescante, anche se non del tutto open-source.

L’Evoluzione di Llama: Sfidare lo Status Quo

Quando Llama è emerso per la prima volta, ha sfidato il predominio dei grandi LLM a codice chiuso dei giganti tecnologici. Meta AI ha adottato una strategia incentrata su modelli più piccoli e generalizzati. L’idea centrale era che questi modelli più piccoli, addestrati su un vasto numero di token, sarebbero stati più facili ed economici da riaddestrare e perfezionare per compiti specializzati. Questo approccio contrastava nettamente con la tendenza a costruire modelli sempre più grandi e ad alta intensità di risorse.

Tuttavia, la natura “open-source” di Llama è oggetto di dibattito. La licenza Meta Llama include restrizioni specifiche sull’uso commerciale e accettabile. Sebbene queste restrizioni siano probabilmente giustificabili, sono in conflitto con la definizione rigorosa di open source della Open Source Initiative. Ciò ha portato a continue discussioni sul fatto che Llama si qualifichi veramente come open source.

Lo sviluppo di Llama non è stato privo di ostacoli legali. Nel 2023, Meta ha affrontato due class action da parte di autori che sostenevano che i loro libri protetti da copyright fossero stati utilizzati senza autorizzazione per addestrare Llama. Queste cause legali evidenziano le complesse questioni di copyright relative ai dati di addestramento utilizzati per i modelli linguistici di grandi dimensioni. Finora, i tribunali non sono stati eccessivamente favorevoli alle rivendicazioni degli autori.

Espansione delle Capacità: La Crescente Famiglia di Modelli Llama

Dalla fine del 2023, Meta AI ha ampliato significativamente la famiglia Llama. I modelli non sono più limitati alle interazioni basate sul testo. L’attuale ecosistema Llama include modelli multimodali in grado di elaborare sia input testuali che visivi, nonché modelli progettati per l’interpretazione del codice e l’integrazione di strumenti. Inoltre, Meta ha introdotto componenti di sicurezza, noti come Llama Guard, per identificare e mitigare potenziali rischi e attacchi; questi sono progettati per far parte di un framework generale chiamato “Llama Stack”.

Ecco uno sguardo più approfondito ad alcuni dei modelli chiave della famiglia Llama (condensato dalle schede dei modelli di Meta AI):

Llama Guard 1: Salvaguardare le Interazioni

Llama Guard 1 è un modello da 7 miliardi di parametri basato su Llama 2. Funge da salvaguardia input-output, classificando il contenuto sia nei prompt dell’utente (classificazione del prompt) che nelle risposte LLM (classificazione della risposta). Questo modello aiuta a garantire interazioni più sicure e responsabili con i sistemi basati su Llama.

Llama Guard utilizza una tassonomia a sei livelli per classificare i potenziali danni:

  • Violenza e Odio: Contenuti che promuovono la violenza o l’odio verso individui o gruppi.
  • Contenuto Sessuale: Materiale sessualmente esplicito o contenuto che sfrutta, abusa o mette in pericolo i bambini.
  • Armi da Fuoco e Armi Illegali: Contenuti relativi alla vendita, all’uso o alla modifica illegali di armi da fuoco e altre armi.
  • Sostanze Regolamentate o Controllate: Contenuti che promuovono l’uso o la vendita illegali di droghe, alcol o tabacco.
  • Suicidio e Autolesionismo: Contenuti che incoraggiano o forniscono istruzioni per il suicidio o l’autolesionismo.
  • Pianificazione Criminale: Contenuti che facilitano o pianificano attività illegali.

Code Llama 70B: Una Triade di Abilità di Codifica

Code Llama 70B ha segnato una significativa espansione nelle capacità di codifica di Llama. Questo modello è disponibile in tre varianti distinte:

  • Code Llama: Il modello base progettato per la sintesi e la comprensione del codice in generale. Può generare codice, spiegare la funzionalità del codice e assistere con il debug.
  • Code Llama – Python: Una versione specializzata su misura per la programmazione Python. Questo modello è ottimizzato per la generazione e la comprensione del codice Python, rendendolo uno strumento prezioso per gli sviluppatori Python.
  • Code Llama – Instruct: Una variante focalizzata sul seguire le istruzioni e garantire una distribuzione più sicura. Questo modello è particolarmente utile per generare codice che aderisce a linee guida e protocolli di sicurezza specifici.

Tutte e tre le varianti sono disponibili in diverse dimensioni: 7 miliardi, 13 miliardi, 34 miliardi e 70 miliardi di parametri. Code Llama e le sue varianti sono progettati sia per uso commerciale che di ricerca, principalmente in inglese e nei relativi linguaggi di programmazione. Ci sono ampie prove che suggeriscono che Code Llama possieda forti capacità di codifica.

Llama Guard 2: Classificazione di Sicurezza Avanzata

Llama Guard 2 si basa sulle fondamenta del suo predecessore, offrendo capacità di classificazione di sicurezza avanzate. Questo modello da 8 miliardi di parametri, basato su Llama 3, è addestrato per prevedere etichette di sicurezza in 11 categorie, allineandosi alla tassonomia dei pericoli di MLCommons.

Le categorie di pericolo coperte da Llama Guard 2 includono:

  • S1: Crimini Violenti: Contenuti relativi ad atti criminali violenti.
  • S2: Crimini Non Violenti: Contenuti relativi a reati non violenti.
  • S3: Crimini Legati al Sesso: Contenuti che coinvolgono reati sessuali.
  • S4: Sfruttamento Sessuale Minorile: Contenuti che sfruttano, abusano o mettono in pericolo i bambini sessualmente.
  • S5: Consulenza Specializzata: Consulenza non qualificata o fuorviante in settori specializzati (ad esempio, medico, legale, finanziario).
  • S6: Privacy: Contenuti che violano la privacy o divulgano informazioni personali senza consenso.
  • S7: Proprietà Intellettuale: Contenuti che violano i diritti di proprietà intellettuale.
  • S8: Armi Indiscriminate: Contenuti relativi ad armi che causano danni diffusi e indiscriminati.
  • S9: Odio: Contenuti che esprimono odio o pregiudizio verso individui o gruppi.
  • S10: Suicidio e Autolesionismo: Contenuti che promuovono o forniscono istruzioni per il suicidio o l’autolesionismo.
  • S11: Contenuto Sessuale: Materiale sessualmente esplicito.

Meta Llama 3 è offerto in due dimensioni, 8 miliardi e 70 miliardi di parametri, con varianti sia pre-addestrate che ottimizzate per le istruzioni. I modelli ottimizzati per le istruzioni sono specificamente ottimizzati per applicazioni basate sul dialogo, rendendoli adatti per chatbot e sistemi di intelligenza artificiale conversazionale.

Prompt Guard: Difesa Contro Input Malevoli

Prompt Guard è un modello di classificazione progettato per rilevare prompt malevoli, inclusi jailbreak (tentativi di aggirare le restrizioni di sicurezza) e iniezioni di prompt (tentativi di manipolare l’output del modello attraverso input creati ad arte). Meta AI consiglia di ottimizzare Prompt Guard con dati specifici dell’applicazione per ottenere prestazioni ottimali.

A differenza di Llama Guard, Prompt Guard non richiede una struttura di prompt specifica. Opera su un input di stringa, classificandolo come sicuro o non sicuro (a due diversi livelli di gravità). È un modello BERT che produce esclusivamente etichette.

Llama Guard 3: Sicurezza Multimodale e Multilingue

Llama Guard 3 è disponibile in tre versioni: Llama Guard 3 1B, Llama Guard 3 8B e Llama Guard 3 11B-Vision. I primi due sono modelli solo testo, mentre il terzo incorpora le capacità di comprensione visiva del modello Llama 3.2 11B-Vision. Tutte le versioni sono multilingue (per prompt solo testo) e aderiscono alle categorie di pericolo definite dal consorzio MLCommons.

Llama Guard 3 8B può anche essere utilizzato per la categoria S14, Abuso dell’Interprete di Codice. È importante notare che il modello Llama Guard 3 1B non è ottimizzato per questa specifica categoria.

Le categorie di pericolo, che si espandono su quelle di Llama Guard 2, sono:

  • S1: Crimini Violenti
  • S2: Crimini Non Violenti
  • S3: Crimini Legati al Sesso
  • S4: Sfruttamento Sessuale Minorile
  • S5: Diffamazione
  • S6: Consulenza Specializzata
  • S7: Privacy
  • S8: Proprietà Intellettuale
  • S9: Armi Indiscriminate
  • S10: Odio
  • S11: Suicidio e Autolesionismo
  • S12: Contenuto Sessuale
  • S13: Elezioni
  • S14: Abuso dell’Interprete di Codice

Meta Llama 3.1: Modelli Generativi Multilingue

La collezione Meta Llama 3.1 comprende modelli linguistici di grandi dimensioni multilingue, inclusi modelli generativi pre-addestrati e ottimizzati per le istruzioni nelle dimensioni di 8 miliardi, 70 miliardi e 405 miliardi di parametri (input di testo, output di testo).

Le lingue supportate includono: inglese, tedesco, francese, italiano, portoghese, hindi, spagnolo e tailandese.

Meta Llama 3.2: Capacità di Dialogo Avanzate

La collezione Llama 3.2 presenta modelli linguistici di grandi dimensioni multilingue, che comprendono modelli generativi pre-addestrati e ottimizzati per le istruzioni nelle dimensioni di 1 miliardo e 3 miliardi di parametri (input di testo, output di testo). Sono disponibili anche versioni quantizzate di questi modelli. I modelli solo testo ottimizzati per le istruzioni di Llama 3.2 sono ottimizzati per il dialogo multilingue, eccellendo in attività come il recupero agentico e la sintesi. I modelli 1B e 3B sono derivati più piccoli e meno potenti di Llama 3.1.

Le lingue ufficialmente supportate sono: inglese, tedesco, francese, italiano, portoghese, hindi, spagnolo e tailandese. Tuttavia, Llama 3.2 è stato addestrato su una gamma più ampia di lingue oltre a queste otto.

Llama 3.2-Vision: Ragionamento e Comprensione delle Immagini

La collezione Llama 3.2-Vision introduce modelli linguistici di grandi dimensioni multimodali. Questi modelli sono pre-addestrati e ottimizzati per le istruzioni per il ragionamento sulle immagini, disponibili nelle dimensioni di 11 miliardi e 90 miliardi di parametri (input di testo e immagine, output di testo). I modelli ottimizzati per le istruzioni sono ottimizzati per il riconoscimento visivo, il ragionamento sulle immagini, la didascalia e la risposta a domande generali sulle immagini.

Per le attività solo testo, le lingue ufficialmente supportate sono inglese, tedesco, francese, italiano, portoghese, hindi, spagnolo e tailandese. Llama 3.2 è stato addestrato su un insieme più ampio di lingue, ma per le applicazioni immagine+testo, l’inglese è l’unica lingua supportata.

Meta Llama 3.3: Un Potente Modello da 70B

Il modello linguistico di grandi dimensioni multilingue Meta Llama 3.3 è un modello generativo pre-addestrato e ottimizzato per le istruzioni con 70 miliardi di parametri (input di testo, output di testo).

Lingue supportate: inglese, tedesco, francese, italiano, portoghese, hindi, spagnolo e tailandese.

È fondamentale capire che i modelli linguistici di grandi dimensioni, incluso Llama 3.2, non sono destinati alla distribuzione isolata. Dovrebbero essere integrati in un sistema di intelligenza artificiale completo con adeguate protezioni di sicurezza. Gli sviluppatori sono tenuti a implementare protezioni di sistema, soprattutto quando si costruiscono sistemi agentici.

Llama 3.3, i modelli solo testo Llama 3.2 e Llama 3.1 includono il supporto integrato per i seguenti strumenti:

  • Brave Search: Una chiamata strumento per eseguire ricerche sul web.
  • Wolfram Alpha: Una chiamata strumento per eseguire calcoli matematici complessi.
  • Code Interpreter: Una chiamata strumento che consente al modello di produrre codice Python.

Nota: i modelli di visione Llama 3.2 non supportano la chiamata di strumenti con input testo+immagine.

Llama Stack: Un Framework Unificato

Il numero elevato di modelli Llama può essere travolgente. Per semplificare il processo di selezione e integrazione, Meta offre Llama Stack. Questo framework enfatizza i modelli Llama ma fornisce anche adattatori per funzionalità correlate, come database vettoriali per la generazione aumentata dal recupero (RAG).

Llama Stack attualmente supporta SDK in Python, Swift, Node e Kotlin. Offre varie distribuzioni, tra cui:

  • Distribuzione locale (utilizzando Ollama): Per lo sviluppo e il test locali.
  • Distribuzioni su dispositivo (iOS e Android): Per la distribuzione di modelli Llama su dispositivi mobili.
  • Distribuzioni per GPU: Per sfruttare la potenza delle GPU per un’elaborazione più rapida.
  • Distribuzioni ospitate in remoto (Together e Fireworks): Per accedere ai modelli Llama tramite servizi basati su cloud.

Il concetto di base dietro Llama Stack è quello di consentire agli sviluppatori di creare applicazioni localmente e quindi passare facilmente a un ambiente di produzione. Fornisce persino un Llama Stack Playground interattivo per lo sviluppo locale contro un Llama Stack remoto.

Esecuzione dei Modelli Llama: Opzioni di Distribuzione Versatili

I modelli Llama possono essere distribuiti su una varietà di piattaforme, tra cui Linux, Windows, macOS e il cloud. I modelli Llama quantizzati, come Llama 3.2 e Llama 3.2-Vision, possono essere eseguiti in modo efficace su hardware moderno, anche su laptop come l’M4 Pro MacBook Pro utilizzando strumenti come Ollama.

Meta fornisce guide pratiche complete per la distribuzione e l’utilizzo dei modelli Llama. Inoltre, sono disponibili guide di integrazione per framework popolari come LangChain e LlamaIndex.

In sintesi, Llama è passato dall’essere un semplice modello linguistico a un framework AI multimodale completo di funzionalità di sicurezza, generazione di codice e supporto per molte lingue. Il sistema di Meta ne consente la distribuzione in molti luoghi, ma continuano le questioni legali relative ai dati di addestramento e le discussioni sul fatto che Llama sia open source.