«Far girare un'IA» copre due esigenze che non richiedono la stessa taglia di server. Un'applicazione che chiama un modello tramite API si dimensiona come qualsiasi applicazione web; un modello eseguito sul server stesso si dimensiona prima di tutto in base alla sua memoria. Questa guida separa i due casi, dà l'ingombro dei modelli più diffusi e il modo di calcolarlo.
La maggior parte delle applicazioni che «usano l'IA» (assistenti, agenti, riassunti, estrazione di dati, ricerca nei documenti) chiama un modello ospitato dal suo fornitore, tramite un'API. Il calcolo avviene da lui; il vostro server prepara la richiesta, attende la risposta e la elabora. Si dimensiona quindi come qualsiasi applicazione web: in base al linguaggio, al database e al numero di utenti simultanei.
L'altro caso è il modello eseguito sul server stesso, con Ollama, llama.cpp o una libreria Python. Le ragioni sono note: dati che restano sulla vostra infrastruttura, un costo fisso qualunque sia il numero di richieste, un'elaborazione in background su grandi volumi, un modello specializzato. Qui il modello intero deve stare in memoria, ed è lui a decidere la taglia.
| Che cosa fa il server | La risorsa che decide | Punto di partenza |
|---|---|---|
| Chiama un modello tramite API (assistente, agente, chatbot) | La memoria dell'applicazione | 2 vCPU, 4 GB |
| Calcola anche gli embedding e interroga un database vettoriale (pgvector) | La memoria dei vettori e del loro indice | Da 2 a 4 vCPU, da 6 a 8 GB |
| Esegue un piccolo modello da 1 a 4 miliardi di parametri, in background | La memoria, poi il processore | 4 vCPU, 8 GB |
| Esegue un modello da 7 a 8 miliardi di parametri per pochi utenti | La memoria e la sua banda | Da 6 a 8 vCPU, 16 GB |
| Esegue un modello da 12 a 14 miliardi di parametri, con un contesto lungo | La memoria | 8 vCPU, 24 GB |
Una richiesta a un modello tramite API dura da uno a diverse decine di secondi, soprattutto quando la risposta viene trasmessa man mano che si forma (streaming). In quel tempo, il vostro server non calcola quasi nulla: attende. Ciò che conta è la sua capacità di tenere molte richieste in attesa senza bloccare le altre:
proxy_read_timeout).La memoria da prevedere è quella dell'applicazione e del suo database: 4 GB coprono un'applicazione Python o Node.js con PostgreSQL al lancio. Una configurazione comune, un'interfaccia Next.js, un'API FastAPI e un database PostgreSQL che chiamano un modello tramite API, sta tra 6 e 8 GB, compilazione dell'interfaccia compresa.
Un'applicazione che cerca nei vostri documenti (RAG, retrieval-augmented generation) trasforma ogni passaggio in un vettore, poi ritrova i più vicini a una domanda. Due voci da dimensionare:
Il tipo halfvec di pgvector memorizza ogni dimensione su 2 byte invece di 4: metà della memoria, per una qualità di ricerca che resta molto vicina.
Un modello linguistico è un file di pesi, caricato per intero in memoria per rispondere. La sua dimensione dipende dal numero di parametri e dalla quantizzazione, la precisione con cui è memorizzato ogni peso. Il formato GGUF, quello di llama.cpp e di Ollama, propone quantizzazioni da 2 a 16 bit; la variante Q4_K_M, intorno ai 4 bit, è il compromesso più comune tra dimensione e qualità.
| Dimensione del modello | Esempi | 4 bit (Q4_K_M) | 8 bit (Q8_0) | 16 bit |
|---|---|---|---|---|
| Da 1 a 3 miliardi di parametri | Llama 3.2 3B, Qwen2.5 3B | Da 1 a 2 GB | Da 1,3 a 3,5 GB | Da 2,5 a 6,5 GB |
| Da 7 a 8 miliardi | Mistral 7B, Llama 3.1 8B, Qwen2.5 7B | Da 4,4 a 5 GB | Da 7,7 a 8,5 GB | Da 14,5 a 16 GB |
| Da 12 a 14 miliardi | Mistral Nemo 12B, Qwen2.5 14B | Da 7,5 a 9 GB | Da 13 a 16 GB | Da 25 a 30 GB |
| 32 miliardi | Qwen2.5 32B | Circa 20 GB | Circa 35 GB | Circa 65 GB |
| 70 miliardi | Llama 3.3 70B | Circa 43 GB | Circa 75 GB | Circa 140 GB |
A questo peso si aggiungono due voci:
Esempio. Llama 3.1 8B a 4 bit, due conversazioni simultanee da 8.000 token e una piccola applicazione: 5 GB di modello, 2 GB di contesto, 2 GB per l'applicazione e il sistema, cioè 9 GB, e circa 12 GB con il 25% di margine.
Per produrre ogni token, il modello rilegge l'insieme dei suoi pesi in memoria. Su processore, la velocità di generazione è quindi limitata dalla banda di memoria più che dal numero di core: un modello da 5 GB, su una macchina che legge 25 GB al secondo, si ferma intorno ai 5 token al secondo, prima ancora di contare il calcolo.
Si distinguono due fasi:
In pratica, su qualche vCPU, un modello da 7 a 8 miliardi di parametri quantizzato a 4 bit produce qualche token al secondo. È comodo per un'elaborazione in background (classificare messaggi, estrarre campi da un documento, riassumere di notte ciò che è arrivato di giorno) e per un assistente interno. Gli usi interattivi su larga scala, e i modelli da diverse decine di miliardi di parametri, girano su scheda grafica (GPU).
La misura decide: llama-bench, fornito con llama.cpp, dà la velocità delle due fasi sul vostro server, per il vostro modello.
llama-bench -m modello-Q4_K_M.gguf -p 512 -n 128
Un modello occupa su disco più o meno quanto occupa in memoria: 5 GB per un modello da 8 miliardi di parametri a 4 bit. Contate spazio per due o tre modelli o versioni, gli indici vettoriali, i documenti sorgente e il database. Un SSD NVMe carica un modello in pochi secondi all'avvio del servizio, e questo conta a ogni riavvio.
Ordine di grandezza: 50 GB per un'applicazione che chiama un modello tramite API, da 80 a 120 GB appena un modello e i suoi documenti vivono sul server.
Con Ollama, l'avvio sta in due comandi:
curl -fsSL https://ollama.com/install.sh | sh
ollama run llama3.1:8b
Ollama ascolta per impostazione predefinita su 127.0.0.1:11434, cioè solo dal server stesso. Mantenete questa impostazione: la sua API non richiede alcuna autenticazione, e un'istanza aperta su Internet serve chiunque, con le vostre risorse. La vostra applicazione, sullo stesso server, gli parla in locale; se un altro server deve interrogarlo, passate da un proxy che autentica le richieste o da una rete privata.
Regolate poi la dimensione del contesto (num_ctx) su ciò di cui le vostre richieste hanno bisogno: è lei a far crescere la memoria occupata, conversazione dopo conversazione.
Il VPS Pro gira su processori Intel Xeon, memoria ECC e SSD NVMe in mirroring, con l'accesso root per installare Ollama, llama.cpp, pgvector o il vostro stack. L'Assistenza integrale è compresa: descriveteci il vostro progetto, API o modello sul server, e vi consigliamo la taglia; poi a ogni domanda facciamo la diagnosi e vi indichiamo che cosa fare, dal sistema fino al codice della vostra applicazione.
Sì. llama.cpp e Ollama eseguono modelli quantizzati su processore. Un modello da 7 a 8 miliardi di parametri a 4 bit richiede circa 5 GB di memoria e produce qualche token al secondo su qualche vCPU, il che va bene per le elaborazioni in background e per gli assistenti interni.
Circa 5 GB per il modello quantizzato a 4 bit (Q4_K_M), più 1 GB per ogni conversazione da 8.000 token, più l'applicazione e il sistema. Un server da 8 GB fa girare il modello da solo; 16 GB lasciano spazio all'applicazione, al database e a più conversazioni.
L'API dà accesso ai modelli più potenti, senza un server particolare, con un costo per richiesta. Il modello sul server tiene i dati da voi e rende fisso il costo, con un modello più compatto. Molte applicazioni combinano le due cose: embedding e classificazione sul server, redazione tramite API.
Circa 50 GB per un'applicazione che chiama un modello tramite API. Appena un modello vive sul server, prevedete da 80 a 120 GB: un modello da 8 miliardi di parametri a 4 bit pesa 5 GB, e spesso se ne tengono più versioni, con i documenti e i loro indici vettoriali.
Simafri
Parliamo del vostro progetto
Diteci in due parole ciò che vi serve: vi rispondiamo rapidamente.
Grazie! La tua richiesta è stata inviata. Ti risponderemo a breve.
Preferite l'email? Scriveteci a support@simafri.com.