Skip to page content
SAVRN
Search Plan a project

Open-weight model · Other

trivago-recsys-moe

by Taha Moula tmoula/trivago-recsys-moe

trivago-recsys-moe is an open-weight model for other from Taha Moula, released under MIT License. Its published files total 492.6 MB.

Trained weights and artifacts for tmoula/trivago-recsys-moe, the Polanyi Labs prototype. It does session-based hotel recommendation on the Trivago RecSys Challenge 2019 data.

Parameters—
Context—
Weights479.8 MB
Licensemit
AccessOpen weights
Monthly Downloads—

Model Card

By Taha Moula, published under mit, revision da0f074fe2bf.

Trained weights and artifacts for tmoula/trivago-recsys-moe, the Polanyi Labs prototype. It does session-based hotel recommendation on the Trivago RecSys Challenge 2019 data. It also includes an experimental persona-conditioned mixture-of-experts bridge that transfers retail browsing behaviour (Yoochoose, RecSys Challenge 2015) into the travel domain. The code (model classes, preprocessing, training and inference scripts) lives on GitHub. This repo only hosts the files too large for git. The model takes two left-padded [batch, 20] tensors, refids and actionids, and returns logits over all 400,278 tokens (index 0 is padding). Decode the results with mappings["idx2ref"]. - Unrelated pairings…

Read Taha Moula's full model card

Trained weights and artifacts for tmoula/trivago-recsys-moe, the Polanyi Labs prototype. It does session-based hotel recommendation on the Trivago RecSys Challenge 2019 data. It also includes an experimental persona-conditioned mixture-of-experts bridge that transfers retail browsing behaviour (Yoochoose, RecSys Challenge 2015) into the travel domain.

The code (model classes, preprocessing, training and inference scripts) lives on GitHub. This repo only hosts the files too large for git.

Files

File Size What it is
context_sasrec_best.pt 413 MB ContextAwareSASRec state dict: 103M params, 400,277 hotel/reference tokens, 10 action types, hidden size 128, 2 transformer layers, 4 heads
mappings.pkl 10 MB action2idx, ref2idx, idx2ref for the checkpoint above. Rebuilt from the sorted train.csv so the ids line up with the checkpoint
sasrec_source_encoder.pt 67 MB Phase 1 SASRecSourceEncoder (52,739 Yoochoose items, hidden size 256, 4 layers), pre-trained on next-click prediction
archetypes.json small 7 behavioural shopper archetypes (K-Means over Yoochoose sessions): label, description, centroid features
persona_P_vectors.npy 2.8 MB [50000, 7] persona-to-archetype mixtures for the 50k Nemotron personas

Usage

git clone https://github.com/tmoula/trivago-recsys-moe && cd trivago-recsys-moe
pip install -e .
python scripts/download_weights.py          # pulls this repo into ./artifacts
python scripts/recommend.py --events "search for destination:0" "interaction item image:9753022" "clickout item:9753022"

Or in Python:

import pickle, torch
from huggingface_hub import hf_hub_download
from trivago_moe.models import ContextAwareSASRec

repo = "tmoula/trivago-recsys-moe"
mappings = pickle.load(open(hf_hub_download(repo, "mappings.pkl"), "rb"))
model = ContextAwareSASRec(num_refs=mappings["NUM_REFS"], num_actions=mappings["NUM_ACTION_TYPES"])
model.load_state_dict(torch.load(hf_hub_download(repo, "context_sasrec_best.pt"), map_location="cpu"))
model.eval()

The model takes two left-padded [batch, 20] tensors, ref_ids and action_ids, and returns logits over all 400,278 tokens (index 0 is padding). Decode the results with mappings["idx2ref"].

Training

Data Trivago RecSys 2019 train.csv: 649,297 sessions that contain a clickout, split randomly 80/10/10
Target the last clickout item reference in each session
Input the last 20 (reference, action type) events of the session
Optimisation Adam, lr 1e-3, StepLR(5, 0.5), batch 2048, 20 epochs, best val HR@10 checkpoint, 1×A100

Evaluation and limitations

Metric (test split) Value
HR@10 0.753
HR@20 0.755

These numbers are inflated by target leakage. The input window includes the target clickout itself, so the model mostly learns to copy the last clicked hotel. That is why HR@10 and HR@20 are almost the same. Treat this checkpoint as a pipeline and demo artifact, not a benchmark result. The GitHub repo has a leak-free training option (scripts/train_context_sasrec.py --exclude-target).

Other known limitations: - Unrelated pairings in the MoE stage. Retail vectors, personas and travel sessions are paired by index, not by a real user link. No MoE bridge checkpoint is published. - Reference tokens are not all hotels. They include non-hotel references (city names, filter values, "0" for empty), so check that a predicted id is a real hotel before showing it to users. - Dataset terms apply. The Trivago and Yoochoose datasets were released for research use, so check their terms before any commercial use of these weights.

See Known issues on GitHub for details.

License

Code and weights: MIT. The underlying datasets keep their own terms.

Identity and Version

Repository
tmoula/trivago-recsys-moe
Publisher
Taha Moula
Task
Other
Modality
Other
Library
pytorch
Parameters
Not stated by the source
Languages
Not stated by the source
Revision
da0f074fe2bf5c41d482bb006c5e56fcbf2a065b
First published
2026-10-17
Last updated
2026-10-17

Files and Weights

7 files, 492.6 MB in total. The weights are 2 files totalling 479.8 MB in pt.

Weights2 files · 479.8 MB
Configuration1 file · 3.1 KB
Documentation1 file · 4.3 KB
Other2 files · 12.9 MB
Repository1 file · 1.5 KB
Every file
FileTypeSizeSHA-256
context_sasrec_best.ptWeights413.1 MB 72dd40a92aff
sasrec_source_encoder.ptWeights66.7 MB 2a3d96310738
archetypes.jsonConfiguration3.1 KB —
README.mdDocumentation4.3 KB —
mappings.pklOther10.1 MB 16194c867d21
persona_P_vectors.npyOther2.8 MB 21678aa1936b
.gitattributesRepository1.5 KB —

License and Download

License
mit
Access
Open weights, no gate
Download size
479.8 MB
Download from Taha Moula

Released by Taha Moula through its official repository on Hugging Face. Read the license.

Memory Requirements

PrecisionWeights in memory
As published479.8 MB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About trivago-recsys-moe

Can I use trivago-recsys-moe commercially?

Yes. trivago-recsys-moe is released under MIT License. The MIT License is a short permissive license. It permits commercial use, modification and redistribution, provided the copyright notice and permission notice are included.

Similar Models

Model · Other

JLD

Shreshth

Official fitted Jacobian lens for JLD and JLD-fast, by Shreshth Saini, Balu Adsumilli, and Alan C. Bovik. JLD measures the perceptual distance between an aligned reference image and a distorted image. Lower scores mean more similar images. It projects early DINOv2 patch features onto directions selected by the encoder's output sensitivity. The lens is fitted from unlabeled images without human quality ratings. This installs the versioned release wheel and records it in uv.lock. The distribution is named jacobian-lens-distance; the Python import remains jld. The package already includes this lens. The encoder weights are downloaded separately through timm on first use. Python 3.10 or newer…

Open weights mit jld

ONNX conversion of cua-ai/cua-s1-forms, prepared for lightweight local inference experiments with ONNX Runtime, ONNX Runtime Web, WebAssembly (WASM), and WebGPU. Please read the original model card before using this conversion. It contains the authoritative description of the model's architecture, training setup, evaluation, limitations, and intended scope. CUA-S1 Forms is a small specialist "System One" model for form-oriented computer-use tasks. Unlike an autoregressive LLM, it does not generate text token-by-token. For each UI element, it receives: 1. a short structured context describing the task, form, and element, and 2. a set of candidate options such as extracted document values…

Open weights mit

Model · Other

weather-sculpt

Z

Sculpt real ECMWF ERA5 atmospheric state into publish-ready video, GIF, and sound. Not animation. Not simulation. Real observed weather, rendered through 4 tuned presets. - Global 0.25 deg x 7 days (5 variables: t2m, u10, v10, tp, msl) - China region 0.25 deg x 30 days (5 variables) - 4 presets: temperature waves / wind streamlines / rain curtain / pressure vortex - Weather sonification (WAV) - "hear" the atmosphere - Pre-downloaded, zstd-compressed, SHA-256 checksummed https://roblitz-spec.github.io/weather-sculpt/ - Full dataset + commercial license: https://robloxer31.gumroad.com/l/Weather-Sculpt ECMWF ERA5 reanalysis (CC-BY 4.0). The same dataset used by meteorologists worldwide.

Open weights mit custom

Model · Other

fly-instinct

Z

A frozen, non-learning recursive network built on the real fruit-fly MaleCNS connectome (Janelia 2024). Feed any stimulus, get an organic, structured "instinctive" signal that is more alive than noise, less predictable than a script. Not AI. Not a brain. Not learning. Just real neural wiring, frozen. - Real MaleCNS connectome subset (1,587,930 edges, ~25 MB) - 4 tuned presets: escape / sugar / startle / explore - Zero training. Weight-frozen. Deterministic per seed. https://roblitz-spec.github.io/fly-instinct/ - Full 1.05GB connectome + commercial license: https://robloxer31.gumroad.com/l/Fly-Instinct

Open weights mit custom

Pretrained DiT decoders for TT-VidT (Decoupling the Temporal Axis for Efficient Motion-Centric Video Pretraining, NeurIPS 2026). Paper · Each TT-VidT encoder pretraining run initialises its decoder from one of these; the training code downloads them automatically through DECODERPRETRAINED, e.g. "KBlueLeaf/TTVidT-decoders/pretrainvideoSqknorm". The decoders work in the 32x32x4 latent space of the frozen f8 frame VAE KBlueLeaf/latentmaid-vae and are conditioned on DINOv3 ViT-B/16 features (768-d). - ImageNet decoders reconstruct an ImageNet image from its DINOv3 class token. - Video decoders reconstruct a later video frame from its class token plus, through cross-attention, the spatial…

Open weights apache-2.0

Model · Other

nys-sft-public

Dakuwon Moody

NYS is not a transformer. It is a coupled-oscillator organism: phases \(\thetai\), amplitudes, natural frequencies \(\omegai\), and a sparse coupling graph \(K\). Language, compiler bits, and speech-frame IDs live on one graph (\(N = 5{,}000{,}000\) nodes, \(k = 512\) edges per node). The native graph trains by Equilibrium Propagation (free RK4, then same-moment free/nudged branches, then a contrastive \(K\) update), without backprop or a cross-entropy objective. A separate sparse context head now provides retrieved language inputs. The GPU Qwen teacher uses PyTorch/Transformers; that does not make the native graph a transformer. Dakuwon Moody (YNSScarSaiyan) · Saiyan Corp The…

Open weights mit nys-thermodynamic