{"id":1355,"date":"2025-07-04T10:33:12","date_gmt":"2025-07-04T10:33:12","guid":{"rendered":"https:\/\/cloudlab.urv.cat\/catedracloud\/?p=1355"},"modified":"2025-07-04T10:33:12","modified_gmt":"2025-07-04T10:33:12","slug":"sirviendo-inteligencia-artificial-a-escala-el-papel-de-vllm","status":"publish","type":"post","link":"https:\/\/cloudlab.urv.cat\/catedracloud\/2025\/07\/04\/sirviendo-inteligencia-artificial-a-escala-el-papel-de-vllm\/","title":{"rendered":"Sirviendo inteligencia artificial a escala: el papel de vLLM"},"content":{"rendered":"\n<p>La inteligencia artificial (IA) ha avanzado a pasos agigantados en los \u00faltimos a\u00f1os. Hoy, millones de personas interact\u00faan diariamente con <strong>modelos grandes de lenguaje, &nbsp;conocidos en ingl\u00e9s como Large Language Models (LLM), <\/strong>como ChatGPT, Gemini, o asistentes inteligentes en buscadores y plataformas de software. Sin embargo, detr\u00e1s de cada respuesta que ofrecen estas herramientas, hay una infraestructura tecnol\u00f3gica que debe ser <strong>r\u00e1pida, eficiente y escalable<\/strong>.<\/p>\n\n\n\n<p>Uno de los principales desaf\u00edos es c\u00f3mo ofrecer estos modelos de forma eficiente, considerando que pueden tener <strong>billones de par\u00e1metros<\/strong>, ocupar <strong>cientos de gigabytes<\/strong> de memoria RAM en precisi\u00f3n completa (<strong>FP32<\/strong>) y requerir aceleradores como <strong>GPUs<\/strong> para funcionar correctamente. Aqu\u00ed es donde entra en juego <strong>vLLM<\/strong>, una nueva tecnolog\u00eda que podr\u00eda convertirse en el motor est\u00e1ndar para ejecutar estos modelos de forma m\u00e1s eficiente.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-955c20df\"><h5 class=\"uagb-heading-text\"><strong>\u00bfQu\u00e9 son los LLM y por qu\u00e9 necesitan una infraestructura especial?<\/strong><\/h5><\/div>\n\n\n\n<p>Un <strong>LLM<\/strong> es una red neuronal entrenada con miles de millones de palabras. Puede generar texto, escribir c\u00f3digo, traducir idiomas o responder preguntas complejas.<\/p>\n\n\n\n<p>Como mencionamos anteriormente, el problema radica en que estos modelos son enormes, y no basta con simplemente &#8216;instalar el modelo&#8217; y utilizarlo. Es necesario desarrollar una infraestructura que permita responder de forma r\u00e1pida a numerosos usuarios, optimizando al mismo tiempo el uso de recursos.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-eec60766\"><h5 class=\"uagb-heading-text\"><strong>\u00bfQu\u00e9 es vLLM?<\/strong><\/h5><\/div>\n\n\n\n<p><strong>vLLM<\/strong> es una nueva tecnolog\u00eda de c\u00f3digo abierto dise\u00f1ada para servir modelos de lenguaje de forma <strong>m\u00e1s r\u00e1pida, eficiente y escalable<\/strong>. Su nombre proviene de \u201c<strong>virtual LLM<\/strong>\u201d, y su objetivo es maximizar el rendimiento de los LLMs en entornos reales.<\/p>\n\n\n\n<p>Este motor ha sido dise\u00f1ado por investigadores y desarrolladores con experiencia en inteligencia artificial, y ya est\u00e1 siendo adoptado por empresas y centros de investigaci\u00f3n en todo el mundo.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-f92fb2f4\"><h5 class=\"uagb-heading-text\"><strong>\u00bfPor qu\u00e9 es tan innovador?<\/strong><\/h5><\/div>\n\n\n\n<p><strong>1. Sirve m\u00faltiples usuarios al mismo tiempo <\/strong><\/p>\n\n\n\n<p>Normalmente, cuando varias personas hacen preguntas a un modelo como GPT, el sistema las procesa una por una o en grupos. Esto puede generar <strong>colas de espera<\/strong> y mucho <strong>desperdicio de recursos<\/strong>.<\/p>\n\n\n\n<p>vLLM, en cambio, utiliza una t\u00e9cnica llamada <strong>token-level batching<\/strong>. Esto significa que agrupa las preguntas <strong>palabra por palabra<\/strong>, permitiendo que muchas respuestas se procesen en paralelo. El resultado: el modelo responde <strong>m\u00e1s r\u00e1pido y con menos uso de GPU<\/strong>.<\/p>\n\n\n\n<p><strong>Veamos c\u00f3mo funciona.<\/strong> Antes de la introducci\u00f3n de <strong>token-level batching<\/strong>, el procesamiento por lotes est\u00e1tico iniciaba un lote completo de preguntas y esperaba a que todas las solicitudes de ese lote finalizaran su c\u00f3mputo. Sin embargo, como no se sabe cu\u00e1ntos tokens se generar\u00e1n por cada solicitud, esto provoca que muchas veces las GPUs queden inactivas y subutilizadas durante largos periodos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.anyscale.com\/blog\/continuous-batching-llm-inference\"><img loading=\"lazy\" decoding=\"async\" width=\"902\" height=\"210\" src=\"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/image.png\" alt=\"\" class=\"wp-image-1356\" srcset=\"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/image.png 902w, https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/image-300x70.png 300w, https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/image-768x179.png 768w\" sizes=\"auto, (max-width: 902px) 100vw, 902px\" \/><\/a><figcaption class=\"wp-element-caption\">Una ilustraci\u00f3n de agrupamiento est\u00e1tico: en amarillo, la fase de prellenado, que corresponde al c\u00f3mputo de las palabras o tokens de entrada; en azul y rojo, la fase de decodificaci\u00f3n, donde se genera cada nuevo token de respuesta. Fuente: <a href=\"https:\/\/www.anyscale.com\/blog\/continuous-batching-llm-inference\">AnyScale<\/a>.<\/figcaption><\/figure>\n\n\n\n<p>En cambio, con el procesamiento a nivel de tokens, no se espera a que todos los lotes terminen antes de comenzar uno nuevo, sino que procesa continuamente nuevas solicitudes en cuanto una pregunta del lote en ejecuci\u00f3n termina y hay espacio disponible.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.anyscale.com\/blog\/continuous-batching-llm-inference\"><img loading=\"lazy\" decoding=\"async\" width=\"903\" height=\"205\" src=\"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/image-1.png\" alt=\"\" class=\"wp-image-1357\" srcset=\"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/image-1.png 903w, https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/image-1-300x68.png 300w, https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/image-1-768x174.png 768w\" sizes=\"auto, (max-width: 903px) 100vw, 903px\" \/><\/a><figcaption class=\"wp-element-caption\">Con esta t\u00e9cnica, las palabras de la siguiente solicitud se empiezan a procesar tan pronto finaliza la anterior solicitud. Fuente: <a href=\"https:\/\/www.anyscale.com\/blog\/continuous-batching-llm-inference\">AnyScale<\/a>.<\/figcaption><\/figure>\n\n\n\n<p>Con esta t\u00e9cnica, las palabras de la siguiente solicitud se empiezan a procesar tan pronto finaliza la anterior solicitud. Fuente: AnyScale.<\/p>\n\n\n\n<p><strong>2. Optimiza la memoria como un experto<\/strong><\/p>\n\n\n\n<p>Los modelos de lenguaje guardan mucha informaci\u00f3n intermedia mientras generan una respuesta. Esto se llama <strong>KV Cache <\/strong>(Key-Value cache). vLLM gestiona este almacenamiento de forma <strong>inteligente y din\u00e1mica<\/strong>, usando t\u00e9cnicas similares a c\u00f3mo los sistemas operativos manejan la memoria.<\/p>\n\n\n\n<p>La <strong>KV cache<\/strong> es un componente fundamental dentro de vLLM que optimiza el proceso de generaci\u00f3n de texto en modelos grandes de lenguaje. Para generar la siguiente palabra, cada nuevo token generado depende de los tokens previos y sus representaciones internas, que se almacenan en forma de pares clave-valor (keys y values). La KV cache guarda estos pares para evitar recalcular desde cero la representaci\u00f3n de los tokens previos.<\/p>\n\n\n\n<p>La <strong>KV cache<\/strong> en vLLM facilita la escalabilidad del sistema, ya que reduce el costo computacional y la demanda de memoria durante la generaci\u00f3n de texto, haciendo viable la ejecuci\u00f3n de modelos muy grandes incluso en hardware con recursos limitados. Gracias a esta optimizaci\u00f3n, vLLM puede ofrecer tiempos de respuesta r\u00e1pidos y un uso eficiente de los aceleradores, mejorando la experiencia del usuario y abriendo la puerta a aplicaciones en tiempo real basadas en LLMs.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/blog.dailydoseofds.com\/p\/kv-caching-in-llms-explained-visually\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"435\" src=\"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/image-2-1024x435.png\" alt=\"\" class=\"wp-image-1358\" srcset=\"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/image-2-1024x435.png 1024w, https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/image-2-300x128.png 300w, https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/image-2-768x326.png 768w, https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/image-2.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Funcionamiento de la KV cache. Fuente: <a href=\"https:\/\/blog.dailydoseofds.com\/p\/kv-caching-in-llms-explained-visually\">Daily Dose of Data Science<\/a>.<\/figcaption><\/figure>\n\n\n\n<p>Con la KV cache, para generar una palabra en un modelo de lenguaje grande, primero, se genera el vector QKV (Query, Key, Value) correspondiente al token que se gener\u00f3 en el paso anterior. Estos vectores son fundamentales para el mecanismo de atenci\u00f3n, ya que representan la consulta actual y las claves y valores con los que se compara para decidir qu\u00e9 informaci\u00f3n es relevante en la generaci\u00f3n de la siguiente palabra.<\/p>\n\n\n\n<p>A continuaci\u00f3n, se recuperan todos los vectores KV almacenados previamente en la KV cache, que contiene las claves y valores de todos los tokens generados hasta ese momento, evitando as\u00ed tener que recalcularlos desde cero en cada paso. Con estos datos, el modelo puede calcular la atenci\u00f3n, es decir, determinar c\u00f3mo se relacionan y ponderan los tokens previos para generar el nuevo token de manera coherente y contextual.<\/p>\n\n\n\n<p>Finalmente, una vez generado el nuevo token, sus vectores KV tambi\u00e9n se almacenan en la cach\u00e9 para ser usados en los pasos siguientes.<\/p>\n\n\n\n<p>Como puedes ver, esta t\u00e9cnica es clave para lograr respuestas r\u00e1pidas y un rendimiento \u00f3ptimo en la generaci\u00f3n de lenguaje natural.<\/p>\n\n\n\n<p><strong>3. Compatible con herramientas ya existentes<\/strong><\/p>\n\n\n\n<p>\u00bfTienes una aplicaci\u00f3n que usa la API de OpenAI? vLLM es compatible con ese mismo est\u00e1ndar. Puedes cambiar el backend sin modificar tu frontend. Esto facilita enormemente su integraci\u00f3n en empresas o proyectos existentes.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-938d5ae8\"><h5 class=\"uagb-heading-text\"><strong>\u00bfD\u00f3nde se puede usar vLLM?<\/strong><\/h5><\/div>\n\n\n\n<p>vLLM es ideal para todo tipo de aplicaciones que necesiten <strong>servir modelos de lenguaje a gran escala<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Chatbots conversacionales en sitios web<\/li>\n\n\n\n<li>Asistentes de programaci\u00f3n<\/li>\n\n\n\n<li>B\u00fasquedas inteligentes con lenguaje natural<\/li>\n\n\n\n<li>Generaci\u00f3n de contenido<\/li>\n\n\n\n<li>Traducci\u00f3n autom\u00e1tica<\/li>\n\n\n\n<li>Aplicaciones educativas y de accesibilidad<\/li>\n\n\n\n<li>Sistemas de IA integrados en productos empresariales<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-31c97a79\"><h5 class=\"uagb-heading-text\"><strong>\u00bfY c\u00f3mo lo uso?<\/strong><\/h5><\/div>\n\n\n\n<p>Si eres desarrollador o t\u00e9cnico, puedes empezar en cuesti\u00f3n de minutos:<\/p>\n\n\n\n<p><code>pip install vllm<\/code><\/p>\n\n\n\n<p>Y luego lanzar tu servidor:<\/p>\n\n\n\n<p><code>python -m vllm.entrypoints.openai.api_server --model facebook\/opt-1.3b<\/code><\/p>\n\n\n\n<p>\u00a1Preparado! Ya puedes enviar preguntas al modelo y obtener respuestas con una velocidad sorprendente.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-8d0cc8f8\"><h5 class=\"uagb-heading-text\">Conclusi\u00f3n<\/h5><\/div>\n\n\n\n<p>vLLM no es simplemente otra pieza de software: es una <strong>soluci\u00f3n moderna<\/strong> para un problema que est\u00e1 creciendo r\u00e1pidamente. A medida que m\u00e1s empresas y ciudadanos adoptan herramientas basadas en IA, necesitaremos motores que las hagan funcionar sin fricciones. vLLM, con su dise\u00f1o innovador, podr\u00eda convertirse en la <strong>columna vertebral<\/strong> de la pr\u00f3xima generaci\u00f3n de asistentes inteligentes y herramientas generativas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La inteligencia artificial (IA) ha avanzado a pasos agigantados en los \u00faltimos a\u00f1os. Hoy, millones de personas interact\u00faan diariamente con modelos grandes de lenguaje, &nbsp;conocidos en ingl\u00e9s como Large Language Models (LLM), como ChatGPT, Gemini, o asistentes inteligentes en buscadores y plataformas de software. Sin embargo, detr\u00e1s de cada respuesta que ofrecen estas herramientas, hay [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":1360,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","_swt_meta_header_display":false,"_swt_meta_footer_display":false,"_swt_meta_site_title_display":false,"_swt_meta_sticky_header":false,"_swt_meta_transparent_header":false,"footnotes":""},"categories":[113,39,40],"tags":[21,88],"class_list":["post-1355","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-computing","category-ia","category-machine-learning","tag-cloud-computing","tag-ia"],"jetpack_featured_media_url":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/ChatGPT-Image-Jul-4-2025-12_21_04-PM.png","uagb_featured_image_src":{"full":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/ChatGPT-Image-Jul-4-2025-12_21_04-PM.png",1024,1024,false],"thumbnail":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/ChatGPT-Image-Jul-4-2025-12_21_04-PM-150x150.png",150,150,true],"medium":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/ChatGPT-Image-Jul-4-2025-12_21_04-PM-300x300.png",300,300,true],"medium_large":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/ChatGPT-Image-Jul-4-2025-12_21_04-PM-768x768.png",768,768,true],"large":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/ChatGPT-Image-Jul-4-2025-12_21_04-PM.png",1024,1024,false],"1536x1536":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/ChatGPT-Image-Jul-4-2025-12_21_04-PM.png",1024,1024,false],"2048x2048":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/07\/ChatGPT-Image-Jul-4-2025-12_21_04-PM.png",1024,1024,false]},"uagb_author_info":{"display_name":"Marc S\u00e1nchez Artigas","author_link":"https:\/\/cloudlab.urv.cat\/catedracloud\/author\/msanchez\/"},"uagb_comment_info":4,"uagb_excerpt":"La inteligencia artificial (IA) ha avanzado a pasos agigantados en los \u00faltimos a\u00f1os. Hoy, millones de personas interact\u00faan diariamente con modelos grandes de lenguaje, &nbsp;conocidos en ingl\u00e9s como Large Language Models (LLM), como ChatGPT, Gemini, o asistentes inteligentes en buscadores y plataformas de software. Sin embargo, detr\u00e1s de cada respuesta que ofrecen estas herramientas, hay&hellip;","_links":{"self":[{"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/posts\/1355","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/comments?post=1355"}],"version-history":[{"count":3,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/posts\/1355\/revisions"}],"predecessor-version":[{"id":1362,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/posts\/1355\/revisions\/1362"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/media\/1360"}],"wp:attachment":[{"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/media?parent=1355"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/categories?post=1355"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/tags?post=1355"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}