L’intelligenza artificiale sta giocando un ruolo sempre più importante nella risoluzione di problemi complessi e nella creazione di nuove opportunità. Tuttavia, l’accesso ai modelli generativi e alle API corrispondenti richiede una connessione Internet e l’elaborazione su server remoti, il che può sollevare preoccupazioni in tema di disponibilità del servizio, prestazioni e privacy. È qui che entra in gioco LocalAI, una soluzione che risulta pienamente fruibile in ambito locale, senza neppure richiedere una connessione di rete attiva.
L’idea è di un programmatore italiano, Ettore Di Giacinto, che dopo il lavoro svolto in proprio ha presentato LocalAI come un progetto community-driven, disponibile pubblicamente nel corrispondente repository GitHub.
Diciamo subito che LocalAI vuole essere un’alternativa a OpenAI, pur mantenendo piena compatibilità con i software sviluppati ricorrendo all’SDK dell’azienda guidata da Sam Altman. Eseguire LocalAI in locale significa sbarazzarsi dei canoni di abbonamento di OpenAI e poter fruire di una piattaforma versatile che raccoglie e supporta i principali modelli fino ad oggi disponibili, anche con hardware di livello consumer.
Cos’è LocalAI e com’è nato il progetto
LocalAI è un’API scritta nel linguaggio Go che funge anche da interfaccia di connessione per i software sviluppati con SDK OpenAI. LocalAI è nata come “progetto del fine settimana” con l’intento iniziale di creare i componenti necessari per un assistente AI completo, simile a ChatGPT. Il progetto è cresciuto rapidamente e ora offre una serie di funzionalità che vanno dalla generazione di testo all’elaborazione audio e visiva.
L’applicazione offre diverse funzionalità che consentono di sfruttare modelli di IA direttamente sulla propria macchina senza la necessità di una connessione Internet. Alcune delle funzionalità principali includono:
- Generazione di testo. Supporta la generazione di testo utilizzando modelli come
llama.cpp
egpt4all.cpp
. Questo consente di creare testi coerenti e pertinenti con la possibilità di arricchire le proprie applicazioni con abilità conversazionali. - Conversione di testo in audio e audio in testo. È prevista la possibilità di trasformare il testo in audio e viceversa, aprendo la strada a applicazioni come la sintesi vocale e la trascrizione audio.
- Generazione di immagini. Il sistema per la generazione di immagini utilizza Stable Diffusion consentendo la creazione di immagini artistiche e creative.
- Funzioni OpenAI. LocalAI è compatibile con le principali funzioni di OpenAI, compresi embedding vettoriali e grammatiche vincolate.
Gli embeddings sono rappresentazioni vettoriali di concetti od oggetti in uno spazio multidimensionale. In termini più semplici, sono delle codifiche che catturano le caratteristiche e le relazioni tra gli elementi. Sono utili per migliorare diverse attività di elaborazione del linguaggio naturale e di analisi dei dati.
Le grammatiche vincolate (constrained grammars, in inglese) sono invece regole o modelli di linguaggio che vengono sfruttati per generare testo o sequenze di parole con restrizioni specifiche. In altre parole, invece di generare testo in modo completamente libero, queste grammatiche applicano regole e vincoli specifici in vista della generazione di testi.
Una volta acquisiti “una tantum”, LocalAI mantiene caricati i modelli in maniera tale da assicurare attività di inferenza più rapide. Il progetto fa leva su modelli quali i già citati llama.cpp e gpt4all, su rwkv.cpp, ggml, whisper.cpp per le trascrizioni audio, bert.cpp per l’embedding e StableDiffusion-NCN al fine della generazione di immagini. La tabella dei modelli compatibili mostra chiaramente le potenzialità di LocalAI.
Come installare LocalAI in locale
L’installazione di LocalAI è relativamente semplice e può essere effettuata anche su macchine sprovviste di una GPU performante. Requisito indispensabile è la presenza del linguaggio Go.
Digitando go version
, se si riceve come risposta il numero di versione di Go, significa che il linguaggio di sviluppo risulta già installato. La pagina download di Go raccoglie tutte le versioni ad oggi disponibili per le varie piattaforme e sistemi operativi.
A questo punto, è possibile clonare il repository di LocalAI:
git clone https://github.com/go-skynet/LocalAI.git
Portandosi nella cartella del repository clonato, è quindi possibile eseguire il comando go build
per compilare il progetto. La configurazione delle opzioni e dei modelli presuppone la modifica del contenuto del file config.yml
.
Come ultimo passo, si può eseguire il comando ./LocalAI
per avviare l’API di LocalAI.
LocalAI è concesso in licenza MIT e mira ad essere una risorsa accessibile per chiunque desideri sfruttare l’IA in modo locale e privato. Chi proverà LocalAI, rimarrà piacevolmente sorpreso nel riuscire, ad esempio, a servirsi in locale del modello Llama-2-7b con risultati e prestazioni simili a quelle evidenziate da GPT-3.5 di OpenAI.
Llama-2-7b è un modello di linguaggio sviluppato da Meta, l’azienda proprietaria di Facebook, Instagram e WhatsApp. Llama-2 è open source ed è disponibile sia per la ricerca che per l’uso commerciale. Include modelli di linguaggio conversazionale pre-addestrati e affinati con un numero di parametri compreso tra 7 e 70 miliardi (“7b” è la versione da 7 miliardi di parametri).
I modelli sono stati addestrati su un volume di dati del 40% superiore a quello di Llama-1 permettendo di esplorare nuove possibilità nel campo dei modelli generativi e delle applicazioni di intelligenza artificiale.
Grazie al lavoro degli sviluppatori e alla partecipazione attiva della comunità, LocalAI continua a crescere e a migliorare, aprendo nuove opportunità per l’implementazione delle funzionalità di intelligenza artificiale in un ampio numero di campi applicativi.
Credit immagine in apertura: iStock.com/Vertigo3d