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)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
28天前
|
SQL 关系型数据库 MySQL
5个提升MySQL查询效率的实用技巧
5个提升MySQL查询效率的实用技巧
|
1月前
|
存储 人工智能 关系型数据库
OpenClaw怎么可能没痛点?用RDS插件来释放OpenClaw全部潜力
OpenClaw插件是深度介入Agent生命周期的扩展机制,提供24个钩子,支持自动注入知识、持久化记忆等被动式干预。相比Skill/Tool,插件可主动在关键节点(如对话开始/结束)执行逻辑,适用于RAG增强、云化记忆等高级场景。
946 56
OpenClaw怎么可能没痛点?用RDS插件来释放OpenClaw全部潜力
|
17天前
|
人工智能 API 网络安全
神级组合!阿里云部署 OpenClaw X 飞书 CLI,开启 Agent 基建新时代!(附免费使用6个月服务器)
2026年,AI 与自动化基础设施进入全面落地阶段,各类厂商纷纷开放命令行工具(CLI),标志着软件交互从“为人设计”正式转向“为 AI 设计”。本文以阿里云轻量应用服务器(Lighthouse)为载体,完整呈现**一键部署 OpenClaw、对接飞书 CLI、实现 AI 全自动执行任务**的全流程,让 AI 真正拥有“动手能力”,实现消息自动发送、文献自动整理、知识库自动维护等高频办公场景,真正做到一句话下达指令,AI 全程独立完成。
281 26
|
17天前
|
人工智能 机器人 API
阿里云服务器玩转OpenClaw教程|免费领6月云服务器+配置+飞书接入+让龙虾成为公众号自动化智能分身指南
很多AI爱好者因为缺少稳定服务器,无法长期运行OpenClaw智能体。本文带来一套**零成本阿里云服务器部署方案**,手把手教你搭建OpenClaw环境,并将其改造成可以24小时运行的**公众号智能分身**,实现热点聚合、内容拆解、选题生成、公众号自动发布等全流程自动化能力。
313 24
|
3天前
|
人工智能 网络安全 调度
阿里云 OpenClaw /Hermes Agent 安装并使用 Skill 保姆级图文教程
2026年,OpenClaw(前身为Clawdbot、Moltbot)凭借开源轻量化架构、强大的AI协同能力及完善的插件生态,成为个人、开发者及轻量团队搭建专属AI助手的首选工具[2]。其核心价值在于“自然语言指令+任务自动化”,无需复杂开发,即可实现多场景任务高效执行;而Skills作为OpenClaw的“功能扩展核心”,相当于为AI助手配备了“灵活双手”,通过各类模块化技能插件,让OpenClaw突破纯语言交互的限制,解锁网页自动化、文件处理、代码开发、邮件管理、信息搜索等具象化能力[3]。
126 5
|
1月前
|
Arthas 人工智能 Java
我们做了比你更懂 Java 的 AI-Agent -- Arthas Agent
Arthas Agent 是基于阿里开源Java诊断工具Arthas的AI智能助手,支持自然语言提问,自动匹配排障技能、生成安全可控命令、循证推进并输出结构化报告,大幅降低线上问题定位门槛。
1177 64
我们做了比你更懂 Java 的 AI-Agent -- Arthas Agent
|
27天前
|
Web App开发 安全 数据挖掘
TA446 组织利用 DarkSword 漏洞套件针对 iOS 的定向钓鱼攻击研究
2026年3月,俄APT组织TA446利用泄露的DarkSword iOS漏洞套件,通过伪造大西洋理事会邮件实施定向钓鱼攻击。该攻击依托PAC绕过、内核提权等0day链,实现无文件、低交互的Safari远程入侵,窃取iCloud凭证、钥匙串等敏感数据,并部署GHOSTBLADE与MAYBEROBOT载荷。研究表明,国家级漏洞工具公开化正加速高端移动威胁平民化,亟需构建终端加固、流量检测与行为监控相结合的纵深防御体系。(239字)
355 7
|
17天前
|
人工智能 安全 Linux
OpenClaw 对接阿里云百炼 API:本地 AI 助手快速部署指南
本文详解如何将轻量开源AI助手OpenClaw与阿里云百炼平台快速对接:通过配置兼容OpenAI接口、设置API密钥及模型参数,仅需数步即可本地调用通义千问系列大模型(如qwen-plus、qwen3-max),实现安全、可控、低门槛的智能助手部署。
347 14