Corso
Google DeepMind ha appena rilasciato Gemma 3, la nuova iterazione dei suoi modelli open-source. Gemma 3 è progettato per funzionare direttamente su dispositivi a basse risorse come telefoni e laptop. Questi modelli sono ottimizzati per prestazioni rapide su una singola GPU o TPU e sono disponibili in varie dimensioni per adattarsi a diverse esigenze hardware.
In questo tutorial ti spiegherò passo dopo passo come configurare ed eseguire Gemma 3 in locale usando Ollama. Una volta fatto, ti mostrerò come usare Gemma 3 e Python per creare un assistente per file.
Perché eseguire Gemma 3 in locale?
Eseguire in locale un large language model (LLM) come Gemma 3 comporta diversi vantaggi chiave:
- Privacy: i dati restano sul dispositivo, proteggendo le informazioni sensibili.
- Bassa latenza: elimina la necessità di trasmettere via internet, con risposte più rapide.
- Personalizzazione: i modelli possono essere adattati a esigenze e esperimenti specifici.
- Convenienza economica: riduce i costi del cloud sfruttando l’hardware esistente.
- Accesso offline: le applicazioni restano operative anche senza connessione internet.
- Controllo: maggiore sicurezza e controllo sull’ambiente di calcolo.
Configura Gemma 3 in locale con Ollama
Installare Ollama
Ollama è una piattaforma disponibile per Windows, Mac e Linux che supporta l’esecuzione e la distribuzione di modelli di AI, semplificando l’integrazione di questi modelli nei progetti degli sviluppatori. Lo useremo per scaricare ed eseguire Gemma 3 in locale.
Il primo passo è scaricarlo e installarlo dal sito ufficiale di Ollama.

Durante l’installazione, assicurati di installare anche la riga di comando:

Dopo aver completato l’installazione, possiamo verificare che sia andata a buon fine usando il comando ollama nel terminale. Ecco come dovrebbe apparire il risultato:

Scaricare Gemma 3
Per scaricare un modello con Ollama, usa il comando pull:
ollama pull <model_name>:<model_version>
L’elenco dei modelli disponibili è consultabile nella libreria di Ollama.
Gemma 3, in particolare, offre quattro modelli: 1b, 4b, 12b e 27b, dove b sta per billion (miliardo), in riferimento al numero di parametri del modello.
Per esempio, per scaricare gemma3 con 1b parametri, usiamo il comando:
ollama pull gemma3:1b
Se non specifichiamo la versione del modello, verrà scaricato di default il modello 4b:
ollama pull gemma3
Elencare i modelli locali
Possiamo elencare i modelli presenti in locale con il seguente comando:
ollama list
Nel mio caso, l’output mostra che ho due modelli:
NAME ID SIZE MODIFIED
gemma3:1b 2d27a774bc62 815 MB 38 seconds ago
gemma3:latest c0494fe00251 3.3 GB 22 minutes ago
Chattare nel terminale
Possiamo usare Ollama per chattare con un modello usando il comando run:
ollama run gemma3

Nota che se usiamo il comando run con un modello che non abbiamo scaricato, verrà scaricato automaticamente usando pull.
Eseguire Gemma 3 in background
Per usare Gemma 3 con Python dobbiamo eseguirlo in background. Possiamo farlo con il comando serve:
ollama serve
Se ottieni il seguente errore durante l’esecuzione del comando, probabilmente significa che Ollama è già in esecuzione:
Error: listen tcp 127.0.0.1:11434: bind: address already in use
Questo errore può verificarsi quando Ollama resta attivo in background.
Usare Gemma 3 in locale con Python
Configura l’ambiente Python
Ollama offre un pacchetto Python per connettersi facilmente ai modelli in esecuzione sul nostro computer.
Useremo Anaconda per configurare un ambiente Python e aggiungere le dipendenze necessarie. Farlo in questo modo aiuta a prevenire possibili conflitti con altri pacchetti Python già presenti.
Una volta installato Anaconda, possiamo configurare l’ambiente con il comando:
conda create -n gemma3-demo -y python=3.9
Questo comando crea un ambiente chiamato gemma3-demo usando la versione 3.9 di Python. L’opzione -y fa sì che tutte le domande durante la configurazione ricevano automaticamente risposta affermativa.
Poi attiviamo l’ambiente con:
conda activate gemma3-demo
Infine, installiamo il pacchetto ollama con il comando:
pip install ollama
Inviare un messaggio a Gemma 3 con Python
Ecco come possiamo inviare un messaggio a Gemma 3 con Python:
from ollama import chat
response = chat(
model="gemma3",
messages=[
{
"role": "user",
"content": "Why is the sky blue?",
},
],
)
print(response.message.content)
A seconda del tuo hardware, il modello potrebbe impiegare un po’ a rispondere: abbi pazienza quando esegui lo script.
Abbiamo visto in precedenza che gemma3 fa riferimento di default a gemma3:4b. Quindi quando specifichiamo model="gemma3" come modello, sarà quello ad essere usato.
Per usare un altro modello — ad esempio il modello 1B — dobbiamo invece passare l’argomento model=”gemma3:1b” (a patto di averlo scaricato in precedenza con il comando ollama pull gemma3:1b). Per elencare i modelli disponibili, possiamo usare il comando ollama list.
Se vogliamo trasmettere la risposta parola per parola, possiamo usare stream=True e stampare la risposta a blocchi:
from ollama import chat
stream = chat(
model="gemma3",
messages=[{"role": "user", "content": "Why is the sky blue?"}],
stream=True,
)
for chunk in stream:
print(chunk["message"]["content"], end="", flush=True)
Questo offre un’esperienza migliore perché l’utente non deve attendere che l’intera risposta venga generata.
Per saperne di più sul pacchetto ollama, consulta la loro documentazione.
Creare un assistente per file con Gemma 3
In questa sezione vediamo come creare uno script Python che ci consenta di fare domande sul contenuto di un file di testo direttamente dal terminale. Questo script torna utile per attività come cercare bug in un file di codice o interrogare informazioni da qualsiasi documento.
Panoramica dello script
Il nostro obiettivo è creare uno strumento da riga di comando in Python che legga un file di testo e usi Gemma 3 per rispondere a domande relative al suo contenuto. Ecco la guida passo passo per riuscirci:
Impostare la struttura dello script
Per prima cosa, dobbiamo impostare lo script Python con gli import necessari e la struttura di base:
import sys
from ollama import chat
def ask_questions_from_file(file_path):
# Read the content of the text file
with open(file_path, "r") as file:
content = file.read()
# Loop to keep asking questions
while True:
question = input("> ")
print()
if question.lower() == "exit":
break
# Use Gemma 3 to get answers
stream = chat(
model="gemma3",
messages=[
{"role": "user", "content": content},
{"role": "user", "content": question},
],
stream=True,
)
for chunk in stream:
print(chunk["message"]["content"], end="", flush=True)
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python ask_file.py <path_to_text_file>")
else:
file_path = sys.argv[1]
ask_questions_from_file(file_path)
La funzionalità principale è racchiusa nella funzione ask_questions_from_file(). Questa funzione prende come argomento un percorso di file e inizia aprendo e leggendo il contenuto del file di testo specificato. Questo contenuto verrà usato come contesto per rispondere alle domande.
Una volta caricato il contenuto del file, lo script entra in un ciclo in cui ci chiede continuamente di inserire domande. Quando digitiamo una domanda, lo script invia il contenuto del file insieme alla nostra domanda al modello Gemma 3, che elabora queste informazioni per generare una risposta.
L’interazione con il modello avviene tramite un meccanismo di streaming, che consente di visualizzare le risposte in tempo reale man mano che vengono generate. Se digitiamo exit, il ciclo si interrompe e lo script termina.
Alla fine dello script, è presente un controllo che assicura che lo script venga eseguito correttamente con un argomento da riga di comando, che dovrebbe essere il percorso del file di testo. Se l’argomento non viene fornito, viene visualizzato un messaggio di utilizzo per indicarci il modo corretto di eseguire lo script. Questa impostazione ci permette di usare efficacemente lo script dalla riga di comando.
Eseguire lo script
Salva il codice sopra in un file chiamato, ad esempio, ask.py. Per testare lo script, esegui il comando:
python ask.py ask.py
Questo eseguirà lo script per fare domande su se stesso (ecco perché ask.py compare due volte nel comando sopra). Ecco un esempio in cui gli chiediamo di spiegare come funziona lo script:

Conclusione
Abbiamo configurato con successo e imparato a eseguire Gemma 3 in locale usando Ollama e Python. Questo approccio garantisce la privacy dei nostri dati, offre bassa latenza, possibilità di personalizzazione e può portare a risparmi sui costi. I passaggi che abbiamo visto non si limitano a Gemma 3: possono essere applicati anche ad altri modelli ospitati su Ollama.
Se vogliamo migliorare la funzionalità del nostro script, potremmo ad esempio estenderne le capacità per gestire i PDF. Il modo migliore per farlo è usare le API di Mistral OCR. Possiamo convertire i file PDF in testo, consentendo al nostro script di rispondere a domande sui PDF, rendendolo ancora più versatile e potente.
Con questi strumenti, ora siamo pronti a esplorare e interagire con modelli di grandi dimensioni direttamente dai nostri dispositivi.
FAQs
Quali sono i requisiti hardware per eseguire Gemma 3 in locale?
La possibilità di eseguire Gemma 3 in locale dipende dalla dimensione specifica del modello che scegli di scaricare. I modelli più piccoli come gemma3:1b sono progettati per essere efficienti e possono funzionare su dispositivi meno potenti, come laptop con una singola GPU o persino alcuni tablet ad alte prestazioni. I modelli più grandi come gemma3:27b richiedono più risorse computazionali, ad esempio una workstation multi-core con una GPU di fascia alta. Controlla sempre le specifiche del tuo dispositivo rispetto ai requisiti del modello per assicurarti della compatibilità.
Posso eseguire più istanze di Gemma 3 contemporaneamente?
Sì, puoi eseguire più istanze di Gemma 3 contemporaneamente, purché le risorse hardware (CPU, GPU e memoria) siano sufficienti a supportare il carico computazionale aggiuntivo. Ogni istanza del modello in esecuzione in background consumerà risorse di sistema extra, quindi assicurati che il tuo sistema possa gestire i processi multipli senza un degrado significativo delle prestazioni.
È necessario usare Anaconda per configurare un ambiente Python?
Anche se Anaconda è altamente consigliata per la facilità con cui crea ambienti isolati, gestisce le dipendenze ed evita conflitti con altri pacchetti Python, non è strettamente necessaria. Puoi usare anche altri strumenti per ambienti virtuali come venv o virtualenv.


