Utilizzo di Llamafile per semplificare l'esecuzione LLM

Utilizzo di Llamafile per semplificare l'esecuzione LLM

Nodo di origine: 3068075

Introduzione

L'esecuzione di modelli linguistici di grandi dimensioni è sempre stata un processo noioso. È necessario scaricare una serie di software di terze parti per caricare questi LLM o scaricare Python e creare un ambiente scaricando molte librerie Pytorch e HuggingFace. Se si adotta l'approccio Pythonic, è necessario eseguire il processo di scrittura del codice per scaricare ed eseguire il modello. Questa guida esaminerà un approccio più semplice alla gestione di questi LLM.

obiettivi formativi

  • Comprendere le sfide dell'esecuzione LLM tradizionale
  • Afferra il concetto innovativo di Llamafiles
  • Impara a scaricare ed eseguire facilmente i tuoi eseguibili Llamafile
  • Imparare a creare Llamfile da LLM quantizzati
  • Identificare i limiti di questo approccio

Questo articolo è stato pubblicato come parte di Blogathon sulla scienza dei dati.

Sommario

Problemi con modelli linguistici di grandi dimensioni

I Large Language Models (LLM) hanno rivoluzionato il modo in cui interagiamo con i computer, generando testo, traducendo lingue, scrivendo diversi tipi di contenuti creativi e persino rispondendo alle tue domande in modo informativo. Tuttavia, eseguire questi potenti modelli sul tuo computer è spesso stato impegnativo.

Per eseguire gli LLM, dobbiamo scaricare Python e molte dipendenze dell'intelligenza artificiale e, oltre a ciò, dobbiamo anche scrivere il codice per scaricarli ed eseguirli. Anche quando si installano le interfacce utente pronte all'uso per modelli linguistici di grandi dimensioni, sono necessarie numerose configurazioni che possono facilmente andare storte. Installarli ed eseguirli come un eseguibile non è stato un processo semplice.

Cosa sono i Llamafile?

I lamafile sono creati per funzionare facilmente con i più diffusi modelli di linguaggio open source di grandi dimensioni. Questi sono eseguibili a file singolo. È proprio come scaricare un LLM ed eseguirlo come un eseguibile. Non è necessaria un'installazione iniziale delle librerie. Tutto ciò è stato possibile grazie a llama.cpp e alla libc cosmopolita, che fa sì che i LLM funzionino su diversi sistemi operativi.

Llama.cpp è stato sviluppato da Georgi Gerganov per eseguire modelli linguistici di grandi dimensioni in formato quantizzato in modo che possano essere eseguiti su una CPU. Llama.cpp è una libreria C che ci consente di eseguire LLM quantizzati su hardware consumer. D'altra parte, la cosmopolita libc è un'altra libreria C che crea un binario che può essere eseguito su qualsiasi sistema operativo (Windows, Mac, Ubuntu) senza bisogno di un interprete. Quindi Llamafile è costruito su queste librerie, il che gli consente di creare LLM eseguibili a file singolo

I modelli disponibili sono nel formato quantizzato GGUF. GGUF è un formato file per modelli linguistici di grandi dimensioni sviluppato da Georgi Gerganov, il creatore di llama.cpp. GGUF è un formato per archiviare, condividere e caricare modelli linguistici di grandi dimensioni in modo efficace ed efficiente su CPU e GPU. Il GGUF utilizza una tecnica di quantizzazione per comprimere i modelli dal loro formato in virgola mobile originale a 16 bit a un formato intero a 4 bit o 8 bit. I pesi di questo modello quantizzato possono essere memorizzati in questo formato GGUF

Ciò semplifica l'esecuzione dei modelli da 7 miliardi di parametri su un computer con una VRAM da 16 GB. Possiamo eseguire i modelli linguistici di grandi dimensioni senza richiedere una GPU (anche se Llamafile ci consente anche di eseguire i LLM su una GPU). In questo momento, i file lama dei popolari modelli linguistici di grandi dimensioni open source come LlaVa, Mistral e WizardCoder sono prontamente disponibili per il download e l'esecuzione

Eseguibili One Shot

In questa sezione scaricheremo e proveremo a eseguire un LlaVa Llamafile multimodale. In questo caso non lavoreremo con la GPU ed eseguiremo il modello sulla CPU. Vai al repository GitHub ufficiale di Llamafile facendo clic qui e scaricando il modello LlaVa 1.5.

Eseguibili one-shot | File di lama

Scarica il modello

L'immagine sopra mostra tutti i modelli disponibili con i loro nomi, dimensioni e collegamenti scaricabili. LlaVa 1.5 ha una capacità di circa 4 GB ed è un potente multi-modello in grado di comprendere le immagini. Il modello scaricato è un modello da 7 miliardi di parametri quantizzato a 4 bit. Dopo aver scaricato il modello, vai alla cartella in cui è stato scaricato.

"

Quindi apri il CMD, vai alla cartella in cui è stato scaricato questo modello, digita il nome del file che abbiamo scaricato e premi invio.

llava-v1.5-7b-q4.llamafile
"

Per utenti Mac e Linux

Per Mac e Linux, per impostazione predefinita, il permesso di esecuzione per questo file è disattivato. Pertanto, dobbiamo fornire il permesso di esecuzione per il file lama, cosa che possiamo fare eseguendo il comando seguente.

chmod +x llava-v1.5-7b-q4.llamafile

Questo serve per attivare il permesso di esecuzione per il file llava-v1.5-7b-q4.llamafile. Inoltre, aggiungi "./" prima del nome del file per eseguire il file su Mac e Linux. Dopo aver premuto la parola chiave Invio, il modello verrà inserito nella RAM di sistema e mostrerà il seguente output.

Per utenti Mac e Linux | File di lama

Quindi verrà visualizzato il browser e il modello verrà eseguito sull'URL http://127.0.0.1:8080/

"
"

L'immagine sopra mostra il prompt predefinito, il nome utente, il nome LLM, il modello di prompt e il modello di cronologia chat. Questi possono essere configurati, ma per ora utilizzeremo i valori predefiniti.

Di seguito, possiamo anche controllare gli iperparametri LLM configurabili come Top P, Top K, Temperatura e gli altri. Anche questi, per ora, li lasceremo essere predefiniti. Adesso digitiamo qualcosa e clicchiamo su invia.

"

Nella foto sopra, possiamo vedere che abbiamo digitato un messaggio e persino ricevuto una risposta. Al di sotto di ciò, possiamo verificare che stiamo ottenendo circa 6 token al secondo, che è un buon token/secondo considerando che lo stiamo eseguendo interamente sulla CPU. Questa volta proviamolo con un'immagine.

CPU | TinyLlama

Sebbene non sia corretto al 100%, il modello è riuscito quasi a ottenere la maggior parte delle cose direttamente dall'immagine. Ora facciamo una conversazione a più turni con LlaVa per verificare se ricorda la cronologia della chat.

Nella foto sopra, possiamo vedere che LlaVa LLM è stato in grado di mantenere bene il convoglio. Potrebbe includere la conversazione sulla storia e quindi generare le risposte. Sebbene l'ultima risposta generata non sia del tutto vera, ha raccolto la conversazione precedente per generarla. In questo modo possiamo scaricare un file lama ed eseguirli semplicemente come un software e lavorare con i modelli scaricati.

Creazione di file lama

Abbiamo visto una demo di Llamafile che era già presente sul GitHub ufficiale. Spesso non vogliamo lavorare con questi modelli. Desideriamo invece creare eseguibili a file singolo dei nostri modelli linguistici di grandi dimensioni. In questa sezione, esamineremo il processo di creazione di file eseguibili a file singolo, ovvero file lama da LLM quantizzati.

Seleziona un LLM

Inizieremo innanzitutto selezionando un modello linguistico di grandi dimensioni. Per questa demo selezioneremo una versione quantizzata di TinyLlama. Qui scaricheremo il modello GGUF quantizzato a 8 bit di TinyLlama (puoi fare clic qui per andare su HuggingFace e scaricare il modello)

TinyLlama

Scarica l'ultimo file lama

È possibile scaricare l'ultimo file zip Llamafile dal collegamento ufficiale GitHub. Inoltre, scarica lo zip ed estrai il file zip. La versione attuale di questo articolo è lama file-0.6. Dopo l'estrazione del lama, la cartella bin con la cartella file conterrà i file come nell'immagine qui sotto.

"

Ora sposta il modello quantizzato TinyLlama a 8 bit scaricato in questa cartella bin. Per creare gli eseguibili a file singolo, dobbiamo creare un file .args nella cartella bin di llamafile. A questo file dobbiamo aggiungere il seguente contenuto:

-m
tinyllama-1.1b-chat-v0.3.Q8_0.gguf
--host
0.0.0.0
...
  • La prima riga indica il flag -m. Questo dice al file lama che stiamo caricando i pesi di un modello.
  • Nella seconda riga specifichiamo il nome del modello che abbiamo scaricato, che è presente nella stessa directory in cui è presente il file .args, cioè la cartella bin del llamafile.
  • Nella terza riga aggiungiamo il flag host, indicando che eseguiamo il file eseguibile e vogliamo ospitarlo su un server web.
  • Infine, nell'ultima riga, menzioniamo l'indirizzo dove vogliamo ospitare, che mappa su localhost. Seguiti da questo ci sono i tre punti, che specificano che possiamo passare argomenti al nostro file di lama una volta creato.
  • Aggiungi queste righe al file .args e salvalo.

Per utenti Windows

Ora, il passo successivo spetta agli utenti Windows. Se lavoravamo su Windows, dovevamo installare Linux tramite WSL. In caso contrario, fare clic qui per seguire i passaggi dell'installazione di Linux tramite WSL. In Mac e Linux non sono richiesti passaggi aggiuntivi. Ora apri la cartella bin della cartella llamafile nel terminale (se lavori su Windows, apri questa directory nel WSL) e digita i seguenti comandi.

cp llamafile tinyllama-1.1b-chat-v0.3.Q8_0.llamafile

Qui stiamo creando un nuovo file chiamato tinyllama-1.1b-chat-v0.3.Q3_0.llamafile; ovvero, stiamo creando un file con estensione .llamafile e spostando il file llamafile in questo nuovo file. Ora, successivamente, digiteremo il comando successivo.

./zipalign -j0 tinyllama-1.1b-chat-v0.3.Q8_0.llamafile tinyllama-1.1b-chat-v0.3.Q8_0.gguf .args

Qui lavoriamo con il file zipalign che è arrivato quando abbiamo scaricato il file zip llamafile da GitHub. Lavoriamo con questo comando per creare il file lama per il nostro TinyLlama quantizzato. A questo comando zipalign, passiamo il tinyllama-1.1b-chat-v0.3.Q8_0.llamafile che abbiamo creato nel passaggio precedente, quindi passiamo il tinyllama-1.1b-chat-v0.3.Q8_0.llamafile model che abbiamo nella cartella bin e infine passiamo il file .args che abbiamo creato in precedenza.

Questo produrrà finalmente il nostro singolo file eseguibile tinyllama-1.1b-chat-v0.3.Q8_0.llamafile. Per garantire che siamo sulla stessa pagina, la cartella bin ora contiene i seguenti file.

File eseguibili | File di lama

Ora possiamo eseguire il file tinyllama-1.1b-chat-v0.3.Q8_0.llama nello stesso modo in cui lo facevamo prima. In Windows, puoi anche rinominare il file .llamafile in .exe ed eseguirlo facendo doppio clic su di esso.

Server compatibile con OpenAI

Questa sezione esaminerà come server LLM tramite Llamfile. Abbiamo notato che quando eseguiamo il file llama, il browser si apre e possiamo interagire con LLM tramite WebUI. Questo è fondamentalmente ciò che chiamiamo ospitare il modello linguistico di grandi dimensioni.

Una volta eseguito il Llamafile, possiamo interagire con il rispettivo LLM come endpoint perché il modello viene servito sull'host locale sulla PORT 8080. Il server segue il protocollo API OpenAI, ovvero simile all'endpoint OpenAI GPT, rendendolo così è facile passare dal modello OpenAI GPT al modello LLM in esecuzione con Llamafile.

Qui eseguiremo il file di lama TinyLlama creato in precedenza. Ora, questo deve essere in esecuzione su localhost 8080. Ora lo testeremo tramite l'API OpenAI stessa in Python

from openai import OpenAI
client = OpenAI(
    base_url="http://localhost:8080/v1", 
    api_key = "sk-no-key-required"
)
completion = client.chat.completions.create(
    model="TinyLlama",
    messages=[
        {"role": "system", "content": "You are a usefull AI 
        Assistant who helps answering user questions"},
        {"role": "user", "content": "Distance between earth to moon?"}
    ]
)
print(completion.choices[0].message.content)
  • Qui lavoriamo con la libreria OpenAI. Ma invece di specificare l'endpoint OpenAI, specifichiamo l'URL in cui è ospitato il nostro TinyLlama e forniamo il file “sk-no-token-richiesto” per l'api_key
  • Quindi, il client verrà connesso al nostro endpoint TinyLlama
  • Ora, in modo simile a come lavoriamo con OpenAI, possiamo usare il codice per chattare con il nostro TinyLlama.
  • Per questo collaboriamo con completamenti classe dell'OpenAI. Creiamo nuovo completamenti con la .creare() si oppone e passa i dettagli come il nome del modello e i messaggi.
  • I messaggi sono sotto forma di elenco di dizionari, dove noi abbiamo il ruolo, che può essere sistema, utente o assistente, e noi abbiamo il contenuto.
  • Infine, possiamo recuperare le informazioni generate tramite l'istruzione print sopra.

L'output di quanto sopra può essere visto di seguito.

File di lama | Produzione

In questo modo, possiamo sfruttare i file llama e sostituire facilmente l'API OpenAI con il file llama che abbiamo scelto di eseguire.

Limitazioni dei file lama

Sebbene rivoluzionari, i file lama sono ancora in fase di sviluppo. Alcune limitazioni includono:

  • Selezione del modello limitata: Attualmente, non tutti i LLM sono disponibili sotto forma di file di lama. L'attuale selezione di Llamafile predefiniti è ancora in crescita. Attualmente, i Llamafile sono disponibili per Llama 2, LlaVa, Mistral e Wizard Coder.
  • Requisiti hardware: L'esecuzione di LLM, anche tramite Llamafiles, richiede ancora molte risorse di calcolo. Sebbene siano più facili da eseguire rispetto ai metodi tradizionali, i computer più vecchi o meno potenti potrebbero aver bisogno di aiuto per eseguirli senza problemi.
  • Problemi di sicurezza: Il download e l'esecuzione di file eseguibili da fonti non attendibili comporta rischi intrinseci. Quindi deve esserci una piattaforma affidabile dove possiamo scaricare questi file di lama.

Llamafile contro il resto

Prima di Llamafiles, esistevano diversi modi per eseguire modelli linguistici di grandi dimensioni. Uno era attraverso il lama_cpp_python. Questa è la versione Python di llama.cpp che ci consente di eseguire modelli linguistici di grandi dimensioni quantizzati su hardware consumer come laptop e PC desktop. Ma per eseguirlo dobbiamo scaricare e installare Python e persino librerie di deep learning come torch, Huggingface, Transformers e molte altre. Successivamente è stato necessario scrivere molte righe di codice per eseguire il modello.

Anche in questo caso, a volte, potremmo riscontrare problemi dovuti a problemi di dipendenza (ovvero, alcune librerie hanno versioni inferiori o superiori al necessario). E c'è anche il Trasformatori libreria che ci consente di eseguire LLM quantizzati. Anche questo richiede lo stesso processo di cui abbiamo discusso per llama_cpp_python

E poi c'è Ollama. Ollama ha avuto molto successo nella comunità dell'intelligenza artificiale per la sua facilità d'uso nel caricare ed eseguire facilmente modelli linguistici di grandi dimensioni, in particolare quelli quantizzati. Ollama è una sorta di TUI (Terminal User Interface) per LLM. L'unica differenza tra Ollama e Llamafile è la condivisibilità. Cioè, se lo desidero, posso condividere il mio file model.llama con chiunque e loro potranno eseguirlo senza scaricare alcun software aggiuntivo. Ma nel caso di Ollama, devo condividere il file model.gguf, che l'altra persona può eseguire solo quando installa il software Ollama o tramite le librerie Python sopra indicate.

Per quanto riguarda le risorse, tutti richiedono la stessa quantità di risorse perché tutti questi metodi utilizzano il file llama.cpp sottostante per eseguire i modelli quantizzati. Si tratta solo della facilità d'uso laddove ci sono differenze tra questi.

Conclusione

I lamafile segnano un passo avanti cruciale nel rendere i LLM facilmente eseguibili. La loro facilità d'uso e portabilità apre un mondo di possibilità per sviluppatori, ricercatori e utenti occasionali. Sebbene esistano delle limitazioni, il potenziale dei file lama per democratizzare l'accesso LLM è evidente. Che tu sia uno sviluppatore esperto o un principiante curioso, Llamafiles apre entusiasmanti possibilità per esplorare il mondo dei LLM. In questa guida, abbiamo dato un'occhiata a come scaricare Llamafiles e anche a come creare i nostri Llamafile personali con i nostri modelli quantizzati . Abbiamo anche dato un'occhiata al server compatibile con OpenAI che viene creato durante l'esecuzione di Llamafiles.

Punti chiave

  • I lamafile sono file eseguibili a file singolo che rendono più semplice e facilmente disponibile l'esecuzione di modelli linguistici di grandi dimensioni (LLM).
  • Eliminano la necessità di installazioni e configurazioni complesse, consentendo agli utenti di scaricare ed eseguire LLM direttamente senza requisiti Python o GPU.
  • I Llamafile sono ora disponibili per una selezione limitata di LLM open source, tra cui LlaVa, Mistral e WizardCoder.
  • Sebbene siano convenienti, i Llamafile presentano ancora delle limitazioni, come i requisiti hardware e i problemi di sicurezza associati al download di file eseguibili da fonti non attendibili.
  • Nonostante queste limitazioni, Llamafiles rappresenta un passo importante verso la democratizzazione dell'accesso LLM per sviluppatori, ricercatori e persino utenti occasionali.

Domande frequenti

Q1. Quali sono i vantaggi dell'utilizzo di Llamafiles?

R. I lamafile offrono numerosi vantaggi rispetto ai tradizionali metodi di configurazione LLM. Rendono i LLM più facili e veloci da configurare ed eseguire perché non è necessario installare Python o disporre di una GPU. Ciò rende i LLM più facilmente disponibili per un pubblico più ampio. Inoltre, i Llamafile possono essere eseguiti su diversi sistemi operativi.

Q2. Quali sono i limiti di Llamafiles?

R. Sebbene i Llamafile offrano molti vantaggi, presentano anche alcune limitazioni. La selezione di LLM disponibili in Llamafiles è limitata rispetto ai metodi tradizionali. Inoltre, l'esecuzione di LLM tramite Llamafiles richiede comunque una buona quantità di risorse hardware e i computer più vecchi o meno potenti potrebbero non supportarlo. Infine, i problemi di sicurezza sono associati al download e all'esecuzione di file eseguibili da fonti non attendibili.

Q3. Come posso iniziare con Llamafiles?

R. Per iniziare con Llamafiles, puoi visitare il repository GitHub ufficiale di Llamafile. Lì puoi scaricare il Llamafile per il modello LLM che desideri utilizzare. Una volta scaricato il file, puoi eseguirlo direttamente come un eseguibile.

Q4. Posso utilizzare il mio modello LLM con Llamafiles?

R. No. Attualmente, Llamafiles supporta solo modelli predefiniti specifici. La creazione dei nostri Llamafile personali è prevista per le versioni future.

Q5. Quali sono le prospettive di Llamafiles?

R. Gli sviluppatori di Llamafiles stanno lavorando per espandere la selezione dei modelli LLM disponibili, eseguirli in modo più efficiente e implementare misure di sicurezza. Questi progressi mirano a rendere Llamafiles ancora più disponibile e sicuro per un numero maggiore di persone con scarsa conoscenza tecnica.

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

Timestamp:

Di più da Analisi Vidhya