Punti chiave
- Le esecuzioni locali richiedono RAM o VRAM sufficienti per il file quantizzato più la finestra di contesto.
- Ollama è l'avvio più veloce; llama.cpp offre più controllo su quantizzazione e flag.
- Entrambi espongono un server in stile OpenAI, quindi lo stesso codice client può puntare al locale o all'ospitato.
- Un endpoint ospitato costa $0,15 per 1M di token di input e $0,50 per 1M di token di output e richiede minuti per essere configurato.
Decidi prima: che hardware hai?
La memoria decide tutto. Un modello linguistico è un insieme molto grande di numeri e l'intero insieme deve risiedere in una memoria veloce durante la generazione. La quantizzazione riduce questi numeri. Un modello quantizzato a 4 bit occupa circa mezzo byte per parametro, quindi un modello con 8 miliardi di parametri occupa circa 5 GB e uno con 70 miliardi circa 40 GB. Considera queste cifre come approssimative, poiché la dimensione esatta dipende dal formato di quantizzazione.
Oltre ai pesi, serve spazio per la finestra di contesto. Cresce con la lunghezza del prompt, quindi una lunga cronologia di roleplay o un documento grande costano più memoria di una domanda breve. Prevedi qualche gigabyte extra per contesti modesti, di più se spingi verso prompt lunghi.
- Portatile da 8 GB senza GPU: solo modelli piccoli, output lento.
- Mac Apple Silicon da 16 a 32 GB: modelli di medie dimensioni funzionano bene perché CPU e GPU condividono la memoria.
- GPU consumer singola con 12-24 GB VRAM: modelli di medie dimensioni a buona velocità.
- Qualsiasi cosa più grande: più GPU o un server in affitto.
Metodo 1: Ollama in pochi comandi
Ollama è la strada più breve. Scarica un modello quantizzato, avvia un server in background e ti offre un prompt di chat. Installalo dal sito ufficiale per il tuo sistema operativo, quindi controlla quali tag Dolphin la libreria Ollama elenca attualmente, perché nomi e dimensioni cambiano tra le release.
# replace <tag> with a Dolphin tag from the Ollama library
ollama pull <tag>
ollama run <tag>
Il primo comando scarica il file, che può richiedere un po' di tempo su una connessione lenta. Il secondo apre una chat interattiva nel terminale. Ollama serve anche un'API HTTP sulla tua macchina, inclusa una rotta in stile OpenAI sotto /v1, così altri programmi possono usarla.
Se la generazione è molto lenta, il modello probabilmente non è entrato nella VRAM e parte gira sulla CPU. Scegli un tag più piccolo o una quantizzazione a bit più bassi.
Metodo 2: llama.cpp per maggiore controllo
llama.cpp è il motore C++ su cui sono costruite molte altre utility. Scarichi un file GGUF del modello, poi avvii il suo server. Richiede più passaggi di Ollama ma ti permette di impostare la lunghezza del contesto, il numero di strati posizionati sulla GPU e la quantizzazione desiderata.
# after building llama.cpp and downloading a GGUF file
llama-server -m ./model.gguf -c 8192 -ngl 99 --port 8080
Qui -c imposta la lunghezza del contesto, -ngl imposta quanti strati vanno alla GPU e --port sceglie la porta. Controlla il README del progetto per i flag nella tua versione, poiché evolvono. Un -c più grande usa più memoria, quindi aumentalo solo quando ne hai bisogno.
Per l'uso grafico, interfacce come Open WebUI possono comunicare con entrambi i server. La nostra nota sugli endpoint API di Open WebUI mostra come aggiungere un endpoint personalizzato.
Chiamare il tuo server locale dal codice
Entrambi gli strumenti possono parlare il formato di chat OpenAI, quindi scrivi il client una volta e cambi il target con due impostazioni. Questo script tiene entrambi i target affiancati. Quello locale usa la porta che Ollama usa di default; cambiala se hai avviato llama.cpp su 8080.
from openai import OpenAI
TARGETS = {
"local": {"base_url": "http://localhost:11434/v1", "key": "not-needed", "model": "your-local-tag"},
"hosted": {"base_url": "https://api.dolphinllm.com/v1", "key": "YOUR_KEY", "model": "uncensored"},
}
t = TARGETS["hosted"]
client = OpenAI(base_url=t["base_url"], api_key=t["key"])
resp = client.chat.completions.create(
model=t["model"],
messages=[{"role": "user", "content": "Summarize what a GGUF file is."}],
)
print(resp.choices[0].message.content)
I server locali di solito ignorano la chiave, ma l'SDK richiede una stringa non vuota. Il nome del modello per un server locale è il tag o l'alias che hai caricato, mentre l'ID del modello ospitato è sempre uncensored.
Metodo 3: salta la configurazione e usa un endpoint ospitato
Se i calcoli hardware sono sfavorevoli o vuoi lo stesso comportamento su ogni macchina, un endpoint ospitato è più semplice. Questo servizio fornisce un modello a pesi aperti, gestito da un provider indipendente e ottimizzato per rispondere senza rifiuti di contenuti per uso adulto legale. Non è l'API ufficiale di alcun fornitore di modelli e non ti permette di scegliere altri modelli. Quello che ottieni è un URL stabile, una chiave e una fatturazione a token.
I passaggi sono brevi. Iscriviti con Google o con email e password, apri la pagina delle chiavi API e richiedi il credito di prova da $0,50 con un clic. Non serve la carta, è valido per 7 giorni ed è limitato a uno per persona. Poi esegui lo script Python sopra con il target ospitato. Se preferisci curl:
curl https://api.dolphinllm.com/v1/chat/completions -H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" -d '{"model":"uncensored","messages":[{"role":"user","content":"Hello"}],"stream":false}'
La finestra di contesto è di 100.000 token, che è più di quanto la maggior parte dei portatili possa tenere comodamente in cache. I prompt non sono usati per l'addestramento.
Costo e sforzo confrontati
Il locale sembra gratuito, ma non lo è. Paghi per hardware, elettricità e il tuo tempo. L'ospitato costa denaro per richiesta, ma le cifre sono piccole. A $0,15 per 1M di token di input e $0,50 per 1M di token di output, un turno di chat con 3.000 token di input e 700 token di output costa:
- Input: 3.000 x $0,15 / 1.000.000 = $0,00045
- Output: 700 x $0,50 / 1.000.000 = $0,00035
- Totale: $0,0008 per turno, quindi $0,80 per 1.000 turni
Anche un utente pesante che invia 5.000 di questi turni in un mese spenderebbe circa $4. Una GPU che costa centinaia di dollari impiegherebbe anni per ammortizzare quel volume. Il confronto si inverte quando hai un volume continuo elevato, necessiti di un fine-tune specifico o non puoi inviare dati fuori dalla tua macchina.
I dettagli completi sui prezzi, inclusi i bonus di ricarica del +5%, +10% e +15%, sono nella pagina dei prezzi, e la documentazione copre limiti e parametri.
Una regola semplice per scegliere
Esegui localmente se vuoi sperimentare con molti fine-tune, lavorare offline o tenere ogni prompt sul tuo disco. Usa l'endpoint ospitato se stai costruendo qualcosa che altri useranno, se il tuo hardware è modesto o se vuoi un lungo contesto da 100.000 token senza gestire la memoria. Molti sviluppatori fanno entrambe le cose: un modello locale per esperimenti privati e un endpoint ospitato per tutto ciò che deve rimanere attivo. Poiché il codice client è lo stesso, il cambio costa una riga.

