Ottenere un modello linguistico di grandi dimensioni (LLM) sul proprio desktop è sorprendentemente semplice, a patto di avere gli strumenti giusti. Il nostro tutorial sugli LLM vi mostrerà come fare.

Eseguire Large Language Models localmente non deve essere un grattacapo. Chatbot nello stile di ChatGPT, Claude o phind possono essere estremamente utili. Tuttavia, se si desidera evitare che applicazioni esterne elaborino potenzialmente dati sensibili, o che li utilizzino per addestrare i modelli linguistici di grandi dimensioni sottostanti (Large Language Models; LLM), rimane una sola soluzione: scaricare un LLM sul proprio computer ed eseguirlo localmente. Questa è anche un'ottima opzione per testare nuovi modelli specializzati, come la famiglia di modelli Code-Llama di Meta o SeamlessM4T.

A prima vista, eseguire un proprio LLM localmente può sembrare complesso. Tuttavia, con gli strumenti giusti, è sorprendentemente semplice. Inoltre, i requisiti hardware non sono eccessivi. Abbiamo testato le opzioni presentate in questo tutorial su due tipi di sistemi:

  • un PC Windows con processore Intel i9, 64 GB di RAM e GPU Nvidia GeForce (12 GB) e
  • un Mac con chip M1 e 16 GB di RAM.

L'ostacolo probabilmente maggiore, se si vuole affrontare questa impresa, è trovare un modello adatto ai task desiderati e che funzioni sul proprio hardware. Pochi funzionano bene come i noti strumenti GenAI delle grandi aziende. Come sostiene Simon Willison, creatore dello strumento da riga di comando LLM, questo non deve essere necessariamente uno svantaggio: "Alcuni modelli che girano sui laptop allucinano selvaggiamente. A mio parere, questo è un buon motivo per usarli. Perché contribuisce alla comprensione generale dei modelli – e dei loro limiti."

1. Chatbot locale con GPT4All

Scaricare il client desktop di gpt4all (disponibile per Windows, MacOS e Ubuntu) è l'ideale se si desidera configurare un chatbot che non invii dati a terzi. GPT4All è facile da configurare: non appena si apre l'app desktop per la prima volta, vengono visualizzate una decina di opzioni LLM che possono essere eseguite localmente – ad esempio, Llama-2-7B chat di Meta. Inoltre, è possibile configurare anche GPT-3.5 e GPT-4 di OpenAI per un utilizzo non locale (a condizione di avere una chiave API).

Una volta configurati i Large Language Models, vi aspetta un'interfaccia chatbot chiara e autoesplicativa.

È disponibile anche un nuovo plugin beta chiamato LocalDocs. Questo consente di "chattare" localmente con i propri documenti. È possibile attivarlo tramite la scheda Settings. Questo plugin è ancora in fase di sviluppo – le allucinazioni non sono quindi escluse. Ciononostante, si tratta di una funzione interessante che dovrebbe migliorare parallelamente agli LLM open source.

Oltre all'applicazione chatbot, GPT4All dispone anche di binding per Python e Node, nonché di un'interfaccia a riga di comando. È disponibile anche una modalità server, tramite la quale è possibile interagire con il proprio modello linguistico di grandi dimensioni locale tramite un'API HTTP. Questa interfaccia è strutturata in modo simile a quella di OpenAI e facilita la sostituzione dei modelli linguistici locali con quelli di OpenAI con poche modifiche al codice.

2. LLM nella riga di comando

Lo strumento di Simon Willison menzionato all'inizio – LLM – offre un'opzione semplice per scaricare ed eseguire modelli linguistici di grandi dimensioni open source localmente sul proprio computer. Per farlo, è necessario aver installato Python, ma non è necessario toccare alcun codice Python.

Se si lavora su un Mac e si utilizza Homebrew, è sufficiente installarlo con:

brew install llm

Se si utilizza un computer Windows, utilizzare il metodo preferito per installare le librerie Python – ad esempio:

pip install llm

LLM utilizza i modelli di OpenAI per impostazione predefinita. Altri modelli possono essere utilizzati tramite plugin. Con il plugin gpt4all, ad esempio, si ha accesso ai suoi modelli locali. Sono disponibili anche plugin per Llama, il progetto MLC e MPT-30b, oltre ad altri modelli remoti.

I plugin si installano tramite la riga di comando con:

llm install model-name

Il seguente comando mostra inoltre tutti i modelli linguistici disponibili:

llm models list

LLM elenca tutti i modelli linguistici disponibili, se necessario.

Per inviare una query a un LLM locale, utilizzare la seguente sintassi:

llm -m the-model-name "Your query"

Ciò che rende elegante l'esperienza utente di LLM è il fatto che lo strumento installa automaticamente l'LLM GPT4All sul sistema, se non è presente. Il plugin LLM per i modelli Llama di Meta richiede un po' più di configurazione rispetto al caso di GPT4All. I dettagli sono disponibili nel repository GitHub dello strumento.

Lo strumento LLM dispone inoltre di altre funzioni, come un flag argument che può essere ripreso da sessioni di chat precedenti e utilizzato all'interno di uno script Python.

3. Llama su Mac con Ollama

Se si desidera una soluzione ancora più semplice di LLM (ma si è disposti ad accettare delle limitazioni), lo strumento open source Ollama merita un'occhiata. Attualmente è disponibile per macOS e Linux – una versione Windows è in fase di sviluppo secondo i responsabili.

L'installazione si completa in pochi clic – e sebbene Ollama sia anch'esso uno strumento da riga di comando, esiste un solo comando:

ollama run model-name

Se il modello in questione non è ancora presente sul sistema, verrà scaricato automaticamente. L'elenco degli LLM attualmente disponibili può essere consultato online in qualsiasi momento.

Il README del repo GitHub di Ollama contiene un utile elenco di alcune specifiche dei modelli e preziosi suggerimenti su quali modelli richiedono quanta memoria di lavoro. Nei nostri test, l'LLM Llama 7B Code ha funzionato sorprendentemente rapidamente e bene (Mac M1). Sebbene sia il modello più piccolo della famiglia Llama, una domanda sul codice R ("Scrivi codice R per un grafico ggplot2 con barre blu.") non lo ha messo in difficoltà – anche se la risposta, o meglio il codice, non era perfetto. Ollama offre anche alcune funzioni aggiuntive, come la possibilità di integrazione con LangChain.

4. Chatta con i documenti tramite h2oGPT

In h2o.ai si occupano da tempo di machine learning automatizzato. Non sorprende quindi che il fornitore open source abbia ora fatto il suo ingresso nel campo degli LLM chatbot con h2oGPT. Questo è disponibile per il download in una versione di prova gratuita. Sebbene questa non consenta di scaricare l'LLM sul proprio sistema, è possibile utilizzarla per testare se l'interfaccia fa al caso vostro.

Per una versione locale dello strumento, clonare il repository GitHub, creare e attivare un ambiente virtuale Python ed eseguire quindi le seguenti cinque righe di codice (che si trovano anche nel README):

pip install -r requirements.txt
pip install -r reqs_optional/requirements_optional_langchain.txt
pip install -r reqs_optional/requirements_optional_gpt4all.txt
python generate.py --base_model=llama --prompt_type=llama2 --model_path_llama=https://huggingface.co/TheBloke/Llama-2-7b-Chat-GGUF/resolve/main/llama-2-7b-chat.Q6_K.gguf --max_seq_len=4096

Questo porterà a una "capacità limitata di interrogazione dei documenti" e a un modello Llama di Meta. Un'altra riga di codice è sufficiente per rendere disponibile una versione locale e un'applicazione su http://localhost:7860:

python generate.py --base_model='llama' --prompt_type=llama2

Senza aggiungere ulteriori input di dati, è possibile utilizzare l'applicazione come chatbot generale. Se si desiderano utilizzare i propri dati – ad esempio, documenti come PDF o file di testo – è necessario caricare i file e indicare il tipo di documento. Se non lo si fa, h2oGPT utilizza la sua funzione chatbot generale. È anche possibile utilizzare LLM di grandi dimensioni come OpenAI GPT-3.5 e GPT-4 tramite chiave API.