Music-CRS Challenge β€” Full Model Weights (RecSys Challenge 2026)

All trained artifacts for shuaih777/music-crs-challenge, our solution to the Music Conversational Recommendation Challenge (RecSys Challenge 2026, team shuaih).

devset nDCG@20 = 0.185, Blind-B nDCG@20 = 0.304 (composite 0.252).

Use these to reproduce the submission (Blind-B β†’ predictions.json) without retraining β€” see scripts/run_blind_b_13leg.sh in the code repo.

Contents

Path What it is Base model Size
biencoder/ Bi-encoder #1 BAAI/bge-base-en-v1.5 (110M) ~560MB
biencoder_large/ Bi-encoder #2 (primary β€” also used for cosine feature + multi-query legs) BAAI/bge-large-en-v1.5 (335M) ~1.1GB
e5_large/ Bi-encoder #3 intfloat/e5-large-v2 (335M) ~1.1GB
biencoder_stella/ Bi-encoder #4 dunzhang/stella_en_400M_v5 (400M) ~1.3GB
biencoder_mxbai/ Bi-encoder #5 mixedbread-ai/mxbai-embed-large-v1 (335M) ~1.1GB
biencoder_nv_embed/ Bi-encoder #6 (LoRA fine-tuned; single largest nDCG@20 contributor, +0.011) nvidia/NV-Embed-v2 (7.8B) ~16.7GB
biencoder_personalized/ Bi-encoder #7 / "leg 14" β€” bge-large fine-tuned with a [age_group | gender | country] demographic prefix prepended to the query BAAI/bge-large-en-v1.5 (335M) ~640MB
reranker/lgbm_reproduce.txt LightGBM LambdaRank reranker trained on the union of the 13 base retrieval legs (devset nDCG@20 = 0.1848 originally; verified reproduction = 0.1795) β€” ~80KB
reranker/lgbm_reproduce_14leg.txt LightGBM reranker on the union of 13 legs + personalized (14 legs) β€” this is the config that actually took the locked Blind-B submission from 0.24 β†’ 0.25 nDCG@20 (devset itself is slightly lower than 13-leg: 0.1840 originally / 0.17838 verified reproduction β€” devset doesn't fully predict Blind-B here) β€” ~90KB
pmi/item2item_pmi.npz + pmi/item2item_pmi_meta.json Item-item PPMI co-occurrence matrix (built from 15K training sessions) β€” ~360KB
item2vec/item2vec_model.bin Word2Vec-style Item2Vec model (earlier experiment, not part of the 13-leg pipeline) β€” ~47MB

All 7 bi-encoder folders are full sentence-transformers exports (weights, pooling/normalize modules, tokenizer) plus a precomputed track_embeddings.npy / track_embeddings_ids.json for the full 47K-track catalog, so you can go straight to inference β€” no need to re-encode tracks.

13-leg vs 14-leg: the 13-leg config (lgbm_reproduce.txt) is the reproducible baseline documented in reproduce.sh/REPRODUCE.md and scored 0.24 on the official Blind-B leaderboard. The 14-leg config (lgbm_reproduce_14leg.txt, adding biencoder_personalized) is what was actually submitted as the final, best-of-3 locked Blind-B score of 0.25. Both are provided here for full transparency β€” see session_archive/ in the code repo for how this was discovered.

Quick load (any bi-encoder)

from sentence_transformers import SentenceTransformer
from huggingface_hub import snapshot_download

local_dir = snapshot_download(
    repo_id="shuaih777/music-challenge-models",
    allow_patterns=["biencoder_large/*"],   # swap for any of the 6 folders
)
model = SentenceTransformer(f"{local_dir}/biencoder_large", trust_remote_code=True)

Download everything

from huggingface_hub import snapshot_download
snapshot_download(repo_id="shuaih777/music-challenge-models", local_dir="out_and_reranker")
# then: mv out_and_reranker/{biencoder*,e5_large} <repo>/out/
#       mv out_and_reranker/reranker/lgbm_reproduce.txt <repo>/exp/ltr/
#       mv out_and_reranker/pmi/* <repo>/exp/

Where these came from

Trained/exported by src/train_biencoder.py (all subcommand) β€” see reproduce.sh and REPRODUCE.md in the code repo for exact training commands and hyperparameters.

License

Code: MIT (see code repo). These weights are fine-tunes of the base models listed above β€” inherit their respective licenses. Training data: talkpl-ai/TalkPlayData-Challenge-Dataset (belongs to the challenge organizers).

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support