Il mondo delle applicazioni di intelligenza artificiale (IA) e dei Large Language Models (LLM) continua ad evolvere, offrendo nuove soluzioni che semplificano notevolmente il processo di distribuzione ed esecuzione di modelli complessi. Tra le ultime innovazioni in questo campo si distingue la più recente versione di llamafile, un pacchetto software che consente di gestire potenti LLM facendo leva su di un singolo file eseguibile di soli 4 GB circa.
Come migliorano le prestazioni di IA con llamafile, grazie al supporto per le istruzioni AVX-512
Vi ricordate quando Linus Torvalds polemizzava platealmente con Intel ritenendo l'integrazione delle istruzioni AVX-512 a livello di processore una pratica inutile? L'ideatore del kernel Linux esortava i tecnici della società di Santa Clara a concentrarsi su qualcosa di più concreto per gli utilizzi di tutti i giorni invece che sviluppare l'architettura AVX-512, considerata per usi specifici e molto settoriali.
Gli rispose niente meno che Raja Koduri spiegando che le istruzioni AVX-512 sono una risorsa preziosa, da non sottovalutare soprattutto nell'ottica delle future applicazioni. Era il mese di agosto 2020 e, forse, neppure Torvalds poteva immaginare l'esplosione delle applicazioni di intelligenza artificiale che si sarebbero diffuse da lì a poco. Puntando peraltro sempre più sul concetto di democratizzazione dell'IA.
Appena rilasciata, la nuova versione di llamafile rappresenta un notevole miglioramento in termini di prestazioni di calcolo e accuratezza, sia sulla CPU che sulla GPU. La release appena distribuita introduce il supporto per le istruzioni AVX-512, accelerando notevolmente il processo di elaborazione dei prompt su CPU con architettura AMD Zen 4.
Miglioramenti e principali caratteristiche
L'aggiornamento di llamafile non solo offre miglioramenti significativi in fatto di prestazioni, ma semplifica notevolmente il processo di distribuzione e utilizzo dei LLM.
Il balzo in avanti più significativo deriva proprio dal supporto per AVX-512, con un aumento delle performance fino a 10 volte su CPU con architettura AMD Zen 4, migliorando notevolmente i tempi di valutazione delle informazioni tramesse in input.
Come accennato in precedenza, inoltre, llamafile semplifica notevolmente il processo di distribuzione e utilizzo dei LLM, fornendo un singolo file eseguibile che può essere facilmente eseguito su una vasta gamma di sistemi.
llamafile è compatibile con i sistemi operativi Windows e Linux, offrendo una soluzione flessibile per gli sviluppatori e gli utenti finali.
Test prestazionali
Per comprendere appieno il miglioramento in fatto di performance offerto da llamafile, l'ingegner Justin Tunney ha eseguito una serie di test confrontando diverse versioni del software.
Utilizzando un sistema HP del 2020 basato su processore Intel Core i9-9900, i risultati hanno evidenziato prestazioni largamente migliori rispetto alle release precedenti e ad altri strumenti di accelerazione come llama.ccp.
I risultati delle prove eseguite su Raspberry Pi v5 (ARMv8.2) e Raspberry Pi v4 (ARMv8.0) hanno ulteriormente confermato l'efficacia del progetto in termini di performance. In particolare, un benchmark eseguito su Raspberry Pi v5 ha mostrato un aumento delle prestazioni fino a 8 volte.
Come usare llamafile
Facendo riferimento al repository GitHub ufficiale, si possono trovare le istruzioni per usare llamafile sui propri sistemi, così da poterne apprezzare anche prestazioni velocistiche.
Grazie a un unico framework, nel caso di llamafile tutto si riduce a un unico eseguibile, eseguito localmente su gran parte dei computer, senza bisogno di installazione.
Gli autori del progetto suggeriscono di scaricare llamafile per il modello LLaVA (licenza: LLaMA 2, OpenAI). Si tratta di un file di esempio che può essere utilizzato assegnando prima i permessi di esecuzione su macOS, Linux e BSD:
chmod +x llava-v1.5-7b-q4.llamafile
Gli utenti Windows devono invece semplicemente rinominare il file aggiungendo l'estensione .exe
alla fine del nome.
A questo punto si può eseguire llamafile, usando il comando riportato di seguito:
./llava-v1.5-7b-q4.llamafile -ngl 9999
Il browser Web impostato come predefinito dovrebbe aprirsi automaticamente e visualizzare un'interfaccia di chat. Qualora ciò non avvenisse, basta avviare il browser manualmente quindi digitare http://localhost:8080
nella barra degli indirizzi.
Per interrompere l'interazione con il chatbot, è sufficiente premere la combinazione di tasti CTRL+C
per arrestare llamafile.
API JSON e pesi esterni
Abbiamo detto che llamafile si presenta come un LLM eseguibile direttamente sul proprio dispositivo. Contiene anche i pesi per ciascun LLM open source, nonché tutto il necessario per usare il modello. Non c'è nulla da installare o configurare, a parte alcune specifiche eccezioni.
Quando llamafile è avviato, oltre a ospitare un chatbot sotto forma di interfaccia Web, è disponibile un endpoint compatibile con la struttura e il funzionamento delle API OpenAI. Ciò significa che gli sviluppatori possono interagire con llamafile anche dalle loro applicazioni, lavorando interamente in locale.
llamafile può essere eventualmente utilizzato anche ricorrendo a pesi esterni, aspetto particolarmente utile soprattutto sui sistemi Windows: in questo modo è possibile aggirare il limite dei 4 GB.
Sebbene il progetto llamafile sia distribuito sotto licenza Apache 2.0, le applicate a llama.cpp sono basate su licenza MIT (come il progetto llama.cpp stesso) in modo tale da garantire massima compatibilità e coerenza.
Credit immagine in apertura: Microsoft Copilot Designer.