LLM in locale con Kubernetes e Ollama

L’intelligenza artificiale sta diventando sempre più presente nelle moderne architetture.

Tuttavia, molte organizzazioni preferiscono eseguire i modelli AI in locale, evitando di inviare dati sensibili a servizi cloud esterni.

In questo articolo vedremo come eseguire un Large Language Model (LLM) all’interno di un cluster Kubernetes utilizzando Ollama, una piattaforma che consente di gestire ed eseguire modelli linguistici direttamente on-premise.

L’obiettivo è integrare un modello AI locale nel laboratorio Kubernetes, mantenendo il pieno controllo su infrastruttura e dati.

Perché Ollama

Ollama è un runtime leggero progettato per eseguire modelli linguistici in modo semplice e rapido.

Le sue principali caratteristiche sono:

  • esecuzione di modelli LLM in locale.
  • nessuna dipendenza da servizi cloud esterni.
  • API REST semplici da integrare.
  • gestione dei modelli con pochi comandi.
  • runtime leggero e facilmente containerizzabile.

Queste caratteristiche rendono Ollama una soluzione ideale per esperimenti AI in ambienti Kubernetes.

Architettura dello stack AI

Nel laboratorio K8s lo stack AI è composto da tre componenti principali:

  • Ollama → L’ incubatore per il modello linguistico. Vedetelo come un hypervisor per LLM: non virtualizza sistemi operativi, ma fornisce l’ambiente necessario per eseguire modelli AI in locale.
  • Open WebUI → Fornisce un’interfaccia web per interagire con il modello.
  • Qdrant → Database vettoriale utilizzato per scenari RAG.

Il flusso è il seguente:

Utente


OpenWebUI


API Ollama


Modello LLM locale

Questa tipologia di architettura permette di costruire assistenti AI completamente locali, senza dipendere da provider esterni.

Deploy di Ollama in Kubernetes

La runtime Ollama può essere distribuito come un normale deployment Kubernetes.

Esempio di deployment:

È poi necessario esporre il servizio all’interno del cluster:

Una volta avviato il deployment, l’API Ollama sarà raggiungibile all’interno del cluster Kubernetes.
Installazione di un modello

Ollama permette di scaricare i modelli direttamente dal proprio registry.

Nel lab ho scelto il modello Qwen 2.5 1.5B che ho installato con il seguente comando:

  • kubectl -n ai exec deploy/ollama ollama pull qwen2.5:1.5b
Il modello viene scaricato e salvato all’interno del container Ollama.
Per conoscere i modelli installati:
  • kubectl -n ai exec deploy/ollama ollama list

Verifica dell’API Ollama

Ollama espone via API REST; può essere interrogata per verificare i modelli disponibili:

  • curl http://ollama:11434/api/tags

Risposta:

E’ la conferma che il modello è stato caricato correttamente.

Collegare un’interfaccia Web

Al fine di semplificare l’interazione con il modello è possibile installare la Open WebUI che fornisce:

  • interfaccia tipo ChatGPT
  • selezione del modello
  • cronologia delle conversazioni
  • integrazione con database vettoriali

L’interfaccia comunica con Ollama utilizzando l’endpoint:

  • http://ollama:11434
Il vantaggio è che una volta configurato, è possibile utilizzare il modello direttamente dal browser.

Perchè utilizzare un LLM locale in k8s?

Utilizzare i modelli linguistici localmente apre diversi scenari interessanti quali ad esempio:

  • assistenti AI interni aziendali
  • ricerca documentale avanzata
  • copiloti per applicazioni interne
  • integrazione AI in architetture a microservizi

Ciò permette di mantenere controllo completo su infrastruttura, dati e ciclo di vita dei modelli.

Nel prossimo articolo estenderemo lo stack AI introducendo Retrieval Augmented Generation (RAG) utilizzando Qdrant.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *