DeepSeek su MAC

I LLMs (Large Language Models) hanno ricevuto un'attenzione fortissima in questi ultimi anni perche' consentono di utilizzare le funzioni generative dell'AI (Artificial Intelligence: intelligenza artificiale) ottenendo risultati in precedenza non immaginabili.
DeepSeek In questa paginetta vedremo come installare ed utilizzare su MacOS, in modo semplice e veloce, uno dei piu' recenti LLM: DeepSeek. Eseguiremo l'installazione con Homebrew ed ogni componente sara' installato in locale, quindi l'AI verra' eseguita sul Mac.

Per rendere piu' interessante la paginetta inizieremo subito con l'installazione e proveremo ad utilizzare l'LLM con un chatbot! Solo alla fine riporteremo qualche noioso dettaglio tecnico in piu'...

Ho fretta!

So gia' tutto ed ho fretta! Allora ecco i passi:

brew install chatbox brew install ollama ollama serve & ollama run deepseek-r1:8b

Ora basta lanciare l'applicazione Chatbox, configurare nei Settings Model Provider: OLLAMA API, API Host: http://127.0.0.1:11434, Model: deepseek-r1:8b, ed iniziare a chattare!

Installazione

I componenti che dobbiamo installare sono:

Per l'installazione utilizziamo Homebrew che e' un gestore di pacchetti Open Source per Mac. In alternativa e' possibile scaricare i programmi dai siti ufficiali ma... cosi' e' molto piu' comodo.
Iniziamo ad installare Ollama ed a caricare DeepSeek R1.

# Installazione di Ollama brew install ollama ==> Downloading https://formulae.brew.sh/api/formula.jws.json ==> Downloading https://formulae.brew.sh/api/cask.jws.json Warning: Treating ollama as a formula. For the cask, use homebrew/cask/ollama or specify the `--cask` flag. To silence this message, use the `--formula` flag. ==> Downloading https://ghcr.io/v2/homebrew/core/ollama/manifests/0.5.7 ############################################################################################################################# 100.0% ==> Fetching ollama ==> Downloading https://ghcr.io/v2/homebrew/core/ollama/blobs/sha256:dd37facc87ba11d7bcd58f814b8e22f47dddf852b74d95d804f539274d8770a ############################################################################################################################# 100.0% ==> Pouring ollama--0.5.7.arm64_sonoma.bottle.tar.gz ==> Caveats To start ollama now and restart at login: brew services start ollama Or, if you don't want/need a background service you can just run: /opt/homebrew/opt/ollama/bin/ollama serve ==> Summary 🍺 /opt/homebrew/Cellar/ollama/0.5.7: 8 files, 24.2MB # Avvio di Ollama come servizio brew services start ollama # Esecuzione del modello LLM DeepSeek in Ollama (richiede alcuni minuti) ollama pull deepseek-r1:8b pulling manifest pulling 6340dc3229b0... 100% β–•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– 4.9 GB pulling 369ca498f347... 100% β–•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– 387 B pulling 6e4c38e1172f... 100% β–•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– 1.1 KB pulling f4d24e9138dd... 100% β–•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– 148 B pulling 0cb05c6e4e02... 100% β–•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– 487 B verifying sha256 digest writing manifest success # Controllo su quanto caricato: ollama list NAME ID SIZE MODIFIED deepseek-r1:8b 28f8fd6cdc67 4.9 GB 13 minutes ago

Ollama e' un ambiente di semplice utilizzo per gestire ed utilizzare gli LLM. Tra i comandi piu' utili: ollama ps, ollama list, ollama show deepseek-r1:8b, ollama run model, ollama create model, ...
Ora installiamo l'applicazione Chatbox per interfacciarci al modello AI:

# Installazione di Chatbox brew install catbox

Chatbox icon Dobbiamo configurare Chatbox per farlo accedere al modello locale; lanciata l'applicazione, l'impostazione si esegue nei Settings: Chatbox Setting

Utilizziamo la porta 11434, che e' la porta di default di Ollama per l'interfaccia API REST, e quindi scegliamo il modello che abbiamo appena caricato.

Gia' fatto!

Utilizzo

Tutti i componenti sono installati ed ora possiamo iniziare ad utilizzarli.

L'utilizzo di Chatbox e' molto semplice: Chatbox Home

In pratica si fa una domanda e DeepSeek risponde!

Il modello viene eseguito localmente con tutti i vantaggi sulla privacy dei dati e sull'assenza di filtri. Naturalmente non vi sono chiavi di accesso da richiedere o costi sul numero di domande effettuate. Per le elaborazioni vengono usate le CPU/GPU del Mac. Il vantaggio dell'architettura Apple e' che utilizza una memoria unificata, quindi le GPU a bordo dei processori Silicon Mx struttano la stessa memoria del sistema e non e' necessario acquistare schede grafiche dedicate. Questo consente di utilizzare modelli di discrete dimensioni anche su un PC normale.
Con Ollama e' possibile controllare l'uso della CPU/GPU:

ollama ps NAME ID SIZE PROCESSOR UNTIL deepseek-r1:8b 28f8fd6cdc67 7.0 GB 100% GPU 4 minutes from now

Dopo un po' di prove con domande generali sono rimasto molto colpito dalla conoscenza a 360o in tutte le materie, dall'utilizzo del contesto e dalle linee di ragionamento di DeepSeek.
L'italiano non e' perfetto ed entrando nei dettagli le competenze a volte sono imprecise o fantasiose, ma abbiamo anche utilizzato un modello limitato (solo 8B).

Quindi sono passato ad un compito specifico: scrivere il programma di un gioco. DeepSeek e' stato bravo, con le poche indicazioni fornite DeepSeek ha scelto di utilizzare JavaScript ed ha prodotto in pochi secondi un gioco funzionante: DeepSeek generated game

Ho corretto un paio di inesattezze (eg. alcune scritte in inglese, un timeout troppo veloce), ma DeepSeek aveva commesso un errore molto grave...
  la carbonara non si fa con il pomodoro! 😂

Utilizzo (serio)

Disporre di un Large Language Model (LLM) in locale tramite Ollama, con modelli come Deepseek, Llama 3 o Mistral, apre un ventaglio di applicazioni professionali e serie che vanno ben oltre la semplice conversazione con un bot. Il vantaggio fondamentale risiede nella privacy assoluta e nel controllo totale dei dati, poiche' nessuna informazione lascia il proprio computer e nessuna censura e' inserita alle sue risposte. Questo, unito alla possibilita' di personalizzazione e all'assenza di costi per l'utilizzo, rende gli LLM locali strumenti potenti per le aziende.

Tra gli usi principali:

Certo bisogna imparare un po' di cose, sopratutto per fare le scelte giuste sui modelli e sui parametri, ma usare direttamente un LLM in un programma non e' poi cosi' difficile come potrebbe sembrare a prima vista.
Questo e' un programma di 3 righe in Python che usa un LLM DeepSeek su Ollama:

import ollama

response = ollama.chat(model='deepseek-coder:6.7b', messages=[{ "role": "user","content": "Scrivi un programma che dice tre volte: Ti amo!" }])
print(response['message']['content'])

Introduzione

L'introduzione alla fine? Certo!

DeepSeek DeepSeek offre diversi modelli LLMs. DeepSeek R1 e' il modello che abbiamo utilizzato in questa paginetta nella versione 8B, ma e' disponibile in dimensioni diverse da 1,5 a 70 miliardi di parametri; DeepSeek R1 e' adatto al ragionamento logico ed e' disponibile su GitHub. DeepSeek V3 e' il modello piu' potente e versatile: ha 671 miliardi di parametri (37 miliardi attivi per ogni elaborazione), comprende diverse lingue e ha performances confrontabili con i piu' sofisticati LLM attuali quali Qwen2.5, Llama3.1, Claude-3.5, GPT-4o. DeepSeek Coder e' orientato alla programmazione ed e' disponibile in versioni da 1,3 a 33 miliardi di parametri. DeepSeek Janus-Pro, che nella versione piu' ampia ha 7 miliardi di parametri, e' invece utilizzato per la produzione di immagini. DeepSeek e' anche utilizzabile con APP per Mobile e con un Chatbot sul web.
Le API DeepSeek utilizzano un formato compatibile con OpenAI e per DeepSeek v3 utilizzato in Cloud e' riportato il miglior rapporto qualita'/prezzo. In generale le performance di DeepSeek sono confrontabili con quelle dei piu' avanzati LLMs commerciali ma DeekSeek e' Open Source e puo' essere scaricato ed eseguito on-premises. L'evoluzione e la conconcorrenza sull'AI sono sempre piu' forti!

Cosa ne penso?
Gentlemen, you had my curiosity but now you have my Attention.

Varie ed eventuali

Volete eseguire le installazioni manualmente? Nessun problema, ecco i link: Ollama, Chatbox.

Prima dello sviluppo delle AI generative avevo scritto una paginetta sui Chatbot che erano nettamente piu' limitati degli attuali.


Titolo: DeepSeek su Mac
Livello: Avanzato (3/5)
Data: 27 Gennaio 2025
Versione: 1.0.1 - 1 Aprile 2025
Autore: mail [AT] meo.bogliolo.name