1.7 KiB
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:
- Windows + Ollama: El sistema actual ya tiene Ollama instalado en Windows
- 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:
-
MVP (Fase 1): Windows + Ollama
- Usa infraestructura existente (puerto 11434)
- Implementacion rapida
- Suficiente para validar arquitectura
-
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
...