local-llm-agent/docs/90-adr/ADR-001-runtime-selection.md
Adrian Flores Cortes 3def230d58 Initial commit: local-llm-agent infrastructure project
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 16:42:45 -06:00

1.7 KiB

ADR-001: Runtime Selection

Status

Accepted

Date

2026-01-20

Context

Necesitamos seleccionar el runtime para ejecutar el modelo LLM local. Las opciones principales son:

  1. Windows + Ollama: El sistema actual ya tiene Ollama instalado en Windows
  2. WSL + vLLM: vLLM ofrece capacidades avanzadas pero requiere Linux

Analisis Comparativo

Criterio Windows (Ollama) WSL (vLLM)
Setup Simple (ya instalado) Requiere config GPU
vLLM support Limitado Completo
Multi-LoRA No Si
Continuous Batching Basico Avanzado
Overhead Ninguno ~5-10%
Produccion Ready No recomendado Recomendado

Decision

Estrategia hibrida:

  1. MVP (Fase 1): Windows + Ollama

    • Usa infraestructura existente (puerto 11434)
    • Implementacion rapida
    • Suficiente para validar arquitectura
  2. Produccion (Fase 3): WSL + vLLM

    • Capacidades completas de Multi-LoRA
    • Continuous batching optimizado
    • Mejor rendimiento con multiples agentes

Consequences

Positivas

  • MVP funcional en dias, no semanas
  • Validacion temprana de la arquitectura
  • Path claro hacia produccion

Negativas

  • Dos implementaciones de backend a mantener
  • Migracion requerida en Fase 3
  • Algunas features (Multi-LoRA) no disponibles hasta Fase 3

Implementation Notes

El Inference Engine debe abstraer el backend detras de una interfaz comun:

class InferenceBackend(ABC):
    @abstractmethod
    async def chat_completion(self, messages, **kwargs) -> CompletionResponse:
        pass

class OllamaBackend(InferenceBackend):  # MVP
    ...

class VLLMBackend(InferenceBackend):    # Produccion
    ...