项目概览与背景

什么是 TorchEasyRec?

TorchEasyRec 是由阿里巴巴 PAI 团队开发的基于 PyTorch 的推荐系统框架,提供从模型构建、训练到部署的完整工作流,可处理大规模深度学习推荐模型。

与通用深度学习框架不同,TorchEasyRec 是为推荐任务专门设计的:

  • 匹配(召回,Matching / Candidate Generation):DSSM、MIND、TDM、DAT
  • 打分(排序,Scoring / Ranking):DeepFM、DIN、DLRM、DCN、xDeepFM、WuKong
  • 多任务学习(Multi-Task Learning):MMoE、PLE、DBMTL、PEPNet
  • 生成式推荐(Generative Recommendation):DLRM-HSTU、ULTRA-HSTU、HSTU-Match

它要解决的问题

构建生产级推荐系统需要应对一系列棘手难题:

  1. 特征工程(Feature engineering) — 处理类别特征(数百万 ID)、原始数值特征、序列行为特征、交叉特征
  2. 大规模嵌入(Large-scale embeddings) — 嵌入表可达 TB 级,需要分布式分片
  3. 训练效率(Training efficiency) — 数据 / 模型混合并行、混合精度、梯度裁剪
  4. 在线服务(Serving) — TensorRT / AOTInductor 加速、阿里云 EAS 部署
  5. 特征生成一致性(Feature generation consistency) — 训练与推理使用相同的特征变换

TorchEasyRec 以配置驱动(configuration-driven) 的方式解决上述所有问题:用户在 protobuf 配置中定义数据 schema、特征配置、模型架构,框架据此构建对应的 PyTorch 模型。

关键差异化优势

维度 TorchEasyRec EasyRec (TF) TorchRec XGBoost-based
后端 PyTorch TensorFlow PyTorch 不适用
模型数量 20+ 20+ 1(DLRM) ~5
分布式训练 TorchRec 分片 TF 分布式 原生 不支持
特征生成 pyfg(基于 DAG) 特征配置 手动 手动
自定义模型 插件化 插件化 从零编写 不适用
云集成 MaxCompute、PAI、EAS 类似 不适用 不适用
推理加速 TensorRT、AOTInductor TF-TRT AOTInductor 不适用

何时选用 TorchEasyRec

  • 你在阿里云上需要一个生产就绪的推荐系统
  • 你希望快速实验 20+ SOTA 模型,而无需编写代码
  • 你需要分布式训练以应对大规模嵌入
  • 你要求训练与推理之间的特征生成严格一致
  • 你正从 EasyRec(TF 版本)迁移到 PyTorch

整体架构

┌─────────────────────────────────────────────────────────┐
│                   Pipeline Config                        │
│  (EasyRecConfig: data + features + model + train/eval)   │
└─────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────┐
│               Data Layer (datasets/)                     │
│  CSV  │  Parquet  │  ODPS  │  Kafka  │  ...               │
└─────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────┐
│             Feature Layer (features/)                     │
│  IdFeature │ RawFeature │ SequenceFeature │ ComboFeature  │
│  + pyfg (Feature Generation DAG)                         │
└─────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────┐
│           Embedding Layer (modules/embedding.py)          │
│  EmbeddingBagCollection │ EmbeddingCollection            │
│  + ManagedCollision (ZCH) │ + TorchRec sharding          │
└─────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────┐
│              Model Layer (models/)                        │
│  BaseModel → RankModel / MatchModel / MultiTaskRank       │
│  → DeepFM │ DSSM │ MMoE │ HSTU │ ...                     │
└─────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────┐
│           Loss / Metric / Export Layer                    │
│  BCE │ Focal │ JRC │ Softmax │ AUC │ Recall@K │ TRT/AOTI │
└─────────────────────────────────────────────────────────┘

参考资料

关键文件

文件 用途
torcheasyrec/tzrec/main.py 训练、评估、导出核心管线
torcheasyrec/tzrec/models/model.py BaseModel 及包装器(TrainWrapper、PredictWrapper)
torcheasyrec/tzrec/models/rank_model.py RankModel 基类 — 损失、指标、预测逻辑
torcheasyrec/tzrec/models/match_model.py MatchModel 基类 — 嵌入相似度、批内负采样
torcheasyrec/tzrec/features/feature.py BaseFeature 与 create_features() 工厂
torcheasyrec/tzrec/modules/embedding.py EmbeddingGroup、EmbeddingGroupImpl、SequenceEmbeddingGroupImpl
torcheasyrec/tzrec/protos/pipeline.proto 管线配置(EasyRecConfig)定义
torcheasyrec/tzrec/protos/model.proto 模型配置定义(全部模型类型)

This site uses Just the Docs, a documentation theme for Jekyll.