Intelligenza Artificiale
Llama 2: un tuffo nel profondo dello sfidante open source di ChatGPT

Grandi modelli linguistici (LLM) capaci di compiti di ragionamento complessi si sono mostrati promettenti in settori specializzati come la programmazione e la scrittura creativa. Tuttavia, il mondo dei LLM non è semplicemente un paradiso plug-and-play; ci sono sfide in termini di usabilità, sicurezza e richieste computazionali. In questo articolo approfondiremo le funzionalità di lama 2, fornendo al contempo una procedura dettagliata per la configurazione di questo LLM ad alte prestazioni tramite Hugging Face e GPU T4 su Google Colab.
Sviluppato da Meta in collaborazione con Microsoft, questo modello di linguaggio di grandi dimensioni open source mira a ridefinire i regni dell’intelligenza artificiale generativa e della comprensione del linguaggio naturale. Llama 2 non è solo un altro modello statistico addestrato su terabyte di dati; è l'incarnazione di una filosofia. Uno che sottolinea un approccio open source come spina dorsale dello sviluppo dell’intelligenza artificiale, in particolare nello spazio dell’intelligenza artificiale generativa.
Llama 2 e il suo sostituto ottimizzato per il dialogo, Llama 2-Chat, sono dotati di un massimo di 70 miliardi di parametri. Sono sottoposti a un processo di messa a punto progettato per allinearli strettamente alle preferenze umane, rendendoli più sicuri ed efficaci rispetto a molti altri modelli disponibili al pubblico. Questo livello di granularità nella messa a punto è spesso riservato ai LLM di “prodotto” chiusi, come ad esempio ChatGPT e BARD, che generalmente non sono disponibili per l'esame o la personalizzazione del pubblico.
Approfondimento tecnico di Llama 2
Per addestrare il modello Llama 2; come i suoi predecessori, utilizza un sistema autoregressivo architettura del trasformatore, pre-addestrato su un vasto corpus di dati auto-supervisionati. Tuttavia, aggiunge un ulteriore livello di sofisticazione utilizzando l’apprendimento per rinforzo con feedback umano (RLHF) per allinearsi meglio al comportamento e alle preferenze umane. Ciò è computazionalmente costoso ma vitale per migliorare la sicurezza e l'efficacia del modello.
Preformazione ed efficienza dei dati
L'innovazione fondamentale di Llama 2 risiede nel suo regime di pre-allenamento. Il modello prende spunto dal suo predecessore, Llama 1, ma introduce diversi miglioramenti cruciali per elevarne le prestazioni. In particolare, spiccano un aumento del 40% del numero totale di token addestrati e una duplice espansione della lunghezza del contesto. Inoltre, il modello sfrutta l’attenzione alle query raggruppate (GQA) per amplificare la scalabilità dell’inferenza.
Ottimizzazione supervisionata (SFT) e apprendimento per rinforzo con feedback umano (RLHF)
Llama-2-chat è stata rigorosamente ottimizzata utilizzando sia SFT che Reinforcement Learning with Human Feedback (RLHF). In questo contesto, la SFT funge da componente integrale del quadro RLHF, perfezionando le risposte del modello per allinearle strettamente con le preferenze e le aspettative umane.
OpenAI ha fornito un'illustrazione approfondita che spiega le metodologie SFT e RLHF impiegate in InstructGPT. Proprio come LLaMa 2, anche InstructGPT sfrutta queste tecniche di formazione avanzate per ottimizzare le prestazioni del suo modello.
Il passaggio 1 nell'immagine seguente si concentra sul Supervised Fine-Tuning (SFT), mentre i passaggi successivi completano il processo di Reinforcement Learning from Human Feedback (RLHF).
Il Supervised Fine-Tuning (SFT) è un processo specializzato volto a ottimizzare un Large Language Model (LLM) pre-addestrato per uno specifico compito a valle. A differenza dei metodi non supervisionati, che non richiedono la convalida dei dati, SFT utilizza un set di dati che è stato preconvalidato ed etichettato.
In genere, la creazione di questi set di dati è costosa e richiede molto tempo. L'approccio di Llama 2 era basato sulla qualità piuttosto che sulla quantità. Con sole 27,540 annotazioni, il team di Meta ha raggiunto livelli di prestazione competitivi rispetto agli annotatori umani. Questo si allinea bene con studi recenti dimostrando che anche set di dati limitati ma puliti possono portare a risultati di alta qualità.
Nel processo SFT, il LLM pre-addestrato è esposto a un set di dati etichettato, dove entrano in gioco gli algoritmi di apprendimento supervisionato. I pesi interni del modello vengono ricalibrati in base ai gradienti calcolati da una funzione di perdita specifica dell'attività. Questa funzione di perdita quantifica le discrepanze tra i risultati previsti dal modello e le effettive etichette di verità.
Questa ottimizzazione consente al LLM di cogliere i modelli complessi e le sfumature incorporati nel set di dati etichettato. Di conseguenza, il modello non è solo uno strumento generalizzato ma si evolve in una risorsa specializzata, atta a svolgere il compito target con un elevato grado di precisione.
L’apprendimento per rinforzo è il passo successivo, volto ad allineare più da vicino il comportamento del modello con le preferenze umane.
La fase di ottimizzazione ha sfruttato l'apprendimento per rinforzo dal feedback umano (RLHF), impiegando tecniche come Campionamento dell'importanza e dell' Ottimizzazione della politica prossimale introdurre rumore algoritmico, eludendo così l'ottimale locale. Questa messa a punto iterativa non solo ha migliorato il modello, ma ha anche allineato i suoi risultati alle aspettative umane.
Il Llama 2-Chat ha utilizzato un protocollo di confronto binario per raccogliere dati sulle preferenze umane, segnando una notevole tendenza verso approcci più qualitativi. Questo meccanismo ha informato i modelli di ricompensa, che vengono poi utilizzati per mettere a punto il modello di intelligenza artificiale conversazionale.
Attenzione fantasma: dialoghi a più turni
Meta ha introdotto una nuova funzionalità, Ghost Attention (GAtt), progettata per migliorare le prestazioni di Llama 2 nei dialoghi a più turni. Ciò risolve efficacemente il problema persistente della perdita di contesto nelle conversazioni in corso. Gatt agisce come un'ancora, collegando le istruzioni iniziali a tutti i successivi messaggi dell'utente. Insieme alle tecniche di apprendimento per rinforzo, aiuta a produrre risposte coerenti, pertinenti e allineate all'utente durante dialoghi più lunghi.
Dal repository Meta Git utilizzando download.sh
- Visita il sito web di Meta: Navigare verso Il sito ufficiale di Llama 2 di Meta e fai clic su "Scarica il modello"
- Compila i dettagli: Leggi e accetta i termini e le condizioni per procedere.
- Conferma via email: Una volta inviato il modulo, riceverai un'e-mail da Meta con un collegamento per scaricare il modello dal loro repository git.
- Esegui download.sh: clona il repository Git ed esegui il file
download.sh
sceneggiatura. Questo script ti chiederà di autenticarti utilizzando un URL di Meta che scade dopo 24 ore. Sceglierai anche la dimensione del modello: 7B, 13B o 70B.
Dal viso che abbraccia
- Ricevi e-mail di accettazione: Dopo aver ottenuto l'accesso da Meta, vai su Abbracciare il viso.
- Richiesta di accesso: Scegli il modello desiderato e invia una richiesta per concedere l'accesso.
- Conferma dati: entro 1-2 giorni è prevista un'e-mail di "accesso concesso".
- Genera token di accesso: vai su "Impostazioni" nel tuo account Hugging Face per creare token di accesso.
La versione 4.31 di Transformers è completamente compatibile con LLaMa 2 e apre molti strumenti e funzionalità all'interno dell'ecosistema Hugging Face. Dagli script di addestramento e inferenza alla quantizzazione a 4 bit con bit e byte e al parametro Efficient Fine-tuning (PEFT), il kit di strumenti è ampio. Per iniziare, assicurati di avere l'ultima versione di Transformers e di aver effettuato l'accesso al tuo account Hugging Face.
Ecco una guida semplificata per eseguire l'inferenza del modello LLaMa 2 in a Google Cola ambiente, sfruttando un runtime GPU:
Installazione del pacchetto
!pip install transformers !huggingface-cli login
Importa le librerie Python necessarie.
from transformers import AutoTokenizer import transformers import torch
Inizializza il modello e il tokenizzatore
In questo passaggio, specifica quale modello di Llama 2 utilizzerai. Per questa guida utilizziamo meta-llama/Llama-2-7b-chat-hf.
model = "meta-llama/Llama-2-7b-chat-hf" tokenizer = AutoTokenizer.from_pretrained(model)
Configura la pipeline
Utilizza la pipeline Hugging Face per la generazione di testo con impostazioni specifiche:
pipeline = transformers.pipeline( "text-generation", model=model, torch_dtype=torch.float16, device_map="auto")
Genera sequenze di testo
Infine, esegui la pipeline e genera una sequenza di testo in base al tuo input:
sequences = pipeline( 'Who are the key contributors to the field of artificial intelligence?\n', do_sample=True, top_k=10, num_return_sequences=1, eos_token_id=tokenizer.eos_token_id, max_length=200) for seq in sequences: print(f"Result: {seq['generated_text']}")
Interfaccia utente di A16Z per LLaMa 2
Andreessen Horowitz (A16Z) ha recentemente lanciato un'interfaccia chatbot all'avanguardia basata su Streamlit su misura per Llama 2. Ospitata su GitHub, questa interfaccia utente preserva la cronologia delle chat delle sessioni e offre anche la flessibilità di selezionare tra più endpoint API Llama 2 ospitati su Replicare. Questo design incentrato sull'utente mira a semplificare le interazioni con Llama 2, rendendolo uno strumento ideale sia per gli sviluppatori che per gli utenti finali. Per coloro che sono interessati a sperimentarlo, è disponibile una demo dal vivo all'indirizzo Llama2.ai.
Llama 2: cosa lo rende diverso dai modelli GPT e dal suo predecessore Llama 1?
Varietà in scala
A differenza di molti modelli linguistici che offrono una scalabilità limitata, Llama 2 offre numerose opzioni diverse per modelli con parametri diversi. Il modello è scalabile da 7 a 70 miliardi di parametri, fornendo così una gamma di configurazioni per soddisfare le diverse esigenze computazionali.
Lunghezza del contesto migliorata
Il modello ha una lunghezza del contesto maggiore di token 4K rispetto a Llama 1. Ciò gli consente di conservare più informazioni, migliorando così la sua capacità di comprendere e generare contenuti più complessi ed estesi.
Attenzione alle query raggruppate (GQA)
L'architettura utilizza il concetto di GQA, progettato per accelerare il processo di calcolo dell'attenzione memorizzando nella cache le coppie di token precedenti. Ciò migliora efficacemente la scalabilità dell'inferenza del modello per migliorare l'accessibilità.
Benchmark delle prestazioni
LLama 2 ha stabilito un nuovo standard nei parametri di prestazione. Non solo supera il suo predecessore, LLama 1, ma offre anche una concorrenza significativa ad altri modelli come Falcon e GPT-3.5.
Anche il modello più grande di Llama 2-Chat, il 70B, supera ChatGPT nel 36% dei casi e eguaglia le prestazioni in un altro 31.5% dei casi. Fonte: Carta
Open Source: il potere della comunità
Meta e Microsoft intendono che Llama 2 sia più di un semplice prodotto; lo immaginano come uno strumento guidato dalla comunità. Llama 2 è ad accesso gratuito sia per scopi di ricerca che non commerciali. L’obiettivo è quello di democratizzare le capacità dell’intelligenza artificiale, rendendola accessibile a startup, ricercatori e imprese. Un paradigma open source consente la "risoluzione dei problemi in crowdsourcing" del modello. Gli sviluppatori e gli esperti di etica dell'intelligenza artificiale possono sottoporre a stress test, identificare le vulnerabilità e offrire soluzioni a un ritmo accelerato.
Sebbene i termini di licenza per LLaMa 2 siano generalmente permissivi, eccezioni esistono. Le grandi aziende che vantano oltre 700 milioni di utenti mensili, come Google, richiedono l'autorizzazione esplicita di Meta per il suo utilizzo. Inoltre, la licenza vieta l'uso di LLaMa 2 per il miglioramento di altri modelli linguistici.
Sfide attuali con Llama 2
- Generalizzazione dei dati: Sia Llama 2 che GPT-4 a volte vacillano in termini di prestazioni uniformemente elevate in compiti divergenti. In questi scenari la qualità e la diversità dei dati sono cruciali tanto quanto il volume.
- Trasparenza del modello: Considerati i precedenti intoppi con l’intelligenza artificiale che produceva risultati fuorvianti, esplorare la logica decisionale alla base di questi modelli complessi è fondamentale.
Code Llama: l'ultimo lancio di Meta
Meta ha recentemente annunciato Codice Lama che è un modello di linguaggio di grandi dimensioni specializzato nella programmazione con dimensioni dei parametri che vanno da 7B a 34B. Simile a Interprete di codice ChatGPT; Code Llama può semplificare i flussi di lavoro degli sviluppatori e rendere la programmazione più accessibile. Supporta vari linguaggi di programmazione ed è disponibile in varianti specializzate, come Code Llama–Python per attività specifiche di Python. Il modello offre inoltre diversi livelli di prestazioni per soddisfare diversi requisiti di latenza. Con licenza aperta, Code Llama invita il contributo della comunità per il miglioramento continuo.
Presentazione di Code Llama, uno strumento AI per la codifica
Conclusione
Questo articolo ti ha guidato attraverso la configurazione di un modello Llama 2 per la generazione di testo su Google Colab con il supporto di Hugging Face. Le prestazioni di Llama 2 sono alimentate da una serie di tecniche avanzate, dalle architetture di trasformatori autoregressivi all'apprendimento per rinforzo con feedback umano (RLHF). Con un massimo di 70 miliardi di parametri e funzionalità come Ghost Attention, questo modello supera gli attuali standard di settore in alcune aree e, con la sua natura aperta, apre la strada a una nuova era nella comprensione del linguaggio naturale e nell'intelligenza artificiale generativa.