MiniOneRec 技术解读
MiniOneRec 是一个开源框架,旨在通过扩展生成式推荐模型来提升性能。其核心流程包括 SID(Sequence ID)构建、SFT(监督微调)以及 RL(强化学习)。实验表明,随着模型规模扩大,效果显著提升,且将 SID 与文本描述对齐至关重要。
核心建模架构
框架主要包含四个环节:
- Tokenizer:使用 RQVAE 进行商品分词。
- LLM-Text 对齐:利用大语言模型的世界知识。
- SFT Next Token Prediction:监督学习预测下一个 token。
- RL (GRPO):引入强化学习优化奖励信号。
任务定义
序列推荐任务中,用户 $u$ 的历史交互商品序列记为 $H_u = [i_1, i_2, ..., i_T]$。每个商品 $i_t$ 通过 RQVAE 编码为一个三层的 SID 集合 $\\{c_0^{i_t}, c_1^{i_t}, c_2^{i_t}\}$。训练阶段,LLM $\pi_\theta$ 读取历史序列并预测下一个商品;推理时采用 Beam Search。
Item Tokenization
采用标准 RQVAE。为避免码本坍缩,代码中使用了第一个训练 batch 的 K-means 中心作为 Codebook 初始化。此外,还引入了 Sinkhorn-Knopp algorithm 作为缓解坍缩的技巧。
Align with LLM
为了对齐 LLM 的世界知识与 SID 信号,设计了两个任务:
- 序列推荐任务。
- SID 与文本描述对齐任务。
值得注意的是,项目后续更新中引入了 GPR-inspired SFT with Value-Aware Fine-Tuning (VAFT),根据模拟的商品价值对损失进行加权,但尚未有公开的对比实验结果。
代码实现细节
SFT 训练逻辑
在 MiniOneRec/sft.py 入口中,训练流程涉及以下关键点:
- 主干模型加载:传入要训练的 Base Model。
- SID Token 处理:MiniOneRec 将 SID 融入普通 Tokens 而非 Special Tokens。
- 参数冻结策略:考虑是否冻结 LLM 自带的 Embedding 和参数,仅训练新传入的 SID Token Embedding。
- 数据集类型:支持三种类型——SidSFTDataset(常规指令)、SidItemFeatDataset(SID/Title 互转)、FusionSeqRecDataset(带意图识别)。
SID 索引机制
SID 索引存储在 JSON 文件中,例如 Industrial_Scientific.index.json。结构类似字典映射:
{"0": ["<a_236>", "<b_231>", "<c_226>"], "1": [

