このプロジェクトについて
Recotemは、レコメンデーションモデルのトレーニングとサービングを簡素化するレシピ駆動型レコメンダーシステムフレームワークです。irspack上に構築されており、単一のYAMLレシピファイルでデータソース、トレーニングアルゴリズム、ハイパーパラメータ検索、出力場所といったパイプライン全体を定義します。`recotem train`コマンドは署名付きバイナリアーティファクトを生成し、`recotem serve`は`/v1/recipes/{name}:recommend`や`:recommend-related`などのエンドポイントを公開するFastAPIサーバーを実行し、新しいアーティファクトが出現すると自動的にホットスワップします。データベースやメッセージブローカーが不要なため、軽量でデプロイが容易です。
主な機能は以下のとおりです。
- **レシピ駆動型設定**: 1つの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`などの一部のエクストラはプラットフォームサポートが狭く、ソースからのビルドが必要な場合があります。
クイックスタートの例では、小さなCSVからTopPopレコメンダーをトレーニングし、HTTP経由でレコメンデーションを提供する方法を示しています。ドキュメントサイト(recotem.org)には、包括的なガイド、APIリファレンス、運用上の詳細が記載されています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.