Proyectos / AI Model Routing Policy

AI Model Routing Policy

Política de selección entre FLAN-T5-small y base con ajuste en desarrollo, evaluación reservada, costo del router y fallos locales inyectados. Publica también el resultado negativo.

Autor: · Python 3.11.13 · Licencia: MIT

Ficha publicada: · Ficha actualizada:

Repositorio · Evidencia original · Release v0.1.0

Problema y utilidad para agentes

Usar un router no lo vuelve automáticamente más eficiente que un solo modelo. Hay que contar el propio router, los intentos fallidos y las pérdidas de calidad por tipo de tarea.

La comparación mantiene las mismas tareas y deja visibles las decisiones, el fallback y los casos sin respuesta. Permite decidir si la complejidad del router se justifica con los resultados medidos.

Arquitectura

  1. Política ajustada en desarrollo. 16 tareas ajustan una tabla por tipo mediante exactitud menos 0,02 veces el tiempo medio de inferencia. La evaluación reservada tiene 24 tareas; las etiquetas no entran al router.
  2. Cuatro estrategias. Compara siempre-small, siempre-base, un selector fijo de 120 caracteres y la política ajustada. Ambos modelos están residentes y fijados por revisión.
  3. Fallback y contabilidad. Sólo una excepción tipada de indisponibilidad dispara el segundo adaptador. Registra sobrecosto, intentos fallidos, tokens, carga, calentamiento y ajuste por separado.

Qué demuestra

  • Separación entre ajuste de políticas y evaluación reservada con baselines explícitos.
  • Contabilidad del costo de enrutamiento y degradación por tipo de tarea.
  • Fallback controlado, fallo explícito ante dos adaptadores caídos y análisis de un resultado negativo.

Resultados publicados

16 tareas de desarrollo y 24 de evaluación, distribuidas entre sentimiento, extracción, aritmética y lógica. FLAN-T5-small y base ejecutados localmente en Intel Xeon W-3223 con dos hilos.

Tiempo de solicitudes incluye router, despacho, intentos fallidos e inferencia. Carga, calentamiento y ajuste están fuera de esa tabla y se publican por separado. Las caídas son excepciones inmediatas inyectadas en adaptadores locales propios.

Comparación sin fallos inyectados

Evidencia original ·
EstrategiaCorrectasTiempo total (s)Router total (ms)Tokens generados
Siempre small12/244.0068230.021426229
Siempre base12/248.3763500.020290214
Por longitud12/244.3594020.035640229
Política ajustada12/244.4015700.044034229

Fallback con política ajustada

Evidencia original ·
Indisponibilidad inyectadaCorrectasSin respuestaTiempo total (s)
Small caído12/2409.149960
Base caído12/2403.981469
Ambos caídos0/24240.000176

Las cuatro estrategias lograron 12/24. El router ajustado fue más lento que siempre-small y no mejoró calidad. Todas fallaron las seis tareas de extracción y las seis de aritmética: cero degradación relativa puede esconder una calidad absoluta insuficiente.

La inferencia de desarrollo tomó 3,600025 s y el ajuste de la política 0,124500 ms. El tiempo completo de evaluación fue 41,797864 s, incluyendo preparación, las cuatro estrategias, caídas y grabación de evidencia. Evidencia original.

Reproducir

Replay con Python 3.11 y biblioteca estándar, sin descargas de modelos. La reproducción neural requiere las dependencias fijadas y snapshots públicos de ambos modelos.

Los comandos usan POSIX y omiten el coordinador específico de la máquina del autor. Ejecutá una medición por vez y conservá desarrollo y evaluación en directorios nuevos relacionados mediante --dev.

Revisar la evidencia guardada

git clone https://github.com/lucioduran/ai-model-routing-policy.git
cd ai-model-routing-policy
git checkout 1e891db0bfc7c6ad77a1baae3b93f5a76a558435
python -m routing verify --split dev --output results/dev
python -m routing verify --split eval --dev results/dev --output results/eval

Repetir la medición local

python3.11 -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements-local.lock
python -m routing download
OMP_NUM_THREADS=2 MKL_NUM_THREADS=2 python -m routing run --split dev --output build/dev
OMP_NUM_THREADS=2 MKL_NUM_THREADS=2 python -m routing run --split eval --dev build/dev --output build/eval
python -m routing verify --split eval --dev build/dev --output build/eval

Alcance y límites

  • Cuarenta tareas sintéticas y una ejecución no establecen ahorros de producción. Las familias se superponen entre particiones y no hubo revisión humana independiente.
  • El llamador suministra el tipo de tarea: no se mide un clasificador de intenciones. La política penaliza latencia, sin imponer una garantía dura de calidad.
  • Los fallos inmediatos no modelan red, timeouts ni costos de reintentos remotos. Ambos modelos residentes tampoco representan un despliegue con presión de memoria.
  • API paga: USD 0. CPU medida no equivale a energía ni factura. Los tiempos excluyen carga y calentamiento a nivel de solicitud.

Fuentes y revisión

Los valores de esta ficha provienen del informe enlazado. No son una medición en vivo. El informe conserva la revisión ejecutada; la revisión consultada incluye la publicación posterior de ese informe.