Generador de imágenes IA autoalojado: hardware real
Comprueba qué puedes ejecutar con CPU, por qué SDXL tarda 10-20 minutos por imagen, cómo instalar ComfyUI y cuánto espacio requiere un modelo de 6.94 GB.
Qué necesita realmente un generador de imágenes con IA autoalojado
Un generador de imágenes con IA autoalojado consta de una aplicación web y un archivo de modelo. La aplicación es ComfyUI y se ejecuta en cualquier servidor Linux. El modelo determina el hardware necesario. Un checkpoint de la clase SDXL ocupa 6.94 GB en un solo archivo y necesita permanecer en la memoria de la GPU. Este hecho determina todo el presupuesto, así que revise la escala de hardware siguiente antes de contratar recursos.
El resumen es claro: un VPS que sólo use CPU puede instalar y ofrecer el software, y puede generar imágenes de 512x512 con un modelo antiguo de Stable Diffusion 1.5 en uno o dos minutos por imagen. El mismo servidor, al ejecutar SDXL a 1024x1024, tarda de diez a veinte minutos por imagen. No se trata de una instalación defectuosa. Es una cuestión de cálculo, y esta guía lo explica.
El tamaño del modelo determina la máquina
La generación de imágenes ejecuta un bucle de eliminación de ruido. Una generación de 30 pasos ejecuta el denoiser, el UNet de SDXL, sobre la imagen 30 veces, y cada pasada lee todos los pesos del UNet. Los dos codificadores de texto se ejecutan una vez antes del bucle y el VAE decodifica una vez después, por lo que no forman parte del coste de cada paso. El UNet de SDXL en precisión media ocupa 5.14 GB de pesos, así que, en esta simplificación, una generación de 30 pasos mueve aproximadamente 154 GB de pesos a través de la memoria antes de mostrar una imagen, y los tensores intermedios añaden más carga.
Una GPU con 24 GB de memoria de vídeo (VRAM, la memoria soldada junto al chip gráfico) lee a cientos de gigabytes por segundo y puede mantener los 6.9 GB completos al mismo tiempo. Una VPS con CPU lee la RAM del sistema a decenas de gigabytes por segundo y no dispone de hardware matricial para las convoluciones, por lo que el mismo bucle se ejecuta entre uno y dos órdenes de magnitud más despacio. Este es el mismo argumento basado en el ancho de banda de memoria que rige los modelos de texto, y conviene leerlo junto con cuándo merece realmente la pena una VPS con GPU.
La generación de imágenes se diferencia de la generación de texto en un aspecto importante. Un modelo de chat transmite tokens, por lo que una máquina lenta sigue siendo utilizable porque las palabras aparecen mientras se leen. Una imagen sólo aparece cuando termina el último paso. Si es lento, tendrá que mirar una barra de progreso.
La escala de hardware, con cifras reales
El bloque siguiente contiene cifras habituales para una imagen SDXL de 1024x1024, con 30 pasos y el sampler Euler, a fecha de julio de 2026. Tómalas como órdenes de magnitud. El sampler, el número de pasos y la resolución pueden modificarlas.
Los datos de este gráfico
[
{
"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 fila de CPU indica 780 segundos, aproximadamente trece minutos. La tarjeta de 24 GB tarda 9 segundos. Esa es la diferencia que se obtiene al subir de una opción a otra.
Interpreta la escala de esta forma. Por debajo de 8 GB de VRAM, SDXL sigue funcionando porque ComfyUI gestiona conjuntamente la VRAM y la RAM del sistema y descarga automáticamente los pesos del modelo. A fecha de octubre de 2026, el README del proyecto establece como mínimo 4 GB de VRAM y 8 GB de RAM del sistema mediante su transmisión asíncrona de pesos. La descarga de pesos añade tiempo en cada paso, por lo que una tarjeta de 6 GB tarda más cerca de un minuto por imagen que de treinta segundos. Con 8 GB cabe el modelo base y la generación funciona con comodidad. Con 12 GB puedes mantener un ControlNet o dos junto al checkpoint sin descargar pesos. Con 24 GB puedes ejecutar SDXL, el refiner y el escalado en un solo flujo de trabajo, y entrenar adaptadores LoRA con margen suficiente. El entrenamiento requiere menos memoria: la guía de entrenamiento de SDXL para el entrenador kohya-ss sd-scripts indica que el entrenamiento de LoRA puede realizarse con 8 GB de memoria de GPU, aunque recomienda 10 GB. Para conseguirlo, indica que se entrene sólo la U-Net, que se active el gradient checkpointing, que se almacenen en caché las salidas del codificador de texto y los latentes, que se use un optimizador de 8 bits o Adafactor y que se reduzca la dimensión de LoRA a 4 a 8 en una tarjeta de 8 GB. La guía de LoRA para la GUI kohya_ss, que integra esos scripts, es más prudente: indica que se use una GPU con al menos 12 GB de memoria para el entrenamiento de LoRA.
Qué puede y qué no puede hacer un VPS con CPU
Puede hacer más de lo que muchos esperan y menos de lo que sugiere el marketing. Es importante establecer el límite con precisión.
Un VPS con CPU puede instalar ComfyUI, servir la interfaz web, almacenar la biblioteca de modelos, ejecutar la cola y generar imágenes sin ninguna GPU. Con Stable Diffusion 1.5 a 512x512 y 20 pasos, espere aproximadamente entre 60 y 150 segundos por imagen en 8 vCPU modernas con 16 GB de RAM. Para un trabajo por lotes que se ejecute durante la noche o para un endpoint de imágenes de poco volumen detrás de una cola, el rendimiento es suficiente.
Un VPS con CPU no permite trabajar de forma interactiva. Iterar sobre un prompt implica generar veinte imágenes en una hora; a trece minutos por imagen, sólo obtendrá cuatro. Tampoco permite entrenar modelos. El ajuste fino de LoRA en CPU se mide en días, no en horas, así que debe considerarlo no disponible.
La regla de memoria para usar sólo CPU es distinta de la regla para GPU. Los pesos se cargan en la RAM del sistema, por lo que necesita el tamaño del modelo más espacio de trabajo: aproximadamente 16 GB de RAM para SDXL y aproximadamente 8 GB para SD 1.5. Una máquina con 4 GB iniciará ComfyUI y después el out-of-memory killer terminará el proceso durante la primera generación; esto aparece como la desaparición del proceso con Killed en dmesg y sin traceback de Python.
Instalar ComfyUI en una máquina con GPU
Estos son los comandos del proyecto original. Empiece con una instalación limpia de Ubuntu 24.04 y con el controlador de NVIDIA ya instalado. Compruebe primero el controlador, porque sin esta verificación todos los fallos posteriores parecen iguales.
nvidia-smiDebe mostrar una tabla con su tarjeta y una versión de CUDA. command not found o NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver significa que falta el controlador o que el módulo del kernel no se cargó después de una actualización. Corrija ese problema antes de continuar, porque ComfyUI cambiará silenciosamente a la CPU y atribuirá el problema 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.txtEl entorno virtual no es una recomendación opcional. PyTorch instala un árbol grande de dependencias, y hacerlo de forma global en un equipo que ejecuta otros servicios puede romperlos. Compruebe que PyTorch pueda detectar la tarjeta antes de continuar.
python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"True seguido del nombre de su tarjeta significa que la pila funciona. False significa que el wheel instalado no coincide con el controlador, normalmente porque ya había un wheel de torch sólo para CPU en la caché. Reinstálelo con la URL del índice anterior.
Obtenga un modelo y planifique el almacenamiento
ComfyUI no incluye pesos. Los checkpoints se guardan en models/checkpoints, los archivos VAE en models/vae y los adaptadores LoRA en models/loras.
cd ~/ComfyUI/models/checkpoints
wget https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensorsPrefiera siempre .safetensors frente a .ckpt. Un archivo .ckpt es un objeto Python serializado con pickle, y al cargarlo se ejecuta código de quien lo creó. El formato safetensors sólo contiene tensores, por lo que un archivo malicioso no puede ejecutar nada.
El almacenamiento es un coste que suele olvidarse. Un checkpoint base de SDXL ocupa 6.94 GB. El refiner ocupa otros 6 GB. Un modelo SDXL ControlNet ocupa desde 320 MB para el modelo Canny pequeño hasta 2.5 GB para el modelo completo con precisión de 16 bits. Un upscaler ocupa poco: el modelo estándar Real-ESRGAN x4plus ocupa 67 MB, su modelo anime ocupa 17.9 MB y su modelo de vídeo anime ocupa 2.5 MB. Un LoRA ocupa desde decenas de megabytes hasta 787 MB en el caso de los adaptadores Hyper-SDXL de ByteDance. Si este uso le resulta útil, descargará un segundo y un tercer modelo base en menos de una semana. Reserve 100 GB de disco para una instalación operativa y supervise también el directorio de salida: los archivos PNG de 1024x1024 ocupan entre 1 y 2 MB cada uno, y un lote sin supervisión puede llenar silenciosamente un disco pequeño. Coloque models/ y output/ en un volumen que pueda ampliar y haga copias de seguridad de los archivos JSON de los flujos de trabajo con algo como copias de seguridad incrementales cifradas en almacenamiento de objetos. Los pesos se pueden volver a descargar. Los flujos de trabajo que ajustó no.
Ejecútelo y acceda de forma segura
cd ~/ComfyUI
. venv/bin/activate
python main.py --listen 127.0.0.1 --port 8188ComfyUI escucha en el puerto 8188. En un equipo que sólo tenga CPU, añada --cpu. Esta opción fuerza la ruta de CPU y evita que falle al no encontrar un dispositivo CUDA.
Vincúlelo a 127.0.0.1, no a 0.0.0.0. ComfyUI ya tiene cuentas, pero ninguna protege su servidor. El inicio de sesión de Settings, en la sección User, autentica al usuario en una cuenta de Comfy y funciona desde una instalación local: la documentación de Comfy indica que se puede iniciar sesión mediante correo electrónico, Google, GitHub y una API key. La documentación describe esa cuenta como el acceso a los nodos de partners y a las suscripciones de Comfy Cloud. No la presenta como un mecanismo para proteger con contraseña su propio servidor. La opción --multi-user sólo habilita el almacenamiento por usuario: en octubre de 2026, el servidor toma el nombre de usuario de una cabecera de solicitud comfy-user y no comprueba ninguna contraseña. Cualquiera que pueda llegar al puerto puede poner trabajos en cola, leer todas las imágenes que haya generado y, si lo inició con --enable-manager, instalar custom nodes, lo que permite ejecutar código arbitrario en el servidor. Acceda a él mediante un túnel SSH desde su portátil.
ssh -N -L 8188:127.0.0.1:8188 you@your-serverA continuación, abra http://127.0.0.1:8188 localmente. Si necesita acceso real para varios usuarios, coloque delante un reverse proxy con autenticación y mantenga la aplicación vinculada a localhost. El mismo razonamiento se aplica a cualquier servicio autoalojado sin autenticación. Es el patrón estándar en implementaciones de Docker Compose en un VPS.
Mantenerlo en ejecución con systemd
Una cola de renderizado que termina cuando se cierra la sesión SSH no es un servicio. Ejecútela con un usuario comfy sin inicio de sesión, no con su propia cuenta: los nodos personalizados son código y no deben ejecutarse con acceso al directorio personal. Cree el usuario y mueva la instalación a su directorio personal:
sudo useradd --system --create-home --home-dir /home/comfy --shell /usr/sbin/nologin comfy
sudo mv ~/ComfyUI /home/comfy/
sudo chown -R comfy:comfy /home/comfy/ComfyUIEl entorno virtual sigue funcionando después del traslado porque la unidad llama directamente a python. Después, escriba /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) y una línea de registro que contenga To see the GUI go to: http://127.0.0.1:8188 indican que está en ejecución. Tenga en cuenta que ExecStart especifica directamente el intérprete dentro del entorno virtual, porque systemd no ejecuta el perfil del shell y activate nunca se ejecuta.
La recomendación práctica según el presupuesto
Si quiere probar la generación de imágenes y el coste importa más que la velocidad, elija un VPS con CPU y 16 GB de RAM, ejecute SD 1.5 a 512x512 y acepte tardar uno o dos minutos por imagen. Este es el punto de entrada realista y cuesta una fracción de cualquier opción con GPU. También es el lugar adecuado para alojar la biblioteca de modelos y los flujos de trabajo mientras decide.
Si itera sobre prompts a diario, alquile por horas una GPU con al menos 12 GB de VRAM en un proveedor de GPU cloud y apáguela cuando termine. La generación de imágenes es un trabajo de carga intermitente, y mantener una GPU inactiva con facturación mensual es la forma más habitual de gastar de más en este caso. Mantenga los checkpoints en un almacenamiento de bloques económico y móntelos.
Si presta servicio a otras personas o entrena adaptadores LoRA con frecuencia, planifique 24 GB de VRAM y una máquina que mantenga activa. La guía de SDXL de sd-scripts indica que el entrenamiento de LoRA puede realizarse con 8 GB y recomienda 10 GB mediante sus ajustes de ahorro de memoria. La guía de LoRA de la GUI de kohya_ss solicita al menos 12 GB. La cifra de 24 GB de la guía de sd-scripts corresponde al fine-tuning completo de SDXL con un batch size de 1. Por tanto, una tarjeta de 24 GB cubre el trabajo con LoRA y mantiene el fine-tuning dentro de lo posible. En ese punto, la misma máquina suele justificar su coste al ejecutar también un modelo de lenguaje local. Esta es la configuración descrita en alojar un LLM con Ollama.
Elija el nivel que elija, mida su propia máquina antes de dar por válida cualquier cifra publicada. Ponga el mismo prompt en cola cinco veces y lea los segundos por iteración que ComfyUI muestra en su consola. Esa cifra indica su posición real en la escala.
FAQ
¿Puedo ejecutar Stable Diffusion sin una GPU?
Sí. ComfyUI se ejecuta con python main.py --cpu y genera imágenes reales sin una tarjeta gráfica. En Stable Diffusion 1.5 a 512x512, espere aproximadamente entre 60 y 150 segundos por imagen, y entre diez y veinte minutos para SDXL a 1024x1024, con 8 vCPU modernas. Esto sirve para lotes nocturnos y endpoints de bajo volumen. No sirve para iterar prompts y el entrenamiento queda completamente fuera de alcance.
¿Cuánta VRAM necesito para SDXL?
Con 8 GB, SDXL funciona correctamente a 1024x1024. Por debajo de esa cantidad, ComfyUI descarga automáticamente los pesos del modelo en la RAM del sistema y sigue funcionando. En octubre de 2026, su README indica un mínimo de 4 GB de VRAM y 8 GB de RAM del sistema. Cada paso descargado a la RAM aumenta el tiempo de ejecución. Con 12 GB puede mantener un ControlNet junto al checkpoint. Con 24 GB puede ejecutar el modelo base, el refiner y el escalado en un solo flujo de trabajo. La guía sd-scripts de kohya-ss indica que el entrenamiento de LoRA para SDXL puede realizarse con 8 GB, y recomienda 10 GB, si usa sus ajustes para ahorrar memoria. La guía de LoRA de la GUI de kohya_ss solicita al menos 12 GB. El ajuste fino completo de SDXL necesita 24 GB con un tamaño de lote de 1.
¿Cuánto espacio en disco necesitan los modelos?
El checkpoint base de SDXL ocupa 6.94 GB por sí solo y el refiner añade aproximadamente 6 GB más. Los modelos ControlNet de SDXL ocupan entre 320 MB y 2.5 GB cada uno con precisión media. Los adaptadores LoRA ocupan desde decenas de megabytes hasta 787 MB. Los escaladores Real-ESRGAN ocupan entre 2.5 MB y 67 MB. Reserve 100 GB para una instalación funcional con varios modelos base. Controle el directorio de salida por separado, ya que los archivos PNG de 1024x1024 ocupan entre 1 y 2 MB cada uno.
¿Es seguro exponer ComfyUI en Internet público?
No. El inicio de sesión de la cuenta de Comfy en la configuración de ComfyUI funciona desde una instalación local, pero proporciona acceso a los nodos asociados y a las suscripciones en la nube de Comfy. Ningún documento de Comfy lo presenta como protección para el servidor. La opción --multi-user sólo separa el almacenamiento por usuario sin comprobar ninguna contraseña. Con ComfyUI-Manager habilitado, la interfaz instala nodos personalizados. Estos nodos son código Python que se ejecuta en el servidor, por lo que un puerto abierto permite la ejecución remota de código. Enlácelo a 127.0.0.1, acceda mediante un túnel SSH con ssh -N -L 8188:127.0.0.1:8188 you@your-server y coloque delante un reverse proxy con autenticación si más de una persona necesita acceder.
¿Por qué se terminó mi renderizado sin mostrar ningún mensaje de error?
Si el proceso desaparece con Killed en dmesg y no aparece ningún traceback de Python, se trata del terminador de procesos por falta de memoria de Linux, no de un error de ComfyUI. En un servidor que sólo usa CPU, los pesos se almacenan en la RAM del sistema. Por eso, SDXL necesita aproximadamente 16 GB y SD 1.5 unos 8 GB, además del espacio de trabajo. Añada RAM, añada swap o cambie a un modelo más pequeño y a una resolución inferior.