EasyRec和TorchEasyRec中FG NORMAL 和 FG DAG 的区别

简介: TorchEasyRec提供两种特征生成模式:FG_NORMAL(Python逐特征处理,适合调试)与FG_DAG(C++ DAG引擎批量处理,性能更优、支持依赖、stub_type及自动侧识别)。推荐生产环境优先使用FG_DAG。

这两种模式都用于处理原始特征数据(raw feature),区别在于特征生成(Feature Generate)的执行方式。

FG_NORMAL — Python 逐特征处理

  • 定义:data.proto 中描述为 "we use python to run feature generate"
  • 初始化时机:每个 feature 对象在创建时调用 init_fg(),各自独立创建一个 pyfg.FgArrowHandler 实例
  • 处理方式:在 _parse_feature_normal 中,逐个特征调用 feature.parse(input_data) 进行 Python 层面的特征解析
  • 输入名获取:通过遍历每个 feature 的 feature.inputs 属性获取所需的输入字段名
  • 限制:不支持 stub_type(虚拟特征,中间特征)

FG_DAG — C++ DAG 引擎批量处理

  • 定义:data.proto 中描述为 "we use fg_handler to run feature generate"
  • 初始化时机:DataParser 构造时创建一个全局的 pyfg.FgArrowHandler(_init_fg_hander),它会根据所有特征的 fg_json 构建一个 DAG 计算图
  • 处理方式:在 _parse_feature_fg_handler 中,一次性调用 self._fg_handler.process_arrow(input_data_fg) 把所有原始输入丢给 C++ 引擎,批量完成所有特征的生成
  • 输入名获取:通过 fg_handler 的 user_inputs() / item_inputs() / context_inputs() API 获取,自动识别 user/item/context 侧
  • 支持:stub_type(虚拟特征,中间特征)、特征间依赖(DAG 拓扑排序)、自动识别 is_user_feat

对比总结

维度 FG_NORMAL FG_DAG
执行引擎 Python 逐特征循环 C++ DAG 引擎一次性处理
FG Handler 数量 每个特征一个 全局一个(共享)
性能 较慢(Python 循环开销) 更快(C++ 并行 + 批处理)
特征间依赖 不支持(独立处理) 支持(DAG 拓扑排序),就是特征之间可以前后依赖
stub_type 不支持 支持
user/item 自动识别 需通过 expressionside 推断 fg_handler 自动提供 user_inputs()
INPUT_TILE 支持 支持 支持

什么时候用哪个?

推荐使用 FG_DAG(大多数场景):

  • 生产环境训练/推理 — 性能更好
  • 特征之间存在依赖关系(如一个特征的输出是另一个特征的输入)
  • 需要使用 stub_type 虚拟特征
  • 配置了 fg_threads > 0 时自动选用

使用 FG_NORMAL:

  • 简单场景 / 调试阶段,不需要 C++ DAG 引擎
  • 特征配置简单、无特征间依赖
  • 未设置 fg_threads(即 fg_threads = 0)时的默认行为

config_util.py 的兼容逻辑可以看出:旧配置中 fg_threads > 0 就对应 FG_DAG,否则对应 FGNORMAL。新配置直接通过 data_config.fg_mode 显式指定

相关实践学习
使用PAI+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
2月前
|
存储 搜索推荐 Python
TorchRec大量使用Jagged Tensor
Jagged Tensor(锯齿张量)是专为变长序列设计的紧凑存储格式,用values+lengths/offsets替代padding,显著节省内存与计算。广泛应用于推荐系统中用户行为、多值标签等不等长特征处理,如HSTU模型中的拼接、拆分与矩阵乘法操作。
309 8
|
6天前
|
机器学习/深度学习 人工智能 网络架构
深度解析:Transformer 的“灵魂”——QKV 变换的物理直觉
本文用图书馆检索等生活隐喻,从物理意义与认知科学角度解析Transformer中QKV设计的精妙本质:解耦查询(q)、键(k)、值(v)三重角色,实现语义分离、避免自注意力“自恋”,模拟人类动态信息路由的认知过程。(239字)
191 13
|
2月前
|
机器学习/深度学习 搜索推荐 数据处理
PAI-Rec推荐开发平台:企业级智能推荐解决方案,驱动业务全域增长
PAI-Rec是阿里云一站式推荐系统平台,集成多路召回、多目标精排(如DBMTL)、GPU加速推理与灵活迭代能力,已助力电商、直播、音视频等多行业提升点击率、转化率与ROI,实现高效、低成本、可自主演进的智能推荐。
379 16
|
18天前
|
Oracle 关系型数据库 MySQL
OBCP V4.0 认证培训课程《数据库开发设计与优化》 对应的考试练习题
本资料为OceanBase V4数据库核心考点精讲,涵盖分区表(MySQL/Oracle模式上限、分区键约束、Hash分布)、索引类型(局部/全局区别与默认行为)、索引设计(等值在前范围在后、匹配规则)、序列与自增列(NOORDER vs ORDER)、复制表与外表、Hint/Outline/SPM及统计信息等8大模块,含61道单选、多选、判断题及解析,助力高效备考。
154 5
|
2月前
|
存储 搜索推荐 PyTorch
为什么使用 TorchRec 训练和推理更快
本文结合TorchEasyRec实践,从四大维度解析推荐系统加速:1)KeyedJaggedTensor统一变长特征,实现Embedding批量融合查找;2)自动分布式分片突破单卡显存瓶颈;3)TrainPipelineSparseDist流水线并行,重叠通信与计算;4)fbgemm-gpu融合优化器,减少显存访问。端到端提升训练效率与扩展性。
356 9
|
18天前
|
SQL 关系型数据库 MySQL
7-事务控制篇-7
本文简述MySQL三大核心要点:联合索引的最左匹配原则(从左依次匹配,范围查询后失效)、SQL执行顺序(FROM→JOIN→WHERE→GROUP BY→HAVING→SELECT→ORDER BY→LIMIT),以及常见索引失效场景(如LIKE前导%、OR单边无索引、隐式类型转换、函数/运算操作等),并指出EXPLAIN是诊断索引是否生效的关键工具。(239字)
218 2
|
18天前
|
程序员 开发工具 git
初级程序员必备的十大技能之规范编码与团队协作(三)
教程来源 http://qcycj.cn/ 本节系统阐述高效团队协作核心实践:从精准提问、高效会议、知识共享到冲突化解,并配套自动化工具链(Prettier/ESLint/Husky/Commitlint/GitHub Actions),全面提升研发协同质量与工程规范性。
|
2月前
|
机器学习/深度学习 分布式计算 搜索推荐
PAI-Rec 召回引擎:构建高性能推荐系统的核心引擎
PAI-Rec是阿里云智能推荐平台的核心召回引擎,经阿里大规模场景验证。支持多路召回融合(U2I/I2I/向量/随机)、召回即过滤、毫秒级实时更新与分布式弹性架构,开箱即用,助力企业构建毫秒级、高精度、强实时的推荐系统。
339 9
|
2月前
|
机器学习/深度学习 JSON 自然语言处理
PAI-Rec 特征工程全解析:统计特征、实时特征、序列特征与 FG 特征算子
PAI-Rec是阿里云智能推荐的特征工程解决方案,支持离线统计、实时及序列特征自动衍生,并通过Feature Generator(17种内置算子)保障离线/在线特征一致性,大幅降低开发与维护成本。
497 9