Как запустить бенчмарк¶
warmbench запускает datasets × donors × methods под единым pseudo-cold protocol.
Посмотреть доступные компоненты¶
uv run warmbench --list-components
Начать с example config¶
uv run warmbench --config configs/example.yaml --dry-run
uv run warmbench --config configs/example.yaml
Example запускает ML-1M × ALS на baselines и knn_score_avg.
Флаги основной команды¶
Плоская команда warmbench (без подкоманды) принимает следующие флаги:
| Флаг | Дефолт | Значение |
|---|---|---|
--config |
— | путь к YAML config прогона (обязателен, кроме режима --list-components) |
--name |
results |
имя выходной таблицы |
--std |
off | добавить в таблицу результатов колонки std по сидам |
--rela-base |
— | baseline-метод для колонки RelaImpr (относительный прирост AUC) |
--dry-run |
off | проверить config и зарегистрированные компоненты без запуска |
--list-components |
off | напечатать зарегистрированные datasets/donors/methods/splitters |
Примеры:
# добавить колонки std по сидам и своё имя таблицы
uv run warmbench --config configs/example.yaml --std --name als_run
# добавить колонку RelaImpr относительно baseline Grouped MP
uv run warmbench --config configs/example.yaml --rela-base grouped_most_popular_pers
warmbench try: быстрый вердикт по своим данным¶
warmbench try оценивает методы на ваших данных и печатает leaderboard + вердикт, без полной
матрицы dataset/donor. Это зеркало warmtransfer.recommend(). Полный разбор — в отдельном рецепте
Быстрый вердикт.
uv run warmbench try \
--interactions inter.parquet \
--content content.parquet \
--scores scores.parquet
Обязательные входы (Parquet, если путь оканчивается на .parquet, иначе CSV):
| Флаг | Колонки |
|---|---|
--interactions |
user_id, item_id (тёплая история) |
--content |
item_id + числовые колонки признаков |
--scores |
user_id, item_id, score (скоры донора по тёплым айтемам) |
Опции:
| Флаг | Дефолт | Значение |
|---|---|---|
--metric |
auc |
основная метрика для ранжирования и вердикта |
--methods |
all |
имена методов через запятую или all |
--seeds |
1 |
сколько сидов усреднять |
--seed |
42 |
базовый random seed |
--out |
— | записать отчёт (leaderboard + вердикт) в этот файл |
Команда печатает ранжированный по выбранной метрике leaderboard и однострочный вердикт о том, обгоняет ли трансфер baselines.
Форма config¶
datasets:
- ml-1m
donors:
- name: als
params:
factors: 64
methods:
- name: grouped_most_popular_pers
- name: linmap
- name: linmap
label: linmap_a2 # тот же метод, другие гиперпараметры, отдельная строка результатов
params:
alpha: 2.0
splitter:
name: pseudo_cold
params:
cold_frac: 0.2
val_frac: 0.1
metrics_ks: [1, 5, 10]
seeds: [42]
max_eval_users: 2000
out_dir: docs/results
Два дополнительных ключа стоит знать:
label(на компонент, опционально) — имя, показываемое в таблице результатов; по умолчанию равноname. Используйте для ablation: перечислите один метод несколько раз с разнымиparamsпод разными label, чтобы каждый стал отдельной строкой в одном прогоне.max_eval_users(верхний уровень, дефолт2000) — ограничивает, сколько пользователей скорится при оценке. Уменьшайте для быстрых smoke-прогонов; задайтеnull, чтобы оценивать всех пользователей.
Читать outputs¶
Runner пишет Markdown/CSV/Parquet artifacts в out_dir. Основные таблицы в docs/results/
собираются из этих benchmark artifacts.
Guardrails¶
- Запускайте
--dry-runпосле изменения YAML. - Держите
seedsявными. - Используйте одинаковые splitter и metric settings при сравнении методов.
- Считайте single-seed results directional, пока не проверен multi-seed variance.