Upload README.md
Browse files
README.md
CHANGED
|
@@ -26,181 +26,13 @@ license_link: https://huggingface.co/OpenOneRec/OneRec-8B/blob/main/LICENSE
|
|
| 26 |
</div>
|
| 27 |
<br>
|
| 28 |
|
| 29 |
-
## 📖
|
| 30 |
|
| 31 |
-
|
| 32 |
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
* **OneRec-Foundation Models**: A family of models (1.7B & 8B) built on the Qwen3 backbone. The series includes **Standard** versions trained on our open-source dataset and **Pro** versions enhanced with a hundred-billion-token industrial corpus from Kuaishou.
|
| 36 |
-
* **Full-Stack Pipeline**: We open-source our comprehensive training pipeline, including data processing, co-pretraining, and post-training, to ensure full reproducibility and facilitate scaling law research in recommendation.
|
| 37 |
|
| 38 |
-
|
| 39 |
|
| 40 |
-
|
| 41 |
-
* **[2026.1.1]** 🎉 **OneRec-Foundation** models (1.7B, 8B) are now available on Hugging Face!
|
| 42 |
-
* **[2026.1.1]** 🚀 **RecIF-Bench** dataset and evaluation scripts are open-sourced.
|
| 43 |
-
* **[2026.1.5]** 🔡 **OneRec-Tokenizer** is open-sourced to support SID generation for new domains.
|
| 44 |
-
|
| 45 |
-
## 📊 RecIF-Bench
|
| 46 |
-
|
| 47 |
-
We propose **RecIF-Bench** to rigorously assess the synergy between instruction following and domain-specific recommendation. It organizes 8 distinct tasks into a four-layer capability hierarchy:
|
| 48 |
-
|
| 49 |
-
* **Layer 0: Semantic Alignment** (Item Understanding)
|
| 50 |
-
* **Layer 1: Fundamental Prediction** (Short Video Rec, Ad Rec, Product Rec, Label Prediction)
|
| 51 |
-
* **Layer 2: Instruction Following** (Interactive Rec, Label-Conditional Rec)
|
| 52 |
-
* **Layer 3: Reasoning** (Recommendation Explanation)
|
| 53 |
-
|
| 54 |
-
The benchmark aggregates data from three domains: **Short Video** (Content), **Ads** (Commercial), and **Product** (E-commerce).
|
| 55 |
-
|
| 56 |
-
## 🤖 Model Zoo
|
| 57 |
-
|
| 58 |
-
The OpenOneRec-Foundation series is built upon the Qwen architecture, enhanced with **Itemic Tokens** for modality alignment and trained via a multi-stage protocol.
|
| 59 |
-
|
| 60 |
-
| Model | Backbone | Parameters | Description | Link |
|
| 61 |
-
| :--- | :--- | :--- | :--- | :--- |
|
| 62 |
-
| **OneRec-1.7B** | Qwen3-1.7B | 1.7B | Standard version trained on open-source data (~33B tokens) | [HuggingFace](https://huggingface.co/OpenOneRec/OneRec-1.7B) |
|
| 63 |
-
| **OneRec-8B** | Qwen3-8B | 8B | Standard version trained on open-source data (~33B tokens) | [HuggingFace](https://huggingface.co/OpenOneRec/OneRec-8B) |
|
| 64 |
-
| **OneRec-1.7B-Pro** | Qwen3-1.7B | 1.7B | Scaled-up version with expanded datasets (~130B tokens) | [HuggingFace](https://huggingface.co/OpenOneRec/OneRec-1.7B-pro) |
|
| 65 |
-
| **OneRec-8B-Pro** | Qwen3-8B | 8B | Scaled-up version with expanded datasets (~130B tokens) | [HuggingFace](https://huggingface.co/OpenOneRec/OneRec-8B-pro) |
|
| 66 |
-
|
| 67 |
-
## 🏗️ Method & Architecture
|
| 68 |
-
|
| 69 |
-
OpenOneRec reframes recommendation as a general-purpose sequence modeling paradigm.
|
| 70 |
-
|
| 71 |
-
### 1. Items as Tokens
|
| 72 |
-
To bridge the modality gap, we treat items as a distinct modality using **Itemic Tokens** derived from hierarchical vector quantization. This allows the LLM to process interaction history as a cohesive context sequence.
|
| 73 |
-
|
| 74 |
-
### 2. Training Pipeline
|
| 75 |
-
Our framework utilizes the following recipe:
|
| 76 |
-
* **Pre-Training**: Integrates collaborative signals via Itemic-Text Alignment and Full-Parameter Co-Pretraining.
|
| 77 |
-
* **Post-Training**:
|
| 78 |
-
* *Stage 1*: Multi-task Supervised Fine-tuning for basic instruction following.
|
| 79 |
-
* *Stage 2*: On-policy Distillation to restore general reasoning performance.
|
| 80 |
-
* *Stage 3*: Reinforcement Learning to enhance recommendation capabilities.
|
| 81 |
-
|
| 82 |
-
<div align="center">
|
| 83 |
-
<img src="assets/framework.png" width="80%" alt="OpenOneRec Overall Framework" />
|
| 84 |
-
<br>
|
| 85 |
-
<em>Figure: The Overall Framework of OpenOneRec.</em>
|
| 86 |
-
</div>
|
| 87 |
-
|
| 88 |
-
## 📈 Performance
|
| 89 |
-
|
| 90 |
-
### Results on RecIF-Bench
|
| 91 |
-
OpenOneRec-Foundation achieves **State-of-the-Art (SOTA)** results across RecIF-Bench tasks, significantly outperforming baselines like LC-Rec and TIGER.
|
| 92 |
-
|
| 93 |
-
| Task | Metric | SASRec | TIGER | LC-Rec | OneRec-1.7B | OneRec-8B | OneRec-1.7B-Pro | **OneRec-8B-Pro** |
|
| 94 |
-
| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- |
|
| 95 |
-
| **Short Video Rec** | Recall@32 | 0.0119 | 0.0132 | 0.0180 | 0.0272 | 0.0355 | 0.0274 | **0.0369** |
|
| 96 |
-
| **Ad Rec** | Recall@32 | 0.0293 | 0.0581 | 0.0723 | 0.0707 | 0.0877 | 0.0735 | **0.0964** |
|
| 97 |
-
| **Product Rec** | Recall@32 | 0.0175 | 0.0283 | 0.0416 | 0.0360 | 0.0470 | 0.0405 | **0.0538** |
|
| 98 |
-
| **Label-Cond. Rec** | Recall@32 | 0.0140 | 0.0123 | 0.0170 | 0.0184 | 0.0228 | 0.0182 | **0.0235** |
|
| 99 |
-
| **Label Pred.** | AUC | 0.6244 | 0.6675 | 0.6139 | 0.6184 | 0.6615 | 0.6071 | **0.6912** |
|
| 100 |
-
| **Interactive Rec** | Recall@32 | -- | -- | 0.2394 | 0.1941 | 0.3032 | 0.2024 | **0.3458** |
|
| 101 |
-
| **Item Und.** | LLM Score | -- | -- | 0.2517 | 0.3175 | 0.3202 | 0.3133 | **0.3209** |
|
| 102 |
-
| **Rec. Explanation** | LLM Score | -- | -- | 3.9350 | 3.3540 | 3.6774 | 3.5060 | **4.0381** |
|
| 103 |
-
|
| 104 |
-
<div align="center">
|
| 105 |
-
<img src="assets/benchmark.png" width="80%" alt="Holistic Performance Overview of OpenOneRec." />
|
| 106 |
-
<br>
|
| 107 |
-
<em>Holistic Performance Overview of OpenOneRec.</em>
|
| 108 |
-
</div>
|
| 109 |
-
|
| 110 |
-
### Cross-Domain Transferability
|
| 111 |
-
On the **Amazon Benchmark** (10 datasets), OpenOneRec demonstrates exceptional zero-shot/few-shot transfer capabilities, achieving an average **26.8% improvement** in Recall@10 over the second-best method.
|
| 112 |
-
|
| 113 |
-
| Domain | SASRec | TIGER | LC-Rec | **Ours** |
|
| 114 |
-
| :--- | :--- | :--- | :--- | :--- |
|
| 115 |
-
| Baby | 0.0381 | 0.0318 | 0.0344 | **0.0513** |
|
| 116 |
-
| Beauty | 0.0639 | 0.0628 | 0.0764 | **0.0924** |
|
| 117 |
-
| Cell Phones | 0.0782 | 0.0786 | 0.0883 | **0.1036** |
|
| 118 |
-
| Grocery | 0.0789 | 0.0691 | 0.0790 | **0.1029** |
|
| 119 |
-
| Health | 0.0506 | 0.0534 | 0.0616 | **0.0768** |
|
| 120 |
-
| Home | 0.0212 | 0.0216 | 0.0293 | **0.0390** |
|
| 121 |
-
| Pet Supplies | 0.0607 | 0.0542 | 0.0612 | **0.0834** |
|
| 122 |
-
| Sports | 0.0389 | 0.0331 | 0.0418 | **0.0547** |
|
| 123 |
-
| Tools | 0.0437 | 0.0344 | 0.0438 | **0.0593** |
|
| 124 |
-
| Toys | 0.0658 | 0.0527 | 0.0549 | **0.0953** |
|
| 125 |
-
|
| 126 |
-
*Metric: Recall@10. Ours refers to OneRec-Foundation with text-augmented itemic tokens strategy.*
|
| 127 |
-
|
| 128 |
-
## 🚀 Quick Start
|
| 129 |
-
|
| 130 |
-
*Code release and detailed usage instructions are coming soon.*
|
| 131 |
-
|
| 132 |
-
Currently, you can load our models using `transformers>=4.51.0`:
|
| 133 |
-
|
| 134 |
-
```python
|
| 135 |
-
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 136 |
-
|
| 137 |
-
model_name = "OpenOneRec/OneRec-8B"
|
| 138 |
-
|
| 139 |
-
# load the tokenizer and the model
|
| 140 |
-
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
| 141 |
-
model = AutoModelForCausalLM.from_pretrained(
|
| 142 |
-
model_name,
|
| 143 |
-
torch_dtype="auto",
|
| 144 |
-
device_map="auto"
|
| 145 |
-
)
|
| 146 |
-
|
| 147 |
-
# prepare the model input
|
| 148 |
-
# case - prompt with itemic tokens
|
| 149 |
-
prompt = "这是一个视频:<|sid_begin|><s_a_340><s_b_6566><s_c_5603><|sid_end|>,帮我总结一下这个视频讲述了什么内容"
|
| 150 |
-
messages = [
|
| 151 |
-
{"role": "user", "content": prompt}
|
| 152 |
-
]
|
| 153 |
-
text = tokenizer.apply_chat_template(
|
| 154 |
-
messages,
|
| 155 |
-
tokenize=False,
|
| 156 |
-
add_generation_prompt=True,
|
| 157 |
-
enable_thinking=True # Switches between thinking and non-thinking modes. Default is True.
|
| 158 |
-
)
|
| 159 |
-
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
|
| 160 |
-
|
| 161 |
-
# conduct text completion
|
| 162 |
-
# Note: In our experience, default decoding settings may be unstable for small models.
|
| 163 |
-
# For 1.7B, we suggest: top_p=0.95, top_k=20, temperature=0.75 (during 0.6 to 0.8)
|
| 164 |
-
generated_ids = model.generate(
|
| 165 |
-
**model_inputs,
|
| 166 |
-
max_new_tokens=32768
|
| 167 |
-
)
|
| 168 |
-
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()
|
| 169 |
-
|
| 170 |
-
# parsing thinking content
|
| 171 |
-
try:
|
| 172 |
-
# rindex finding 151668 (</think>)
|
| 173 |
-
index = len(output_ids) - output_ids[::-1].index(151668)
|
| 174 |
-
except ValueError:
|
| 175 |
-
index = 0
|
| 176 |
-
|
| 177 |
-
thinking_content = tokenizer.decode(output_ids[:index], skip_special_tokens=True).strip("\n")
|
| 178 |
-
content = tokenizer.decode(output_ids[index:], skip_special_tokens=True).strip("\n")
|
| 179 |
-
|
| 180 |
-
print("thinking content:", thinking_content)
|
| 181 |
-
print("content:", content)
|
| 182 |
-
```
|
| 183 |
-
|
| 184 |
-
## 📜 Citation
|
| 185 |
-
If you find our work helpful, please cite our technical report:
|
| 186 |
-
|
| 187 |
-
```bibtex
|
| 188 |
-
@article{openonerec2025,
|
| 189 |
-
title={An Open Foundation Model and Benchmark to Accelerate Generative Recommendation},
|
| 190 |
-
author={OneRec Team},
|
| 191 |
-
journal={arXiv preprint},
|
| 192 |
-
year={2025}
|
| 193 |
-
}
|
| 194 |
-
```
|
| 195 |
-
## 🛡️ License
|
| 196 |
-
The code in this repository is licensed under the Apache 2.0 License. The model weights are subject to their specific license agreements.
|
| 197 |
-
|
| 198 |
-
## 🙏 Acknowledgements
|
| 199 |
-
|
| 200 |
-
OpenOneRec is built upon and inspired by the open-source ecosystem. We would like to thank:
|
| 201 |
-
|
| 202 |
-
- **Qwen3**: for providing the base architecture and model initialization that OpenOneRec builds upon.
|
| 203 |
-
- **General-domain data sources**: for the public corpora referenced in [`data/general_text`](https://github.com/Kuaishou-OneRec/OpenOneRec/tree/main/data/general_text) used for mixed-domain training.
|
| 204 |
-
- **VeRL & PyTorch distributed training**: for the training infrastructure and scalable primitives (e.g., **FSDP**) used in post-training and large-scale runs.
|
| 205 |
-
|
| 206 |
-
We sincerely thank these projects for their outstanding work.
|
|
|
|
| 26 |
</div>
|
| 27 |
<br>
|
| 28 |
|
| 29 |
+
## 📖 OneRec-Foundation-Pretrain Models
|
| 30 |
|
| 31 |
+
This repository contains the Pre-trained weights of the OneRec-Foundation series. These models serve as the generative recommendation base after Itemic-Text Alignment and Full-Parameter Co-Pretraining.
|
| 32 |
|
| 33 |
+
## 🛠️ Usage & Extension
|
| 34 |
+
These pre-trained weights are released to provide a foundational base for generative recommendation research.
|
|
|
|
|
|
|
| 35 |
|
| 36 |
+
The models are specifically designed to serve as a starting point for further development. Users can leverage this checkpoint to perform Post-training or alignment tailored to their own downstream tasks, specific datasets, or custom conversational requirements.
|
| 37 |
|
| 38 |
+
For technical details regarding the pre-training architecture, please refer to our Technical Report.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|