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'])
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'])
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'])
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())
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)
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'])
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)