Description
windows部署报错:
python web_service.py --config=config.yml
args config: {'rpc_port': 18091, 'http_port': 9998, 'worker_num': 1, 'build_dag_each_worker': False, 'dag': {'is_thread_op': True, 'retry': 3, 'use_profile': False, 'tracer': {'interval_s': -1}}, 'op': {'det': {'concurrency': 1, 'local_service_conf': {'client_type': 'local_predictor', 'model_config': './ppocr_det_v4_serving', 'devices': '', 'ir_optim': False}}, 'rec': {'concurrency': 1, 'timeout': 3000, 'retry': 1, 'local_service_conf': {'client_type': 'local_predictor', 'model_config': './ppocr_rec_v4_serving', 'devices': '', 'ir_optim': False}}}}
[DAG] Succ init
I0113 11:20:45.652944 10512 analysis_predictor.cc:1626] MKLDNN is enabled
I0113 11:20:45.652944 10512 analysis_predictor.cc:1740] Ir optimization is turned off, no ir pass will be executed.
e[1me[35m--- Running analysis [ir_graph_build_pass]e[0m
I0113 11:20:45.652944 10512 executor.cc:187] Old Executor is Running.
e[1me[35m--- Running analysis [ir_analysis_pass]e[0m
e[1me[35m--- Running analysis [save_optimized_model_pass]e[0m
e[1me[35m--- Running analysis [ir_params_sync_among_devices_pass]e[0m
e[1me[35m--- Running analysis [adjust_cudnn_workspace_size_pass]e[0m
e[1me[35m--- Running analysis [inference_op_replace_pass]e[0m
e[1me[35m--- Running analysis [memory_optimize_pass]e[0m
I0113 11:20:45.668565 10512 memory_optimize_pass.cc:118] The persistable params in main graph are : 10.2689MB
I0113 11:20:45.684191 10512 memory_optimize_pass.cc:246] Cluster name : linear_170.tmp_1 size: 26500
I0113 11:20:45.684191 10512 memory_optimize_pass.cc:246] Cluster name : shape_5.tmp_0_slice_1 size: 4
I0113 11:20:45.684191 10512 memory_optimize_pass.cc:246] Cluster name : conv2d_198.tmp_1 size: 11520
I0113 11:20:45.684191 10512 memory_optimize_pass.cc:246] Cluster name : linear_170.tmp_0 size: 26500
I0113 11:20:45.684191 10512 memory_optimize_pass.cc:246] Cluster name : pool2d_3.tmp_0_clone_0 size: 1920
I0113 11:20:45.684191 10512 memory_optimize_pass.cc:246] Cluster name : batch_norm_5.tmp_0 size: 1920
I0113 11:20:45.684191 10512 memory_optimize_pass.cc:246] Cluster name : x size: 576
I0113 11:20:45.684191 10512 memory_optimize_pass.cc:246] Cluster name : transpose_44.tmp_0_slice_2 size: 480
I0113 11:20:45.684191 10512 memory_optimize_pass.cc:246] Cluster name : fill_constant_17.tmp_0 size: 4
I0113 11:20:45.684191 10512 memory_optimize_pass.cc:246] Cluster name : fill_constant_19.tmp_0 size: 4
I0113 11:20:45.684191 10512 memory_optimize_pass.cc:246] Cluster name : shape_3.tmp_0_slice_1 size: 4
I0113 11:20:45.684191 10512 memory_optimize_pass.cc:246] Cluster name : reshape2_27.tmp_1 size: 0
e[1me[35m--- Running analysis [ir_graph_to_program_pass]e[0m
I0113 11:20:45.736836 10512 analysis_predictor.cc:1838] ======= optimize end =======
I0113 11:20:45.736836 10512 naive_executor.cc:200] --- skip [feed], feed -> x
I0113 11:20:45.736836 10512 naive_executor.cc:200] --- skip [softmax_11.tmp_0], fetch -> fetch
[OP Object] init success
I0113 11:20:45.762605 10512 analysis_predictor.cc:1626] MKLDNN is enabled
I0113 11:20:45.762605 10512 analysis_predictor.cc:1740] Ir optimization is turned off, no ir pass will be executed.
e[1me[35m--- Running analysis [ir_graph_build_pass]e[0m
e[1me[35m--- Running analysis [ir_analysis_pass]e[0m
e[1me[35m--- Running analysis [save_optimized_model_pass]e[0m
e[1me[35m--- Running analysis [ir_params_sync_among_devices_pass]e[0m
e[1me[35m--- Running analysis [adjust_cudnn_workspace_size_pass]e[0m
e[1me[35m--- Running analysis [inference_op_replace_pass]e[0m
e[1me[35m--- Running analysis [memory_optimize_pass]e[0m
I0113 11:20:45.782716 10512 memory_optimize_pass.cc:118] The persistable params in main graph are : 4.47025MB
I0113 11:20:45.782716 10512 memory_optimize_pass.cc:246] Cluster name : tmp_85 size: 1536
I0113 11:20:45.782716 10512 memory_optimize_pass.cc:246] Cluster name : tmp_21 size: 192
I0113 11:20:45.782716 10512 memory_optimize_pass.cc:246] Cluster name : tmp_94 size: 1536
I0113 11:20:45.782716 10512 memory_optimize_pass.cc:246] Cluster name : tmp_118 size: 96
I0113 11:20:45.782716 10512 memory_optimize_pass.cc:246] Cluster name : relu_1.tmp_0 size: 384
I0113 11:20:45.782716 10512 memory_optimize_pass.cc:246] Cluster name : hardswish_79.tmp_0 size: 1536
I0113 11:20:45.782716 10512 memory_optimize_pass.cc:246] Cluster name : tmp_35 size: 384
I0113 11:20:45.782716 10512 memory_optimize_pass.cc:246] Cluster name : tmp_73 size: 768
I0113 11:20:45.782716 10512 memory_optimize_pass.cc:246] Cluster name : x size: 12
e[1me[35m--- Running analysis [ir_graph_to_program_pass]e[0m
I0113 11:20:45.830435 10512 analysis_predictor.cc:1838] ======= optimize end =======
I0113 11:20:45.830435 10512 naive_executor.cc:200] --- skip [feed], feed -> x
I0113 11:20:45.830435 10512 naive_executor.cc:200] --- skip [sigmoid_0.tmp_0], fetch -> fetch
[OP Object] init success
[PipelineServicer] succ init
Error running service: cannot pickle '_thread.lock' object
当前环境为:windows的anaconda环境下使用pip命令
python 3.8
Name: paddlepaddle
Version: 2.6.2
Name: paddleocr
Version: 2.9.1
使用线程,config.yml如下:
#rpc端口, rpc_port和http_port不允许同时为空。当rpc_port为空且http_port不为空时,会自动将rpc_port设置为http_port+1
rpc_port: 18091
#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port
原来没有注释掉:http_port: 9998
http_port: 9998
#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG
##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num
#原来为:worker_num: 10
worker_num: 1
#build_dag_each_worker, False,框架在进程内创建一条DAG;True,框架会每个进程内创建多个独立的DAG
#原来为:build_dag_each_worker: False
build_dag_each_worker: False
dag:
#op资源类型, True, 为线程模型;False,为进程模型
#原来为:is_thread_op: False
is_thread_op: False
#重试次数
#原来为:retry: 10
retry: 3
#使用性能分析, True,生成Timeline性能数据,对性能有一定影响;False为不使用
#原来为:use_profile: True
use_profile: False
tracer:
#原来为:interval_s: 10
interval_s: -1
op:
det:
#并发数,is_thread_op=True时,为线程并发;否则为进程并发
#原来为:concurrency: 8
concurrency: 1
#当op配置没有server_endpoints时,从local_service_conf读取本地服务配置
local_service_conf:
#client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测
client_type: local_predictor
#det模型路径
#model_config: ./ppocr_det_v3_serving
model_config: ./ppocr_det_v4_serving
#Fetch结果列表,以client_config中fetch_var的alias_name为准,不设置默认取全部输出变量
#fetch_list: ["sigmoid_0.tmp_0"]
#计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡
#原来为:devices: "0"
devices: ""
#原来为:ir_optim: True
ir_optim: False
rec:
#并发数,is_thread_op=True时,为线程并发;否则为进程并发
#原来为:concurrency: 4
concurrency: 1
#超时时间, 单位ms
#原来为:timeout: -1
timeout: 3000
#Serving交互重试次数,默认不重试
retry: 1
#当op配置没有server_endpoints时,从local_service_conf读取本地服务配置
local_service_conf:
#client类型,包括brpc, grpc和local_predictor。local_predictor不启动Serving服务,进程内预测
client_type: local_predictor
#rec模型路径
#model_config: ./ppocr_rec_v3_serving
model_config: ./ppocr_rec_v4_serving
#Fetch结果列表,以client_config中fetch_var的alias_name为准, 不设置默认取全部输出变量
#fetch_list:
#计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡
#原来为:devices: "0"
devices: ""
#原来为:ir_optim: True
ir_optim: False
部署命令运行后报错