Cómo ejecutar un LLM local: Comparación de Ollama, llama.cpp, LM Studio y vLLM

Existen varias formas de ejecutar un LLM de manera local. Algunas herramientas están diseñadas para facilitar la puesta en marcha, mientras que otras ofrecen mayor control o están construidas para atender a múltiples usuarios simultáneamente. La elección correcta depende de si deseas un chat local sencillo, un motor de inferencia configurable o una API de producción.

Ollama

Ollama es una de las formas más fáciles de comenzar a ejecutar modelos localmente. Instálalo, descarga un modelo y ejecútalo desde la línea de comandos. También proporciona una API local para aplicaciones y otras herramientas.

Pros:

  • Instalación simple y gestión de modelos
  • Flujo de trabajo fácil en la línea de comandos
  • API compatible con OpenAI
  • Soporte para aceleración de GPU basada en NVIDIA, AMD, Apple Silicon y Vulkan
  • Los Modelfiles permiten personalizar modelos y parámetros
  • Soporta solicitudes concurrentes cuando hay memoria suficiente disponible

Contras:

  • Menos control a bajo nivel que llama.cpp
  • Su gestión de modelos está centrada en el ecosistema de Ollama
  • No es la primera opción cuando se necesita el máximo rendimiento de servicio o inferencia distribuida

Dificultad: Baja. Una buena elección si deseas poner un modelo en funcionamiento rápidamente sin lidiar con numerosos ajustes de inferencia.

llama.cpp

llama.cpp es un motor de inferencia ligero en C/C++ enfocado en ejecutar modelos de manera eficiente en una amplia variedad de hardware. Utiliza modelos GGUF y te da un control detallado sobre cómo se carga y ejecuta el modelo.

Pros:

  • Control granular sobre el contexto, la descarga a GPU, el lote de procesamiento (batching), hilos, cuantización y otros ajustes de inferencia
  • Amplio soporte de hardware, incluyendo CUDA, HIP, Metal, Vulkan y SYCL
  • Soporta muchos niveles de cuantización, desde formatos de pocos bits hasta 8 bits
  • Puede dividir modelos entre varias GPUs
  • Puede usar CPU y GPU juntas cuando el modelo es más grande que la VRAM disponible
  • Incluye llama-server para una API compatible con OpenAI

Contras:

  • Requiere más configuración que Ollama o LM Studio
  • Los modelos GGUF generalmente se descargan y gestionan por separado
  • Muchos ajustes útiles requieren comprender los parámetros de inferencia

Dificultad: Media. Una buena elección si deseas controlar exactamente cómo se ejecuta un modelo o quieres experimentar con el rendimiento y la cuantización.

LM Studio

LM Studio es una aplicación de escritorio para descargar, configurar y ejecutar LLMs locales. Proporciona una interfaz gráfica para encontrar modelos y gestionar elementos como la descarga a GPU y el tamaño del contexto.

Pros:

  • Interfaz gráfica sencilla
  • Busca y descarga modelos a través de Hugging Face
  • Muestra información del modelo y de recursos antes de cargarlo
  • Servidor de API compatible con OpenAI
  • Puede ejecutar modelos en modo sin interfaz gráfica a través de su servidor llmster
  • Soporta modelos GGUF a través de llama.cpp y modelos MLX en Apple Silicon

Contras:

  • Menos control a bajo nivel que el uso directo de llama.cpp
  • La aplicación de escritorio es menos adecuada para algunas implementaciones en servidor
  • No está diseñado principalmente para el servicio a gran escala de múltiples usuarios

Dificultad: Baja. Una buena elección si deseas experimentar con modelos locales sin pasar mucho tiempo en la línea de comandos.

vLLM

vLLM está diseñado para servir LLMs a aplicaciones y múltiples usuarios. Su principal ventaja es el servicio eficiente con alta concurrencia, utilizando técnicas como PagedAttention, lotes de procesamiento continuos (continuous batching), caché de prefijos e inferencia distribuida.

Pros:

  • Alto rendimiento (throughput) para múltiples solicitudes concurrentes
  • Lotes de procesamiento continuos y gestión eficiente de la caché KV
  • Servidor de API compatible con OpenAI
  • Funciona directamente con muchos modelos de Hugging Face
  • Soporta cuantización, incluyendo FP8, INT4, GPTQ, AWQ, GGUF y otras
  • Soporta paralelismo por tensores, por pipeline, por experto y otras formas
  • Diseñado para inferencia y servicio en producción

Contras:

  • Configuración más complicada
  • Está dirigido principalmente a entornos Linux
  • Suele ser innecesario para una sola persona que ejecuta un modelo de forma interactiva
  • La compatibilidad del hardware y del modelo debe verificarse antes de la implementación

Dificultad: Alta. Más adecuado para personas que implementan un servicio de inferencia en lugar de simplemente ejecutar un modelo en una computadora personal.

¿Cuál deberías elegir?

  • Solo quieres ejecutar un modelo fácilmente: Ollama o LM Studio. Elige Ollama para la línea de comandos y una API simple, o LM Studio para una interfaz gráfica.
  • Quieres control sobre la inferencia: llama.cpp. Te da control directo sobre la carga del modelo, la cuantización, el contexto, la descarga a GPU y otros ajustes.
  • Necesitas una API local: Ollama, llama.cpp o LM Studio. Los tres proporcionan APIs compatibles con OpenAI.
  • Necesitas servir a muchos usuarios: vLLM. Sus funciones de lotes de procesamiento continuos e inferencia distribuida están diseñadas para este caso de uso.
  • Quieres experimentar con diferentes cuantizaciones: llama.cpp o LM Studio.

Ejecútalo en DaDesktop

Si no tienes suficiente hardware de GPU localmente, puedes ejecutar estas herramientas en un escritorio en la nube de DaDesktop. Elige una GPU con suficiente VRAM para el modelo que deseas ejecutar, inicia el escritorio e instala el software de inferencia que prefieras.

Ollama y LM Studio son útiles cuando deseas un entorno local sencillo. llama.cpp te da más control sobre el hardware y los ajustes de inferencia. vLLM es una opción cuando necesitas exponer un modelo como una API con mayor rendimiento.

Ver GPUs disponibles para comparar la VRAM y otras especificaciones.