Instructions to use shuaih777/music-challenge-models with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use shuaih777/music-challenge-models with sentence-transformers:
from sentence_transformers import SentenceTransformer model = SentenceTransformer("shuaih777/music-challenge-models") sentences = [ "The weather is lovely today.", "It's so sunny outside!", "He drove to the stadium." ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [3, 3] - Notebooks
- Google Colab
- Kaggle
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).