diff --git a/demo-serving/conf/general_model.prototxt b/demo-serving/conf/general_model.prototxt new file mode 100644 index 0000000000000000000000000000000000000000..cf076117f3fe43f58290379cc1b0139bca327a3b --- /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 b4eedcc8d9d554b4ce159456b0614b139aa979c2..8a835933c38732844fd5a179512cb5e630fd8fd1 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 7b97087e34db9f5439a2ae0eda3f27f114915662..3e18b65bf460cd42f4b92a3586ce1cc9152c1b3b 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 06f3ac40b1a4c80e125dbdd42e861176a6742753..3d4ca8e37a16e183ad40ffc51f0b6fc6470e34d5 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 0000000000000000000000000000000000000000..cbbc0e5745f6c124320f4ef960dbbcf61797eb0b --- /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 0000000000000000000000000000000000000000..5fb370f6c72982e3ad454371aeb3d001f51b0b8a --- /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 e50a73d49ed90af77eec9b3b97c56a7d2a6bc7b3..1d4a2be7fa4bce598aa519ff64743daed818d2f2 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 0000000000000000000000000000000000000000..b8a86497f8c0b683f4e95f4517d83f576e79baad --- /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; +};