|
- # Copyright 2020 Huawei Technologies Co., Ltd
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- # ============================================================================
- """add model servable config"""
-
- from mindspore_serving.worker import register
- import numpy as np
-
-
- # define preprocess pipeline, the function arg is multi instances, every instance is tuple of inputs
- # this example has one input and one output
- def add_trans_datatype(instances):
- """preprocess python implement"""
- for instance in instances:
- x1 = instance[0]
- x2 = instance[1]
- yield x1.astype(np.float32), x2.astype(np.float32)
-
-
- # when with_batch_dim set to False, only support 2x2 add
- # when with_batch_dim set to True(default), support Nx2 add, while N is view as batch
- # float32 inputs/outputs
- register.declare_servable(servable_file="tensor_add.mindir", model_format="MindIR", with_batch_dim=False)
-
-
- # register add_common method in add
- @register.register_method(output_names=["y"])
- def add_common(x1, x2): # only support float32 inputs
- """method add_common data flow definition, only call model servable"""
- y = register.call_servable(x1, x2)
- return y
-
-
- # register add_cast method in add
- @register.register_method(output_names=["y"])
- def add_cast(x1, x2):
- """method add_cast data flow definition, only call preprocess and model servable"""
- x1, x2 = register.call_preprocess(add_trans_datatype, x1, x2) # cast input to float32
- y = register.call_servable(x1, x2)
- return y
|