ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

GE 回调函数注册完整指南:三步用 RegisterCallBackFunc 配好 Summary 与 Save 回调

GE 回调函数注册完整指南:三步用 RegisterCallBackFunc 配好 Summary 与 Save 回调 GE 回调函数注册完整指南三步用 RegisterCallBackFunc 配好 Summary 与 Save 回调【免费下载链接】awesome-design-systems ⚒ A collection of awesome design systems项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-design-systems开源项目 awesome-design-systems 的接口参考资料里GE 的RegisterCallBackFunc回调函数注册接口是打通 Summary 与 Checkpoint 能力的关键入口。你下发给 GE 的图中如果带有这两类算子就必须先完成回调注册否则执行时会直接报错。什么是 RegisterCallBackFunc什么时候需要它一句话理解这是你和 GE 之间的一次“预约”。注册之后GE 在执行图的过程中遇到 Summary 或 Checkpoint 算子就会调用你提供的回调函数来处理。典型场景是图执行结束后你的业务需要拿回中间参数比如保存模型、输出汇总信息但不想把具体处理逻辑硬编码进图里。这时就可以把活儿交给自己的回调函数。准备工作2 个文件和 1 个前置条件先引入两个依赖缺一不可头文件#include ge/ge_api.h库文件libge_runner.so还有一个软性前置条件Session 管理组件必须已经初始化。否则注册调用会直接返回GE_SESSION_MANAGER_NOT_INIT这也是“注册为什么失败”这类问题最常见的根源排查时请优先检查初始化顺序。如何注册 Summary 或 Save 回调只需 3 步编写回调函数入参为graph_iduint32_t和params_list键值映射到ge::Tensor返回uint32_t。调用RegisterCallBackFunc把回调传进去key填Summary或Save。检查返回的Status只有拿到SUCCESS才算注册完成。函数原型有两个重载其中 string 数据类型的版本后续会废弃新代码请直接选用非 string 数据类型的版本Status RegisterCallBackFunc(const char *key, const session::pCallBackFunc callback);最小调用示例长这样Status status RegisterCallBackFunc(Summary, MySummaryCallback);key 和 callback 分别该传什么参数该传什么传错或漏传会发生什么key回调类型关键字只支持Summary和Save两个取值传其他字符串会导致注册失败返回FAILEDcallback符合pCallBackFunc签名的函数指针签名与 typedef 定义不一致时编译就过不了两个重载对应两种回调签名区别在于params_list的键类型签名params_list键类型建议pCallBackFuncstring 版std::string后续版本将废弃不建议新代码使用session::pCallBackFuncAscendString 版AscendString✅ 推荐使用返回的错误码意味着什么接下来怎么处理返回的Status意味着什么接下来怎么做SUCCESS回调函数注册成功无需额外操作可以下发图了GE_SESSION_MANAGER_NOT_INITSession 管理未初始化检查是否漏了初始化步骤先初始化再注册FAILED注册失败核对key取值和回调签名后重试漏注册回调会报什么错如果图中带有 Summary 或 Checkpoint 算子却没有事先注册对应回调GE 会直接报错不会静默跳过。 这是新手最常踩的坑之一把“注册回调”当成下发图之前的必做检查项这个报错基本就不会再出现。三个必须记住的硬限制回调类型目前只支持Summary和Save两个取值其他关键字不会被识别。目前只支持图执行完后一次性调用回调函数不要假设每遇到一次算子触发就回调一次。⚠️ 未注册回调就下发 Summary、Checkpoint 算子必然报错建议把注册动作固化进初始化流程。按上面三步走RegisterCallBackFunc的注册流程就完整了先初始化 Session再选对签名最后核对key与返回值。【免费下载链接】awesome-design-systems ⚒ A collection of awesome design systems项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-design-systems创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进