Как использовать грейплер tenorflow? - PullRequest
1 голос
/ 07 января 2020

Я пытаюсь оптимизировать производительность обслуживания модели тензорного потока с помощью приложения grappler, Я работаю над службой обслуживания тензорного потока C ++ . AFAIK, я должен заняться грейфером после LoadSavedModel. Но я не уверен, что именно я должен делать, я должен написать оптимизацию op сам или я просто вызываю API? Я довольно долго искал в Google и не видел сообщения или фрагменты кода для решения проблем.

Не могли бы вы дать мне какой-нибудь совет или пример кода для этого?

1 Ответ

1 голос
/ 08 января 2020

Я нашел ответ, выполнив поиск по базе кодов тензорного потока.

     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 с 20 МБ до 6 МБ, так что, конечно же, это так обрезка Но я обнаружил, что session.Run () стоит больше времени, чем раньше.

============ update: приведенное выше использование некорректно. Настройка по умолчанию оптимизирует график с помощью устройства захвата и запускается при загрузке сохраненных моделей. Вы можете узнать правильное использование, просмотрев LoadSavedModel соответствующие коды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...