Come eseguire un LLM in locale: confronto tra Ollama, llama.cpp, LM Studio e vLLM

Esistono diversi modi per eseguire un LLM in locale. Alcuni strumenti sono progettati per facilitare l'avvio, mentre altri offrono un maggiore controllo o sono costruiti per servire molti utenti contemporaneamente. La scelta giusta dipende da ciò che si desidera: una semplice chat locale, un motore di inferenza configurabile o un'API di produzione.

Ollama

Ollama è uno dei modi più semplici per iniziare a eseguire modelli in locale. Basta installarlo, scaricare un modello ed eseguirlo da riga di comando. Fornisce anche un'API locale per applicazioni e altri strumenti.

Vantaggi:

  • Installazione e gestione dei modelli semplici
  • Flusso di lavoro da riga di comando intuitivo
  • API compatibile con OpenAI
  • Supporta l'accelerazione GPU basata su NVIDIA, AMD, Apple Silicon e Vulkan
  • I Modelfiles permettono di personalizzare modelli e parametri
  • Supporta le richieste concorrenti quando la memoria disponibile è sufficiente

Svantaggi:

  • Meno controllo a basso livello rispetto a llama.cpp
  • La gestione dei modelli è costruita attorno all'ecosistema Ollama
  • Non è la prima scelta quando si necessita di un elevato throughput di servizio o di inferenza distribuita

Difficoltà: Bassa. Una buona scelta se si desidera mettere in esecuzione un modello rapidamente senza dover gestire numerosi parametri di inferenza.

llama.cpp

llama.cpp è un motore di inferenza leggero in C/C++ focalizzato sull'esecuzione efficiente dei modelli su un'ampia gamma di hardware. Utilizza modelli GGUF e offre un controllo dettagliato su come il modello viene caricato ed eseguito.

Vantaggi:

  • Controllo fine sulla contestualizzazione, offloading GPU, batching, thread, quantizzazione e altre impostazioni di inferenza
  • Ampio supporto hardware, inclusi CUDA, HIP, Metal, Vulkan e SYCL
  • Supporta molti livelli di quantizzazione, dai formati a basso bit fino a 8 bit
  • Permette di dividere i modelli su più GPU
  • Permette di utilizzare CPU e GPU insieme quando un modello è più grande della VRAM disponibile
  • Incluye llama-server per un'API compatibile con OpenAI

Svantaggi:

  • Più configurazione rispetto a Ollama o LM Studio
  • I modelli GGUF vengono generalmente scaricati e gestiti separatamente
  • Molte impostazioni utili richiedono una comprensione dei parametri di inferenza

Difficoltà: Media. Una buona scelta se si desidera controllare esattamente come viene eseguito un modello o se si vuole sperimentare con le prestazioni e la quantizzazione.

LM Studio

LM Studio è un'applicazione desktop per scaricare, configurare ed eseguire LLM in locale. Fornisce un'interfaccia grafica per trovare modelli e gestire aspetti come l'offloading GPU e la dimensione del contesto.

Vantaggi:

  • Interfaccia grafica semplice
  • Consente di cercare e scaricare modelli tramite Hugging Face
  • Mostra informazioni sul modello e sulle risorse prima del caricamento
  • Server API compatibile con OpenAI
  • Permette di eseguire i modelli in modalità headless tramite il server llmster
  • Supporta i modelli GGUF tramite llama.cpp e i modelli MLX su Apple Silicon

Svantaggi:

  • Meno controllo a basso livello rispetto all'uso diretto di llama.cpp
  • L'applicazione desktop è meno adatta ad alcune implementazioni server
  • Non è progettato principalmente per il servizio multiutente su larga scala

Difficoltà: Bassa. Una buona scelta se si desidera sperimentare con modelli locali senza passare troppo tempo nella riga di comando.

vLLM

vLLM è progettato per servire LLM ad applicazioni e più utenti. Il suo principale vantaggio è il servizio efficiente ad alta concorrenza, utilizzando tecniche come PagedAttention, continuous batching, prefix caching e inferenza distribuita.

Vantaggi:

  • Elevato throughput per multiple richieste concorrenti
  • Continuous batching e gestione efficiente della KV-cache
  • Server API compatibile con OpenAI
  • Funziona direttamente con molti modelli Hugging Face
  • Supporta la quantizzazione, inclusi FP8, INT4, GPTQ, AWQ, GGUF e altri
  • Supporta parallelismo tensoriale, pipeline, esperto e altre forme di parallelismo
  • Progettato per inferenza e servizio di produzione

Svantaggi:

  • Setup e configurazione più complessi
  • Principalmente destinato ad ambienti Linux
  • Di solito non necessario per una singola persona che esegue un modello interattivo
  • La compatibilità tra hardware e modelli deve essere verificata prima del deployment

Difficoltà: Alta. La scelta migliore per chi implementa un servizio di inferenza piuttosto che semplicemente eseguire un modello su un computer personale.

Quale scegliere?

  • Semplicemente si vuole eseguire un modello facilmente: Ollama o LM Studio. Scegli Ollama per la riga di comando e l'API semplice, oppure LM Studio per un'interfaccia grafica.
  • Si desidera controllare l'inferenza: llama.cpp. Offre il controllo diretto sul caricamento del modello, quantizzazione, contesto, offloading GPU e altre impostazioni.
  • Servono un'API locale: Ollama, llama.cpp o LM Studio. Tutti e tre forniscono API compatibili con OpenAI.
  • È necessario servire molti utenti: vLLM. Le sue funzionalità di continuous batching e inferenza distribuita sono progettate per questo caso d'uso.
  • Si vogliono sperimentare diverse quantizzazioni: llama.cpp o LM Studio.

Eseguilo su DaDesktop

Se non si dispone di hardware GPU sufficiente in locale, è possibile eseguire questi strumenti su un desktop cloud DaDesktop. Scegli una GPU con VRAM sufficiente per il modello che si desidera eseguire, avvia il desktop e installa il software di inferenza preferito.

Ollama e LM Studio sono utili quando si desidera un ambiente locale semplice. llama.cpp offre un maggiore controllo su hardware e impostazioni di inferenza. vLLM è un'opzione quando è necessario esporre un modello come un'API ad alto throughput.

Visualizza le GPU disponibili per confrontare VRAM e altre specifiche.