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

Existen varias formas de ejecutar un LLM de forma 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 adecuada depende de si buscas una simple interacción local, un motor de inferencia configurable o una API de producción.

Ollama

Ollama es una de las formas más sencillas de comenzar a ejecutar modelos localmente. Basta con instalarlo, descargar un modelo y ejecutarlo desde la línea de comandos. Además, proporciona una API local para aplicaciones y otras herramientas.

Ventajas:

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

Inconvenientes:

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

Dificultad: Baja. Es una buena opción si deseas poner en marcha un modelo rápidamente sin tener que lidiar con numerosas configuraciones de inferencia.

llama.cpp

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

Ventajas:

  • Control granular sobre el contexto, la descarga a GPU, el agrupamiento (batching), los hilos, la cuantización y otras configuraciones de inferencia
  • Amplio soporte de hardware, incluyendo CUDA, HIP, Metal, Vulkan y SYCL
  • Soporta muchos niveles de cuantización, desde formatos de bajo bit hasta 8 bits
  • Permite dividir modelos entre varias GPUs
  • Puede utilizar CPU y GPU juntas cuando el modelo es mayor que la VRAM disponible
  • Incluye llama-server para una API compatible con OpenAI

Inconvenientes:

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

Dificultad: Media. Es una buena opción si deseas controlar exactamente cómo se ejecuta un modelo o si 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. Ofrece una interfaz gráfica para buscar modelos y gestionar aspectos como la descarga a GPU y el tamaño del contexto.

Ventajas:

  • Interfaz gráfica sencilla
  • Busca y descarga modelos a través de Hugging Face
  • Muestra información del modelo y de los recursos antes de cargarlo
  • Servidor de API compatible con OpenAI
  • Puede ejecutar modelos 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

Inconvenientes:

  • Menos control de 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ñada principalmente para el servicio a gran escala de múltiples usuarios

Dificultad: Baja. Es una buena opció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 la eficiencia en el servicio con alta concurrencia, utilizando técnicas como PagedAttention, agrupamiento continuo (continuous batching), cache de prefijos e inferencia distribuida.

Ventajas:

  • Alto rendimiento para múltiples solicitudes concurrentes
  • Agrupamiento continuo y gestión eficiente de la KV-cache
  • 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 tensor, pipeline, expert y otras formas de paralelismo
  • Diseñado para inferencia y servicio de producción

Inconvenientes:

  • La configuración e instalación son más complejas
  • Está orientado principalmente a entornos Linux
  • Suele ser innecesario para una sola persona que ejecuta un modelo de forma interactiva
  • Es necesario verificar la compatibilidad de hardware y modelo antes del despliegue

Dificultad: Alta. Es más adecuado para personas que implementan un servicio de inferencia, no simplemente para ejecutar un modelo en una computadora personal.

¿Cuál deberías elegir?

  • Si solo quieres ejecutar un modelo fácilmente: Ollama o LM Studio. Elige Ollama para la línea de comandos y una API sencilla, o LM Studio por su interfaz gráfica.
  • Si deseas controlar la inferencia: llama.cpp. Te da un control directo sobre la carga del modelo, la cuantización, el contexto, la descarga a GPU y otras configuraciones.
  • Si necesitas una API local: Ollama, llama.cpp o LM Studio. Las tres ofrecen APIs compatibles con OpenAI.
  • Si necesitas atender a muchos usuarios: vLLM. Sus funciones de agrupamiento continuo e inferencia distribuida están diseñadas para este caso de uso.
  • Si 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 VRAM suficiente 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 ofrece más control sobre el hardware y las configuraciones de inferencia. vLLM es una opción cuando necesitas exponer un modelo como una API de mayor rendimiento.

Ver GPUs disponibles para comparar la VRAM y otras especificaciones.