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)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
3月前
|
存储 搜索推荐 Python
TorchRec大量使用Jagged Tensor
Jagged Tensor(锯齿张量)是专为变长序列设计的紧凑存储格式,用values+lengths/offsets替代padding,显著节省内存与计算。广泛应用于推荐系统中用户行为、多值标签等不等长特征处理,如HSTU模型中的拼接、拆分与矩阵乘法操作。
423 8
|
机器学习/深度学习 算法 数据挖掘
机器学习集成学习进阶Xgboost算法原理
机器学习集成学习进阶Xgboost算法原理
966 0
|
1月前
|
人工智能 运维 持续交付
5月26日新加坡,千问大会见!
5月26日,2026千问大会在新加坡金沙会展中心召开。在大会【Agent-Native Infra】分论坛,阿里云云原生分享在一站式构建部署、多智能体治理与协作、全链路观测与持续优化、全域智能运维等一系列加速企业Agent 工程分进程的技术产品创新,助力企业打通从 Agent 开发到规模化运行的最后一公里,让智能真正成为可持续交付的生产力。
|
9月前
|
人工智能 运维 监控
Flink 智能调优:从人工运维到自动化的实践之路
本文由阿里云Flink产品专家黄睿撰写,基于平台实践经验,深入解析流计算作业资源调优难题。针对人工调优效率低、业务波动影响大等挑战,介绍Flink自动调优架构设计,涵盖监控、定时、智能三种模式,并融合混合计费实现成本优化。展望未来AI化方向,推动运维智能化升级。
998 8
Flink 智能调优:从人工运维到自动化的实践之路
|
3月前
|
机器学习/深度学习 搜索推荐 iOS开发
TorchEasyRec中INPUT_TILE 环境变量的三个模式
`NPUT_TILE` 是 tzrec 推荐系统在模型导出与在线推理阶段的优化策略,针对“1 用户 → N 商品”场景,避免用户特征重复计算。支持三种模式:`INPUT_TILE=1`(无优化)、`=2`(Embedding前tile)、`=3`(Embedding后tile,计算最优但需拆分Embedding表、依赖FG模式及torchrec,不支持macOS)。
258 6
|
1月前
|
供应链 算法 数据安全/隐私保护
1688店铺流量提升全攻略:零基础合规实操,长效稳定起量
本文深度解析2026年1688平台免费流量逻辑,聚焦搜索、场景、活动、新灯塔四大核心维度,提供零付费、合规、可落地的新手运营方案,助工厂与中小商家突破“零曝光、零询盘”困局,实现自然流量稳步增长。
|
3月前
|
存储 人工智能 API
AI 口语 APP 的开发
本APP专治英语口语“不敢说、说不准、没环境”三大痛点。2026年升级为实时流式对话+音素级纠音+多模态场景模拟的拟人化AI助教,支持20+口音、3D舌位图、AR情境训练,中英无缝切换,用Dify快速落地垂直场景。(239字)
|
3月前
|
搜索推荐 调度 C++
TorchEasyRec的dbmtl 模型 config 详解
DBMTL(Deep Bayesian Multi-Target Learning)是阿里开源的多任务学习模型,显式建模任务因果依赖(如CTR→CVR)。基于TorchEasyRec实现,采用共享Bottom MLP+双Tower结构,CVR Tower融合CTR中间表征,体现贝叶斯条件关系。
253 5
|
3月前
|
人工智能 自然语言处理 安全
多维度网络钓鱼智能检测与闭环防御体系研究
本文构建URL特征、文本语义、DOM结构与用户行为四层智能检测模型,融合代码级实现与攻防实践,提出“技术+行为+管理”闭环防御体系。强调“三不原则”(不点链接、不下附件、不回陌生来电)的前置阻断价值,实测识别率达96.1%,显著降低数据泄露与财产损失风险。(239字)
170 2

热门文章

最新文章