Generatore AI self-hosted: requisiti hardware reali
Scopri cosa può fare un VPS CPU, quanta GPU richiede SDXL, i comandi per installare ComfyUI e lo spazio necessario per il checkpoint da 6,94 GB.
Cosa serve davvero a un generatore di immagini AI self-hosted
Un generatore di immagini AI self-hosted è costituito da una sola applicazione web e da un solo file di modello. L’applicazione è ComfyUI e può essere eseguita su qualsiasi sistema Linux. Il modello determina l’hardware necessario. Un checkpoint della classe SDXL è un singolo file da 6.94 GB e deve risiedere nella memoria della GPU. Questo unico requisito determina l’intero budget, quindi consulta la scaletta hardware seguente prima di noleggiare qualsiasi risorsa.
La sintesi corretta è questa: un VPS con la sola CPU può installare ed eseguire il software e può generare immagini a 512x512 usando un modello Stable Diffusion 1.5 meno recente, in uno o due minuti per immagine. Lo stesso server, eseguendo SDXL a 1024x1024, impiega da dieci a venti minuti per immagine. Non si tratta di una configurazione guasta. È una conseguenza dei calcoli, spiegata in questa guida.
Perché la dimensione del modello determina la macchina
La generazione di immagini esegue un ciclo di denoising. Un rendering di 30 passaggi applica il modello completo all'immagine 30 volte e, a ogni passaggio, legge tutti i pesi. SDXL in half precision occupa circa 6.9 GB di pesi, quindi un rendering di 30 passaggi trasferisce circa 200 GB attraverso la memoria prima di mostrare l'immagine.
Una GPU con 24 GB di memoria video (VRAM, la memoria saldata accanto al chip grafico) legge a centinaia di gigabyte al secondo e contiene contemporaneamente tutti i 6.9 GB. Una CPU VPS legge la RAM di sistema a decine di gigabyte al secondo e non dispone di hardware per le operazioni matriciali delle convoluzioni; di conseguenza, lo stesso ciclo richiede da 1 a 2 ordini di grandezza in più. È lo stesso principio basato sulla larghezza di banda della memoria che determina le prestazioni dei modelli testuali. Conviene leggerlo insieme a quando una VPS con GPU vale davvero il costo.
La generazione di immagini differisce dalla generazione di testo sotto un aspetto importante. Un modello conversazionale trasmette i token in streaming, quindi una macchina lenta resta utilizzabile perché le parole compaiono mentre si legge. Un'immagine compare soltanto quando termina l'ultimo passaggio. Se l'elaborazione è lenta, si resta a guardare una barra di avanzamento.
La scala dell’hardware, con numeri reali
Il blocco seguente riporta valori tipici per un’immagine SDXL a 1024x1024, 30 passaggi, con sampler Euler, aggiornati a luglio 2026. Considerali come ordini di grandezza. Il sampler, il numero di passaggi e la risoluzione possono modificarli.
The data behind this chart
[
{
"label": "8 vCPU VPS, no GPU",
"seconds_per_image": 780
},
{
"label": "8GB VRAM GPU",
"seconds_per_image": 32
},
{
"label": "12GB VRAM GPU",
"seconds_per_image": 18
},
{
"label": "24GB VRAM GPU",
"seconds_per_image": 9
}
]La riga della CPU indica 780 secondi, cioè circa tredici minuti. La scheda da 24 GB impiega 9 secondi. È questa la differenza che stai acquistando.
Interpreta la scala nel modo seguente. Con meno di 8 GB di VRAM, SDXL continua a funzionare perché ComfyUI trasferisce automaticamente i layer nella RAM di sistema e può utilizzare anche una scheda con appena 1 GB. Il trasferimento nella RAM di sistema aggiunge tempo a ogni passaggio, quindi una scheda da 6 GB impiega più probabilmente circa un minuto per immagine che trenta secondi. Con 8 GB il modello base entra in memoria e il rendering procede senza difficoltà. Con 12 GB puoi mantenere in memoria un ControlNet o due insieme al checkpoint, senza trasferimenti nella RAM di sistema. Con 24 GB puoi eseguire SDXL, il refiner e l’upscaling nello stesso workflow, oltre a iniziare l’addestramento di adapter LoRA, che richiede molta più memoria della generazione.
Cosa può e non può fare un VPS con CPU
Può fare più di quanto ci si aspetti, ma meno di quanto lasci intendere il marketing. È importante definire con precisione questo limite.
Un VPS con CPU può installare ComfyUI, pubblicare l'interfaccia web, ospitare la libreria dei modelli, gestire la coda e generare immagini senza alcuna GPU. Con Stable Diffusion 1.5 a 512x512 e 20 passaggi, su 8 vCPU moderne con 16 GB di RAM, una generazione richiede circa 60-150 secondi. Per un processo batch eseguito durante la notte o per un endpoint di generazione a basso volume protetto da una coda, è una configurazione adeguata.
Un VPS con CPU non è adatto al lavoro interattivo. Iterare sui prompt significa eseguire 20 rendering in un'ora, ma con 13 minuti per immagine se ne ottengono soltanto 4. Non è adatto neppure all'addestramento. Il fine-tuning LoRA su CPU richiede giorni, non ore, quindi va considerato non disponibile.
La regola sulla memoria per l'esecuzione con la sola CPU è diversa da quella per la GPU. I pesi vengono caricati nella RAM di sistema, quindi servono le dimensioni del modello più lo spazio di lavoro: circa 16 GB di RAM per SDXL e circa 8 GB per SD 1.5. Un sistema con 4 GB avvierà ComfyUI, ma il killer per esaurimento della memoria terminerà il processo durante il primo rendering. Il processo scompare con Killed in dmesg e non viene prodotto alcun traceback Python.
Installare ComfyUI su una macchina con GPU
Questi sono i comandi upstream. Partire da un'installazione pulita di Ubuntu 24.04 con il driver NVIDIA già installato. Verificare prima il driver, perché senza questo controllo tutti gli errori successivi sembrano uguali.
nvidia-smiIl comando deve stampare una tabella con la scheda e una versione di CUDA. command not found o NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver indica che il driver manca oppure che il modulo del kernel non è stato caricato dopo un aggiornamento. Risolvere il problema prima di continuare, perché ComfyUI passerà silenziosamente alla CPU e si potrebbe attribuire l'errore al software.
sudo apt update
sudo apt install -y git python3-venv python3-pip wget
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
python3 -m venv venv
. venv/bin/activate
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu130
pip install -r requirements.txtL'ambiente virtuale non è facoltativo. PyTorch installa un albero di dipendenze ampio; installarlo a livello di sistema su un server che esegue anche altri servizi può causare il malfunzionamento di questi ultimi. Verificare che PyTorch rilevi la scheda prima di procedere.
python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"True seguito dal nome della scheda indica che lo stack funziona. False indica che il wheel installato non è compatibile con il driver, in genere perché nella cache era già presente un wheel di torch per la sola CPU. Reinstallare usando l'index URL riportato sopra.
Scaricare un modello e pianificare lo spazio su disco
ComfyUI non include alcun weights. I checkpoint vanno in models/checkpoints, i file VAE in models/vae e gli adattatori LoRA in models/loras.
cd ~/ComfyUI/models/checkpoints
wget https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensorsPreferire sempre .safetensors a .ckpt. Un file .ckpt è un oggetto Python sottoposto a pickle e il caricamento esegue codice proveniente da chi lo ha creato. Il formato safetensors contiene solo tensori, quindi un file ostile non può eseguire codice.
Lo spazio di archiviazione è un costo che spesso viene trascurato. Un checkpoint base SDXL occupa 6.94 GB. Il refiner richiede altri 6 GB. Un singolo modello ControlNet occupa da 1.4 a 2.5 GB, un upscaler da 60 a 350 MB e una LoRA da 20 a 400 MB. Chi usa regolarmente questi strumenti scarica un secondo e un terzo modello base entro una settimana. Prevedere 100 GB di spazio su disco per un'installazione operativa e monitorare anche la directory degli output: i file PNG 1024x1024 occupano da 1 a 2 MB ciascuno e un batch non sorvegliato può riempire silenziosamente un disco di piccole dimensioni. Collocare models/ e output/ su un volume espandibile e creare copie di backup dei file JSON dei workflow con soluzioni come backup incrementali crittografati su object storage. I weights possono essere scaricati di nuovo. I workflow ottimizzati non possono essere ricreati con la stessa facilità.
Eseguirlo e raggiungerlo in sicurezza
cd ~/ComfyUI
. venv/bin/activate
python main.py --listen 127.0.0.1 --port 8188ComfyUI è in ascolto sulla porta 8188. Su un server con sola CPU, aggiungi --cpu, che forza l'uso della CPU invece di terminare con un errore perché il dispositivo CUDA non è disponibile.
Esegui il binding su 127.0.0.1, non su 0.0.0.0. ComfyUI non dispone di una schermata di accesso né di account utente. Chiunque raggiunga la porta può accodare processi, leggere tutte le immagini generate e installare custom node, eseguendo codice arbitrario sul server. Raggiungilo invece tramite un tunnel SSH dal laptop.
ssh -N -L 8188:127.0.0.1:8188 you@your-serverQuindi apri http://127.0.0.1:8188 localmente. Se ti serve un accesso reale multiutente, configura un reverse proxy con autenticazione davanti all'applicazione e mantieni il binding su localhost. Lo stesso principio si applica a qualsiasi servizio self-hosted senza autenticazione ed è il modello standard nelle distribuzioni Docker Compose su un VPS.
Eseguilo sotto systemd
Una coda di rendering che si arresta quando chiudi la sessione SSH non è un servizio. Scrivi /etc/systemd/system/comfyui.service.
[Unit]
Description=ComfyUI
After=network-online.target
[Service]
User=comfy
WorkingDirectory=/home/comfy/ComfyUI
ExecStart=/home/comfy/ComfyUI/venv/bin/python main.py --listen 127.0.0.1 --port 8188
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now comfyui
systemctl status comfyuiactive (running) e una riga di log con To see the GUI go to: http://127.0.0.1:8188 indicano che il servizio è attivo. Nota che ExecStart specifica direttamente l'interprete all'interno dell'ambiente virtuale, perché systemd non esegue il profilo della shell e activate non viene mai eseguito.
La raccomandazione pragmatica in base al budget
Se vuoi provare la generazione di immagini e il costo è più importante della velocità, scegli un VPS con CPU e 16 GB di RAM, esegui SD 1.5 a 512x512 e accetta un tempo di uno o due minuti per immagine. Questo è il punto di ingresso realistico e costa una frazione rispetto a qualsiasi soluzione con una GPU. È anche il posto adatto per ospitare la libreria dei modelli e i workflow mentre valuti la configurazione.
Se modifichi i prompt ogni giorno, noleggia a ore una GPU con almeno 12 GB di VRAM presso un cloud GPU e arrestala quando hai finito. La generazione di immagini è un'attività discontinua e lasciare una GPU inattiva con fatturazione mensile è il modo più comune per spendere troppo in questo ambito. Conserva i checkpoint su uno storage a blocchi economico e montali.
Se offri il servizio ad altre persone o addestri adapter LoRA, ti servono 24 GB di VRAM e una macchina da mantenere attiva. A quel punto, lo stesso server di solito giustifica il costo eseguendo anche un modello linguistico locale, come nella configurazione descritta in self-hosting di un LLM con Ollama.
Qualunque livello tu scelga, misura la tua macchina prima di considerare attendibili i dati pubblicati. Inserisci lo stesso prompt in coda cinque volte e leggi i secondi per iterazione che ComfyUI stampa nella console. Questo valore indica la tua posizione reale nella scala delle configurazioni.
FAQ
Posso eseguire Stable Diffusion senza una GPU?
Sì. ComfyUI funziona con python main.py --cpu e genera immagini reali anche senza una scheda grafica. Con 8 vCPU moderne, per Stable Diffusion 1.5 a 512x512 sono necessari circa 60-150 secondi per immagine, mentre SDXL a 1024x1024 richiede da dieci a venti minuti. Questa configurazione è adatta ai batch notturni e agli endpoint a basso volume. Non è adatta all'iterazione dei prompt e rende di fatto impossibile il training.
Quanta VRAM serve per SDXL?
8 GB consentono di eseguire SDXL senza problemi a 1024x1024. Al di sotto di questa capacità, ComfyUI trasferisce automaticamente i layer nella RAM di sistema e continua a funzionare fino a circa 1 GB di VRAM, ma ogni passaggio trasferito aumenta i tempi di esecuzione. 12 GB permettono di mantenere un ControlNet insieme al checkpoint; 24 GB sono sufficienti per usare base, refiner e upscaling nello stesso workflow e rappresentano il minimo pratico per il training degli adapter LoRA.
Quanto spazio su disco richiedono i modelli?
Il solo checkpoint base di SDXL occupa 6.94 GB e il refiner aggiunge circa 6 GB. I modelli ControlNet occupano da 1.4 a 2.5 GB ciascuno, gli adapter LoRA da 20 a 400 MB e gli upscaler fino a 350 MB. Prevedi 100 GB per un'installazione operativa con alcuni modelli base. Monitora separatamente la directory di output, perché i file PNG a 1024x1024 occupano da 1 a 2 MB ciascuno.
È sicuro esporre ComfyUI su Internet?
No. ComfyUI non dispone di alcun tipo di autenticazione e il sistema dei custom node installa ed esegue codice Python dall'interfaccia. Una porta esposta equivale quindi all'esecuzione di codice da remoto sul server. Associalo a 127.0.0.1, raggiungilo tramite un tunnel SSH con ssh -N -L 8188:127.0.0.1:8188 you@your-server e configura davanti a ComfyUI un reverse proxy con autenticazione se devono accedervi più persone.
Perché il rendering è stato terminato senza messaggi di errore?
Se il processo scompare con Killed in dmesg e non compare alcun traceback Python, la causa è l'out-of-memory killer di Linux, non un bug di ComfyUI. Su un sistema che usa solo la CPU, i pesi risiedono nella RAM di sistema. Sono quindi necessari circa 16 GB per SDXL e circa 8 GB per SD 1.5, oltre alla memoria di lavoro. Aggiungi RAM, aggiungi swap oppure usa un modello più piccolo e una risoluzione inferiore.