Перейти к содержанию

Как подключить донора

Donor — это любой обученный рекомендатель, который может скорить warm items. При прямом использовании библиотеки adapter не нужен: можно передать таблицу [user_id, item_id, score] самостоятельно. ModelAdapter нужен, когда donor должен запускаться внутри warmbench.

Реализуйте adapter

import numpy as np
import pandas as pd

from warmtransfer.bench.adapters.base import ModelAdapter, register_adapter
from warmtransfer.columns import Columns as C
from warmtransfer.types import Dataset


@register_adapter("my_donor")
class MyDonor(ModelAdapter):
    def fit(self, dataset: Dataset, seed: int = 0) -> "MyDonor":
        self._train = dataset.interactions
        return self

    def score(self, user_ids: np.ndarray, item_ids: np.ndarray) -> pd.DataFrame:
        return pd.DataFrame(
            {
                C.User: np.repeat(user_ids, len(item_ids)),
                C.Item: np.tile(item_ids, len(user_ids)),
                C.Score: 0.0,
            }
        )

Замените constant score на inference вашей модели. Возвращаемый DataFrame должен содержать все запрошенные пары user-item в long format.

Зарегистрируйте module

Импортируйте adapter из warmtransfer.bench.adapters.__init__, чтобы decorator выполнился до чтения registry в warmbench.

Используйте в config

donors:
  - name: my_donor
    params:
      some_param: 10

Сохраните warm-only contract

Adapter должен обучаться только на split.train warm interactions. Он не должен видеть test-cold items, validation-cold labels или benchmark metrics.