Punti chiave
- Il miglior modello locale è quello più grande che entra nella tua VRAM a una velocità utilizzabile, non quello con la migliore reputazione.
- Ollama espone un endpoint compatibile con OpenAI sulla tua macchina, quindi lo stesso codice client funziona sia in locale che ospitato.
- Il locale offre privacy e uso offline; l'ospitato offre un modello più grande, nessun hardware e nessuna configurazione.
- Offriamo solo un endpoint ospitato: non c'è download del modello da questo servizio.
Risposta breve: scegli in base alla memoria, poi testa due o tre
Non esiste un modello migliore in assoluto, perché il limite è il tuo hardware. Un modello deve entrare nella memoria della GPU (o nella RAM di sistema, molto più lentamente) insieme alla sua cache di lavoro. La regola pratica è semplice: trova il modello più grande che entra comodamente nella tua memoria e risponde ancora a una velocità che puoi sopportare, poi confronta due o tre candidati con i tuoi prompt.
I nomi dei modelli e le classifiche cambiano ogni poche settimane, quindi qualsiasi lista scritta oggi invecchia in fretta. Salta le classifiche e usa un metodo breve: sfoglia la libreria Ollama e i caricamenti della community, filtra per modelli descritti come uncensored, abliterated o ottimizzati per il roleplay, scarica uno piccolo e uno di medie dimensioni, ed esegui gli stessi dieci prompt su entrambi. I tuoi prompt ti dicono più di un punteggio su un benchmark altrui.
Se dopo questo scopri che i modelli che entrano nella tua macchina sono troppo piccoli per la qualità che vuoi, un endpoint ospitato è l'alternativa. Il resto di questa pagina illustra il compromesso in modo che tu possa decidere con i numeri.
Come dimensionare un modello per la tua macchina
Tre numeri decidono cosa funziona bene: conteggio dei parametri, quantizzazione e lunghezza del contesto.
Parametri e quantizzazione
Un modello con più parametri scrive in genere meglio, segue le istruzioni in modo più affidabile e mantiene un carattere più a lungo. Ma i parametri occupano memoria. Alla precisione completa a 16 bit un modello richiede circa due byte per parametro, quindi un modello da 7B necessita di circa 14 GB prima di qualsiasi cache. La quantizzazione riduce questa quantità. Una versione a 4 bit richiede circa mezzo byte per parametro, quindi lo stesso modello da 7B entra in circa 4-5 GB. La qualità cala un po' a ogni passaggio verso il basso, e la perdita è di solito piccola a 4-5 bit e più evidente al di sotto di questo livello.
Lunghezza del contesto
La finestra di contesto costa anche memoria, perché il modello memorizza una cache di tutto ciò che avviene nella conversazione. Una sessione di roleplay lunga o una storia con molto testo precedente richiede una cache più grande. Ollama ti permette di impostare la dimensione del contesto per modello, e un valore maggiore usa più memoria e rallenta la generazione. Molte configurazioni locali funzionano con una finestra di qualche migliaio di token per restare veloci, il che significa che il modello dimentica l'inizio delle chat lunghe.
Velocità
Se un modello fuoriesce dalla memoria della GPU nella RAM di sistema, la generazione può passare da un ritmo di lettura piacevole a una parola alla volta. Un modello più piccolo che entra interamente nella GPU spesso funziona meglio di uno più grande che non ci entra, anche se quello più grande scrive leggermente meglio.
Eseguire un modello in Ollama e chiamarlo dal codice
Una volta installato Ollama, il download e la conversazione richiedono due comandi, e il nome esatto del modello proviene dalla pagina della libreria che hai scelto:
ollama pull MODEL_NAME
ollama run MODEL_NAME
Ollama offre anche un'API compatibile con OpenAI sulla tua macchina, di default a http://localhost:11434/v1. Questo significa che lo stesso codice client può parlare con un modello locale o con uno ospitato, e lo cambi modificando l'URL di base e il nome del modello:
from openai import OpenAI
# Local Ollama (the key is ignored but must be non-empty)
local = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
# Hosted endpoint
hosted = OpenAI(base_url="https://api.ornith.top/v1", api_key="YOUR_API_KEY")
def ask(client, model, text):
r = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": text}],
)
return r.choices[0].message.content
prompt = "Write a tense two-paragraph scene set in an abandoned lighthouse."
print(ask(local, "MODEL_NAME", prompt))
print(ask(hosted, "uncensored", prompt))
Eseguire entrambi sugli stessi prompt è il modo più veloce per rispondere alla domanda per il tuo caso specifico. Se l'output locale è abbastanza buono, hai finito e ti costa elettricità. Se non lo è, hai una linea di base su cosa potresti guadagnare.
Ollama locale contro un'API ospitata
Nessuno dei due è migliore in ogni caso. Questa tabella si attiene a ciò che è strutturalmente vero di ciascun approccio.
| Punto | Locale con Ollama | API Ospitata |
|---|---|---|
| Costo iniziale | La tua GPU o una macchina con RAM sufficiente | Nessuno; credito prepagato da $20 |
| Costo di esercizio | Elettricità e il tuo tempo | $0,15 per 1M di token di input, $0,50 per 1M di token di output |
| Dimensioni del modello | Limitato dalla tua memoria | Un modello scelto dal provider |
| Funziona offline | Sì | No, serve connessione internet |
| I dati escono dalla tua macchina | No | Sì, i prompt vanno al provider; i nostri non sono usati per l'addestramento |
| Scelta del modello | Qualsiasi cosa tu possa scaricare | Solo quello offerto |
| Richieste concorrenti | Vincolato dall'hardware | Fino a 8 richieste concorrenti con una chiave completa |
| Configurazione | Installa, scarica, regola le impostazioni | Cambia un URL di base e una chiave |
Il locale vince su privacy, uso offline e libertà di scelta. Se il tuo testo non deve mai lasciare la tua macchina, o vuoi cambiare modello settimanalmente, esegui in locale. Un'API in hosting vince sul tempo di configurazione, sul non occupare la tua GPU mentre lavori, e sul servire un'app con diversi utenti contemporaneamente.
È anche corretto dire cosa non offriamo. Questo servizio è solo un endpoint ospitato. Non c'è un file del modello da scaricare, nessun fine-tuning e nessun modo per portare i tuoi pesi. Se vuoi possedere il modello, Ollama è lo strumento giusto, e la nostra guida LLM API open source descrive l'insieme più ampio di opzioni.
Quanto costa l'ospitato, spiegato nei dettagli
Le persone spesso assumono che un modello ospitato sia costoso rispetto all'esecuzione locale gratuita. Il locale non è gratuito una volta che conti l'hardware, ma il confronto è più facile con un utilizzo concreto. I prezzi qui sono $0,15 per 1M di token di input e $0,50 per 1M di token di output.
- Roleplay casuale, 100 messaggi al giorno. Immagina che ogni turno invii 3.000 token di cronologia e riceva indietro 300 token. Input per turno: 3.000 a $0,15 per 1M sono $0,00045. Output: 300 a $0,50 per 1M sono $0,00015. Questo è $0,0006 per turno, $0,06 per 100 turni, circa $1,80 in 30 giorni.
- Un progetto di scrittura. 5M di token di input e 1M di token di output in un mese sono $0,75 più $0,50, quindi $1,25.
- Un'app piccola. 200M di input e 40M di token di output al mese sono $30 più $20, quindi $50.
Solo tu puoi calcolare il costo della tua GPU, ma un uso leggero e medio costa molto poco in hosting. Il ricarico minimo di $20 copre un lungo periodo ai primi due livelli, e il credito non scade mai, quindi non svanirà se ti prendi un mese di pausa. Ricariche più grandi comportano un bonus: 5% da $50, 10% da $100, 15% da $200. I dettagli completi sono nella pagina dei prezzi.
Un modo sensato per combinare entrambi
Non devi scegliere una volta per tutte. Molte persone eseguono un modello locale piccolo per bozze rapide e note private, e inviano i lavori più lunghi o più impegnativi a un endpoint ospitato. Poiché entrambi parlano il formato OpenAI, la tua app può tenere due oggetti client e instradare per attività, come nel codice sopra.
Quando testi il lato ospitato, i nuovi utenti possono richiedere $0,50 di credito di prova con un clic sulla pagina della chiave API, senza carta, uno per persona, valido per 7 giorni. Alle cifre per turno sopra, questo sono centinaia di turni di roleplay, sufficienti per confrontare con il tuo miglior modello locale su prompt identici. Puoi creare una chiave API dopo aver effettuato l'accesso con Google o con email e password. La documentazione API elenca parametri come temperature, top_p, stop e seed, che vengono trasmessi, così le tue impostazioni di campionamento locali vengono mantenute.
Alcuni limiti da pianificare. Una chiave di prova permette 2 richieste parallele e 60 richieste al minuto; una chiave completa permette 8 e 300. La finestra di contesto è di 100.000 token, molto più grande di quanto la maggior parte delle configurazioni locali gestisca comodamente. E l'unica regola che non varia con nessuna impostazione: il modello è per uso adulto legale e non produrrà contenuti sessuali che coinvolgono minori.
