From 9cc3c843af16e07b6f846bb50bd9a1421048de51 Mon Sep 17 00:00:00 2001 From: guru4elephant Date: Tue, 31 Dec 2019 16:04:50 +0800 Subject: [PATCH] update demo serving --- demo-serving/conf/general_model.prototxt | 20 ++++++ demo-serving/conf/gflags.conf | 5 +- demo-serving/conf/service.prototxt | 4 ++ demo-serving/conf/workflow.prototxt | 9 ++- .../op/load_general_model_conf_op.cpp | 25 +++++++ demo-serving/op/load_general_model_conf_op.h | 66 +++++++++++++++++++ demo-serving/proto/CMakeLists.txt | 1 + .../proto/load_general_model_service.proto | 30 +++++++++ 8 files changed, 158 insertions(+), 2 deletions(-) create mode 100644 demo-serving/conf/general_model.prototxt create mode 100644 demo-serving/op/load_general_model_conf_op.cpp create mode 100644 demo-serving/op/load_general_model_conf_op.h create mode 100644 demo-serving/proto/load_general_model_service.proto diff --git a/demo-serving/conf/general_model.prototxt b/demo-serving/conf/general_model.prototxt new file mode 100644 index 00000000..cf076117 --- /dev/null +++ b/demo-serving/conf/general_model.prototxt @@ -0,0 +1,20 @@ +is_lod_feed: true +is_lod_feed: false +is_lod_feed: true +feed_type: 1 +feed_type: 0 +feed_type: 1 + +feed_shape { + shape: -1 +} + +feed_shape { + shape: 1 + shape: 2 + shape: 3 +} + +feed_shape { + shape: -1 +} diff --git a/demo-serving/conf/gflags.conf b/demo-serving/conf/gflags.conf index b4eedcc8..8a835933 100644 --- a/demo-serving/conf/gflags.conf +++ b/demo-serving/conf/gflags.conf @@ -1,2 +1,5 @@ --enable_model_toolkit ---enable_cube=true +--enable_cube=false +--enable_general_model=true +--general_model_path=./conf +--general_model_file=general_model.prototxt diff --git a/demo-serving/conf/service.prototxt b/demo-serving/conf/service.prototxt index 7b97087e..3e18b65b 100644 --- a/demo-serving/conf/service.prototxt +++ b/demo-serving/conf/service.prototxt @@ -39,3 +39,7 @@ services { name: "BertService" workflows: "workflow9" } +services { + name: "LoadGeneralModelService" + workflows: "workflow10" +} \ No newline at end of file diff --git a/demo-serving/conf/workflow.prototxt b/demo-serving/conf/workflow.prototxt index 06f3ac40..3d4ca8e3 100644 --- a/demo-serving/conf/workflow.prototxt +++ b/demo-serving/conf/workflow.prototxt @@ -91,4 +91,11 @@ workflows { type: "BertServiceOp" } } - +workflows { + name: "workflow10" + workflow_type: "Sequence" + nodes { + name: "load_general_model_conf_op" + type: "LoadGeneralModelConfOp" + } +} diff --git a/demo-serving/op/load_general_model_conf_op.cpp b/demo-serving/op/load_general_model_conf_op.cpp new file mode 100644 index 00000000..cbbc0e57 --- /dev/null +++ b/demo-serving/op/load_general_model_conf_op.cpp @@ -0,0 +1,25 @@ +// Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. +// +// 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. + +#include "demo-serving/op/load_general_model_conf_op.h" + +namespace baidu { +namespace paddle_serving { +namespace predictor { + +DEFINE_OP(LoadGeneralModelConfOp); + +} // namespace predictor +} // namespace paddle_serving +} // namespace baidu diff --git a/demo-serving/op/load_general_model_conf_op.h b/demo-serving/op/load_general_model_conf_op.h new file mode 100644 index 00000000..5fb370f6 --- /dev/null +++ b/demo-serving/op/load_general_model_conf_op.h @@ -0,0 +1,66 @@ +// Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. +// +// 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. + +#pragma once +#include + +#include "demo-serving/load_general_model_service.pb.h" +#include "predictor/common/inner_common.h" +#include "predictor/framework/channel.h" +#include "predictor/framework/op_repository.h" +#include "predictor/op/op.h" +#include "predictor/framework/resource.h" + +namespace baidu { +namespace paddle_serving { +namespace predictor { + +class LoadGeneralModelConfOp + : public OpWithChannel< + baidu::paddle_serving::predictor:: + load_general_model_service::RequestAndResponse> { + public: + typedef baidu::paddle_serving::predictor:: + load_general_model_service::RequestAndResponse + RequestAndResponse; + + DECLARE_OP(LoadGeneralModelConfOp); + + int inference() { + LOG(INFO) << "start to call load general model_conf op"; + baidu::paddle_serving::predictor::Resource& resource = + baidu::paddle_serving::predictor::Resource::instance(); + + LOG(INFO) << "get resource pointer done."; + std::shared_ptr model_config = + resource.get_general_model_config(); + + LOG(INFO) << "get general model config pointer done."; + resource.print_general_model_config(model_config); + + LOG(INFO) << "print general model config done."; + const RequestAndResponse* req = + dynamic_cast(get_request_message()); + + RequestAndResponse* data = mutable_data(); + + data->CopyFrom(*req); + + return 0; + } +}; + +} // namespace predictor +} // namespace paddle_serving +} // namespace baidu diff --git a/demo-serving/proto/CMakeLists.txt b/demo-serving/proto/CMakeLists.txt index e50a73d4..1d4a2be7 100644 --- a/demo-serving/proto/CMakeLists.txt +++ b/demo-serving/proto/CMakeLists.txt @@ -8,6 +8,7 @@ LIST(APPEND protofiles ${CMAKE_CURRENT_LIST_DIR}/text_classification.proto ${CMAKE_CURRENT_LIST_DIR}/ctr_prediction.proto ${CMAKE_CURRENT_LIST_DIR}/bert_service.proto + ${CMAKE_CURRENT_LIST_DIR}/load_general_model_service.proto ) PROTOBUF_GENERATE_SERVING_CPP(TRUE PROTO_SRCS PROTO_HDRS ${protofiles}) diff --git a/demo-serving/proto/load_general_model_service.proto b/demo-serving/proto/load_general_model_service.proto new file mode 100644 index 00000000..b8a86497 --- /dev/null +++ b/demo-serving/proto/load_general_model_service.proto @@ -0,0 +1,30 @@ +// Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. +// +// 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. + +syntax = "proto2"; +import "pds_option.proto"; +package baidu.paddle_serving.predictor.load_general_model_service; + +option cc_generic_services = true; + +message RequestAndResponse { + required int32 a = 1; + required float b = 2; +}; + +service LoadGeneralModelService { + rpc inference(RequestAndResponse) returns (RequestAndResponse); + rpc debug(RequestAndResponse) returns (RequestAndResponse); + option (pds.options).generate_impl = true; +}; -- GitLab