torch-rechub
Torch-RecHub 是一个基于 PyTorch 构建的轻量级推荐系统框架,旨在帮助开发者用极少的代码(仅需约 10 行)快速搭建生产级的推荐模型。它主要解决了推荐算法领域复现难、工程配置繁琐以及从实验到部署流程割裂的痛点,让使用者能将精力集中在业务逻辑与算法优化上,而非底层工程实现。
该工具非常适合算法工程师、数据科学家及高校研究人员使用。无论是需要快速验证新想法的学术探索,还是追求高效落地的企业开发,Torch-RecHub 都能提供强有力的支持。其核心亮点在于内置了超过 30 种主流推荐算法,涵盖匹配、排序、多任务学习及生成式推荐等场景,并提供了标准化的数据处理、训练与评估流水线。
在技术特性上,Torch-RecHub 不仅支持 NVIDIA GPU 和华为昇腾 NPU 加速,还具备独特的“一键 ONNX 导出”功能,可无缝对接生产环境部署。此外,它集成了 WandB、SwanLab 等可视化追踪工具,并支持基于 PySpark 的大数据处理流程,确保了实验的可复现性与工程扩展性。凭借模块化设计,用户也能轻松自定义新的模型或数据集,是连接算法研究与工业应用的理想桥梁。
使用场景
某电商初创公司的算法团队需要在两周内上线一个全新的商品点击率(CTR)预估系统,以支撑即将到来的大促活动。
没有 torch-rechub 时
- 重复造轮子耗时久:工程师需从零编写数据加载、模型定义及训练循环代码,仅搭建基础框架就耗费了一周时间。
- 模型复现门槛高:尝试引入最新的多任务学习算法时,因缺乏标准实现参考,导致调试困难且效果难以复现。
- 工程落地割裂:训练好的 PyTorch 模型无法直接对接线上推理引擎,需额外编写复杂的格式转换脚本,部署风险高。
- 实验管理混乱:缺乏统一的可视化追踪工具,多次实验的参数与结果散落在不同日志文件中,难以对比优化。
使用 torch-rechub 后
- 极速构建流程:利用其标准化流水线,团队仅用 10 行代码便完成了从数据加载到模型训练的全流程,开发效率提升数倍。
- 丰富模型即插即用:直接调用内置的 30+ 种主流推荐算法(如 DeepFM、MMoE),快速验证了多任务排序方案并达到预期指标。
- 一键生产部署:通过自带的 ONNX 导出功能,将模型无缝转换为生产格式,消除了工程适配障碍,实现了平滑上线。
- 实验可视可溯:集成 WandB 与 TensorBoardX,实时监控训练曲线并自动记录超参数,让迭代优化过程清晰透明。
torch-rechub 让算法团队从繁琐的工程基建中解放出来,真正专注于业务策略与模型效果的极致优化。
运行环境要求
- 未说明
- 非必需(支持 CPU),推荐 NVIDIA GPU 或华为昇腾 NPU
- 若使用 GPU 加速需安装对应 CUDA 版本(示例为 CUDA 12.1)
未说明

快速开始
在线文档: https://datawhalechina.github.io/torch-rechub/
Torch-RecHub —— 用10行代码构建生产级推荐系统。30+主流模型开箱即用,一键导出 ONNX 格式,让您专注于业务而非工程实现。
✨ 特性
- 模块化设计: 轻松添加新模型、数据集和评估指标。
- 基于 PyTorch: 充分利用 PyTorch 的动态图和 GPU 加速能力。支持 NVIDIA GPU 和华为 Ascend NPU。
- 丰富的模型库: 涵盖 30+ 经典及前沿推荐算法(匹配、排序、多任务、生成式推荐等)。
- 标准化流程: 提供统一的数据加载、训练和评估工作流。
- 简单配置: 通过配置文件或命令行参数调整实验设置。
- 可复现性: 设计确保实验结果可复现。
- ONNX 导出: 将训练好的模型导出为 ONNX 格式,便于无缝部署到生产环境。
- 跨引擎数据处理: 支持基于 PySpark 的数据处理与转换,方便在大数据管道中部署。
- 实验可视化与跟踪: 内置对 WandB、SwanLab 和 TensorBoardX 的统一集成。
📖 目录
🔧 安装
要求
- Python 3.9+
- PyTorch 1.7+(建议使用支持 CUDA 的版本以获得 GPU 加速)
- NumPy
- Pandas
- SciPy
- Scikit-learn
安装步骤
稳定版(推荐):
# 根据设备安装对应的 PyTorch
pip install torch # CPU
pip install torch --index-url https://download.pytorch.org/whl/cu121 # GPU (CUDA 12.1)
pip install torch torch-npu # NPU (华为 Ascend,需 torch-npu >= 2.5.1)
pip install torch-rechub
最新版:
# 如果尚未安装 uv,先安装
pip install uv
# 克隆并安装
git clone https://github.com/datawhalechina/torch-rechub.git
cd torch-rechub
# 根据设备安装对应的 PyTorch
uv pip install torch # CPU
uv pip install torch --index-url https://download.pytorch.org/whl/cu121 # GPU (CUDA 12.1)
uv pip install torch torch-npu # NPU (华为 Ascend,需 torch-npu >= 2.5.1)
uv sync
可选依赖
可通过 uv sync --extra <name> 或 pip install "torch-rechub[<name>]" 安装额外的依赖组。
annoy: 添加基于 Annoy 的近似最近邻索引,用于检索服务。faiss: 添加基于 FAISS 的向量索引,适用于高性能检索实验。milvus: 添加 Milvus 客户端支持,便于对接外部向量数据库服务流程。bigdata: 添加 PyArrow 支持,用于 Parquet 格式的数据加载和大数据预处理。onnx: 添加 ONNX 导出、推理运行时及模型转换相关依赖。visualization: 添加使用 TorchView 和 Graphviz 的模型图可视化支持。tracking: 添加对 WandB、SwanLab 和 TensorBoardX 的集成,用于实验跟踪。dev: 添加测试、代码风格检查、类型注解及本地开发工具。
🚀 快速入门
以下是一个在 MovieLens 数据集上训练 DSSM 模型的简单示例:
# 如果使用最新版,先克隆仓库
git clone https://github.com/datawhalechina/torch-rechub.git
cd torch-rechub
uv sync
# 运行匹配示例(需先进入脚本目录,因为脚本使用相对路径加载数据)
cd examples/matching
python run_ml_dssm.py
# 或者使用自定义参数:
python run_ml_dssm.py --model_name dssm --device 'cuda:0' --learning_rate 0.001 --epoch 50 --batch_size 4096 --weight_decay 0.0001 --save_dir 'saved/dssm_ml-100k'
# 运行排序示例
cd ../ranking
python run_criteo.py
训练完成后,模型文件将保存在 saved/dssm_ml-100k 目录下(或您配置的目录)。
📂 项目结构
torch-rechub/ # 根目录
├── README.md # 项目文档
├── pyproject.toml # 项目配置与依赖
├── torch_rechub/ # 核心库
│ ├── basic/ # 基础组件
│ │ ├── activation.py # 激活函数
│ │ ├── features.py # 特征工程
│ │ ├── layers.py # 神经网络层
│ │ ├── loss_func.py # 损失函数
│ │ └── metric.py # 评估指标
│ ├── models/ # 推荐模型实现
│ │ ├── matching/ # 匹配模型(DSSM/MIND/GRU4Rec等)
│ │ ├── ranking/ # 排序模型(WideDeep/DeepFM/DIN等)
│ │ └── multi_task/ # 多任务模型(MMoE/ESMM等)
│ ├── trainers/ # 训练框架
│ │ ├── ctr_trainer.py # CTR 预测训练器
│ │ ├── match_trainer.py # 匹配模型训练器
│ │ └── mtl_trainer.py # 多任务学习训练器
│ └── utils/ # 工具函数
│ ├── data.py # 数据处理工具
│ ├── match.py # 匹配相关工具
│ ├── mtl.py # 多任务相关工具
│ └── onnx_export.py # ONNX 导出工具
├── examples/ # 示例脚本
│ ├── matching/ # 匹配任务示例
│ ├── ranking/ # 排序任务示例
│ └── generative/ # 生成式推荐示例(HSTU、HLLM 等)
├── docs/ # 文档(VitePress,多语言)
├── tutorials/ # Jupyter 教程
├── tests/ # 单元测试
├── config/ # 配置文件
└── scripts/ # 工具脚本
💡 支持的模型
该框架目前支持 30+ 种主流推荐模型:
排序模型 - 13
| 模型 | 论文 | 描述 |
|---|---|---|
| DeepFM | IJCAI 2017 | FM + Deep 联合训练 |
| Wide&Deep | DLRS 2016 | 记忆 + 泛化 |
| DCN | KDD 2017 | 显式特征交叉 |
| DCN-v2 | WWW 2021 | 增强型交叉网络 |
| DIN | KDD 2018 | 用户兴趣注意力 |
| DIEN | AAAI 2019 | 兴趣演化建模 |
| BST | DLP-KDD 2019 | Transformer 用于序列 |
| AFM | IJCAI 2017 | 注意力加权 FM |
| AutoInt | CIKM 2019 | 自动特征交互学习 |
| FiBiNET | RecSys 2019 | 特征重要性 + 双线性 |
| DeepFFM | RecSys 2019 | 字段感知 FM |
| EDCN | KDD 2021 | 增强版 DCN |
匹配模型 - 12
| 模型 | 论文 | 描述 |
|---|---|---|
| DSSM | CIKM 2013 | 经典双塔模型 |
| YoutubeDNN | RecSys 2016 | YouTube 深度检索 |
| YoutubeSBC | RecSys 2019 | 采样偏差校正 |
| MIND | CIKM 2019 | 多兴趣动态路由 |
| SINE | WSDM 2021 | 稀疏兴趣网络 |
| GRU4Rec | ICLR 2016 | GRU 用于序列 |
| SASRec | ICDM 2018 | 自注意力序列 |
| NARM | CIKM 2017 | 神经注意会话 |
| STAMP | KDD 2018 | 短期注意力记忆优先 |
| ComiRec | KDD 2020 | 可控多兴趣 |
多任务模型 - 5
| 模型 | 论文 | 描述 |
|---|---|---|
| ESMM | SIGIR 2018 | 整体空间多任务 |
| MMoE | KDD 2018 | 多门混合专家 |
| PLE | RecSys 2020 | 渐进式分层提取 |
| AITM | KDD 2021 | 自适应信息迁移 |
| SharedBottom | - | 经典共享底部 |
生成式推荐 - 3
| 模型 | 论文 | 描述 |
|---|---|---|
| HSTU | Meta 2024 | 层次化序列转换单元,驱动 Meta 的万亿参数推荐系统 |
| HLLM | 2024 | 层次化 LLM 用于推荐,结合 LLM 语义理解 |
| TIGER | NeurIPS 2023 | 基于 T5 的生成式检索用于推荐,并生成语义 ID |
📊 支持的数据集
该框架为以下常用数据集提供了内置支持或预处理脚本:
- MovieLens
- Amazon
- Criteo
- Avazu
- Census-Income
- BookCrossing
- Ali-ccp
- Yidian
- ...
预期的数据格式通常是一个包含以下内容的交互文件:
- 用户ID
- 项目ID
- 评分(可选)
- 时间戳(可选)
有关具体格式要求,请参阅 tutorials 目录中的示例代码。examples/ 目录已在每个场景子目录中包含了示例数据集,您可以直接使用这些数据集进行快速实验和调试。
您可以通过确保您的数据集符合框架的数据格式要求,或者编写自定义数据加载器,轻松集成自己的数据集。
🧪 示例
所有模型使用示例均可在 /examples 中找到。
排序(CTR 预测)
from torch_rechub.models.ranking import DeepFM
from torch_rechub.trainers import CTRTrainer
from torch_rechub.utils.data import DataGenerator
dg = DataGenerator(x, y)
train_dataloader, val_dataloader, test_dataloader = dg.generate_dataloader(split_ratio=[0.7, 0.1], batch_size=256)
model = DeepFM(deep_features=deep_features, fm_features=fm_features, mlp_params={"dims": [256, 128], "dropout": 0.2, "activation": "relu"})
ctr_trainer = CTRTrainer(model)
ctr_trainer.fit(train_dataloader, val_dataloader)
auc = ctr_trainer.evaluate(ctr_trainer.model, test_dataloader)
ctr_trainer.export_onnx("deepfm.onnx")
多任务排序
from torch_rechub.models.multi_task import SharedBottom, ESMM, MMOE, PLE, AITM
from torch_rechub.trainers import MTLTrainer
task_types = ["classification", "classification"]
model = MMOE(features, task_types, 8, expert_params={"dims": [32,16]}, tower_params_list=[{"dims": [32, 16]}, {"dims": [32, 16]}])
mtl_trainer = MTLTrainer(model)
mtl_trainer.fit(train_dataloader, val_dataloader)
auc = ctr_trainer.evaluate(ctr_trainer.model, test_dataloader)
mtl_trainer.export_onnx("mmoe.onnx")
匹配模型
from torch_rechub.models.matching import DSSM
from torch_rechub.trainers import MatchTrainer
from torch_rechub.utils.data import MatchDataGenerator
dg = MatchDataGenerator(x, y)
train_dl, test_dl, item_dl = dg.generate_dataloader(test_user, all_item, batch_size=256)
model = DSSM(user_features, item_features, temperature=0.02,
user_params={
"dims": [256, 128, 64],
"activation": 'prelu',
},
item_params={
"dims": [256, 128, 64],
"activation": 'prelu',
})
match_trainer = MatchTrainer(model)
match_trainer.fit(train_dl)
match_trainer.export_onnx("dssm.onnx")
# 对于双塔模型,您可以分别导出用户塔和物品塔:
# match_trainer.export_onnx("user_tower.onnx", mode="user")
# match_trainer.export_onnx("item_tower.onnx", mode="item")
模型可视化
# 可视化模型架构(需:pip install torch-rechub[visualization])
graph = ctr_trainer.visualization(depth=4) # 生成计算图
ctr_trainer.visualization(save_path="model.pdf", dpi=300) # 保存为高分辨率 PDF
👨💻 贡献者
感谢所有贡献者!
🤝 贡献
我们欢迎任何形式的贡献!请参阅 CONTRIBUTING.md 以获取详细的贡献指南。
我们也欢迎您通过 Issues 提交错误报告和功能建议。
📜 许可证
本项目采用 MIT 许可证 许可。
📚 引用
如果您在研究或工作中使用了本框架,请考虑引用:
@misc{torch_rechub,
title = {Torch-RecHub},
author = {Datawhale},
year = {2022},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/datawhalechina/torch-rechub}},
note = {一个基于 PyTorch 的推荐系统框架,提供易于使用且可扩展的解决方案}
}
📫 联系方式
- 项目负责人: 1985312383
- GitHub Discussions
⭐️ 星标历史
最后更新:2026年3月20日
版本历史
v0.6.02026/03/18v0.5.02026/02/27v0.4.02026/02/11v0.3.02026/02/05v0.2.02026/01/11v0.1.02025/12/17v0.0.62025/12/11v0.0.52025/12/05v0.0.42025/12/04常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。



