Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Serving
提交
3ae5bcbf
S
Serving
项目概览
PaddlePaddle
/
Serving
接近 2 年 前同步成功
通知
186
Star
833
Fork
253
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
105
列表
看板
标记
里程碑
合并请求
10
Wiki
2
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Serving
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
105
Issue
105
列表
看板
标记
里程碑
合并请求
10
合并请求
10
Pages
分析
分析
仓库分析
DevOps
Wiki
2
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
3ae5bcbf
编写于
8月 24, 2020
作者:
M
MRXLT
提交者:
GitHub
8月 24, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'develop' into 0.3.2-qa
上级
75d92a0c
21c19e65
变更
28
隐藏空白更改
内联
并排
Showing
28 changed file
with
303 addition
and
156 deletion
+303
-156
core/configure/proto/server_configure.proto
core/configure/proto/server_configure.proto
+2
-0
core/cube/cube-api/include/meta.h
core/cube/cube-api/include/meta.h
+2
-1
core/general-client/src/general_model.cpp
core/general-client/src/general_model.cpp
+2
-0
core/general-server/op/general_copy_op.h
core/general-server/op/general_copy_op.h
+2
-10
core/general-server/op/general_dist_kv_infer_op.h
core/general-server/op/general_dist_kv_infer_op.h
+1
-9
core/general-server/op/general_dist_kv_quant_infer_op.h
core/general-server/op/general_dist_kv_quant_infer_op.h
+1
-9
core/general-server/op/general_infer_helper.h
core/general-server/op/general_infer_helper.h
+1
-9
core/general-server/op/general_infer_op.cpp
core/general-server/op/general_infer_op.cpp
+3
-2
core/general-server/op/general_infer_op.h
core/general-server/op/general_infer_op.h
+1
-9
core/general-server/op/general_reader_op.cpp
core/general-server/op/general_reader_op.cpp
+2
-0
core/general-server/op/general_reader_op.h
core/general-server/op/general_reader_op.h
+2
-10
core/general-server/op/general_response_op.h
core/general-server/op/general_response_op.h
+1
-9
core/general-server/op/general_text_reader_op.h
core/general-server/op/general_text_reader_op.h
+2
-10
core/general-server/op/general_text_response_op.h
core/general-server/op/general_text_response_op.h
+1
-9
core/predictor/common/inner_common.h
core/predictor/common/inner_common.h
+1
-1
core/predictor/framework/factory.h
core/predictor/framework/factory.h
+53
-16
core/predictor/framework/infer.h
core/predictor/framework/infer.h
+7
-0
core/predictor/framework/op_repository.h
core/predictor/framework/op_repository.h
+4
-1
core/predictor/framework/resource.cpp
core/predictor/framework/resource.cpp
+39
-0
core/predictor/framework/service_manager.h
core/predictor/framework/service_manager.h
+37
-15
core/predictor/src/pdserving.cpp
core/predictor/src/pdserving.cpp
+1
-2
core/sdk-cpp/include/abtest.h
core/sdk-cpp/include/abtest.h
+6
-6
core/sdk-cpp/include/factory.h
core/sdk-cpp/include/factory.h
+56
-13
paddle_inference/inferencer-fluid-cpu/include/fluid_cpu_engine.h
...inference/inferencer-fluid-cpu/include/fluid_cpu_engine.h
+1
-0
python/paddle_serving_server/__init__.py
python/paddle_serving_server/__init__.py
+22
-7
python/paddle_serving_server/serve.py
python/paddle_serving_server/serve.py
+14
-0
python/paddle_serving_server_gpu/__init__.py
python/paddle_serving_server_gpu/__init__.py
+32
-6
python/paddle_serving_server_gpu/serve.py
python/paddle_serving_server_gpu/serve.py
+7
-2
未找到文件。
core/configure/proto/server_configure.proto
浏览文件 @
3ae5bcbf
...
@@ -58,6 +58,8 @@ message ResourceConf {
...
@@ -58,6 +58,8 @@ message ResourceConf {
optional
string
cube_config_path
=
5
;
optional
string
cube_config_path
=
5
;
optional
string
cube_config_file
=
6
;
optional
string
cube_config_file
=
6
;
optional
int32
cube_quant_bits
=
7
;
// set 0 if no quant.
optional
int32
cube_quant_bits
=
7
;
// set 0 if no quant.
optional
string
auth_product_name
=
8
;
optional
string
auth_container_id
=
9
;
};
};
// DAG node depency info
// DAG node depency info
...
...
core/cube/cube-api/include/meta.h
浏览文件 @
3ae5bcbf
...
@@ -22,7 +22,8 @@
...
@@ -22,7 +22,8 @@
#ifdef BCLOUD
#ifdef BCLOUD
#include "baidu/rpc/channel.h"
#include "baidu/rpc/channel.h"
#include "baidu/rpc/parallel_channel.h"
#include "baidu/rpc/parallel_channel.h"
#include "rapidjson/document.h"
#include "rapidjson_1.0/document.h"
#include "rapidjson_1.0/rapidjson.h"
#else
#else
#include "brpc/channel.h"
#include "brpc/channel.h"
#include "brpc/parallel_channel.h"
#include "brpc/parallel_channel.h"
...
...
core/general-client/src/general_model.cpp
浏览文件 @
3ae5bcbf
...
@@ -39,7 +39,9 @@ using configure::GeneralModelConfig;
...
@@ -39,7 +39,9 @@ using configure::GeneralModelConfig;
void
PredictorClient
::
init_gflags
(
std
::
vector
<
std
::
string
>
argv
)
{
void
PredictorClient
::
init_gflags
(
std
::
vector
<
std
::
string
>
argv
)
{
std
::
call_once
(
gflags_init_flag
,
[
&
]()
{
std
::
call_once
(
gflags_init_flag
,
[
&
]()
{
#ifndef BCLOUD
FLAGS_logtostderr
=
true
;
FLAGS_logtostderr
=
true
;
#endif
argv
.
insert
(
argv
.
begin
(),
"dummy"
);
argv
.
insert
(
argv
.
begin
(),
"dummy"
);
int
argc
=
argv
.
size
();
int
argc
=
argv
.
size
();
char
**
arr
=
new
char
*
[
argv
.
size
()];
char
**
arr
=
new
char
*
[
argv
.
size
()];
...
...
core/general-server/op/general_copy_op.h
浏览文件 @
3ae5bcbf
...
@@ -13,20 +13,12 @@
...
@@ -13,20 +13,12 @@
// limitations under the License.
// limitations under the License.
#pragma once
#pragma once
#include <vector>
#ifdef BCLOUD
#ifdef WITH_GPU
#include "paddle/paddle_inference_api.h"
#else
#include "paddle/fluid/inference/api/paddle_inference_api.h"
#endif
#else
#include "paddle_inference_api.h" // NOLINT
#endif
#include <string>
#include <string>
#include <vector>
#include "core/general-server/general_model_service.pb.h"
#include "core/general-server/general_model_service.pb.h"
#include "core/general-server/op/general_infer_helper.h"
#include "core/general-server/op/general_infer_helper.h"
#include "core/predictor/framework/resource.h"
#include "core/predictor/framework/resource.h"
#include "paddle_inference_api.h" // NOLINT
namespace
baidu
{
namespace
baidu
{
namespace
paddle_serving
{
namespace
paddle_serving
{
...
...
core/general-server/op/general_dist_kv_infer_op.h
浏览文件 @
3ae5bcbf
...
@@ -15,17 +15,9 @@
...
@@ -15,17 +15,9 @@
#pragma once
#pragma once
#include <string>
#include <string>
#include <vector>
#include <vector>
#ifdef BCLOUD
#ifdef WITH_GPU
#include "paddle/paddle_inference_api.h"
#else
#include "paddle/fluid/inference/api/paddle_inference_api.h"
#endif
#else
#include "paddle_inference_api.h" // NOLINT
#endif
#include "core/general-server/general_model_service.pb.h"
#include "core/general-server/general_model_service.pb.h"
#include "core/general-server/op/general_infer_helper.h"
#include "core/general-server/op/general_infer_helper.h"
#include "paddle_inference_api.h" // NOLINT
namespace
baidu
{
namespace
baidu
{
namespace
paddle_serving
{
namespace
paddle_serving
{
...
...
core/general-server/op/general_dist_kv_quant_infer_op.h
浏览文件 @
3ae5bcbf
...
@@ -15,17 +15,9 @@
...
@@ -15,17 +15,9 @@
#pragma once
#pragma once
#include <string>
#include <string>
#include <vector>
#include <vector>
#ifdef BCLOUD
#ifdef WITH_GPU
#include "paddle/paddle_inference_api.h"
#else
#include "paddle/fluid/inference/api/paddle_inference_api.h"
#endif
#else
#include "paddle_inference_api.h" // NOLINT
#endif
#include "core/general-server/general_model_service.pb.h"
#include "core/general-server/general_model_service.pb.h"
#include "core/general-server/op/general_infer_helper.h"
#include "core/general-server/op/general_infer_helper.h"
#include "paddle_inference_api.h" // NOLINT
namespace
baidu
{
namespace
baidu
{
namespace
paddle_serving
{
namespace
paddle_serving
{
...
...
core/general-server/op/general_infer_helper.h
浏览文件 @
3ae5bcbf
...
@@ -15,17 +15,9 @@
...
@@ -15,17 +15,9 @@
#pragma once
#pragma once
#include <string.h>
#include <string.h>
#include <string>
#include <vector>
#include <vector>
#ifdef BCLOUD
#ifdef WITH_GPU
#include "paddle/paddle_inference_api.h"
#else
#include "paddle/fluid/inference/api/paddle_inference_api.h"
#endif
#else
#include "paddle_inference_api.h" // NOLINT
#include "paddle_inference_api.h" // NOLINT
#endif
#include <string>
namespace
baidu
{
namespace
baidu
{
namespace
paddle_serving
{
namespace
paddle_serving
{
...
...
core/general-server/op/general_infer_op.cpp
浏览文件 @
3ae5bcbf
...
@@ -60,10 +60,11 @@ int GeneralInferOp::inference() {
...
@@ -60,10 +60,11 @@ int GeneralInferOp::inference() {
const
TensorVector
*
in
=
&
input_blob
->
tensor_vector
;
const
TensorVector
*
in
=
&
input_blob
->
tensor_vector
;
TensorVector
*
out
=
&
output_blob
->
tensor_vector
;
TensorVector
*
out
=
&
output_blob
->
tensor_vector
;
int
batch_size
=
input_blob
->
GetBatchSize
();
int
batch_size
=
input_blob
->
_batch_size
;
VLOG
(
2
)
<<
"(logid="
<<
log_id
<<
") input batch size: "
<<
batch_size
;
VLOG
(
2
)
<<
"(logid="
<<
log_id
<<
") input batch size: "
<<
batch_size
;
output_blob
->
SetBatchSize
(
batch_size
)
;
output_blob
->
_batch_size
=
batch_size
;
VLOG
(
2
)
<<
"(logid="
<<
log_id
<<
") infer batch size: "
<<
batch_size
;
VLOG
(
2
)
<<
"(logid="
<<
log_id
<<
") infer batch size: "
<<
batch_size
;
...
...
core/general-server/op/general_infer_op.h
浏览文件 @
3ae5bcbf
...
@@ -15,17 +15,9 @@
...
@@ -15,17 +15,9 @@
#pragma once
#pragma once
#include <string>
#include <string>
#include <vector>
#include <vector>
#ifdef BCLOUD
#ifdef WITH_GPU
#include "paddle/paddle_inference_api.h"
#else
#include "paddle/fluid/inference/api/paddle_inference_api.h"
#endif
#else
#include "paddle_inference_api.h" // NOLINT
#endif
#include "core/general-server/general_model_service.pb.h"
#include "core/general-server/general_model_service.pb.h"
#include "core/general-server/op/general_infer_helper.h"
#include "core/general-server/op/general_infer_helper.h"
#include "paddle_inference_api.h" // NOLINT
namespace
baidu
{
namespace
baidu
{
namespace
paddle_serving
{
namespace
paddle_serving
{
...
...
core/general-server/op/general_reader_op.cpp
浏览文件 @
3ae5bcbf
...
@@ -102,6 +102,7 @@ int GeneralReaderOp::inference() {
...
@@ -102,6 +102,7 @@ int GeneralReaderOp::inference() {
baidu
::
paddle_serving
::
predictor
::
Resource
::
instance
();
baidu
::
paddle_serving
::
predictor
::
Resource
::
instance
();
VLOG
(
2
)
<<
"(logid="
<<
log_id
<<
") get resource pointer done."
;
VLOG
(
2
)
<<
"(logid="
<<
log_id
<<
") get resource pointer done."
;
std
::
shared_ptr
<
PaddleGeneralModelConfig
>
model_config
=
std
::
shared_ptr
<
PaddleGeneralModelConfig
>
model_config
=
resource
.
get_general_model_config
();
resource
.
get_general_model_config
();
...
@@ -265,6 +266,7 @@ int GeneralReaderOp::inference() {
...
@@ -265,6 +266,7 @@ int GeneralReaderOp::inference() {
timeline
.
Pause
();
timeline
.
Pause
();
int64_t
end
=
timeline
.
TimeStampUS
();
int64_t
end
=
timeline
.
TimeStampUS
();
res
->
p_size
=
0
;
res
->
p_size
=
0
;
res
->
_batch_size
=
batch_size
;
AddBlobInfo
(
res
,
start
);
AddBlobInfo
(
res
,
start
);
AddBlobInfo
(
res
,
end
);
AddBlobInfo
(
res
,
end
);
...
...
core/general-server/op/general_reader_op.h
浏览文件 @
3ae5bcbf
...
@@ -13,21 +13,13 @@
...
@@ -13,21 +13,13 @@
// limitations under the License.
// limitations under the License.
#pragma once
#pragma once
#include <vector>
#ifdef BCLOUD
#ifdef WITH_GPU
#include "paddle/paddle_inference_api.h"
#else
#include "paddle/fluid/inference/api/paddle_inference_api.h"
#endif
#else
#include "paddle_inference_api.h" // NOLINT
#endif
#include <string>
#include <string>
#include <vector>
#include "core/general-server/general_model_service.pb.h"
#include "core/general-server/general_model_service.pb.h"
#include "core/general-server/load_general_model_service.pb.h"
#include "core/general-server/load_general_model_service.pb.h"
#include "core/general-server/op/general_infer_helper.h"
#include "core/general-server/op/general_infer_helper.h"
#include "core/predictor/framework/resource.h"
#include "core/predictor/framework/resource.h"
#include "paddle_inference_api.h" // NOLINT
namespace
baidu
{
namespace
baidu
{
namespace
paddle_serving
{
namespace
paddle_serving
{
...
...
core/general-server/op/general_response_op.h
浏览文件 @
3ae5bcbf
...
@@ -15,16 +15,8 @@
...
@@ -15,16 +15,8 @@
#pragma once
#pragma once
#include <string>
#include <string>
#include <vector>
#include <vector>
#ifdef BCLOUD
#ifdef WITH_GPU
#include "paddle/paddle_inference_api.h"
#else
#include "paddle/fluid/inference/api/paddle_inference_api.h"
#endif
#else
#include "paddle_inference_api.h" // NOLINT
#endif
#include "core/general-server/general_model_service.pb.h"
#include "core/general-server/general_model_service.pb.h"
#include "paddle_inference_api.h" // NOLINT
namespace
baidu
{
namespace
baidu
{
namespace
paddle_serving
{
namespace
paddle_serving
{
...
...
core/general-server/op/general_text_reader_op.h
浏览文件 @
3ae5bcbf
...
@@ -13,21 +13,13 @@
...
@@ -13,21 +13,13 @@
// limitations under the License.
// limitations under the License.
#pragma once
#pragma once
#include <vector>
#ifdef BCLOUD
#ifdef WITH_GPU
#include "paddle/paddle_inference_api.h"
#else
#include "paddle/fluid/inference/api/paddle_inference_api.h"
#endif
#else
#include "paddle_inference_api.h" // NOLINT
#endif
#include <string>
#include <string>
#include <vector>
#include "core/general-server/general_model_service.pb.h"
#include "core/general-server/general_model_service.pb.h"
#include "core/general-server/load_general_model_service.pb.h"
#include "core/general-server/load_general_model_service.pb.h"
#include "core/general-server/op/general_infer_helper.h"
#include "core/general-server/op/general_infer_helper.h"
#include "core/predictor/framework/resource.h"
#include "core/predictor/framework/resource.h"
#include "paddle_inference_api.h" // NOLINT
namespace
baidu
{
namespace
baidu
{
namespace
paddle_serving
{
namespace
paddle_serving
{
...
...
core/general-server/op/general_text_response_op.h
浏览文件 @
3ae5bcbf
...
@@ -15,17 +15,9 @@
...
@@ -15,17 +15,9 @@
#pragma once
#pragma once
#include <string>
#include <string>
#include <vector>
#include <vector>
#ifdef BCLOUD
#ifdef WITH_GPU
#include "paddle/paddle_inference_api.h"
#else
#include "paddle/fluid/inference/api/paddle_inference_api.h"
#endif
#else
#include "paddle_inference_api.h" // NOLINT
#endif
#include "core/general-server/general_model_service.pb.h"
#include "core/general-server/general_model_service.pb.h"
#include "core/general-server/op/general_infer_helper.h"
#include "core/general-server/op/general_infer_helper.h"
#include "paddle_inference_api.h" // NOLINT
namespace
baidu
{
namespace
baidu
{
namespace
paddle_serving
{
namespace
paddle_serving
{
...
...
core/predictor/common/inner_common.h
浏览文件 @
3ae5bcbf
...
@@ -50,7 +50,7 @@
...
@@ -50,7 +50,7 @@
#include "butil/time.h"
#include "butil/time.h"
#endif
#endif
#
include "glog/raw_logging.h"
#
define ERROR_STRING_LEN 10240
#include "core/configure/general_model_config.pb.h"
#include "core/configure/general_model_config.pb.h"
#include "core/configure/include/configure_parser.h"
#include "core/configure/include/configure_parser.h"
...
...
core/predictor/framework/factory.h
浏览文件 @
3ae5bcbf
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
#include <string>
#include <string>
#include <utility>
#include <utility>
#include "core/predictor/common/inner_common.h"
#include "core/predictor/common/inner_common.h"
#include "glog/raw_logging.h"
namespace
baidu
{
namespace
baidu
{
namespace
paddle_serving
{
namespace
paddle_serving
{
namespace
predictor
{
namespace
predictor
{
...
@@ -28,7 +28,12 @@ namespace predictor {
...
@@ -28,7 +28,12 @@ namespace predictor {
FactoryDerive<D, B>* factory = new (std::nothrow) FactoryDerive<D, B>(); \
FactoryDerive<D, B>* factory = new (std::nothrow) FactoryDerive<D, B>(); \
if (factory == NULL || \
if (factory == NULL || \
FactoryPool<B>::instance().register_factory(tag, factory) != 0) { \
FactoryPool<B>::instance().register_factory(tag, factory) != 0) { \
RAW_LOG_FATAL("Failed regist factory: %s in macro!", #D); \
char err_str[ERROR_STRING_LEN]; \
snprintf(err_str, \
ERROR_STRING_LEN - 1, \
"Failed regist factory: %s in macro!", \
#D); \
RAW_LOG(FATAL, err_str); \
return -1; \
return -1; \
} \
} \
return 0; \
return 0; \
...
@@ -54,7 +59,13 @@ namespace predictor {
...
@@ -54,7 +59,13 @@ namespace predictor {
if (factory == NULL || \
if (factory == NULL || \
::baidu::paddle_serving::predictor::FactoryPool<B>::instance() \
::baidu::paddle_serving::predictor::FactoryPool<B>::instance() \
.register_factory(#D, factory) != 0) { \
.register_factory(#D, factory) != 0) { \
RAW_LOG_FATAL("Failed regist factory: %s->%s in macro!", #D, #B); \
char err_str[ERROR_STRING_LEN]; \
snprintf(err_str, \
ERROR_STRING_LEN - 1, \
"Failed regist factory: %s->%s in macro!", \
#D, \
#B); \
RAW_LOG(FATAL, err_str); \
return; \
return; \
} \
} \
return; \
return; \
...
@@ -66,15 +77,26 @@ namespace predictor {
...
@@ -66,15 +77,26 @@ namespace predictor {
::baidu::paddle_serving::predictor::FactoryDerive<D, B>* factory = new ( \
::baidu::paddle_serving::predictor::FactoryDerive<D, B>* factory = new ( \
::std::nothrow)::baidu::paddle_serving::predictor::FactoryDerive<D, \
::std::nothrow)::baidu::paddle_serving::predictor::FactoryDerive<D, \
B>(); \
B>(); \
char err_str[ERROR_STRING_LEN]; \
if (factory == NULL || \
if (factory == NULL || \
::baidu::paddle_serving::predictor::FactoryPool<B>::instance() \
::baidu::paddle_serving::predictor::FactoryPool<B>::instance() \
.register_factory(N, factory) != 0) { \
.register_factory(N, factory) != 0) { \
RAW_LOG_FATAL( \
snprintf(err_str, \
"Failed regist factory: %s->%s, tag: %s in macro!", #D, #B, N); \
ERROR_STRING_LEN - 1, \
"Failed regist factory: %s->%s, tag: %s in macro!", \
#D, \
#B, \
N); \
RAW_LOG(FATAL, err_str); \
return; \
return; \
} \
} \
RAW_LOG_WARNING( \
snprintf(err_str, \
"Succ regist factory: %s->%s, tag: %s in macro!", #D, #B, N); \
ERROR_STRING_LEN - 1, \
"Succ regist factory: %s->%s, tag: %s in macro!", \
#D, \
#B, \
N); \
RAW_LOG(WARNING, err_str); \
return; \
return; \
}
}
...
@@ -102,24 +124,35 @@ class FactoryPool {
...
@@ -102,24 +124,35 @@ class FactoryPool {
}
}
int
register_factory
(
const
std
::
string
&
tag
,
FactoryBase
<
B
>*
factory
)
{
int
register_factory
(
const
std
::
string
&
tag
,
FactoryBase
<
B
>*
factory
)
{
char
err_str
[
ERROR_STRING_LEN
];
typename
std
::
map
<
std
::
string
,
FactoryBase
<
B
>*>::
iterator
it
=
typename
std
::
map
<
std
::
string
,
FactoryBase
<
B
>*>::
iterator
it
=
_pool
.
find
(
tag
);
_pool
.
find
(
tag
);
if
(
it
!=
_pool
.
end
())
{
if
(
it
!=
_pool
.
end
())
{
RAW_LOG_FATAL
(
"Insert duplicate with tag: %s"
,
tag
.
c_str
());
snprintf
(
err_str
,
ERROR_STRING_LEN
-
1
,
"Insert duplicate with tag: %s"
,
tag
.
c_str
());
RAW_LOG
(
FATAL
,
err_str
);
return
-
1
;
return
-
1
;
}
}
std
::
pair
<
typename
std
::
map
<
std
::
string
,
FactoryBase
<
B
>*>::
iterator
,
bool
>
std
::
pair
<
typename
std
::
map
<
std
::
string
,
FactoryBase
<
B
>*>::
iterator
,
bool
>
r
=
_pool
.
insert
(
std
::
make_pair
(
tag
,
factory
));
r
=
_pool
.
insert
(
std
::
make_pair
(
tag
,
factory
));
if
(
!
r
.
second
)
{
if
(
!
r
.
second
)
{
RAW_LOG_FATAL
(
"Failed insert new factory with: %s"
,
tag
.
c_str
());
snprintf
(
err_str
,
ERROR_STRING_LEN
-
1
,
"Failed insert new factory with: %s"
,
tag
.
c_str
());
RAW_LOG
(
FATAL
,
err_str
);
return
-
1
;
return
-
1
;
}
}
RAW_LOG_INFO
(
"Succ insert one factory, tag: %s, base type %s"
,
snprintf
(
err_str
,
tag
.
c_str
(),
ERROR_STRING_LEN
-
1
,
typeid
(
B
).
name
());
"Succ insert one factory, tag: %s, base type %s"
,
tag
.
c_str
(),
typeid
(
B
).
name
());
RAW_LOG
(
INFO
,
err_str
);
return
0
;
return
0
;
}
}
...
@@ -127,9 +160,13 @@ class FactoryPool {
...
@@ -127,9 +160,13 @@ class FactoryPool {
typename
std
::
map
<
std
::
string
,
FactoryBase
<
B
>*>::
iterator
it
=
typename
std
::
map
<
std
::
string
,
FactoryBase
<
B
>*>::
iterator
it
=
_pool
.
find
(
tag
);
_pool
.
find
(
tag
);
if
(
it
==
_pool
.
end
()
||
it
->
second
==
NULL
)
{
if
(
it
==
_pool
.
end
()
||
it
->
second
==
NULL
)
{
RAW_LOG_FATAL
(
"Not found factory pool, tag: %s, pool size %u"
,
char
err_str
[
ERROR_STRING_LEN
];
tag
.
c_str
(),
snprintf
(
err_str
,
_pool
.
size
());
ERROR_STRING_LEN
-
1
,
"Not found factory pool, tag: %s, pool size %u"
,
tag
.
c_str
(),
_pool
.
size
());
RAW_LOG
(
FATAL
,
err_str
);
return
NULL
;
return
NULL
;
}
}
...
...
core/predictor/framework/infer.h
浏览文件 @
3ae5bcbf
...
@@ -603,6 +603,7 @@ class VersionedInferEngine : public InferEngine {
...
@@ -603,6 +603,7 @@ class VersionedInferEngine : public InferEngine {
LOG
(
ERROR
)
<<
"Failed generate engine with type:"
<<
engine_type
;
LOG
(
ERROR
)
<<
"Failed generate engine with type:"
<<
engine_type
;
return
-
1
;
return
-
1
;
}
}
#ifndef BCLOUD
VLOG
(
2
)
<<
"FLAGS_logtostderr "
<<
FLAGS_logtostderr
;
VLOG
(
2
)
<<
"FLAGS_logtostderr "
<<
FLAGS_logtostderr
;
int
tmp
=
FLAGS_logtostderr
;
int
tmp
=
FLAGS_logtostderr
;
if
(
engine
->
proc_initialize
(
conf
,
version
)
!=
0
)
{
if
(
engine
->
proc_initialize
(
conf
,
version
)
!=
0
)
{
...
@@ -611,6 +612,12 @@ class VersionedInferEngine : public InferEngine {
...
@@ -611,6 +612,12 @@ class VersionedInferEngine : public InferEngine {
}
}
VLOG
(
2
)
<<
"FLAGS_logtostderr "
<<
FLAGS_logtostderr
;
VLOG
(
2
)
<<
"FLAGS_logtostderr "
<<
FLAGS_logtostderr
;
FLAGS_logtostderr
=
tmp
;
FLAGS_logtostderr
=
tmp
;
#else
if
(
engine
->
proc_initialize
(
conf
,
version
)
!=
0
)
{
LOG
(
ERROR
)
<<
"Failed initialize engine, type:"
<<
engine_type
;
return
-
1
;
}
#endif
auto
r
=
_versions
.
insert
(
std
::
make_pair
(
engine
->
version
(),
engine
));
auto
r
=
_versions
.
insert
(
std
::
make_pair
(
engine
->
version
(),
engine
));
if
(
!
r
.
second
)
{
if
(
!
r
.
second
)
{
LOG
(
ERROR
)
<<
"Failed insert item: "
<<
engine
->
version
()
LOG
(
ERROR
)
<<
"Failed insert item: "
<<
engine
->
version
()
...
...
core/predictor/framework/op_repository.h
浏览文件 @
3ae5bcbf
...
@@ -62,7 +62,10 @@ class OpRepository {
...
@@ -62,7 +62,10 @@ class OpRepository {
template
<
typename
OP_TYPE
>
template
<
typename
OP_TYPE
>
void
regist_op
(
std
::
string
op_type
)
{
void
regist_op
(
std
::
string
op_type
)
{
_repository
[
op_type
]
=
&
OpFactory
<
OP_TYPE
>::
instance
();
_repository
[
op_type
]
=
&
OpFactory
<
OP_TYPE
>::
instance
();
RAW_LOG_INFO
(
"Succ regist op: %s"
,
op_type
.
c_str
());
char
err_str
[
ERROR_STRING_LEN
];
snprintf
(
err_str
,
ERROR_STRING_LEN
-
1
,
"Succ regist op: %s"
,
op_type
.
c_str
());
RAW_LOG
(
INFO
,
err_str
);
}
}
Op
*
get_op
(
std
::
string
op_type
);
Op
*
get_op
(
std
::
string
op_type
);
...
...
core/predictor/framework/resource.cpp
浏览文件 @
3ae5bcbf
...
@@ -17,6 +17,9 @@
...
@@ -17,6 +17,9 @@
#include <string>
#include <string>
#include "core/predictor/common/inner_common.h"
#include "core/predictor/common/inner_common.h"
#include "core/predictor/framework/kv_manager.h"
#include "core/predictor/framework/kv_manager.h"
#ifdef BCLOUD
#include "aipe_sec_client.h" // NOLINT
#endif
namespace
baidu
{
namespace
baidu
{
namespace
paddle_serving
{
namespace
paddle_serving
{
namespace
predictor
{
namespace
predictor
{
...
@@ -109,6 +112,42 @@ int Resource::initialize(const std::string& path, const std::string& file) {
...
@@ -109,6 +112,42 @@ int Resource::initialize(const std::string& path, const std::string& file) {
}
}
LOG
(
WARNING
)
<<
"Successfully proc initialized mempool wrapper"
;
LOG
(
WARNING
)
<<
"Successfully proc initialized mempool wrapper"
;
#ifdef WITH_AUTH
std
::
string
product_name_str
=
resource_conf
.
auth_product_name
();
std
::
string
container_id_str
=
resource_conf
.
auth_container_id
();
char
*
product_name
=
new
char
[
product_name_str
.
size
()
+
1
];
snprintf
(
product_name
,
product_name_str
.
size
()
+
1
,
"%s"
,
product_name_str
.
c_str
());
char
*
container_id
=
new
char
[
container_id_str
.
size
()
+
1
];
snprintf
(
container_id
,
container_id_str
.
size
()
+
1
,
"%s"
,
container_id_str
.
c_str
());
aipe_auth_request
request
;
request
.
product_name
=
product_name
;
request
.
container_id
=
container_id
;
request
.
request_ts
=
(
int64_t
)
time
(
NULL
);
LOG
(
INFO
)
<<
"
\n
Easypack info"
<<
"
\n
product name: "
<<
request
.
product_name
<<
"
\n
container_id: "
<<
request
.
container_id
<<
"
\n
request time stamp: "
<<
request
.
request_ts
;
aipe_auth_response
response
;
response
=
check_auth
(
request
);
if
(
response
.
result
==
0
)
{
LOG
(
INFO
)
<<
"Authentication succeed."
;
}
else
{
LOG
(
ERROR
)
<<
"Authentication failed. Error code: "
<<
response
.
result
;
return
-
1
;
}
#endif
if
(
FLAGS_enable_model_toolkit
)
{
if
(
FLAGS_enable_model_toolkit
)
{
int
err
=
0
;
int
err
=
0
;
std
::
string
model_toolkit_path
=
resource_conf
.
model_toolkit_path
();
std
::
string
model_toolkit_path
=
resource_conf
.
model_toolkit_path
();
...
...
core/predictor/framework/service_manager.h
浏览文件 @
3ae5bcbf
...
@@ -23,17 +23,24 @@ namespace predictor {
...
@@ -23,17 +23,24 @@ namespace predictor {
#define REGIST_FORMAT_SERVICE(svr_name, svr) \
#define REGIST_FORMAT_SERVICE(svr_name, svr) \
do { \
do { \
char err_str[ERROR_STRING_LEN]; \
int ret = \
int ret = \
::baidu::paddle_serving::predictor::FormatServiceManager::instance() \
::baidu::paddle_serving::predictor::FormatServiceManager::instance() \
.regist_service(svr_name, svr); \
.regist_service(svr_name, svr); \
if (ret != 0) { \
if (ret != 0) { \
RAW_LOG_ERROR("Failed regist service[%s][%s]", \
snprintf(err_str, \
svr_name.c_str(), \
ERROR_STRING_LEN - 1, \
typeid(svr).name()); \
"Failed regist service[%s][%s]", \
svr_name.c_str(), \
typeid(svr).name()); \
RAW_LOG(ERROR, err_str); \
} else { \
} else { \
RAW_LOG_INFO("Success regist service[%s][%s]", \
snprintf(err_str, \
svr_name.c_str(), \
ERROR_STRING_LEN - 1, \
typeid(svr).name()); \
"Success regist service[%s][%s]", \
svr_name.c_str(), \
typeid(svr).name()); \
RAW_LOG(INFO, err_str); \
} \
} \
} while (0)
} while (0)
...
@@ -42,31 +49,46 @@ class FormatServiceManager {
...
@@ -42,31 +49,46 @@ class FormatServiceManager {
typedef
google
::
protobuf
::
Service
Service
;
typedef
google
::
protobuf
::
Service
Service
;
int
regist_service
(
const
std
::
string
&
svr_name
,
Service
*
svr
)
{
int
regist_service
(
const
std
::
string
&
svr_name
,
Service
*
svr
)
{
char
err_str
[
ERROR_STRING_LEN
];
if
(
_service_map
.
find
(
svr_name
)
!=
_service_map
.
end
())
{
if
(
_service_map
.
find
(
svr_name
)
!=
_service_map
.
end
())
{
RAW_LOG_ERROR
(
"Service[%s][%s] already exist!"
,
snprintf
(
err_str
,
svr_name
.
c_str
(),
ERROR_STRING_LEN
-
1
,
typeid
(
svr
).
name
());
"Service[%s][%s] already exist!"
,
svr_name
.
c_str
(),
typeid
(
svr
).
name
());
RAW_LOG
(
ERROR
,
err_str
);
return
-
1
;
return
-
1
;
}
}
std
::
pair
<
boost
::
unordered_map
<
std
::
string
,
Service
*>::
iterator
,
bool
>
ret
;
std
::
pair
<
boost
::
unordered_map
<
std
::
string
,
Service
*>::
iterator
,
bool
>
ret
;
ret
=
_service_map
.
insert
(
std
::
make_pair
(
svr_name
,
svr
));
ret
=
_service_map
.
insert
(
std
::
make_pair
(
svr_name
,
svr
));
if
(
ret
.
second
==
false
)
{
if
(
ret
.
second
==
false
)
{
RAW_LOG_ERROR
(
"Service[%s][%s] insert failed!"
,
snprintf
(
err_str
,
svr_name
.
c_str
(),
ERROR_STRING_LEN
-
1
,
typeid
(
svr
).
name
());
"Service[%s][%s] insert failed!"
,
svr_name
.
c_str
(),
typeid
(
svr
).
name
());
RAW_LOG
(
ERROR
,
err_str
);
return
-
1
;
return
-
1
;
}
}
RAW_LOG_INFO
(
"Service[%s] insert successfully!"
,
svr_name
.
c_str
());
snprintf
(
err_str
,
ERROR_STRING_LEN
-
1
,
"Service[%s] insert successfully!"
,
svr_name
.
c_str
());
RAW_LOG
(
INFO
,
err_str
);
return
0
;
return
0
;
}
}
Service
*
get_service
(
const
std
::
string
&
svr_name
)
{
Service
*
get_service
(
const
std
::
string
&
svr_name
)
{
char
err_str
[
ERROR_STRING_LEN
];
boost
::
unordered_map
<
std
::
string
,
Service
*>::
iterator
res
;
boost
::
unordered_map
<
std
::
string
,
Service
*>::
iterator
res
;
if
((
res
=
_service_map
.
find
(
svr_name
))
==
_service_map
.
end
())
{
if
((
res
=
_service_map
.
find
(
svr_name
))
==
_service_map
.
end
())
{
RAW_LOG_WARNING
(
"Service[%s] not found in service manager!"
,
snprintf
(
err_str
,
svr_name
.
c_str
());
ERROR_STRING_LEN
-
1
,
"Service[%s] not found in service manager!"
,
svr_name
.
c_str
());
RAW_LOG
(
WARNING
,
err_str
);
return
NULL
;
return
NULL
;
}
}
return
(
*
res
).
second
;
return
(
*
res
).
second
;
...
...
core/predictor/src/pdserving.cpp
浏览文件 @
3ae5bcbf
...
@@ -202,8 +202,6 @@ int main(int argc, char** argv) {
...
@@ -202,8 +202,6 @@ int main(int argc, char** argv) {
}
}
VLOG
(
2
)
<<
"Succ call pthread worker start function"
;
VLOG
(
2
)
<<
"Succ call pthread worker start function"
;
#ifndef BCLOUD
if
(
Resource
::
instance
().
general_model_initialize
(
FLAGS_resource_path
,
if
(
Resource
::
instance
().
general_model_initialize
(
FLAGS_resource_path
,
FLAGS_resource_file
)
!=
0
)
{
FLAGS_resource_file
)
!=
0
)
{
LOG
(
ERROR
)
<<
"Failed to initialize general model conf: "
LOG
(
ERROR
)
<<
"Failed to initialize general model conf: "
...
@@ -213,6 +211,7 @@ int main(int argc, char** argv) {
...
@@ -213,6 +211,7 @@ int main(int argc, char** argv) {
VLOG
(
2
)
<<
"Succ initialize general model"
;
VLOG
(
2
)
<<
"Succ initialize general model"
;
#ifndef BCLOUD
// FATAL messages are output to stderr
// FATAL messages are output to stderr
FLAGS_stderrthreshold
=
3
;
FLAGS_stderrthreshold
=
3
;
#endif
#endif
...
...
core/sdk-cpp/include/abtest.h
浏览文件 @
3ae5bcbf
...
@@ -50,9 +50,9 @@ class WeightedRandomRender : public EndpointRouterBase {
...
@@ -50,9 +50,9 @@ class WeightedRandomRender : public EndpointRouterBase {
Factory
<
WeightedRandomRender
,
EndpointRouterBase
>*
factory
=
Factory
<
WeightedRandomRender
,
EndpointRouterBase
>*
factory
=
new
(
std
::
nothrow
)
Factory
<
WeightedRandomRender
,
EndpointRouterBase
>
();
new
(
std
::
nothrow
)
Factory
<
WeightedRandomRender
,
EndpointRouterBase
>
();
if
(
factory
==
NULL
)
{
if
(
factory
==
NULL
)
{
RAW_LOG
_ERROR
(
RAW_LOG
(
ERROR
,
"Failed regist factory: WeightedRandomRender->EndpointRouterBase in "
"Failed regist factory: WeightedRandomRender->EndpointRouterBase \
"
macro!"
);
in
macro!"
);
return
-
1
;
return
-
1
;
}
}
...
@@ -62,9 +62,9 @@ class WeightedRandomRender : public EndpointRouterBase {
...
@@ -62,9 +62,9 @@ class WeightedRandomRender : public EndpointRouterBase {
// together.
// together.
if
(
FactoryPool
<
EndpointRouterBase
>::
instance
().
register_factory
(
if
(
FactoryPool
<
EndpointRouterBase
>::
instance
().
register_factory
(
"WeightedRandomRender"
,
factory
)
!=
0
)
{
"WeightedRandomRender"
,
factory
)
!=
0
)
{
RAW_LOG
_INFO
(
RAW_LOG
(
INFO
,
"Factory has been registed: "
"Factory has been registed: \
"
WeightedRandomRender->EndpointRouterBase."
);
WeightedRandomRender->EndpointRouterBase."
);
}
}
return
0
;
return
0
;
...
...
core/sdk-cpp/include/factory.h
浏览文件 @
3ae5bcbf
...
@@ -18,7 +18,6 @@
...
@@ -18,7 +18,6 @@
#include <utility>
#include <utility>
#include "core/sdk-cpp/include/common.h"
#include "core/sdk-cpp/include/common.h"
#include "core/sdk-cpp/include/stub_impl.h"
#include "core/sdk-cpp/include/stub_impl.h"
#include "glog/raw_logging.h"
namespace
baidu
{
namespace
baidu
{
namespace
paddle_serving
{
namespace
paddle_serving
{
...
@@ -28,12 +27,20 @@ namespace sdk_cpp {
...
@@ -28,12 +27,20 @@ namespace sdk_cpp {
namespace
brpc
=
baidu
::
rpc
;
namespace
brpc
=
baidu
::
rpc
;
#endif
#endif
#define ERROR_STRING_LEN 10240
#define INLINE_REGIST_OBJECT(D, B, E) \
#define INLINE_REGIST_OBJECT(D, B, E) \
do { \
do { \
Factory<D, B>* factory = new (std::nothrow) Factory<D, B>(); \
Factory<D, B>* factory = new (std::nothrow) Factory<D, B>(); \
if (factory == NULL || \
if (factory == NULL || \
FactoryPool<B>::instance().register_factory(#D, factory) != 0) { \
FactoryPool<B>::instance().register_factory(#D, factory) != 0) { \
RAW_LOG_ERROR("Failed regist factory: %s->%s in macro!", #D, #B); \
char err_str[ERROR_STRING_LEN]; \
snprintf(err_str, \
ERROR_STRING_LEN - 1, \
"Failed regist factory: %s->%s in macro!", \
#D, \
#B); \
RAW_LOG(ERROR, err_str); \
return E; \
return E; \
} \
} \
} while (0)
} while (0)
...
@@ -43,7 +50,12 @@ namespace brpc = baidu::rpc;
...
@@ -43,7 +50,12 @@ namespace brpc = baidu::rpc;
Factory<D, B>* factory = new (std::nothrow) Factory<D, B>(); \
Factory<D, B>* factory = new (std::nothrow) Factory<D, B>(); \
if (factory == NULL || \
if (factory == NULL || \
FactoryPool<B>::instance().register_factory(tag, factory) != 0) { \
FactoryPool<B>::instance().register_factory(tag, factory) != 0) { \
RAW_LOG_ERROR("Failed regist factory: %s in macro!", #D); \
char err_str[ERROR_STRING_LEN]; \
snprintf(err_str, \
ERROR_STRING_LEN - 1, \
"Failed regist factory: %s in macro!", \
#D); \
RAW_LOG(ERROR, err_str); \
return -1; \
return -1; \
} \
} \
return 0; \
return 0; \
...
@@ -66,7 +78,13 @@ namespace brpc = baidu::rpc;
...
@@ -66,7 +78,13 @@ namespace brpc = baidu::rpc;
if (factory == NULL || \
if (factory == NULL || \
::baidu::paddle_serving::sdk_cpp::FactoryPool<B>::instance() \
::baidu::paddle_serving::sdk_cpp::FactoryPool<B>::instance() \
.register_factory(#D, factory) != 0) { \
.register_factory(#D, factory) != 0) { \
RAW_LOG_ERROR("Failed regist factory: %s->%s in macro!", #D, #B); \
char err_str[ERROR_STRING_LEN]; \
snprintf(err_str, \
ERROR_STRING_LEN - 1, \
"Failed regist factory: %s->%s in macro!", \
#D, \
#B); \
RAW_LOG(ERROR, err_str); \
return; \
return; \
} \
} \
return; \
return; \
...
@@ -80,8 +98,14 @@ namespace brpc = baidu::rpc;
...
@@ -80,8 +98,14 @@ namespace brpc = baidu::rpc;
if (factory == NULL || \
if (factory == NULL || \
::baidu::paddle_serving::sdk_cpp::FactoryPool<B>::instance() \
::baidu::paddle_serving::sdk_cpp::FactoryPool<B>::instance() \
.register_factory(T, factory) != 0) { \
.register_factory(T, factory) != 0) { \
RAW_LOG_ERROR( \
char err_str[ERROR_STRING_LEN]; \
"Failed regist factory: %s->%s, tag %s in macro!", #D, #B, T); \
snprintf(err_str, \
ERROR_STRING_LEN - 1, \
"Failed regist factory: %s->%s, tag %s in macro!", \
#D, \
#B, \
T); \
RAW_LOG(ERROR, err_str); \
return; \
return; \
} \
} \
return; \
return; \
...
@@ -108,8 +132,13 @@ namespace brpc = baidu::rpc;
...
@@ -108,8 +132,13 @@ namespace brpc = baidu::rpc;
::baidu::paddle_serving::sdk_cpp::FactoryPool< \
::baidu::paddle_serving::sdk_cpp::FactoryPool< \
::baidu::paddle_serving::sdk_cpp::Stub>::instance() \
::baidu::paddle_serving::sdk_cpp::Stub>::instance() \
.register_factory(T, factory) != 0) { \
.register_factory(T, factory) != 0) { \
RAW_LOG_ERROR( \
char err_str[ERROR_STRING_LEN]; \
"Failed regist factory: %s->Stub, tag: %s in macro!", #D, T); \
snprintf(err_str, \
ERROR_STRING_LEN - 1, \
"Failed regist factory: %s->Stub, tag: %s in macro!", \
#D, \
T); \
RAW_LOG(ERROR, err_str); \
return; \
return; \
} \
} \
return; \
return; \
...
@@ -146,14 +175,24 @@ class FactoryPool {
...
@@ -146,14 +175,24 @@ class FactoryPool {
typename
std
::
map
<
std
::
string
,
FactoryBase
<
B
>*>::
iterator
it
=
typename
std
::
map
<
std
::
string
,
FactoryBase
<
B
>*>::
iterator
it
=
_pool
.
find
(
tag
);
_pool
.
find
(
tag
);
if
(
it
!=
_pool
.
end
())
{
if
(
it
!=
_pool
.
end
())
{
RAW_LOG_ERROR
(
"Insert duplicate with tag: %s"
,
tag
.
c_str
());
char
err_str
[
ERROR_STRING_LEN
];
snprintf
(
err_str
,
ERROR_STRING_LEN
-
1
,
"Insert duplicate with tag: %s"
,
tag
.
c_str
());
RAW_LOG
(
ERROR
,
err_str
);
return
-
1
;
return
-
1
;
}
}
std
::
pair
<
typename
std
::
map
<
std
::
string
,
FactoryBase
<
B
>*>::
iterator
,
bool
>
std
::
pair
<
typename
std
::
map
<
std
::
string
,
FactoryBase
<
B
>*>::
iterator
,
bool
>
r
=
_pool
.
insert
(
std
::
make_pair
(
tag
,
factory
));
r
=
_pool
.
insert
(
std
::
make_pair
(
tag
,
factory
));
if
(
!
r
.
second
)
{
if
(
!
r
.
second
)
{
RAW_LOG_ERROR
(
"Failed insert new factory with: %s"
,
tag
.
c_str
());
char
err_str
[
ERROR_STRING_LEN
];
snprintf
(
err_str
,
ERROR_STRING_LEN
-
1
,
"Failed insert new factory with: %s"
,
tag
.
c_str
());
RAW_LOG
(
ERROR
,
err_str
);
return
-
1
;
return
-
1
;
}
}
...
@@ -164,9 +203,13 @@ class FactoryPool {
...
@@ -164,9 +203,13 @@ class FactoryPool {
typename
std
::
map
<
std
::
string
,
FactoryBase
<
B
>*>::
iterator
it
=
typename
std
::
map
<
std
::
string
,
FactoryBase
<
B
>*>::
iterator
it
=
_pool
.
find
(
tag
);
_pool
.
find
(
tag
);
if
(
it
==
_pool
.
end
()
||
it
->
second
==
NULL
)
{
if
(
it
==
_pool
.
end
()
||
it
->
second
==
NULL
)
{
RAW_LOG_ERROR
(
"Not found factory pool, tag: %s, pool size: %u"
,
char
err_str
[
ERROR_STRING_LEN
];
tag
.
c_str
(),
snprintf
(
err_str
,
_pool
.
size
());
ERROR_STRING_LEN
-
1
,
"Not found factory pool, tag: %s, pool size: %u"
,
tag
.
c_str
(),
_pool
.
size
());
RAW_LOG
(
ERROR
,
err_str
);
return
NULL
;
return
NULL
;
}
}
...
...
paddle_inference/inferencer-fluid-cpu/include/fluid_cpu_engine.h
浏览文件 @
3ae5bcbf
...
@@ -23,6 +23,7 @@
...
@@ -23,6 +23,7 @@
#include "core/configure/inferencer_configure.pb.h"
#include "core/configure/inferencer_configure.pb.h"
#include "core/predictor/framework/infer.h"
#include "core/predictor/framework/infer.h"
#include "paddle_inference_api.h" // NOLINT
#include "paddle_inference_api.h" // NOLINT
//#include "predictor/framework/infer.h"
namespace
baidu
{
namespace
baidu
{
namespace
paddle_serving
{
namespace
paddle_serving
{
...
...
python/paddle_serving_server/__init__.py
浏览文件 @
3ae5bcbf
...
@@ -103,8 +103,8 @@ class OpSeqMaker(object):
...
@@ -103,8 +103,8 @@ class OpSeqMaker(object):
elif
len
(
node
.
dependencies
)
==
1
:
elif
len
(
node
.
dependencies
)
==
1
:
if
node
.
dependencies
[
0
].
name
!=
self
.
workflow
.
nodes
[
-
1
].
name
:
if
node
.
dependencies
[
0
].
name
!=
self
.
workflow
.
nodes
[
-
1
].
name
:
raise
Exception
(
raise
Exception
(
'You must add op in order in OpSeqMaker. The previous op is {}, but the current op is followed by {}.'
.
'You must add op in order in OpSeqMaker. The previous op is {}, but the current op is followed by {}.'
format
(
node
.
dependencies
[
0
].
name
,
self
.
workflow
.
nodes
[
.
format
(
node
.
dependencies
[
0
].
name
,
self
.
workflow
.
nodes
[
-
1
].
name
))
-
1
].
name
))
self
.
workflow
.
nodes
.
extend
([
node
])
self
.
workflow
.
nodes
.
extend
([
node
])
...
@@ -157,6 +157,8 @@ class Server(object):
...
@@ -157,6 +157,8 @@ class Server(object):
self
.
cur_path
=
os
.
getcwd
()
self
.
cur_path
=
os
.
getcwd
()
self
.
use_local_bin
=
False
self
.
use_local_bin
=
False
self
.
mkl_flag
=
False
self
.
mkl_flag
=
False
self
.
product_name
=
None
self
.
container_id
=
None
self
.
model_config_paths
=
None
# for multi-model in a workflow
self
.
model_config_paths
=
None
# for multi-model in a workflow
def
set_max_concurrency
(
self
,
concurrency
):
def
set_max_concurrency
(
self
,
concurrency
):
...
@@ -191,6 +193,16 @@ class Server(object):
...
@@ -191,6 +193,16 @@ class Server(object):
def
set_ir_optimize
(
self
,
flag
=
False
):
def
set_ir_optimize
(
self
,
flag
=
False
):
self
.
ir_optimization
=
flag
self
.
ir_optimization
=
flag
def
set_product_name
(
self
,
product_name
=
None
):
if
product_name
==
None
:
raise
ValueError
(
"product_name can't be None."
)
self
.
product_name
=
product_name
def
set_container_id
(
self
,
container_id
):
if
container_id
==
None
:
raise
ValueError
(
"container_id can't be None."
)
self
.
container_id
=
container_id
def
check_local_bin
(
self
):
def
check_local_bin
(
self
):
if
"SERVING_BIN"
in
os
.
environ
:
if
"SERVING_BIN"
in
os
.
environ
:
self
.
use_local_bin
=
True
self
.
use_local_bin
=
True
...
@@ -254,6 +266,10 @@ class Server(object):
...
@@ -254,6 +266,10 @@ class Server(object):
self
.
resource_conf
.
model_toolkit_file
=
self
.
model_toolkit_fn
self
.
resource_conf
.
model_toolkit_file
=
self
.
model_toolkit_fn
self
.
resource_conf
.
general_model_path
=
workdir
self
.
resource_conf
.
general_model_path
=
workdir
self
.
resource_conf
.
general_model_file
=
self
.
general_model_config_fn
self
.
resource_conf
.
general_model_file
=
self
.
general_model_config_fn
if
self
.
product_name
!=
None
:
self
.
resource_conf
.
auth_product_name
=
self
.
product_name
if
self
.
container_id
!=
None
:
self
.
resource_conf
.
auth_container_id
=
self
.
container_id
def
_write_pb_str
(
self
,
filepath
,
pb_obj
):
def
_write_pb_str
(
self
,
filepath
,
pb_obj
):
with
open
(
filepath
,
"w"
)
as
fout
:
with
open
(
filepath
,
"w"
)
as
fout
:
...
@@ -351,8 +367,8 @@ class Server(object):
...
@@ -351,8 +367,8 @@ class Server(object):
if
os
.
path
.
exists
(
tar_name
):
if
os
.
path
.
exists
(
tar_name
):
os
.
remove
(
tar_name
)
os
.
remove
(
tar_name
)
raise
SystemExit
(
raise
SystemExit
(
'Download failed, please check your network or permission of {}.'
.
'Download failed, please check your network or permission of {}.'
format
(
self
.
module_path
))
.
format
(
self
.
module_path
))
else
:
else
:
try
:
try
:
print
(
'Decompressing files ..'
)
print
(
'Decompressing files ..'
)
...
@@ -363,8 +379,8 @@ class Server(object):
...
@@ -363,8 +379,8 @@ class Server(object):
if
os
.
path
.
exists
(
exe_path
):
if
os
.
path
.
exists
(
exe_path
):
os
.
remove
(
exe_path
)
os
.
remove
(
exe_path
)
raise
SystemExit
(
raise
SystemExit
(
'Decompressing failed, please check your permission of {} or disk space left.'
.
'Decompressing failed, please check your permission of {} or disk space left.'
format
(
self
.
module_path
))
.
format
(
self
.
module_path
))
finally
:
finally
:
os
.
remove
(
tar_name
)
os
.
remove
(
tar_name
)
#release lock
#release lock
...
@@ -541,7 +557,6 @@ class MultiLangServerServiceServicer(multi_lang_general_model_service_pb2_grpc.
...
@@ -541,7 +557,6 @@ class MultiLangServerServiceServicer(multi_lang_general_model_service_pb2_grpc.
results
,
tag
=
ret
results
,
tag
=
ret
resp
.
tag
=
tag
resp
.
tag
=
tag
resp
.
err_code
=
0
resp
.
err_code
=
0
if
not
self
.
is_multi_model_
:
if
not
self
.
is_multi_model_
:
results
=
{
'general_infer_0'
:
results
}
results
=
{
'general_infer_0'
:
results
}
for
model_name
,
model_result
in
results
.
items
():
for
model_name
,
model_result
in
results
.
items
():
...
...
python/paddle_serving_server/serve.py
浏览文件 @
3ae5bcbf
...
@@ -58,6 +58,16 @@ def parse_args(): # pylint: disable=doc-string-missing
...
@@ -58,6 +58,16 @@ def parse_args(): # pylint: disable=doc-string-missing
default
=
False
,
default
=
False
,
action
=
"store_true"
,
action
=
"store_true"
,
help
=
"Use Multi-language-service"
)
help
=
"Use Multi-language-service"
)
parser
.
add_argument
(
"--product_name"
,
type
=
str
,
default
=
None
,
help
=
"product_name for authentication"
)
parser
.
add_argument
(
"--container_id"
,
type
=
str
,
default
=
None
,
help
=
"container_id for authentication"
)
return
parser
.
parse_args
()
return
parser
.
parse_args
()
...
@@ -101,6 +111,10 @@ def start_standard_model(): # pylint: disable=doc-string-missing
...
@@ -101,6 +111,10 @@ def start_standard_model(): # pylint: disable=doc-string-missing
server
.
use_mkl
(
use_mkl
)
server
.
use_mkl
(
use_mkl
)
server
.
set_max_body_size
(
max_body_size
)
server
.
set_max_body_size
(
max_body_size
)
server
.
set_port
(
port
)
server
.
set_port
(
port
)
if
args
.
product_name
!=
None
:
server
.
set_product_name
(
args
.
product_name
)
if
args
.
container_id
!=
None
:
server
.
set_container_id
(
args
.
container_id
)
server
.
load_model_config
(
model
)
server
.
load_model_config
(
model
)
server
.
prepare_server
(
workdir
=
workdir
,
port
=
port
,
device
=
device
)
server
.
prepare_server
(
workdir
=
workdir
,
port
=
port
,
device
=
device
)
...
...
python/paddle_serving_server_gpu/__init__.py
浏览文件 @
3ae5bcbf
...
@@ -73,6 +73,16 @@ def serve_args():
...
@@ -73,6 +73,16 @@ def serve_args():
default
=
False
,
default
=
False
,
action
=
"store_true"
,
action
=
"store_true"
,
help
=
"Use Multi-language-service"
)
help
=
"Use Multi-language-service"
)
parser
.
add_argument
(
"--product_name"
,
type
=
str
,
default
=
None
,
help
=
"product_name for authentication"
)
parser
.
add_argument
(
"--container_id"
,
type
=
str
,
default
=
None
,
help
=
"container_id for authentication"
)
return
parser
.
parse_args
()
return
parser
.
parse_args
()
...
@@ -141,8 +151,8 @@ class OpSeqMaker(object):
...
@@ -141,8 +151,8 @@ class OpSeqMaker(object):
elif
len
(
node
.
dependencies
)
==
1
:
elif
len
(
node
.
dependencies
)
==
1
:
if
node
.
dependencies
[
0
].
name
!=
self
.
workflow
.
nodes
[
-
1
].
name
:
if
node
.
dependencies
[
0
].
name
!=
self
.
workflow
.
nodes
[
-
1
].
name
:
raise
Exception
(
raise
Exception
(
'You must add op in order in OpSeqMaker. The previous op is {}, but the current op is followed by {}.'
.
'You must add op in order in OpSeqMaker. The previous op is {}, but the current op is followed by {}.'
format
(
node
.
dependencies
[
0
].
name
,
self
.
workflow
.
nodes
[
.
format
(
node
.
dependencies
[
0
].
name
,
self
.
workflow
.
nodes
[
-
1
].
name
))
-
1
].
name
))
self
.
workflow
.
nodes
.
extend
([
node
])
self
.
workflow
.
nodes
.
extend
([
node
])
...
@@ -196,6 +206,8 @@ class Server(object):
...
@@ -196,6 +206,8 @@ class Server(object):
self
.
use_local_bin
=
False
self
.
use_local_bin
=
False
self
.
gpuid
=
0
self
.
gpuid
=
0
self
.
model_config_paths
=
None
# for multi-model in a workflow
self
.
model_config_paths
=
None
# for multi-model in a workflow
self
.
product_name
=
None
self
.
container_id
=
None
def
set_max_concurrency
(
self
,
concurrency
):
def
set_max_concurrency
(
self
,
concurrency
):
self
.
max_concurrency
=
concurrency
self
.
max_concurrency
=
concurrency
...
@@ -229,6 +241,16 @@ class Server(object):
...
@@ -229,6 +241,16 @@ class Server(object):
def
set_ir_optimize
(
self
,
flag
=
False
):
def
set_ir_optimize
(
self
,
flag
=
False
):
self
.
ir_optimization
=
flag
self
.
ir_optimization
=
flag
def
set_product_name
(
self
,
product_name
=
None
):
if
product_name
==
None
:
raise
ValueError
(
"product_name can't be None."
)
self
.
product_name
=
product_name
def
set_container_id
(
self
,
container_id
):
if
container_id
==
None
:
raise
ValueError
(
"container_id can't be None."
)
self
.
container_id
=
container_id
def
check_local_bin
(
self
):
def
check_local_bin
(
self
):
if
"SERVING_BIN"
in
os
.
environ
:
if
"SERVING_BIN"
in
os
.
environ
:
self
.
use_local_bin
=
True
self
.
use_local_bin
=
True
...
@@ -302,6 +324,10 @@ class Server(object):
...
@@ -302,6 +324,10 @@ class Server(object):
self
.
resource_conf
.
model_toolkit_file
=
self
.
model_toolkit_fn
self
.
resource_conf
.
model_toolkit_file
=
self
.
model_toolkit_fn
self
.
resource_conf
.
general_model_path
=
workdir
self
.
resource_conf
.
general_model_path
=
workdir
self
.
resource_conf
.
general_model_file
=
self
.
general_model_config_fn
self
.
resource_conf
.
general_model_file
=
self
.
general_model_config_fn
if
self
.
product_name
!=
None
:
self
.
resource_conf
.
auth_product_name
=
self
.
product_name
if
self
.
container_id
!=
None
:
self
.
resource_conf
.
auth_container_id
=
self
.
container_id
def
_write_pb_str
(
self
,
filepath
,
pb_obj
):
def
_write_pb_str
(
self
,
filepath
,
pb_obj
):
with
open
(
filepath
,
"w"
)
as
fout
:
with
open
(
filepath
,
"w"
)
as
fout
:
...
@@ -393,8 +419,8 @@ class Server(object):
...
@@ -393,8 +419,8 @@ class Server(object):
if
os
.
path
.
exists
(
tar_name
):
if
os
.
path
.
exists
(
tar_name
):
os
.
remove
(
tar_name
)
os
.
remove
(
tar_name
)
raise
SystemExit
(
raise
SystemExit
(
'Download failed, please check your network or permission of {}.'
.
'Download failed, please check your network or permission of {}.'
format
(
self
.
module_path
))
.
format
(
self
.
module_path
))
else
:
else
:
try
:
try
:
print
(
'Decompressing files ..'
)
print
(
'Decompressing files ..'
)
...
@@ -405,8 +431,8 @@ class Server(object):
...
@@ -405,8 +431,8 @@ class Server(object):
if
os
.
path
.
exists
(
exe_path
):
if
os
.
path
.
exists
(
exe_path
):
os
.
remove
(
exe_path
)
os
.
remove
(
exe_path
)
raise
SystemExit
(
raise
SystemExit
(
'Decompressing failed, please check your permission of {} or disk space left.'
.
'Decompressing failed, please check your permission of {} or disk space left.'
format
(
self
.
module_path
))
.
format
(
self
.
module_path
))
finally
:
finally
:
os
.
remove
(
tar_name
)
os
.
remove
(
tar_name
)
#release lock
#release lock
...
...
python/paddle_serving_server_gpu/serve.py
浏览文件 @
3ae5bcbf
...
@@ -65,6 +65,11 @@ def start_gpu_card_model(index, gpuid, args): # pylint: disable=doc-string-miss
...
@@ -65,6 +65,11 @@ def start_gpu_card_model(index, gpuid, args): # pylint: disable=doc-string-miss
server
.
set_ir_optimize
(
ir_optim
)
server
.
set_ir_optimize
(
ir_optim
)
server
.
set_max_body_size
(
max_body_size
)
server
.
set_max_body_size
(
max_body_size
)
if
args
.
product_name
!=
None
:
server
.
set_product_name
(
args
.
product_name
)
if
args
.
container_id
!=
None
:
server
.
set_container_id
(
args
.
container_id
)
server
.
load_model_config
(
model
)
server
.
load_model_config
(
model
)
server
.
prepare_server
(
workdir
=
workdir
,
port
=
port
,
device
=
device
)
server
.
prepare_server
(
workdir
=
workdir
,
port
=
port
,
device
=
device
)
if
gpuid
>=
0
:
if
gpuid
>=
0
:
...
@@ -83,8 +88,8 @@ def start_multi_card(args): # pylint: disable=doc-string-missing
...
@@ -83,8 +88,8 @@ def start_multi_card(args): # pylint: disable=doc-string-missing
for
ids
in
gpus
:
for
ids
in
gpus
:
if
int
(
ids
)
>=
len
(
env_gpus
):
if
int
(
ids
)
>=
len
(
env_gpus
):
print
(
print
(
" Max index of gpu_ids out of range, the number of CUDA_VISIBLE_DEVICES is {}."
.
" Max index of gpu_ids out of range, the number of CUDA_VISIBLE_DEVICES is {}."
format
(
len
(
env_gpus
)))
.
format
(
len
(
env_gpus
)))
exit
(
-
1
)
exit
(
-
1
)
else
:
else
:
env_gpus
=
[]
env_gpus
=
[]
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录