Blog / Tutoriales / Despliegue de Text Generation WebUI en un GPU VPS
(last updated: )

Despliegue de Text Generation WebUI en un GPU VPS

Despliega Text Generation WebUI en un GPU VPS: clona el repositorio, carga un modelo y accede a la interfaz web mediante un túnel SSH. También puedes activar la API compatible con OpenAI y calcular la VRAM necesaria.

Lectura de 10 min
Deploying Text Generation WebUI on a GPU VPS (head image)

En resumen. Text Generation WebUI es una interfaz web de código abierto para ejecutar modelos de lenguaje grandes en hardware bajo tu control. En un GPU VPS, te ofrece un chat privado y una API respaldada por una GPU NVIDIA dedicada. Clona el repositorio, ejecuta el script de inicio, carga un modelo y abre la interfaz mediante un túnel SSH. Es una buena opción para desarrolladores y equipos pequeños que quieren alojar sus propios LLM.

Iniciar un modelo de lenguaje local toma pocos minutos. Usarlo desde una terminal se vuelve tedioso pronto, porque cada cambio en una plantilla de prompt o un ajuste exige editar parámetros y reiniciar el proceso. Text Generation WebUI coloca una interfaz web delante del modelo para que puedas cargarlo y configurarlo desde una pestaña.

Esta guía explica qué ofrece la herramienta, cómo configurarla en un GPU VPS y para qué usuarios resulta adecuada. Primero, una aclaración sobre el nombre: el proyecto, creado por el desarrollador conocido como oobabooga, ahora se llama TextGen. La antigua dirección de GitHub redirige al repositorio oobabooga/textgen. Los tutoriales anteriores usan el nombre y los comandos previos. Consulta el README del repositorio si algún paso difiere de lo que aparece en tu pantalla.

¿Qué ofrece Text Generation WebUI?

Text Generation WebUI es una interfaz web basada en Gradio para ejecutar modelos de lenguaje grandes (LLM) de forma local. Reúne chat, generación de texto libre y una API compatible con OpenAI en una sola aplicación. Funciona sin telemetría ni llamadas externas, por lo que tus prompts y documentos permanecen en el servidor donde la despliegues.

La interfaz se organiza en pestañas. La pestaña Chat gestiona conversaciones, incluidos personajes personalizados y plantillas para seguir instrucciones. La pestaña Notebook permite que el modelo continúe cualquier texto sin turnos de chat, algo útil para redactar y probar prompts. Los parámetros de muestreo y las opciones de generación están en la interfaz, así que puedes cambiar el comportamiento del modelo sin modificar un archivo de configuración. También puedes adjuntar archivos de texto, PDF y documentos de Word para hacer preguntas sobre su contenido.

La diferencia frente a un servidor de API básico es que la interfaz y la API comparten el mismo modelo cargado. Un servidor de inferencia básico responde solicitudes y nada más. Aquí puedes probar un prompt en el navegador y después conectar tu propia aplicación a la misma instancia cuando el resultado sea el esperado. La API expone endpoints de Chat y Completions compatibles con OpenAI, incluida la llamada a herramientas. Por lo general, el código escrito para la API de OpenAI solo necesita cambiar la URL base.

La tercera diferencia es la posibilidad de ampliarla. Las extensiones agregan funciones como texto a voz, entrada por voz y traducción, además de muchas otras mantenidas por la comunidad. La herramienta también carga modelos mediante varios backends, incluidos llama.cpp, Transformers y ExLlamaV3. Esta elección importa en un servidor con GPU, porque el formato y la cuantización del modelo determinan cuánta VRAM necesita y qué tan rápido responde.

¿Cómo configurar Text Generation WebUI en un GPU VPS?

Configura Text Generation WebUI en un GPU VPS en cinco pasos: comprueba la GPU, clona el repositorio y ejecuta el script de inicio, carga un modelo, abre la interfaz mediante un túnel SSH y activa la API si la necesitas. En Contabo, los GPU VPS incluyen Ubuntu 24.04 con CUDA y nvidia-container-toolkit preinstalados. Así puedes omitir la instalación de drivers y CUDA que normalmente requieren primero los servidores con GPU.

  1. Conéctate a tu GPU VPS mediante SSH y confirma que la GPU esté visible. Al ejecutar nvidia-smi, deben aparecer la tarjeta NVIDIA y su VRAM.
  2. Clona el repositorio y ejecuta el script de inicio. Cuando pregunte qué proveedor de GPU usas, selecciona NVIDIA. El script crea un entorno Conda independiente en una carpeta llamada installer_files, sin modificar el Python del sistema. La instalación requiere unos 10 GB de espacio en disco.
  3. Carga un modelo. En la pestaña Model, descarga un modelo de Hugging Face, selecciónalo, elige un loader y cárgalo. Para modelos GGUF en hardware NVIDIA, el loader coloca automáticamente las capas en la GPU.
  4. Abre la interfaz mediante un túnel SSH. La interfaz web escucha en el puerto 7860 y se vincula de forma predeterminada a la máquina local. Reenvía ese puerto a tu computadora y ábrelo desde el navegador.
  5. Activa la API si la necesitas. Agrega --api a user_data/CMD_FLAGS.txt y reinicia el servidor. La API escucha de forma predeterminada en el puerto 5000, separado de la interfaz web del puerto 7860, por lo que necesita su propia ruta de acceso. Reenvía el puerto 5000 mediante el mismo túnel SSH y envía solicitudes con el formato de OpenAI a http://127.0.0.1:5000/v1 desde tu computadora.

Una compilación portátil es otra opción si solo planeas ejecutar modelos GGUF. Descarga una versión, descomprímela y ejecútala, sin tener que administrar un entorno Conda. Las compilaciones portátiles recientes abren una ventana de escritorio nativa. En un servidor sin interfaz gráfica, usa --listen o --nowebui para ejecutar el servidor directamente. Los demás formatos de modelos y las extensiones requieren la instalación indicada aquí.

En el servidor, los pasos 1 y 2 se ven así:

nvidia-smi
git clone https://github.com/oobabooga/textgen
cd textgen
./start_linux.sh

En tu computadora, los pasos 4 y 5 se ven así. Sustituye user y YOUR_SERVER_IP por tu usuario y la dirección del servidor:

ssh -L 7860:127.0.0.1:7860 -L 5000:127.0.0.1:5000 user@YOUR_SERVER_IP

Con el túnel abierto, visita http://127.0.0.1:7860 en tu navegador local. La interfaz se carga como si se ejecutara en tu computadora, mientras el modelo funciona en el GPU VPS.

Mantener el servidor activo y actualizado

El servidor se detiene cuando termina tu sesión SSH, a menos que lo desacoples. Inícialo dentro de tmux o screen. También puedes ejecutar el script de inicio mediante un servicio systemd si quieres que continúe después de reiniciar. Para actualizar la instalación más adelante, ejecuta update_wizard_linux.sh desde la misma carpeta.

Por qué usar un túnel en lugar de abrir el puerto

Iniciar el servidor con --listen permite acceder a él desde la red. Por ese motivo, las versiones recientes restringen de forma predeterminada el acceso entre orígenes (CORS) a localhost. Un túnel mantiene la interfaz completamente fuera de internet público, una opción más segura para una herramienta que no debe quedar expuesta sin control de acceso. Si necesitas acceso directo para un equipo, abre el puerto 7860 y, si la API está activa, el puerto 5000 con el Firewall de Contabo desde el Customer Control Panel. Permite conexiones solo desde tus propias IP de origen. Para la API, configura también una clave con --api-key. Si colocas un proxy inverso delante, agrega ambos puertos a su configuración.

¿Cuánta VRAM necesitas?

La VRAM determina qué modelos puedes cargar, no solo la velocidad a la que se ejecutan. En una tarjeta de 96 GB, los pesos de un modelo con 70,000 millones de parámetros y precisión FP8 ocupan cerca de 70 GB, lo que deja margen para el contexto. La cuantización a 4 bits reduce aún más los pesos, mientras que un modelo de 7,000 millones de parámetros necesita una fracción de esa memoria. La longitud del contexto también consume VRAM porque el caché crece con cada token de la conversación. Si la carga falla por falta de memoria, reduce el tamaño del contexto antes de cambiar a un modelo más pequeño. Empieza con un modelo GGUF cuantizado, revisa el uso de memoria con nvidia-smi y aumenta el tamaño desde ahí. El disco NVMe de 900 GB de un GPU VPS ofrece espacio para una biblioteca considerable, ya que un solo archivo de modelo grande puede ocupar decenas de gigabytes.

¿Para quién es adecuada esta configuración?

Esta configuración sirve para desarrolladores y equipos pequeños que quieren un LLM privado accesible desde el navegador. Puedes ajustarlo, probarlo y llamarlo desde tu propio código sin enviar prompts a una API de terceros. Hay cuatro situaciones donde resulta especialmente útil.

La primera es evaluar prompts y modelos. La interfaz permite comparar rápidamente modelos, loaders y ajustes de muestreo en el mismo hardware. Después puedes incorporar la configuración elegida a una aplicación mediante la API.

La segunda es crear prototipos con información privada. Si los documentos, el código fuente o los textos de clientes no pueden salir de la infraestructura bajo tu control, una instancia alojada por ti y sin telemetría elimina una categoría de riesgo.

La tercera es crear un asistente interno para un grupo pequeño. Varios colegas pueden compartir una instancia mediante un túnel o una regla de firewall. El sistema de extensiones también admite entrada por voz y traducción si el equipo las necesita.

La cuarta es usarlo como backend de tu propia aplicación. La API compatible con OpenAI permite que un cliente existente se comunique con un modelo alojado por ti, una opción adecuada para desarrollo y producción de bajo volumen.

En Contabo, el GPU VPS combina una NVIDIA RTX PRO 6000 dedicada con 96 GB de VRAM GDDR7, 18 vCPU, 96 GB de RAM y 900 GB de almacenamiento NVMe. La GPU se asigna por completo a tu servidor en lugar de ofrecerse como un recurso compartido o fraccionado. Como el precio es fijo, un mes de experimentos cuesta lo mismo que un mes sin actividad.

Esa tarifa fija también es la principal desventaja. Si ejecutas un modelo pequeño durante pocas horas a la semana, la facturación por hora de un proveedor de pago por uso puede costar menos. Un GPU VPS resulta rentable cuando usas el servidor con frecuencia. También está diseñado alrededor de una sola GPU, por lo que no es adecuado para entrenamientos con varias GPU ni para atender a muchos usuarios simultáneos a escala de producción.

Preguntas frecuentes sobre Text Generation WebUI

¿Text Generation WebUI es fácil de usar para principiantes?

Text Generation WebUI es fácil de usar para quienes se sienten cómodos trabajando con una terminal. El script de inicio crea el entorno de Python por ti, y la interfaz usa pestañas y botones en lugar de archivos de configuración. La mayoría de los principiantes dedica su tiempo a elegir un modelo y un loader adecuados para su VRAM. Las compilaciones portátiles reducen aún más la configuración de modelos GGUF, ya que solo tienes que descargar, descomprimir y ejecutar.

¿Text Generation WebUI necesita una GPU?

Text Generation WebUI no necesita una GPU. Los modelos GGUF se ejecutan mediante llama.cpp, que puede funcionar en una CPU. Una GPU acelera mucho las respuestas y permite cargar modelos más grandes porque los pesos se guardan en VRAM en lugar de la RAM del sistema. En un GPU VPS alojado en Contabo, la tarjeta NVIDIA dedicada se encarga de esa aceleración.

¿Varias personas pueden usar una instancia de Text Generation WebUI?

Varias personas pueden usar una instancia de Text Generation WebUI, aunque existen límites. Todas comparten un modelo cargado y una GPU. La API procesa solicitudes en paralelo de forma predeterminada con ExLlamaV3 y mediante el parámetro `–parallel N` con llama.cpp. El parámetro `–multi-user` evita que los historiales de chat se guarden entre sesiones. Mantén la instancia detrás de túneles SSH, una VPN o una regla de firewall.

¿Qué formatos de modelos admite Text Generation WebUI?

Text Generation WebUI admite varios formatos de modelos mediante backends separados. Los modelos GGUF se cargan mediante llama.cpp, y las compilaciones portátiles admiten ese formato. Los modelos Transformers de precisión completa y las cuantizaciones EXL3 mediante ExLlamaV3 requieren la instalación estándar. Elige el formato según la VRAM disponible, ya que el formato y la cuantización determinan cuánta memoria necesita un modelo.

¿Cómo mantienes privado Text Generation WebUI en un GPU VPS?

Mantén privado Text Generation WebUI vinculándolo a la máquina local y accede mediante un túnel SSH en el puerto 7860, además del puerto 5000 si la API está activa. Evita el parámetro `–listen` salvo que necesites acceso desde la red. Si lo activas, abre el puerto 7860 con el Firewall de Contabo desde el Customer Control Panel y permite solo tus propias IP de origen.

Compartir 𝕏 in