Sblocca il potere delle GenAI LLM direttamente sulla tua macchina locale!

Sfrutta la potenza delle GenAI LLM sulla tua macchina!

Introduzione

Dal rilascio dei GenAI LLM, abbiamo iniziato a utilizzarli in un modo o nell’altro. Il modo più comune è attraverso siti web come il sito OpenAI per utilizzare ChatGPT o Large Language Models tramite API come l’API GPT3.5 di OpenAI, l’API PaLM di Google o attraverso altri siti web come Hugging Face, Perplexity.ai, che ci consentono di interagire con questi Large Language Models.

In tutti questi approcci, i nostri dati vengono inviati al di fuori del nostro computer. Potrebbero essere soggetti a attacchi informatici (anche se tutti questi siti web assicurano la massima sicurezza, non sappiamo cosa potrebbe accadere). A volte, vogliamo eseguire questi Large Language Models localmente e, se possibile, configurarli localmente. In questo articolo, affronteremo questo argomento, ovvero la configurazione di LLM localmente con Oobabooga.

Obiettivi di apprendimento

  • Comprendere l’importanza e le sfide del dispiegamento di grandi modelli linguistici su sistemi locali.
  • Imparare a creare una configurazione locale per eseguire grandi modelli linguistici.
  • Esplorare quali modelli possono essere eseguiti con le specifiche della CPU, della RAM e della VRAM della GPU fornite.
  • Imparare a scaricare qualsiasi grande modello linguistico da Hugging Face per utilizzarlo localmente.
  • Verificare come allocare la memoria GPU per eseguire il grande modello linguistico.

Questo articolo è stato pubblicato come parte del Data Science Blogathon.

Cos’è Oobabooga?

Oobabooga è un’interfaccia web di generazione di testo per Large Language Models. Oobabooga è un’interfaccia utente web basata su gradio. Gradio è una libreria Python ampiamente utilizzata dagli appassionati di Machine Learning per creare applicazioni web e Oobabooga è stata creata utilizzando questa libreria. Oobabooga astrae tutti gli aspetti complicati necessari per configurare l’esecuzione di un grande modello linguistico in locale. Oobabooga offre molte funzionalità e supporta diversi backend di modelli come GGML, GPTQ, exllama e llama.cpp. Puoi persino caricare un LoRA (Low-Rank Adaptation) con questa interfaccia utente su un LLM. Oobabooga ti permette di addestrare il grande modello linguistico per creare chatbot / LoRA. In questo articolo, affronteremo l’installazione di questo software con Conda.

Configurazione dell’ambiente

In questa sezione, creeremo un ambiente virtuale utilizzando conda. Quindi, per creare un nuovo ambiente, vai a Anaconda Prompt e digita quanto segue.

conda create -n textgenui python=3.10.9
conda activate textgenui
  • Il primo comando creerà un nuovo ambiente conda/Python chiamato textgenui. Secondo il file readme di Oobabooga su Github, vogliono che utilizziamo la versione Python 3.10.9. Il comando creerà quindi un ambiente virtuale con questa versione.
  • Quindi, per attivare questo ambiente e renderlo l’ambiente primario (così da poter lavorare su di esso), digiteremo il secondo comando per attivare il nostro ambiente appena creato.
  • Il passo successivo è scaricare la libreria PyTorch. Ora, PyTorch viene fornito in diverse varianti, come la versione solo CPU e la versione CPU+GPU. In questo articolo, utilizzeremo la versione CPU+GPU, che scaricheremo con il comando seguente.
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117

Libreria PyTorch GPU Python

Ora, il comando precedente scaricherà la libreria PyTorch GPU Python. Si noti che la versione CUDA(GPU) che stiamo scaricando è cu117. Questo può cambiare occasionalmente, quindi è consigliabile visitare la pagina ufficiale di Pytorch per ottenere il comando per scaricare l’ultima versione. E se non hai accesso alla GPU, puoi procedere con la versione CPU.

Ora cambia la directory all’interno di Anaconda Prompt nella directory in cui desideri scaricare il codice. Ora puoi scaricarlo da GitHub o utilizzare il comando git clone per farlo. Qui utilizzerò il comando git clone per clonare il repository di Oobabooga nella directory desiderata con il seguente comando.

git clone https://github.com/oobabooga/text-generation-webui
cd text-generation-webui
  • Il primo comando importerà il repository di Oobabooga nella cartella da cui viene eseguito questo comando. Tutti i file saranno presenti in una cartella chiamata text-generation-uI.
  • Quindi, abbiamo cambiato la directory in text-generation-ui utilizzando il comando nella seconda riga. Questa directory contiene un file requirement.txt, che contiene tutti i pacchetti necessari per i grandi modelli di linguaggio e l’interfaccia utente per funzionare, quindi li installiamo tramite pip
 pip install -r requirements.txt

Il comando sopra installerà quindi tutti i pacchetti/librerie necessari, come hugging face, transformers, bitandbytes, gradio, ecc., necessari per eseguire il grande modello di linguaggio. Siamo pronti per lanciare l’interfaccia utente web, che possiamo fare con il comando seguente.

python server.py

Ora, nella finestra di comando di Anaconda, vedrai che ti verrà mostrato un URL http://localhost:7860 o http://127.0.0.1:7860. Ora vai a questo URL nel tuo browser e l’interfaccia utente apparirà e avrà questo aspetto:

Ora abbiamo installato con successo tutte le librerie necessarie per iniziare a lavorare con il text-generation-ui e il nostro prossimo passo sarà scaricare i grandi modelli di linguaggio

Download e Inferenza dei Modelli

In questa sezione, scaricheremo un grande modello di linguaggio dal sito Hugging Face e poi proveremo a fare inferenza e chat con il LLM. Per fare ciò, vai alla sezione “Model” presente nella barra superiore dell’interfaccia utente. Questo aprirà la pagina del modello che avrà questo aspetto:

Scarica Modello Personalizzato

Qui sul lato destro, vediamo “Scarica modello personalizzato o LoRA”; sotto, vediamo un campo di testo con un pulsante di download. In questo campo di testo, dobbiamo fornire il percorso del modello dal sito Hugging Face, che l’interfaccia utente scaricherà. Proveremo con un esempio. Per fare ciò, scaricherò il modello Nous-Hermes basato sul nuovo rilasciato Llama 2. Quindi, andrò alla scheda di quel modello nel sito Hugging Face, che puoi vedere qui sotto

Quindi, scaricherò un modello GPTQ da 13B (questi modelli richiedono una GPU per funzionare; se vuoi solo la versione CPU, puoi optare per i modelli GGML), che è la versione quantizzata del modello Nous-Hermes 13B basato sul modello Llama 2. Per copiare il percorso, puoi fare clic sul pulsante di copia. E ora, dobbiamo scorrere verso il basso per vedere le diverse versioni quantizzate del modello Nous-Hermes 13B.

Qui, ad esempio, sceglieremo la versione gptq-4bit-32g-actorder_True del modello Nous-Hermes-GPTQ. Quindi ora il percorso per questo modello sarà “TheBloke/Nous-Hermes-Llama2-GPTQ:gptq-4bit-32g-actorder_True”, dove la parte prima dei “:” indica il nome del modello e la parte dopo i “:” indica il tipo di versione quantizzata del modello. Ora, incolleremo questo nella casella di testo che abbiamo visto in precedenza.

Ora, faremo clic sul pulsante di download per scaricare il modello. Ci vorrà un po’ di tempo poiché la dimensione del file è di 8GB. Dopo aver scaricato il modello, fai clic sul pulsante di aggiornamento, presente a sinistra del pulsante di caricamento, per aggiornare. Ora seleziona il modello che vuoi utilizzare dal menu a discesa. Ora, se il modello è la versione CPU, puoi fare clic sul pulsante di caricamento come mostrato di seguito.

Modello di VRAM GPU

Dobbiamo allocare la VRAM della GPU dal modello se si utilizza un modello di tipo GPU, come quello GPTQ che abbiamo scaricato qui. Poiché la dimensione del modello è di circa 8 GB, alloceremo circa 10 GB di memoria ad esso (ho a disposizione una VRAM GPU sufficiente, quindi fornisco 10 GB). Quindi, clicchiamo sul pulsante di caricamento come mostrato di seguito.

Ora, dopo aver cliccato sul pulsante di caricamento, andiamo alla scheda Sessione e cambiamo la modalità. La modalità verrà cambiata da predefinita a chat. Quindi, clicchiamo sui pulsanti Applica e Riavvia, come mostrato nell’immagine.

Ora siamo pronti per effettuare inferenze con il nostro modello, ovvero possiamo iniziare a interagire con il modello che abbiamo scaricato. Ora vai alla scheda Generazione Testo, e avrà un aspetto simile a questo

Quindi, è il momento di testare il nostro Grande Modello Linguistico Nous-Hermes-13B che abbiamo scaricato da Hugging Face attraverso l’interfaccia di Generazione Testo. Iniziamo la conversazione.

Possiamo vedere dal precedente che il modello funziona bene. Non ha fatto nulla di troppo creativo, ovvero non ha allucinato. Ha risposto correttamente alle mie domande. Possiamo vedere che abbiamo chiesto al grande modello linguistico di generare un codice Python per trovare la serie di Fibonacci. Il LLM ha scritto un codice Python funzionante che corrisponde all’input che ho dato. Inoltre, mi ha anche dato una spiegazione su come funziona. In questo modo, è possibile scaricare ed eseguire qualsiasi modello attraverso l’interfaccia di Generazione Testo, tutto localmente, garantendo la privacy dei dati.

Conclusione

In questo articolo, abbiamo seguito un processo passo-passo per scaricare l’interfaccia di generazione di testo, che ci consente di interagire direttamente con i grandi modelli linguistici all’interno del nostro ambiente locale senza essere connessi alla rete. Abbiamo esaminato come scaricare modelli di una versione specifica da Hugging Face e abbiamo appreso quali metodi quantizzati supporta l’applicazione attuale. In questo modo, chiunque può accedere a un grande modello linguistico, anche all’ultimo LlaMA 2, che abbiamo visto in questo articolo, un grande modello linguistico basato sul recentemente rilasciato LlaMA 2.

Punti chiave

Alcuni dei punti chiave di questo articolo includono:

  • L’interfaccia di generazione di testo di Oogabooga può essere utilizzata su qualsiasi sistema di qualsiasi sistema operativo, che sia Mac, Windows o Linux.
  • Questa interfaccia ci consente di accedere direttamente a diversi grandi modelli linguistici, anche quelli appena rilasciati, da Hugging Face.
  • Anche le versioni quantizzate di diversi grandi modelli linguistici sono supportate da questa interfaccia.
  • È possibile caricare anche modelli linguistici di sola CPU con questa interfaccia di generazione di testo che consente agli utenti che non hanno accesso alla GPU di accedere ai LLM.
  • Infine, eseguendo l’interfaccia utente in locale, i dati / la chat che abbiamo con il modello rimangono all’interno del sistema locale stesso.

Domande frequenti

I media mostrati in questo articolo non sono di proprietà di Analytics Vidhya e sono utilizzati a discrezione dell’autore.