Sobre el proyecto
Recotem es un framework de sistemas de recomendación basado en recetas que simplifica el entrenamiento y el servicio de modelos de recomendación. Está construido sobre irspack y utiliza un único archivo de receta YAML para definir todo el pipeline: fuente de datos, algoritmo de entrenamiento, búsqueda de hiperparámetros y ubicación de salida. El comando `recotem train` produce un artefacto binario firmado, mientras que `recotem serve` ejecuta un servidor FastAPI que expone endpoints como `/v1/recipes/{name}:recommend` y `:recommend-related`, con intercambio automático en caliente cuando aparecen nuevos artefactos. No requiere base de datos ni broker de mensajes, lo que lo hace ligero y fácil de desplegar.
Las características clave incluyen:
- **Configuración basada en recetas**: Un archivo YAML define un modelo completo, desde la ingesta de datos hasta el servicio.
- **Optimización de hiperparámetros**: Utiliza Optuna para buscar entre algoritmos de irspack.
- **iALS con características**: Soporta características laterales de ítems/usuarios (categóricas, numéricas, multi-etiqueta) para mejorar las recomendaciones.
- **Soporte para arranque en frío**: Puede recomendar para usuarios o ítems desconocidos usando características de atributos.
- **Fuentes de datos conectables**: Soporte integrado para CSV, Parquet, BigQuery y SQL (PostgreSQL, MySQL, SQLite), con extensibilidad mediante puntos de entrada de Python.
- **Artefactos seguros**: Firmados con HMAC, rotación de múltiples claves y una lista blanca de clases determinista para deserialización segura.
- **Autenticación por clave API**: Cabecera opcional `X-API-Key`, con claves con hash en reposo.
- **Almacenamiento flexible**: Usa fsspec para rutas locales, S3, GCS, Azure y HTTPS.
- **Observabilidad**: Métricas Prometheus opcionales y registros JSON estructurados con redacción de secretos.
La herramienta está diseñada para la reproducibilidad y la simplicidad operativa. El entrenamiento se ejecuta como un trabajo por lotes (por ejemplo, cron, Airflow, Kubernetes CronJob), y el servicio es un proceso de larga duración que observa nuevos artefactos y los intercambia atómicamente. Esta separación permite que el entrenamiento y el servicio se ejecuten en máquinas diferentes, comunicándose solo mediante archivos de artefactos.
La instalación se realiza mediante pip con extras para fuentes de datos específicas (por ejemplo, `recotem[bigquery]`, `recotem[s3]`). Hay una imagen Docker multi-arquitectura disponible en ghcr.io. El proyecto requiere Python 3.12+ y soporta Linux glibc (x86-64/arm64), macOS (Apple Silicon) y Windows (x86-64). Algunos extras como `bprfm` tienen soporte de plataforma más limitado y pueden requerir compilación desde el código fuente.
El ejemplo de inicio rápido demuestra el entrenamiento de un recomendador TopPop a partir de un CSV pequeño y el servicio de recomendaciones vía HTTP. El sitio de documentación (recotem.org) proporciona guías completas, referencias de API y detalles operativos.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.