7 Passaggi per Eseguire un Piccolo Modello di Lingua su una CPU Locale

7 Passaggi per Creare un Esempio di Linguaggio su una CPU Locale

 

Passaggio 1: Introduzione

 

I modelli di linguaggio hanno rivoluzionato il campo dell’elaborazione del linguaggio naturale. Mentre grandi modelli come GPT-3 hanno fatto notizia, anche i piccoli modelli di linguaggio sono vantaggiosi e accessibili per varie applicazioni. In questo articolo esploreremo l’importanza e i casi d’uso dei piccoli modelli di linguaggio con tutti i passaggi di implementazione in dettaglio.

I piccoli modelli di linguaggio sono versioni compatte dei loro corrispettivi più grandi. Offrono diversi vantaggi. Alcuni dei vantaggi sono i seguenti:

  1. Efficienza: Rispetto ai modelli grandi, i modelli piccoli richiedono meno potenza di calcolo, rendendoli adatti per ambienti con risorse limitate.
  2. Velocità: Possono eseguire il calcolo più rapidamente, ad esempio generando i testi in base all’input fornito in modo più rapido, rendendoli ideali per applicazioni in tempo reale con un alto traffico giornaliero.
  3. Personalizzazione: È possibile adattare i modelli piccoli in base alle proprie esigenze per compiti specifici del dominio.
  4. Privacy: I modelli più piccoli possono essere utilizzati senza server esterni, garantendo la privacy e l’integrità dei dati.

 

Svariati casi d’uso per i modelli di linguaggio piccoli includono chatbot, generazione di contenuti, analisi del sentiment, domande e risposte e molto altro.

 

Passaggio 2: Configurazione dell’ambiente

 

Prima di immergerci nel funzionamento dei modelli di linguaggio piccoli, è necessario configurare il proprio ambiente, il che comporta l’installazione delle librerie e delle dipendenze necessarie. La scelta dei framework e delle librerie giusti per creare un modello di linguaggio sul proprio computer locale diventa cruciale. Le scelte popolari includono librerie basate su Python come TensorFlow e PyTorch. Questi framework forniscono numerosi strumenti e risorse predefiniti per applicazioni di machine learning e deep learning.

Installazione delle librerie necessarie

In questo passaggio, installeremo la libreria “llama-cpp-python” e la libreria ctransformers per introdurti ai modelli di linguaggio piccoli. Devi aprire il tuo terminale e eseguire i seguenti comandi per installarli. Durante l’esecuzione dei seguenti comandi, assicurati di avere Python e pip installati sul tuo sistema.

pip install llama-cpp-pythonpip install ctransformers -q

 

Output:

 

 

Passaggio 3: Acquisizione di un modello di linguaggio piccolo pre-addestrato

 

Ora che il nostro ambiente è pronto, possiamo ottenere un modello di linguaggio piccolo pre-addestrato per l’uso locale. Per un modello di linguaggio piccolo, possiamo considerare architetture più semplici come LSTM o GRU, che richiedono meno risorse computazionali rispetto a modelli più complessi come i transformers. È inoltre possibile utilizzare word embedding pre-addestrati per migliorare le prestazioni del proprio modello, riducendo al contempo il tempo di addestramento. Tuttavia, per lavorare velocemente, scaricheremo un modello pre-addestrato dal web.

 

Scaricamento di un modello pre-addestrato

 

È possibile trovare modelli di linguaggio piccoli pre-addestrati su piattaforme come Hugging Face (https://huggingface.co/models). Qui troverai un rapido tour del sito web, dove è possibile osservare facilmente le sequenze di modelli forniti, che è possibile scaricare facilmente accedendo all’applicazione poiché sono open-source.

  

Puoi facilmente scaricare il modello di cui hai bisogno da questo link e salvarlo nella tua directory locale per un uso successivo.

from ctransformers import AutoModelForCausalLM

 

Passaggio 4: Caricamento del modello di lingua

 

Nel passaggio precedente, abbiamo finalizzato il modello preaddestrato di Hugging Face. Ora, possiamo utilizzare quel modello caricandolo nel nostro ambiente. Importiamo la classe AutoModelForCausalLM dalla libreria ctransformers nel codice qui di seguito. Questa classe può essere utilizzata per caricare e lavorare con modelli per la modellazione del linguaggio causale.

  

# Carica il modello preaddestrato
lm = AutoModelForCausalLM.from_pretrained('TheBloke/Llama-2-7B-Chat-GGML', model_file = 'llama-2-7b-chat.ggmlv3.q4_K_S.bin' )

 Output:

 

 

Passaggio 5: Configurazione del modello

 

I modelli di lingua piccoli possono essere raffinati in base alle tue esigenze specifiche. Se devi utilizzare questi modelli in applicazioni reali, la cosa principale da ricordare è l’efficienza e la scalabilità. Quindi, per rendere i modelli di lingua piccoli efficienti rispetto ai modelli di lingua più grandi, puoi regolare la dimensione del contesto e la suddivisione dei dati in batch più piccoli per una computazione più veloce), il che consente anche di superare il problema di scalabilità.

 

Modifica della dimensione del contesto

 

La dimensione del contesto determina quanti testi il modello considera. In base alle tue esigenze, puoi scegliere il valore della dimensione del contesto. In questo esempio, impostiamo il valore di questo iperparametro a 128 token.

model.set_context_size(128)

 

Suddivisione in batch per efficienza

 

Introducendo la tecnica del batching, è possibile elaborare contemporaneamente più segmenti di dati, il che consente di gestire le richieste in parallelo e di scalare l’applicazione per un grande numero di utenti. Tuttavia, mentre decidi la dimensione del batch, devi controllare attentamente le capacità del tuo sistema. Altrimenti, il tuo sistema può causare problemi a causa di un carico elevato.

model.set_batch_size(16)

 

Passaggio 6: Generazione di testo

 

A questo punto, abbiamo completato la creazione del modello, la messa a punto di quel modello e il salvataggio dello stesso. Ora, possiamo testarlo rapidamente in base al nostro utilizzo e verificare se fornisce lo stesso output che ci aspettiamo. Quindi, diamo qualche input di prova e generiamo il testo in base al modello caricato e configurato.

for word in llm('Spiega qualcosa su VoAGI', stream = True):       print(word, end='')

 Output:

 

 

Passaggio 7: Ottimizzazioni e risoluzione dei problemi

 

Per ottenere risultati appropriati per la maggior parte delle query di input dal tuo modello di lingua piccola, puoi considerare le seguenti cose:

  1. Personalizzazione: Se la tua applicazione richiede alte prestazioni, ovvero l’output delle query deve essere risolto in un tempo significativamente inferiore, devi personalizzare il tuo modello sul tuo dataset specifico, il corpus su cui stai addestrando il modello.
  2. Caching: Utilizzando la tecnica di caching, puoi memorizzare dati comunemente utilizzati in base all’utente nella RAM, in modo che quando l’utente richiede nuovamente quei dati, possono essere facilmente forniti anziché essere recuperati nuovamente dal disco, il che richiede relativamente più tempo, grazie al quale è possibile generare risultati per velocizzare le future richieste.
  3. Problemi comuni: Se incontri problemi durante la creazione, il caricamento e la configurazione del modello, puoi consultare la documentazione e la community degli utenti per suggerimenti per la risoluzione dei problemi.

Conclusione

In questo articolo, abbiamo discusso di come creare e distribuire un piccolo modello di linguaggio sulla propria CPU locale, seguendo i sette semplici passaggi descritti in questo articolo. Questo approccio economico apre le porte a diverse applicazioni di elaborazione del linguaggio o visione artificiale e rappresenta un trampolino di lancio per progetti più avanzati. Tuttavia, lavorando su progetti, è importante tenere a mente le seguenti cose per superare eventuali problemi:

  1. Salva regolarmente i checkpoint durante l’addestramento per assicurarti di poter continuare l’addestramento o recuperare il tuo modello in caso di interruzioni.
  2. ottimizza il tuo codice e le pipeline dei dati per un uso efficiente della memoria, soprattutto quando si lavora su una CPU locale.
  3. Considera l’utilizzo di accelerazione GPU o risorse basate su cloud se hai bisogno di scalare il tuo modello in futuro.

In conclusione, i piccoli modelli di linguaggio offrono una soluzione versatile ed efficiente per varie attività di elaborazione del linguaggio. Con la configurazione e l’ottimizzazione corrette, puoi sfruttare efficacemente la loro potenza.

[Aryan Garg](https://www.linkedin.com/in/aryan-garg-1bbb791a3/) è uno studente di Ingegneria Elettrica B.Tech, attualmente all’ultimo anno del suo corso di laurea. Il suo interesse si concentra nel campo dello sviluppo web e dell’apprendimento automatico. Ha coltivato questo interesse ed è desideroso di lavorare ancora di più in queste direzioni.