Об этом проекте
Recotem — это фреймворк для рекомендательных систем, управляемый рецептами, который упрощает обучение и обслуживание моделей рекомендаций. Он построен на irspack и использует один YAML-файл рецепта для определения всего конвейера: источник данных, алгоритм обучения, поиск гиперпараметров и место вывода. Команда `recotem train` создает подписанный бинарный артефакт, а `recotem serve` запускает FastAPI-сервер, который предоставляет конечные точки, такие как `/v1/recipes/{name}:recommend` и `:recommend-related`, с автоматической горячей заменой при появлении новых артефактов. Для работы не требуется база данных или брокер сообщений, что делает его легковесным и простым в развертывании.
Ключевые возможности включают:
- **Конфигурация на основе рецептов**: Один YAML-файл определяет полную модель, от приема данных до обслуживания.
- **Оптимизация гиперпараметров**: Использует Optuna для поиска по алгоритмам irspack.
- **iALS с учетом признаков**: Поддерживает признаки элементов/пользователей (категориальные, числовые, мульти-лейбл) для улучшенных рекомендаций.
- **Поддержка холодного старта**: Может рекомендовать для неизвестных пользователей или элементов, используя атрибутивные признаки.
- **Подключаемые источники данных**: Встроенная поддержка CSV, Parquet, BigQuery и SQL (PostgreSQL, MySQL, SQLite) с расширяемостью через точки входа Python.
- **Безопасные артефакты**: Подписаны HMAC с ротацией нескольких ключей и детерминированным списком разрешенных классов для безопасной десериализации.
- **Аутентификация по API-ключу**: Необязательный заголовок `X-API-Key`, ключи хэшируются при хранении.
- **Гибкое хранилище**: Использует fsspec для локальных путей, S3, GCS, Azure и HTTPS.
- **Наблюдаемость**: Опциональные метрики Prometheus и структурированные JSON-логи с редактированием секретов.
Инструмент предназначен для воспроизводимости и операционной простоты. Обучение выполняется как пакетное задание (например, cron, Airflow, Kubernetes CronJob), а обслуживание — это долгоживущий процесс, который отслеживает новые артефакты и атомарно их заменяет. Такое разделение позволяет обучению и обслуживанию работать на разных машинах, общаясь только через файлы артефактов.
Установка осуществляется через pip с дополнительными опциями для конкретных источников данных (например, `recotem[bigquery]`, `recotem[s3]`). Мультиархитектурный Docker-образ доступен на ghcr.io. Проект требует Python 3.12+ и поддерживает glibc Linux (x86-64/arm64), macOS (Apple Silicon) и Windows (x86-64). Некоторые дополнительные опции, такие как `bprfm`, имеют более узкую поддержку платформ и могут потребовать сборки из исходного кода.
Пример быстрого старта демонстрирует обучение рекомендателя TopPop на небольшом CSV-файле и предоставление рекомендаций через HTTP. Сайт документации (recotem.org) содержит подробные руководства, справочники API и операционные инструкции.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.