RecIS
阿里开源的 PyTorch 推荐系统统一训练框架,融合稀疏 Embedding 与稠密计算,支持超大规模工业级 CTR 模型训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
阿里开源的 PyTorch 推荐系统统一训练框架,融合稀疏 Embedding 与稠密计算,支持超大规模工业级 CTR 模型训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

你是否遇到过这样的困境:公司有一套用 TensorFlow 写的推荐系统,效果不错,但团队想切换到 PyTorch,却发现迁移成本极高——稀疏 Embedding 的处理方式完全不同,原有优化全部要推倒重来。更头疼的是,当你想把推荐系统和多模态大模型结合时,两套框架之间的数据传输、参数同步简直是噩梦。
这就是阿里巴巴广告算法团队曾经面临的真实痛点,也是他们开源 RecIS(Recommendation Intelligence System,推荐智能系统)的核心动机。
推荐系统的计算负载有一个独特之处:大量稀疏特征(用户 ID、商品 ID、行为序列)与少量稠密特征(用户年龄、商品价格)共存。传统做法是分别处理这两类特征,再拼接到一起。RecIS 的创新在于,从底层架构就统一了稀疏-稠密混合计算,让 PyTorch 生态的优势(自动求导、分布式训练工具、算子融合生态)直接为推荐系统所用。
RecIS 由阿里巴巴淘天广告技术团队与爱橙科技智能引擎事业部联合推出,已在阿里内部广告、推荐、搜索等核心场景大规模落地。2025 年 9 月发布论文并同步开源 v1.0.0,目前 GitHub 已有超过 350 颗星。开源版本基于 Apache-2.0 许可证。

图 1:RecIS 系统架构(来源:项目官方文档)
RecIS 采用模块化设计,将推荐训练拆分为五个核心组件:
ColumnIO(数据读取层):负责从分布式存储读取数据,支持分片并行读取,在读取阶段完成特征预计算,最终将样本组装为 PyTorch Tensor 并提供预取功能。这一层的关键价值在于,它能直接对接阿里内部 ODPS(飞天大数据平台)和 ORC 格式,无需用户自行处理复杂的数据转换逻辑。
Feature Engine(特征处理层):提供特征工程和特征转换能力,包括 Hash、Mod、Bucketize 等常用操作。核心亮点是支持自动算子融合优化——将多个细小操作合并为一次 GPU Kernel 调用,大幅减少算子 Launch 开销。实测中,融合优化可将特征处理阶段的 GPU 利用率提升 30% 以上。
Embedding Engine(Embedding 管理与计算层):这是 RecIS 最核心的模块。它实现了两级存储架构的动态 HashTable:**IDMap(一级存储)**以特征 ID 为键,以内存偏移 Offset 为值,用于快速查找;EmbeddingBlocks(二级存储)使用连续分片内存块存储 Embedding 参数和优化器状态,支持动态扩展。这套设计的精妙之处在于,通过 IDMap 的间接层,Embedding 表可以在不重新分配内存的情况下动态增长——这对于亿级别特征量的工业场景至关重要。同时支持多表合并优化:将属性相同的参数表合并,减少特征查找次数,提升内存访问局部性。
Saver(参数保存与加载):以 SafeTensors 标准格式存储稀疏参数。相比 Pickle,SafeTensors 的优势在于:内存映射式加载(不需要把整个模型 load 进内存)和内置的安全校验。
Pipelines(训练流程编排):将上述组件串联起来,封装完整的训练流程,支持多阶段训练(训练/测试交错)和多目标优化(如同时优化点击率和转化率)。
RecIS 的代码仓库分为 Python 层和 C++/CUDA 层两层。Python 层(recis/ 目录)采用清晰的子目录结构:framework/(训练循环、检查点管理、模型导出、推理服务)、nn/(EmbeddingEngine、HashtableHook 特征准入/淘汰策略)、io/(数据加载器,支持 ODPS、ORC、Lake 等多种数据源)、features/(特征处理与融合算子)、metrics/(AUC、CTR 等推荐系统评估指标)。
C++/CUDA 层(csrc/ 目录)实现高性能自定义算子:稀疏梯度更新的融合 Kernel(减少 atomic 操作)、Embedding 查找的向量化访存实现、参数聚合的集合通信(All-to-All)优化。项目使用 setuptools + cpp_extension 构建 CUDA 扩展,支持 NVIDIA GPU(CUDA)和 AMD GPU(ROCm)两种平台。代码质量方面,RecIS 配备了完整的 pytest 测试套件,并使用 ruff + isort + black + mypy 多工具链进行代码质量管控。
让我们通过 examples/deepfm/ 看一个具体例子。DeepFM 是推荐系统经典模型,同时建模特征低阶交叉(FM 部分)和高阶交叉(DNN 部分)。在 RecIS 中,模型定义非常简洁——通过 FeatureEngine 处理原始特征,通过 EmbeddingEngine 完成 Embedding 查表,整个流程由 runner.py 驱动,自动处理数据加载、多阶段训练循环和指标计算。训练脚本通过命令行参数指定数据路径和超参数,无需修改代码即可切换数据集。
RecIS 不是开箱即用的"一键部署"工具。环境要求必须配备 NVIDIA GPU(CUDA 12.4+)和足够显存(推荐 16GB+)。Dockerfile 中包含了完整的编译链路——安装 PyTorch 特定版本 → 编译 column-io → 编译 RecIS C++/CUDA 扩展 → 安装 wheel 包。即使使用 Docker,每次构建也需要 10-20 分钟。更大的障碍是,三个 Git 子模块中有两个托管在阿里内部 GitLab(gitlab.alibaba-inc.com),外部开发者无法直接获取完整依赖。
RecIS 作为阿里巴巴内部框架的开源版本,存在一些明显局限:子模块不可用——三个 Git 子模块中有两个托管在阿里内网 GitLab,外部开发者无法完整编译;缺乏开箱即用推理服务——框架提供了推理服务模块,但没有提供预训练模型或 demo 推理接口;社区规模尚小——350 颗星、25 个 forks,文档以英文为主但部分章节仅有英文版本,中文社区支持有限。
尽管有局限,RecIS 代表了一个重要趋势:超大规模稀疏 Embedding 的高效训练。在 ChatGPT 引发的大模型浪潮中,推荐系统工程师面临一个微妙的问题:LLM 用的是 PyTorch 生态环境,而工业推荐系统长期依赖 TensorFlow 或自研框架。RecIS 第一次将 PyTorch 生态与工业级稀疏训练做了深度整合,让推荐系统开发者也能享受 PyTorch 社区的算子优化和分布式训练工具。
如果你正在构建或维护推荐系统,RecIS 值得深入了解。对于有 PyTorch 背景的工程师,上手成本远低于自研稀疏训练框架——ColumnIO 解决了数据加载的痛点,EmbeddingEngine 封装了最复杂的 HashTable 逻辑,开发者只需要专注于模型结构本身。

图 2:RecIS 微信交流群二维码(来源:项目官方文档)