By using this website, you agree to the use of cookies as described in our Privacy Policy.

Blog

L’Intelligenza Artificiale Etica e a Km Zero
Ratings
(1)

Modelli Aperti, Self-Hosting e un Chatbot in Locale (anche senza GPU)

Quando si parla di Intelligenza Artificiale, quello che vi viene in mente sono i grandi colossi tecnologici; magari senza neppure sapere cosa c’è oltre “ChatGPT” e senza conoscere la provenienza geografica di alternative altrettanto valide. Solitamente i loro modelli sono “closed-source” (chiusi). Ma esiste una via alternativa, radicata nella filosofia del software libero: l’AI open-weight, a “pesi aperti” ….open source!

Non si tratta solo di una scelta ideologica, ma di una questione di sovranità digitale, privacy e controllo dei dati—temi cruciali per chi gestisce informazioni sensibili, che si tratti di uno studio professionale o di un progetto personale.

E di oggi la notizia che Nvidia abbia acquistato per circa 13 miliardi di dollari, Hugging Face, la più famosa piattaforma di condivisione di modelli e software AI open source. Il Github dell’AI, quella che i non addetti ricordano o conoscono solo per essere stata “bucata” dall’Agente AI di OpenAI sfuggito dal recinto della SendBox di sviluppo. Si, bucata, come no?!

Ecco la versione ampliata dell’articolo, arricchita con un’alternativa a Ollama per l’esecuzione locale e con l’aggiunta di Open WebUI o AnythingLLM per avere un’interfaccia grafica completa (stile ChatGPT) sul proprio computer.

1. Modelli Aperti vs Modelli Chiusi: Vantaggi e Svantaggi

Prima di passare alla pratica, perchè questa è anche una mini guida, cerchiamo di comprendere perché la scelta del modello conta dal punto di vista etico e operativo.

  • Modelli Chiusi (es. OpenAI, Anthropic, Google):

    • Vantaggi: Prestazioni allo stato dell’arte, pronti all’uso, infrastruttura gestita da terzi con dimunizione dei costi di utilizzo.

    • Svantaggi: Non sai esattamente quali dati siano stati usati per l’addestramento, non puoi ispezionare il codice o i pesi, i dati viaggiano verso server esterni (spesso extra-UE, con problemi di conformità GDPR) e sei soggetto a vendor lock-in e variazioni unilaterali dei costi. Non sai come dove hanno “reperito” i dati di addestramento, magari anche in modo poco etico.

  • Modelli Aperti / Open-Weights (es. Llama, Qwen, Mistral, Gemma):

    • Vantaggi: Trasparenza totale. I pesi del modello sono scaricabili e utilizzabili ovunque. Puoi farli girare in locale sul tuo hardware, garantendo la massima privacy (nessun dato esce dalla tua rete) e un’indipendenza totale da connessioni internet o abbonamenti.

    • Svantaggi: Richiedono risorse hardware locali e una minima competenza tecnica per la configurazione iniziale. Una massima competenza per capire cosa fanno.

2. Guida Pratica: Motori di Esecuzione in Locale

Per far girare un modello di linguaggio sul proprio computer senza una scheda video dedicata, abbiamo bisogno di un runtime ottimizzato per la CPU. Avere a disposizione una GPU sarebbe meglio, ma questo è un test, ed io i soldi per la GPU o anche per un mini-pc dedicato, non ce li ho; fortunatamente sono sempre stato attento alle risorse e quindi facciamo qualcosa anche per chi non vuol investire 1.000,00 € per un nuovo hardware. Se a qualcuno interessa comunque, per test, e piccoli modelli suggerisco questi minipc da acquistare con almeno 16GB Ram (meglio 2x16) e un disco (veloce) da alemno 1TB:

  • Beelink SER8 Ryzen 7 8845HS
  • Geekom A8 / A8 Max Ryzen 7 8845HS
  • Minisforum UM880 Plus Ryzen 7 8845HS
  • GMKtec NucBox K8 Plus AMD Ryzen 7 8845HS

ovviamente in listino hanno tutti anche processori migliori, ma per noi può andare così.

Prerequisiti

Prima di partire, specifico che sto lavorando su un PC Linux. Nello specifico un notebook Lenovo Thinkpad X390, cpu intel i5-8365U con 16GB di RAM. Un notebook professionale ma del 2019, con prestazioni ben lontane anche da un MiniPC con scheda GPU, e paragonabili ad un Intel N150 da pochi centinaia di Euro reperibile nei grandi magazzini.

Tutti i comandi sono quindi eseguiti nel terminale (si, quella finestra nera anni 80).

Opzione A: Ollama (Il più semplice)

Ollama è il motore open source più celebre e immediato.

  1. Installazione (es. Linux Ubuntu/Mint/Debian/Fedora...etc):
$ curl -fsSL https://ollama.com/install.sh | sh

al termine otterremo:

  1. Avvio e download di un modello “Tiny” (es. Llama 3.2 1B o Qwen 2.5 1.5B):
$ ollama run llama3.2:1b
 
Dopo pochi istanti, siamo pronti a chattare da linea di comando con il nostro LLM personale:

Alcuni comandi utili di Ollama

Ollama ha ovviamente dei comandi da terminal per interagire con il software. 

Far partire il servizio

$ ollama serve

Elenca tutti modelli scaricati e disponibili

$ ollama list 

Poi, c'è comuqnue l'help dei comandi

$ ollama -h

dado@X390:~$ ollama --help
Large language model runner

Usage:
  ollama [flags]
  ollama [command]

Available Commands:
  serve        Start Ollama
  create       Create a model
  show         Show information for a model
  run          Run a model
  stop         Stop a running model
  pull         Pull a model from a registry
  push         Push a model to a registry
  signin       Sign in to ollama.com
  signout      Sign out from ollama.com
  list         List models
  ps           List running models
  cp           Copy a model
  rm           Remove a model
  launch       Launch the Ollama menu or an integration
  help         Help about any command

 

Comandi di sistema

poi ci sono i comandi di sistema per controllare il servizio, e dobbiamo essere "root"

Se Ollama è configurato per avviarsi in automatico o lo hai gestito tramite systemctl:

Per spegnerlo subito:

$ sudo systemctl stop ollama

Per verificare che sia fermo:

$ sudo systemctl status ollama

Per evitare che si riavvii automaticamente all'accensione del PC (se vuoi disabilitare l'avvio automatico):

$ sudo systemctl disable ollama

(Potrai sempre riattivarilo quando ti serve con sudo systemctl start ollama).

E' spento o acceso

Ollama è un servizio, che se avviato a girare in backgroud, resta sempre acceso anche alla chiusura del terminale e riparte all'avvio. come visto sopra basta controllare se è o meno avviato. Considerando che è ogni servizio "risponde su una porta", e sappiamo che ollama risponde sulla 11434 possiamo vericare con molti comandi se il processo è attivo o meno. Ricordate che se risponde, risponde o dall'interno, o magari anche dall'esterno, e questi possono essere (come per tutti i software) problemi di sicurezza

Vedere se attivo con cURL interrogando l'ulr, ma si può anche visitare da browser

dado@X390:~$ curl http://localhost:11434/
Ollama is running

Con ps. ps è un comando che interroga i processi di sistema. nello specifico 

dado@X390:~$ ps aux | grep ollama
ollama      2236  0.0  0.2 2191544 38092 ?       Ssl  11:09   0:00 /usr/local/bin/ollama serve
dado       19026  0.0  0.0   9172  2364 pts/0    S+   11:48   0:00 grep --color=auto ollama
ollama è attivo con il PID 2236

oppure, con maggior precisione

dado@X390:~$ sudo netstat -ntap | grep ollama
[sudo] password di dado:             
tcp        0      0 127.0.0.1:11434         0.0.0.0:*               LISTEN      2236/ollama 

ollama è in attesa solo da localhost (127.0.0.1), sulla porta 11434, da qualsiasi sorgente, sulla porta 2236

se mi collego con il browser vedrei:

e di conseguenza: 

dado@X390:~$ sudo netstat -ntap | grep ollama
tcp        0      0 127.0.0.1:11434         0.0.0.0:*               LISTEN      2236/ollama         
tcp        0      0 127.0.0.1:11434         127.0.0.1:59112         ESTABLISHED 2236/ollama         
tcp        0      0 127.0.0.1:11434         127.0.0.1:59114         ESTABLISHED 2236/ollama   

 

Come scaricare e lanciare altri modelli

In Ollama puoi separare le azioni: puoi scaricare un modello senza avviarlo, oppure scaricarlo e lanciarlo contemporaneamente.

Solo download (senza avviarlo subito):
Se vuoi scaricare un modello in background (ad esempio il modello leggero Qwen 2.5 1.5B):

$ ollama pull qwen2.5:1.5b

 

Scarica e avvia subito:

$ ollama run qwen2.5:1.5b

(Nota: se il modello è già stato scaricato in precedenza, il comando ollama run salterà il download e aprirà immediatamente la chat).

 

Se volesso consocere tutti i modelli disponibili, ecco il link alla pagina del sito: 

https://ollama.com/library

 

Opzione B: Llama.cpp / LM Studio (L’alternativa flessibile)

Se cerchi un controllo ancora più granulare sulle performance della CPU (gestione dei thread, caricamento parziale su RAM), llama.cpp (e la sua interfaccia desktop LM Studio) rappresenta lo standard d’eccellenza.

  • Permette di scaricare direttamente i file in formato .gguf (pesantemente quantizzati e ottimizzati per girare fluidamente su macchine modeste).
  • Espone anch’esso un server locale compatibile con le API OpenAI standard, perfetto per collegare strumenti esterni.

Non è oggetto di questo articolo, magari ne scriviamo un altro... ok

3. Diamo una interfaccia al Chatbot: Open WebUI o AnythingLLM

Proseguiamo. Interagire via terminale va bene per i test, ma per un utilizzo quotidiano è comoda un’interfaccia grafica web, magari self-hosted tramite Docker. Insomma, voi tutti siete abituati ad aprire il browser e scrivere, giusto? un uso basico di un LLM, allora possiamo scegliere tra due soluzioni eccellenti:

1. Open WebUI (L’esperienza “stile ChatGPT”)

È l’interfaccia open source più ricca e rifinita per connettersi a Ollama o a endpoint compatibili.

  • Caratteristiche: Gestione utenti, supporto RAG (per chattare con i tuoi documenti locali), cronologia delle chat e interfaccia pulita e reattiva.
  • Installazione rapida via Docker:
$ docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

Basterà puntare il browser su http://localhost:3000 per avere il tuo assistente grafico privato.

Se non hai docker, è possibile installarlo con 2 comandi: 

$ sudo apt install docker.io
$ sudo apt install podman-docker

Ma cos'è? Docker è una piattaforma open source che permette di creare, eseguire e gestire applicazioni all'interno di ambienti isolati chiamati container. Un container è come una scatola chiusa che contiene un'applicazione insieme a tutto ciò di cui ha bisogno per funzionare (codice, librerie, file di configurazione e dipendenze). La famosa SendBox di OpenAI... come vedi non ti stavano parlando di chissà quale magia. I container sono una normalità nel mondo del cloud e non solo. 

Anche qui attendiamo il download e l'installazione di qualche giga di dati (quindi dipende dalla vostra linea internet)

Al termine del download, attendiamo qualche minuti e poi puntiamo il nostro Browser (chrome, firefox) all'indirizzo 

 

dove localhost significa: questo computer locale

Premiamo inizia e creiamo il primo account che è anche l'amministratore del sistema:

wow... abbiamo il nostro ChatGPT personale

 

2. AnythingLLM (RAG Specializzato in Documenti e Privacy)

Se il tuo obiettivo è interrogare file PDF, note o archivi aziendali in locale senza che un singolo byte lasci il PC.

  • Caratteristiche: Nasce nativamente per la gestione documentale (RAG locale), indicizza i file sul tuo disco rigido e permette di scegliere quale motore (Ollama o llama.cpp) usare “sotto il cofano”.
  • Anche in questo caso, è facilmente distribuibile in pochi secondi tramite container Docker.

4. Integrare l’AI nel proprio flusso: Connettere le API a Thunderbird

Ora che il nostro motore gira in locale (solitamente sulla porta http://localhost:11434 per Ollama o http://localhost:1234 per LM Studio), possiamo esporre le sue API locali per collegarlo ad altri strumenti di uso quotidiano, come il client di posta Mozilla Thunderbird per farci controllare il testo dei messaggi da inviare o farci rispondere… quindi non serve Microsoft Office+Copilot? o Gmail? … no, non serve! Servono le “conoscenze”.

Puoi farlo installando il componente aggiuntivo denominato ThunderAI reperibile qui. Ma non voglio toglierti un po' di divertimento nel provare da solo a farlo.

Sfruttando estensioni dedicate o plugin di produttività che supportano endpoint compatibili con le API OpenAI, puoi configurare il client inserendo l’indirizzo locale come endpoint e selezionando il modello leggero installato. In questo modo potrai abbozzare risposte alle email o riassumere thread lunghi mantenendo una riservatezza assoluta.

Conclusione

Passare a un’AI open source e self-hosted non è solo un esercizio tecnico. È un atto di responsabilità digitale: significa riappropriarsi dei propri dati, scegliere la trasparenza contro l’opacità delle grandi piattaforme e dimostrare che è possibile innovare mantenendo il controllo etico e tecnologico dei propri strumenti di lavoro.

E se le tue risposte sono: “ma cosa vuoi che mi interessi”, “tra poco tanto vado in pensione”, “non sarò certo io a cambiare il mondo”; a me viene da pensare … che non sappiamo pensare.

Ecco la sezione dedicata alla pulizia e disinstallazione completa di tutti i componenti installati (runtime, modelli, interfaccia grafica e container Docker), così da ripristinare il sistema allo stato iniziale in modo pulito.

5. Appendice: Come disinstallare e ripulire tutto

Se hai fatto dei test e desideri rimuovere completamente Ollama, i modelli scaricati, i container Docker di Open WebUI / AnythingLLM e liberare interamente lo spazio su disco, ecco i comandi passo-passo (pensati per ambienti Linux/Fedora).

1. Fermare e riavviare Open WebUI

Se desideri "spengere" il container digita semplicemente:

$docker stop open-webui

Per riavviarlo in futuro ti basterà dare il comando:

$ docker start open-webui

 

 

Se vuoi rimuovere del tutto il container (liberando il nome e l'istanza):

$ docker stop open-webui
$ docker rm open-webui

(Nota: grazie all'opzione -v open-webui:/app/backend/data che hai usato al momento dell'avvio, i tuoi dati, le chat e le configurazioni salvate non andranno persi, perché sono memorizzati in un volume Docker separato).

Se vuoi vedere lo stato di tutti i container presenti sul tuo PC:

$ docker ps -a

il comando ti mostrerà l'elenco dei container, il loro ID, il nome (open-webui) e se sono attualmente in esecuzione (Up) o fermi (Exited).

Disinstallare Ollama e rimuovere i modelli

Se hai installato Ollama tramite lo script ufficiale, puoi rimuovere l’eseguibile, il servizio di sistema e tutti i modelli scaricati (che si trovano solitamente nella cartella utente .ollama):

  • Arresta il servizio Ollama (se in esecuzione):
sudo systemctl stop ollama
sudo systemctl disable ollama
  • Rimuovi i file binari e i servizi di sistema:
sudo rm /usr/local/bin/ollama
sudo rm /etc/systemd/system/ollama.service
sudo userdel ollama
sudo groupdel ollama
  • Elimina tutti i modelli scaricati e i dati di configurazione (libera lo spazio su disco):
rm -rf ~/.ollama

2. Rimuovere Open WebUI (o AnythingLLM) da Docker

Se hai avviato l’interfaccia grafica tramite Docker, i container e i volumi di dati persistenti si rimuovono con pochi comandi mirati:

  • Ferma e rimuovi il container (sostituisci open-webui con il nome del container se hai usato AnythingLLM):
docker stop open-webui
docker rm open-webui
  • Elimina il volume Docker associato (per cancellare definitivamente chat salvate, utenti e documenti indicizzati):
docker volume rm open-webui

(Nota: se avevi usato AnythingLLM, il comando per il volume sarà docker volume rm anythingllm o simile, a seconda di come lo hai battezzato).

3. Pulizia generale di Docker (Opzionale)

Se vuoi ripulire anche eventuali immagini Docker scaricate per l’installazione che non ti servono più:

docker image prune -a

Con questi passaggi il tuo computer tornerà esattamente allo stato precedente, senza tracce residue né dei motori di inferenza né delle interfacce web.

 

 

ai, guide, linux