【问题标题】:How to use tensorflow grappler?如何使用张量流抓斗器?
【发布时间】:2020-01-07 15:00:45
【问题描述】:

我正在尝试通过应用 grappler 来优化我的 tensorflow 模型服务性能,我正在开发 C++ tensorflow-serving 服务。 AFAIK,我应该在LoadSavedModel 之后做抓手的事情。但是我不确定我到底应该做什么,我应该自己编写op优化还是我只是调用API? 我用谷歌搜索了很长时间,没有看到解决问题的帖子或代码 sn-ps。

您能给我任何建议或代码示例吗?

【问题讨论】:

    标签: tensorflow optimization deep-learning tensorflow-serving


    【解决方案1】:

    我通过搜索 tensorflow 代码库找到了答案。

         tensorflow::grappler::GrapplerItem item;
         item.fetch = std::vector<std::string>{output_node_};
         item.graph = bundle_.meta_graph_def.graph_def();
         tensorflow::RewriterConfig rw_cfg;
         rw_cfg.add_optimizers("constfold");
         rw_cfg.add_optimizers("layout");
         auto new_graph_def = bundle_.meta_graph_def.mutable_graph_def();
         tensorflow::grappler::MetaOptimizer meta_opt(nullptr, rw_cfg);
         meta_opt.Optimize(nullptr, item, new_graph_def);
    

    通过添加上面的代码行,我的 GraphDef-Serialized-Filesize 从 20MB 减少到了 6MB,所以它肯定做了修剪。但我发现 session.Run() 比以前花费了更多时间。

    ============ 更新: 上面的用法不正确。默认设置使用 grappler 优化图形,并在加载保存的模型时运行。您可以通过查看LoadSavedModel相关代码来了解正确的用法。

    【讨论】:

    • 您能分享任何其他提示吗?我正在尝试保存优化的图形并在以后重用它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 2016-09-23
    • 2020-08-06
    • 2018-10-25
    相关资源
    最近更新 更多