<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>VLLM on Intellectual Guides</title><link>https://ckw19810413.github.io/es/tags/vllm/</link><description>Recent content in VLLM on Intellectual Guides</description><generator>Hugo -- gohugo.io</generator><language>es</language><lastBuildDate>Mon, 17 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ckw19810413.github.io/es/tags/vllm/index.xml" rel="self" type="application/rss+xml"/><item><title>Fábula diaria de conceptos de posgrado: Decodificación Especulativa (Speculative Decoding)</title><link>https://ckw19810413.github.io/es/blog/speculative-decoding-fable/</link><pubDate>Mon, 17 Aug 2026 00:00:00 +0000</pubDate><guid>https://ckw19810413.github.io/es/blog/speculative-decoding-fable/</guid><description>&lt;p&gt;¡Buenas noches! Aquí tienes la &amp;ldquo;Fábula diaria de conceptos de posgrado&amp;rdquo; de hoy.&lt;/p&gt;
&lt;h2 id="el-astuto-aprendiz-del-escritorio-real"&gt;El astuto aprendiz del escritorio real
&lt;/h2&gt;&lt;p&gt;En el corazón de la capital del imperio, el Escritorio Real se enfrentaba a una crisis sin precedentes.&lt;/p&gt;
&lt;p&gt;El Gran Erudito del imperio, &amp;ldquo;Baltasar&amp;rdquo;, era la única persona viva con la sabiduría suficiente para redactar el código legal sagrado. Poseía una memoria fotográfica y en su mente guardaba diez millones de textos antiguos. Sin embargo, tenía un defecto fatal: escribía demasiado despacio.&lt;/p&gt;
&lt;p&gt;El rigor del erudito rozaba la obsesión. Por cada palabra que escribía, hojeaba incontables tomos pesados en la biblioteca de su mente, deliberaba con cuidado y solo entonces posaba lentamente la palabra en el papel. Tras escribir esa palabra, reconsideraba todo lo que acababa de escribir para deducir la siguiente. Por eso, solo podía producir una palabra por minuto. El frente necesitaba con urgencia nuevos decretos, pero el erudito solo podía soltarlos palabra a palabra.&lt;/p&gt;
&lt;p&gt;En ese momento, el escritorio contaba con un joven aprendiz llamado &amp;ldquo;Leo&amp;rdquo;. El saber de Leo no se acercaba ni de lejos al del erudito —los libros que llevaba en la cabeza no llegaban ni al uno por ciento de los del erudito—, pero tenía una virtud: era rapidísimo y muy hábil para adivinar los pensamientos del erudito.&lt;/p&gt;
&lt;p&gt;Tras observar durante unos días, Leo le hizo una propuesta audaz al erudito.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Maestro, en lugar de agonizar con cada palabra desde cero, ¿por qué no cambiamos la forma de trabajar?&amp;rdquo;, dijo Leo. &amp;ldquo;Deje que sea su &amp;lsquo;redactor de borradores&amp;rsquo;. De un tirón, adivinaré las cinco palabras que probablemente escribirá a continuación y las anotaré rápidamente en una pizarra. Después, usted solo tiene que mirar la pizarra.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;El erudito frunció el ceño. &amp;ldquo;¡Absurdo! Tu saber es superficial; si las palabras que escribes son erróneas, ¡arruinarán la dignidad del código!&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Maestro, me malinterpreta&amp;rdquo;, explicó Leo con una sonrisa. &amp;ldquo;&lt;strong&gt;Concebir una palabra de la nada&lt;/strong&gt; le cuesta un enorme esfuerzo de acarrear tomos por su mente; pero &lt;strong&gt;echar un vistazo a unas palabras y juzgar si concuerdan con su intención&lt;/strong&gt; le resulta sencillísimo y rapidísimo. Si las palabras que he escrito le parecen correctas, basta con que las selle. En cuanto detecte una sola palabra que difiera de lo que tenía en mente, borre esa palabra y todo lo que la sigue, escriba usted mismo la palabra correcta, y yo retomaré las conjeturas a partir de la palabra que corrigió.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Medio dudando, el erudito accedió.&lt;/p&gt;
&lt;p&gt;Comenzó el trabajo. Leo escribió velozmente en la pizarra: &amp;ldquo;el imperio / gravará / con impuestos / al norte&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;El erudito lo recorrió con la vista y su mente completó la verificación al instante: ¡las palabras encajaban a la perfección con su hilo de pensamiento! De inmediato estampó su gran sello. Una frase que antes le habría llevado cinco minutos de agonía quedaba ahora lista en segundos.&lt;/p&gt;
&lt;p&gt;Luego Leo escribió rápidamente: &amp;ldquo;la tasa impositiva / es / al año / cincuenta / monedas / de oro&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;El erudito le echó un vistazo, frunció el ceño y señaló la cuarta palabra: &amp;ldquo;Mal. No cincuenta, sino &amp;lsquo;cien&amp;rsquo;.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;De un trazo de su pincel, el erudito borró &amp;ldquo;cincuenta / monedas / de oro&amp;rdquo; y escribió &amp;ldquo;cien&amp;rdquo; de su puño y letra.&lt;/p&gt;
&lt;p&gt;Entonces, mirando la palabra &amp;ldquo;cien&amp;rdquo;, Leo volvió a iniciar sus rápidas conjeturas y borradores.&lt;/p&gt;
&lt;p&gt;Aunque Leo a veces se equivocaba, acertaba con precisión la mayoría de las construcciones habituales. Y lo más asombroso de todo: la calidad y la redacción finales del código resultaron ser &amp;ldquo;exactamente idénticas&amp;rdquo; a las que el erudito habría logrado palabra por palabra —sin concesión alguna—, y sin embargo la velocidad global de redacción se multiplicó varias veces.&lt;/p&gt;
&lt;h2 id="la-revelación-decodificación-especulativa-speculative-decoding"&gt;La revelación: decodificación especulativa (Speculative Decoding)
&lt;/h2&gt;&lt;p&gt;Lo que describe esta historia es un algoritmo de nivel de posgrado excepcionalmente elegante y clave del campo de la aceleración de la inferencia en grandes modelos de lenguaje (LLM): la &lt;strong&gt;decodificación especulativa (Speculative Decoding)&lt;/strong&gt;. Es también una de las técnicas centrales que usan los motores de inferencia de alto rendimiento modernos (como vLLM) para superar los cuellos de botella del hardware.&lt;/p&gt;
&lt;p&gt;En la generación de texto tradicional de un LLM, el modelo debe generar de forma &lt;strong&gt;autorregresiva&lt;/strong&gt;: un token tras otro. En modelos grandes con decenas de miles de millones de parámetros (por ejemplo, la clase Qwen 35B), generar cada token requiere acarrear decenas de gigabytes de pesos desde la memoria de la GPU hasta los núcleos de cómputo. Esto hace que el cuello de botella de la inferencia en modelos grandes no sea el &lt;strong&gt;cómputo (Compute)&lt;/strong&gt;, sino el &lt;strong&gt;ancho de banda de memoria (Memory Bandwidth)&lt;/strong&gt; — igual que, en la historia, el erudito tiene que acarrear laboriosamente tomos pesados para escribir una sola palabra.&lt;/p&gt;
&lt;p&gt;La &lt;strong&gt;decodificación especulativa&lt;/strong&gt; rompe con ingenio este punto muerto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduce un &lt;strong&gt;modelo borrador (Draft Model)&lt;/strong&gt; diminuto y rapidísimo (el aprendiz Leo) para generar velozmente varios tokens consecutivos de una sola vez.&lt;/li&gt;
&lt;li&gt;Luego entrega esos tokens generados al &lt;strong&gt;modelo objetivo (Target Model)&lt;/strong&gt;, grande y preciso (el erudito), para una única ronda de &lt;strong&gt;verificación en paralelo (Parallel Verification)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Como el modelo objetivo, al &lt;em&gt;verificar&lt;/em&gt; los tokens dados, puede aprovechar plenamente el enorme cómputo paralelo de la GPU (compute-bound), juzga en un instante si la distribución de probabilidad de esos tokens coincide con su propia salida.&lt;/li&gt;
&lt;li&gt;Si se aceptan, equivale a haber generado varios tokens en una sola pasada hacia adelante (forward pass); si un token se rechaza, el modelo lo corrige en ese punto, descarta las conjeturas posteriores y vuelve a empezar.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La propiedad matemática más fascinante es esta: mediante un algoritmo específico de muestreo por rechazo en la verificación, la decodificación especulativa puede garantizar que la distribución de probabilidad de la salida final sea matemáticamente &amp;ldquo;100% equivalente&amp;rdquo; a la que el modelo objetivo habría producido por sí solo, en su lenta generación, sin pérdida alguna de calidad.&lt;/p&gt;
&lt;h2 id="correspondencia-de-la-metáfora"&gt;Correspondencia de la metáfora
&lt;/h2&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Elemento de la historia&lt;/th&gt;
&lt;th&gt;Concepto de inferencia en LLM&lt;/th&gt;
&lt;th&gt;Explicación&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;El Gran Erudito &amp;ldquo;Baltasar&amp;rdquo;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Modelo objetivo (Target Model)&lt;/td&gt;
&lt;td&gt;El gran modelo de lenguaje de enorme número de parámetros y alta precisión.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;El astuto aprendiz &amp;ldquo;Leo&amp;rdquo;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Modelo borrador (Draft Model / Proposer)&lt;/td&gt;
&lt;td&gt;Un modelo de lenguaje pequeño, diminuto en parámetros y rapidísimo en cómputo (o arquitecturas recientes de predicción multicabezal como MTP / Medusa).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Acarrear tomos pesados para escribir&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Limitado por el ancho de banda de memoria (Memory-bandwidth bound)&lt;/td&gt;
&lt;td&gt;La latencia que causa acarrear los pesos del modelo en la generación autorregresiva tradicional.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Recorrer con la vista la frase de la pizarra&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Verificación en paralelo (Parallel Verification)&lt;/td&gt;
&lt;td&gt;El modelo objetivo aprovecha la ventaja de cómputo de la GPU para evaluar las probabilidades de varios tokens en una sola pasada.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Estampar el sello / borrar y reescribir&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Criterio de aceptación/rechazo (Acceptance/Rejection Criterion)&lt;/td&gt;
&lt;td&gt;Si la predicción del modelo borrador cae dentro de la tolerancia de probabilidad del modelo objetivo, se acepta; si no, se retrocede (Rollback) desde el punto erróneo y el modelo objetivo aporta el token correcto.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;La calidad no cambia en absoluto&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Generación sin pérdidas (Lossless Generation)&lt;/td&gt;
&lt;td&gt;La garantía matemática más importante de la decodificación especulativa: no altera la distribución de probabilidad de salida original del modelo objetivo.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Guía de construcción de infraestructura de IA local: Implementación completa de 0 a vLLM + ComfyUI</title><link>https://ckw19810413.github.io/es/blog/local-ai-infrastructure-guide/</link><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid>https://ckw19810413.github.io/es/blog/local-ai-infrastructure-guide/</guid><description>&lt;h2 id="por-qué-construir-una-infraestructura-de-ia-local"&gt;¿Por qué construir una infraestructura de IA local?
&lt;/h2&gt;&lt;p&gt;En 2026, las herramientas de IA se han convertido en la infraestructura fundamental para creadores digitales, desarrolladores y empresas. Sin embargo, la mayoría aún depende de las API en la nube — gastando dinero con cada llamada, arriesgando la privacidad en cada transmisión y quedando atascados por los límites de tasa cada vez.&lt;/p&gt;
&lt;p&gt;La infraestructura de IA local te da tres cosas: &lt;strong&gt;control total, uso ilimitado y costo marginal cero&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Una vez construida, podrás:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usar LLM sin límites, sin preocuparte por los costos de la API.&lt;/li&gt;
&lt;li&gt;Procesar datos sensibles sin que salgan de tu máquina.&lt;/li&gt;
&lt;li&gt;Ejecutar múltiples servicios simultáneamente sin límites de tasa.&lt;/li&gt;
&lt;li&gt;Integrar con marcos como Cowork MCP para crear verdaderos equipos de agentes de IA.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta guía asume que ya tienes una máquina con GPU (se recomienda DGX GB10, RTX 4090 o mejor). Te guiaré paso a paso para construir un entorno de IA local completo desde cero.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hoy aprenderás:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Instalar y configurar un servicio de LLM local (vLLM)&lt;/li&gt;
&lt;li&gt;Implementar el pipeline de generación de imágenes de ComfyUI&lt;/li&gt;
&lt;li&gt;Gestionar la memoria de la GPU y el orden de inicio de los servicios&lt;/li&gt;
&lt;li&gt;Automatizar la gestión de servicios (systemd)&lt;/li&gt;
&lt;li&gt;Integrar con Cowork MCP para crear un sistema multiagente&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Empecemos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="requisitos-previos"&gt;Requisitos previos
&lt;/h2&gt;&lt;p&gt;Antes de comenzar, asegúrate de tener preparado lo siguiente:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Elemento&lt;/th&gt;
&lt;th&gt;Requisito de versión&lt;/th&gt;
&lt;th&gt;Comando de verificación&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Linux&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ubuntu 22.04+ o Arch&lt;/td&gt;
&lt;td&gt;&lt;code&gt;uname -a&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GPU&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;NVIDIA RTX 3090+/4090/GB10&lt;/td&gt;
&lt;td&gt;&lt;code&gt;nvidia-smi&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CUDA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;≥ 12.4&lt;/td&gt;
&lt;td&gt;&lt;code&gt;nvcc --version&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Docker&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;≥ 24.0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker --version&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Node.js&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;≥ 20&lt;/td&gt;
&lt;td&gt;&lt;code&gt;node --version&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Python&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;≥ 3.10&lt;/td&gt;
&lt;td&gt;&lt;code&gt;python3 --version&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Si la memoria de tu GPU es inferior a 24 GB, te recomendamos cerrar las interfaces gráficas o servicios innecesarios antes de comenzar.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="paso-1-instalar-docker-y-nvidia-container-toolkit"&gt;Paso 1: Instalar Docker y NVIDIA Container Toolkit
&lt;/h2&gt;&lt;p&gt;Docker es la forma recomendada de implementar servicios de IA locales, ya que aísla dependencias, conflictos de versiones y la contaminación del sistema.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Instalar Docker&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install -y docker.io docker-compose-v2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Instalar NVIDIA Container Toolkit (para que Docker pueda usar la GPU)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;distribution&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;. /etc/os-release;echo $ID$VERSION_ID&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed &lt;span style="color:#e6db74"&gt;&amp;#39;s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g&amp;#39;&lt;/span&gt; | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install -y nvidia-container-toolkit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nvidia-ctk runtime configure --runtime&lt;span style="color:#f92672"&gt;=&lt;/span&gt;docker
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl restart docker
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Verifica la disponibilidad de la GPU:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si ves la información de la GPU y el uso de memoria, significa que el entorno está configurado correctamente.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="paso-2-implementar-el-modelo-de-lenguaje-local-vllm"&gt;Paso 2: Implementar el modelo de lenguaje local vLLM
&lt;/h2&gt;&lt;p&gt;vLLM es actualmente el marco de inferencia LLM local más eficiente y admite múltiples formatos de modelos (GGUF, GPTQ, AWQ).&lt;/p&gt;
&lt;h3 id="21-implementación-con-docker"&gt;2.1 Implementación con Docker
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker run -d &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --name vllm-server &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --gpus all &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -p 8000:8000 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -v ~/.cache/huggingface:/root/.cache/huggingface &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; vllm/vllm-openai:latest &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --model &lt;span style="color:#e6db74"&gt;&amp;#34;nvidia/Llama-3.1-Nemotron-70B-Instruct&amp;#34;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --gpu-memory-utilization 0.9 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --max-model-len &lt;span style="color:#ae81ff"&gt;8192&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Descripción de parámetros:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--model&lt;/code&gt;: El modelo a implementar (se puede reemplazar con cualquier modelo de HuggingFace)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--gpu-memory-utilization&lt;/code&gt;: Proporción de la memoria de la GPU a utilizar (0.9 significa el 90%)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--max-model-len&lt;/code&gt;: Longitud máxima del contexto&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt; Si la memoria de tu GPU es inferior a 80 GB, se recomienda comenzar con modelos más pequeños (7B o 13B) antes de probar modelos más grandes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="22-probar-el-endpoint-de-la-api"&gt;2.2 Probar el EndPoint de la API
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -X POST http://localhost:8000/v1/completions &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -H &lt;span style="color:#e6db74"&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -d &lt;span style="color:#e6db74"&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;model&amp;#34;: &amp;#34;nvidia/Llama-3.1-Nemotron-70B-Instruct&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;prompt&amp;#34;: &amp;#34;Explica qué es un sistema de IA multiagente&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;max_tokens&amp;#34;: 200
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si recibes una respuesta, vLLM se ha implementado con éxito.&lt;/p&gt;
&lt;h3 id="23-configurar-como-servicio-del-sistema-inicio-automático"&gt;2.3 Configurar como servicio del sistema (inicio automático)
&lt;/h3&gt;&lt;p&gt;Crea el archivo de servicio de systemd:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo tee /etc/systemd/system/vllm.service &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;[Unit]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;Description=vLLM Local LLM Server
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;After=docker.service
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;Requires=docker.service
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;[Service]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;Type=oneshot
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;RemainAfterExit=yes
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;ExecStart=/usr/bin/docker start vllm-server
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;ExecStop=/usr/bin/docker stop vllm-server
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;[Install]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;WantedBy=multi-user.target
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Habilita e inicia el servicio:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl daemon-reload
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl enable vllm.service
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl start vllm.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="paso-3-implementar-la-generación-de-imágenes-con-comfyui"&gt;Paso 3: Implementar la generación de imágenes con ComfyUI
&lt;/h2&gt;&lt;p&gt;ComfyUI es actualmente la herramienta de generación de imágenes local más potente, compatible con Flux, Stable Diffusion, LTX y varios otros modelos.&lt;/p&gt;
&lt;h3 id="31-implementación-con-docker"&gt;3.1 Implementación con Docker
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker run -d &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --name comfyui &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --gpus all &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -p 8188:8188 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -v ~/.cache/huggingface:/root/.cache/huggingface &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -v ~/comfyui-output:/output &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ghcr.io/ai-forest/comfyui:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Esto iniciará ComfyUI en &lt;code&gt;http://localhost:8188&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="32-instalación-manual-opción-avanzada"&gt;3.2 Instalación manual (Opción avanzada)
&lt;/h3&gt;&lt;p&gt;Si necesitas más control, puedes optar por la instalación manual:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Clonar el repositorio de ComfyUI&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd ~/comfyui
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone https://github.com/comfyanonymous/ComfyUI.git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd ComfyUI
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Instalar dependencias&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Instalar nodos personalizados (opcional)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone https://github.com/Fannovel16/ComfyUI-Frame-Interpolation.git custom_nodes/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone https://github.com/laksjdjoy/deforum-comfy.git custom_nodes/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Iniciar servicio&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;python main.py --listen 0.0.0.0 --port &lt;span style="color:#ae81ff"&gt;8188&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="33-descarga-de-modelos-comunes"&gt;3.3 Descarga de modelos comunes
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Usar HuggingFace CLI para descargar modelos&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pip install huggingface_hub
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;huggingface-cli download stabilityai/stable-diffusion-xl-base-1.0 --local-dir ~/models/sdxl
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;huggingface-cli download stabilityai/stable-diffusion-3.5-large --local-dir ~/models/sd3.5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="paso-4-estrategia-de-gestión-de-memoria-de-gpu"&gt;Paso 4: Estrategia de gestión de memoria de GPU
&lt;/h2&gt;&lt;p&gt;Al implementar servicios de IA localmente, la memoria de la GPU es el mayor cuello de botella. Aquí hay algunas experiencias prácticas:&lt;/p&gt;
&lt;h3 id="41-comprobar-la-memoria-disponible"&gt;4.1 Comprobar la memoria disponible
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;free -h
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nvidia-smi --query-gpu&lt;span style="color:#f92672"&gt;=&lt;/span&gt;memory.used,memory.free --format&lt;span style="color:#f92672"&gt;=&lt;/span&gt;csv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="42-sugerencia-de-orden-de-inicio-de-servicios"&gt;4.2 Sugerencia de orden de inicio de servicios
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Iniciar vLLM primero&lt;/strong&gt; (los modelos de lenguaje suelen tener requisitos de memoria fijos)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Iniciar ComfyUI después&lt;/strong&gt; (la generación de imágenes puede ajustar dinámicamente el uso de la memoria)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cerrar aplicaciones gráficas innecesarias&lt;/strong&gt; (navegadores, Discord, etc.)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="43-script-de-monitoreo-de-memoria"&gt;4.3 Script de monitoreo de memoria
&lt;/h3&gt;&lt;p&gt;Crea un script de monitoreo simple:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# monitor-gpu.sh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; true; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;=== &lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;date&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt; ===&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; nvidia-smi --query-gpu&lt;span style="color:#f92672"&gt;=&lt;/span&gt;memory.used,memory.free,temperature.gpu --format&lt;span style="color:#f92672"&gt;=&lt;/span&gt;csv
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; docker ps --filter &lt;span style="color:#e6db74"&gt;&amp;#34;name=vllm\|name=comfyui&amp;#34;&lt;/span&gt; --format &lt;span style="color:#e6db74"&gt;&amp;#34;table {{.Names}}\t{{.Status}}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sleep &lt;span style="color:#ae81ff"&gt;30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="paso-5-integración-con-el-marco-multiagente-cowork-mcp"&gt;Paso 5: Integración con el marco multiagente Cowork MCP
&lt;/h2&gt;&lt;p&gt;Una vez que la infraestructura de IA local esté lista, puedes conectarla a Cowork MCP para construir un sistema multiagente.&lt;/p&gt;
&lt;h3 id="51-registrar-vllm-como-el-cerebro"&gt;5.1 Registrar vLLM como el cerebro
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Si usas Hermes Agent&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hermes register-cowork
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# O configurar manualmente el EndPoint de MCP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Añade lo siguiente a tu archivo de configuración del Agente:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;mcpServers&amp;#34;&lt;/span&gt;: &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;cowork&amp;#34;&lt;/span&gt;: &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;url&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;http://localhost:6868/mcp&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;transport&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;streamable-http&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;vllm&amp;#34;&lt;/span&gt;: &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;url&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;http://localhost:8000/v1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;transport&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;streamable-http&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="52-aplicación-práctica-pipeline-de-producción-de-contenido-de-ia-local"&gt;5.2 Aplicación práctica: Pipeline de producción de contenido de IA local
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;vLLM local (Generación de contenido) → ComfyUI (Generación de imágenes) → ffmpeg (Postprocesamiento)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Cada paso de este pipeline puede ser coordinado por diferentes agentes de IA:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Agente de Investigación&lt;/strong&gt;: Usa vLLM para generar el esquema del contenido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agente de Redacción&lt;/strong&gt;: Usa vLLM para expandir a un artículo completo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agente de Imágenes&lt;/strong&gt;: Usa ComfyUI para generar ilustraciones correspondientes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agente de Integración&lt;/strong&gt;: Combina el contenido y las imágenes en la salida final&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="paso-6-automatización-y-copias-de-seguridad"&gt;Paso 6: Automatización y copias de seguridad
&lt;/h2&gt;&lt;h3 id="61-copia-de-seguridad-de-contenedores"&gt;6.1 Copia de seguridad de contenedores
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Copia de seguridad del estado del contenedor de ComfyUI&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker commit comfyui comfyui-backup:&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;date +%Y%m%d&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Exportar imagen&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker save comfyui:latest | gzip &amp;gt; ~/backups/comfyui-&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;date +%Y%m%d&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="62-copia-de-seguridad-de-modelos"&gt;6.2 Copia de seguridad de modelos
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Copia de seguridad periódica del caché de HuggingFace&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rsync -avh ~/.cache/huggingface ~/backups/huggingface-cache/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# O usar rclone para copia de seguridad en la nube&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rclone sync ~/.cache/huggingface remote:backup-huggingface --progress
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="63-script-de-verificación-de-estado"&gt;6.3 Script de verificación de estado
&lt;/h3&gt;&lt;p&gt;Crear un cron job de verificación de estado:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Verificar el estado del servicio cada 5 minutos&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;*/5 * * * * curl -f http://localhost:8000/v1/models &lt;span style="color:#f92672"&gt;||&lt;/span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;vLLM is down at &lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;date&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; | mail -s &lt;span style="color:#e6db74"&gt;&amp;#34;vLLM Alert&amp;#34;&lt;/span&gt; admin@example.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="solución-de-problemas-comunes"&gt;Solución de problemas comunes
&lt;/h2&gt;&lt;h3 id="p1-docker-no-puede-usar-la-gpu"&gt;P1: Docker no puede usar la GPU
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Comprobar si NVIDIA Container Toolkit está instalado&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nvidia-ctk runtime verify
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Reiniciar el servicio de Docker&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl restart docker
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="p2-memoria-de-gpu-insuficiente"&gt;P2: Memoria de GPU insuficiente
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Reducir el uso de memoria de vLLM&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Añadir al comando docker run:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--gpu-memory-utilization 0.7
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# O cerrar servicios innecesarios&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl stop bluetooth
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="p3-comfyui-falla-al-iniciar"&gt;P3: ComfyUI falla al iniciar
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Comprobar los registros de Docker&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker logs comfyui
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Intentar reiniciar&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker restart comfyui
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="p4-la-descarga-de-modelos-es-demasiado-lenta"&gt;P4: La descarga de modelos es demasiado lenta
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Usar el sitio espejo de HuggingFace (usuarios de China continental)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export HF_ENDPOINT&lt;span style="color:#f92672"&gt;=&lt;/span&gt;https://hf-mirror.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="próximos-pasos"&gt;Próximos pasos
&lt;/h2&gt;&lt;p&gt;Ahora tienes una infraestructura de IA local completa:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hoy:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Confirmar que vLLM y ComfyUI funcionan correctamente&lt;/li&gt;
&lt;li&gt;Probar los EndPoints de la API, confirmando la generación de contenido e imágenes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Esta semana:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configurar servicios systemd para asegurar el inicio automático al arrancar&lt;/li&gt;
&lt;li&gt;Establecer mecanismos de copia de seguridad y monitoreo&lt;/li&gt;
&lt;li&gt;Conectar al menos un backend LLM a Cowork MCP&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Este mes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Explorar el &lt;a class="link" href="https://github.com/slashman413/cowork" target="_blank" rel="noopener"
&gt;marco Cowork MCP&lt;/a&gt; para construir más equipos de agentes de IA&lt;/li&gt;
&lt;li&gt;Probar diferentes modelos para encontrar la configuración que mejor se adapte a tus necesidades&lt;/li&gt;
&lt;li&gt;Construir tu propio pipeline de producción de contenido de IA&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="preguntas-frecuentes"&gt;Preguntas frecuentes
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;P: ¿Qué nivel de GPU necesito para ejecutar estos servicios?&lt;/strong&gt;
R: Se recomienda al menos 24 GB de memoria (RTX 3090/4090). Si la memoria es menor, puedes ejecutar modelos más pequeños (7B-13B) o usar los límites de memoria de Docker.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P: ¿Se puede ejecutar en una máquina sin GPU?&lt;/strong&gt;
R: Sí, pero será muy lento. La inferencia de CPU es factible, pero no práctica para modelos grandes (70B+).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P: ¿Cómo actualizar los modelos?&lt;/strong&gt;
R: Usa HuggingFace CLI: &lt;code&gt;huggingface-cli download &amp;lt;model-name&amp;gt; --local-dir &amp;lt;path&amp;gt;&lt;/code&gt;. El contenedor de Docker utilizará automáticamente los modelos locales actualizados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P: ¿Cuál es la diferencia entre vLLM y Ollama?&lt;/strong&gt;
R: vLLM es un marco optimizado para inferencia de alto rendimiento, que admite más formatos de modelo y funciones avanzadas. Ollama es más ligero y fácil de usar, pero tiene menos funciones. Para una infraestructura de IA local, se recomienda vLLM.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P: ¿Cuál es la diferencia entre ComfyUI y Automatic1111?&lt;/strong&gt;
R: ComfyUI utiliza un flujo de trabajo basado en nodos, que es más flexible y eficiente. Automatic1111 tiene una interfaz gráfica, más amigable para principiantes. Ambos funcionan bien, pero ComfyUI es más popular en entornos de producción.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Tiempo de lectura: unos 15 minutos | Fecha de publicación: 2026-07-27&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;¿Te resultó útil esta guía? Explora más guías en &lt;a class="link" href="https://ckw19810413.github.io/es/" &gt;Slashman Tools&lt;/a&gt;. Si deseas implementar rápidamente una infraestructura de IA, revisa nuestra &lt;a class="link" href="https://ckw19810413.github.io/es/https://gumroad.com/l/diwoc" &gt;biblioteca de plantillas de cadena de herramientas de IA&lt;/a&gt; para obtener archivos de configuración listos para usar.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[&lt;a class="link" href="https://ckw19810413.github.io/es/" &gt;- Volver al inicio&lt;/a&gt;]&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>