La comunidad de investigadores de DeepSeek ha publicado en GitHub el nuevo modelo nano-vLLM, una implementación desde cero del conocido motor de inferencia vLLM (virtual Large Language Model) desarrollado a su vez por el Sky Computing Lab de la Universidad de California en Berkeley, y publicado también en GitHub, pero sobre el cual el modelo de DeepSeek aporta algunas ventajas.
La primera de estas es la reducción de su código fuente a tan solo unas 1.200 líneas escritas íntegramente en Python, lo que facilita no solamente su adaptación y personalización además de su auditoría, sino que también hace posible utilizarlo para finalidades educativas, para enseñar cómo funciona un modelo de inferencia.
La reducción tan drástica de su tamaño se consigue eliminando capas de abstracción, logrando con ello facilitar su despliegue en entornos con recursos limitados. Pese a su tamaño, los desarrolladores de DeepSeek indican que el rendimiento en inferencia offline que ofrece se mantiene cercano al del vLLM original, lo que convierte a nano-vLLM en una alternativa práctica para experimentos controlados.
Esta orientación lo sitúa como una herramienta enfocada tanto a consumidores finales curiosos por la tecnología, como para su uso por parte de perfiles profesionales que requieren de rapidez sin una infraestructura pesada, además del colectivo de investigadores y docentes que, cómo he indicado antes, tienen una excelente herramienta pedagógica en sus manos.
Sin embargo, su naturaleza también concisa implica renuncias, ya que su motor no incorpora funciones de loteo dinámico ni programación de colas, carece de generación token a token para servicios en tiempo real y no ha sido diseñado para atender a varios usuarios simultáneamente. Estas ausencias son deliberadas y persiguen mantener la claridad del código y preservar el rendimiento en hilos únicos.
Arquitectura esencial
Su diseño parte de componentes reconocibles, como un sistema de tokenización basado en la biblioteca de Hugging Face, un contenedor de modelo que aprovecha PyTorch y un gestor de caché de claves y valores que reutiliza información previa cuando el mismo prefijo se repite.
Junto a estos, encontramos un módulo de muestreo que controla técnicas de decodificación habituales (entre ellas top-k y top-p), modulando la temperatura y otros parámetros sin salir de un flujo de ejecución claramente trazable.
La asignación dinámica de la memoria para la caché y la reutilización de bloques reducen los tiempos de respuesta, evitando cómputos redundantes. Todo el camino, desde la recepción de la petición hasta la entrega del texto, queda expuesto sin artificios, lo que facilita la auditoría y la resolución de incidencias.
Esta transparencia, unida a lo breve que es su código fuente, fomenta la participación de terceros: modificar o ampliar funciones exige menos esfuerzo que en proyectos de mayor escala, donde los puntos de entrada pueden estar ocultos entre decenas de miles de líneas.