Esempio n. 1
0
    def testParseSavedModelSignature_FailIfNoMetaGraph(self):
        model_path = self._MockSavedModel({'meta_graphs': []})

        with self.assertRaisesRegex(
                RuntimeError,
                'MetaGraphDef associated with tags .* could not be found'):
            request_builder._parse_saved_model_signatures(
                model_path, tag_set={'serve'}, signature_names=['foo'])
Esempio n. 2
0
    def testParseSavedModelSignature_FailIfTagSetNotMatch(self):
        model_path = self._MockSavedModel(
            {'meta_graphs': [{
                'meta_info_def': {
                    'tags': ['a', 'b']
                }
            }]})

        with self.assertRaisesRegex(
                RuntimeError,
                'MetaGraphDef associated with tags .* could not be found'):
            request_builder._parse_saved_model_signatures(
                model_path, tag_set={'a', 'c'}, signature_names=['foo'])
Esempio n. 3
0
    def testParseSavedModelSignature_FailIfSignatureNotFound(self):
        model_path = self._MockSavedModel({
            'meta_graphs': [{
                'meta_info_def': {
                    'tags': ['serve']
                },
                'signature_def': {
                    'foo': {}
                }
            }]
        })

        with self.assertRaisesRegex(
                ValueError, 'SignatureDef of name bar could not be found'):
            request_builder._parse_saved_model_signatures(
                model_path, tag_set={'serve'}, signature_names=['foo', 'bar'])
Esempio n. 4
0
    def testParseSavedModelSignature(self):
        model_path = self._MockSavedModel({
            'meta_graphs': [{
                'meta_info_def': {
                    'tags': ['serve']
                },
                'signature_def': {
                    'foo': {
                        'method_name': 'tensorflow/serving/predict',
                        'inputs': {
                            'x': {
                                'name': 'serving_default_input:0',
                                'dtype': 'DT_FLOAT',
                                'tensor_shape': {
                                    'dim': [
                                        {
                                            'size': -1
                                        },
                                        {
                                            'size': 784
                                        },
                                    ]
                                }
                            }
                        },
                        'outputs': {
                            'y': {
                                'name': 'StatefulPartitionedCall:0',
                                'dtype': 'DT_FLOAT',
                                'tensor_shape': {
                                    'dim': [
                                        {
                                            'size': -1
                                        },
                                        {
                                            'size': 10
                                        },
                                    ]
                                }
                            }
                        }
                    }
                }
            }]
        })

        signatures = request_builder._parse_saved_model_signatures(
            model_path, tag_set={'serve'}, signature_names=['foo'])

        self.assertEqual(signatures['foo'].inputs['x'].dtype,
                         tf.dtypes.float32.as_datatype_enum)
        self.assertEqual(signatures['foo'].inputs['x'].tensor_shape,
                         tf.TensorShape([None, 784]).as_proto())
        self.assertEqual(signatures['foo'].outputs['y'].dtype,
                         tf.dtypes.float32.as_datatype_enum)
        self.assertEqual(signatures['foo'].outputs['y'].tensor_shape,
                         tf.TensorShape([None, 10]).as_proto())
Esempio n. 5
0
    def testParseSavedModelSignature_DefaultSignatureName(self):
        model_path = self._MockSavedModel({
            'meta_graphs': [{
                'meta_info_def': {
                    'tags': ['foo']
                },
                'signature_def': {
                    'serving_default': {},
                }
            }]
        })

        signatures = request_builder._parse_saved_model_signatures(
            model_path, tag_set={'foo'}, signature_names=[])

        self.assertTrue(signatures)
Esempio n. 6
0
 def _GetKerasModelSignature(self):
   model_path = path_utils.serving_model_path(_KERAS_MODEL_URI)
   return request_builder._parse_saved_model_signatures(
       model_path, tag_set={'serve'}, signature_names=['serving_default'])
Esempio n. 7
0
 def _GetEstimatorModelSignature(self, signature_names=()):
   model_path = path_utils.serving_model_path(_ESTIMATOR_MODEL_URI)
   return request_builder._parse_saved_model_signatures(
       model_path, tag_set={'serve'}, signature_names=signature_names)