Мы обучаем множество вариаций нашей модели с различной конфигурацией и требующей различной предварительной обработки входных данных (где предварительная обработка выполняется вне TensorFlow). Я хотел бы экспортировать наши модели как SavedModels, и я думаю, что у нас будет API-сервер, который будет обеспечивать доступ к моделям и обрабатывать предварительную обработку и общаться с сервером TensorFlow, используя конфигурацию, которую он будет извлекать из метаданных модели через TensorFlow. сервер. Метаданные модели могут быть структурированы как JSON или могут использовать буфер протокола. Мне неясно, какие передовые практики существуют вокруг этого. В частности, буфер протокола MetaInfoDef имеет три различных поля, которые, как представляется, предназначены для хранения метаданных (meta_graph_version
, any_info
и tags
). Но я не смог найти ни одного примера использования любого, кроме поля tags
.
// User specified Version string. Can be the name of the model and revision,
// steps this model has been trained to, etc.
string meta_graph_version = 1;
[...]
// A serialized protobuf. Can be the time this meta graph is created, or
// modified, or name of the model.
google.protobuf.Any any_info = 3;
// User supplied tag(s) on the meta_graph and included graph_def.
//
// MetaGraphDefs should be tagged with their capabilities or use-cases.
// Examples: "train", "serve", "gpu", "tpu", etc.
// These tags enable loaders to access the MetaGraph(s) appropriate for a
// specific use-case or runtime environment.
repeated string tags = 4;
(хотя я не уверен, что все эти три поля можно получить одинаково, используя клиентский API для обслуживания TensorFlow?)