Open HexToString opened 2 years ago
hub serving start -c deploy/hubserving/ocr_system/config.json
{ "modules_info": { "ocr_system": { "init_args": { "version": "1.0.0", "use_gpu": true }, "predict_args": { } } }, "port": 8868, "use_multiprocess": false, "workers": 10, "gpu": "0,1,2,3" }
其实还有一个问题: 为什么开启multi_process不能打开GPU? 那么既然打开GPU就不能并发,那我指定多卡,其实是不是也不是并发,而是串行的用不同的卡? 如果是这样,那也就解释通了,为什么开多卡比单卡还慢。
开单卡,30张图片,总耗时:72.8076696395874 开4卡,30张图片,总耗时:93.16342949867249
deploy/hubserving/ocr_system/config.json
目前hub serving命令的背后支持三种形式:Flask、Gunicorn+Flask和ZMQ+Flask。
hub serving命令启动时依据use_multiprocess
和use_gpu
两个参数的组合来确定具体形式:
use_gpu
为True,use_multiprocess
参数无效,使用ZMQ+Flask,gpu
决定了单卡还是多卡预测,如果不设置gpu
,默认启动第0号gpu。use_gpu
为False,use_multiprocess
为True,使用Gunicorn+Flask,cpu多进程预测。use_gpu
为False,use_multiprocess
为False,使用Flask,gpu单卡或者cpu单进程预测。hub serving start -c deploy/hubserving/ocr_system/config.json
{ "modules_info": { "ocr_system": { "init_args": { "version": "1.0.0", "use_gpu": true }, "predict_args": { } } }, "port": 8868, "use_multiprocess": false, "workers": 10, "gpu": "0,1,2,3" }
回复中给出的配置如下,因为最外层没有设置use_gpu
(默认False),use_multiprocess
为False,因此走的是第3种形式,无论gpu
的卡数设置多或少,都是gpu单卡/cpu单进程预测。
{
"modules_info": {
"ocr_system": {
"init_args": {
"version": "1.0.0",
"use_gpu": true
},
"predict_args": {
}
}
},
"port": 8868,
"use_multiprocess": false,
"workers": 10,
"gpu": "0,1,2,3"
}
如果需要多卡预测,需要更改为:
{
"modules_info": {
"ocr_system": {
"init_args": {
"version": "1.0.0",
"use_gpu": true
},
"predict_args": {
}
}
},
"port": 8868,
"use_multiprocess": false,
"use_gpu": true,
"gpu": "0,1,2,3"
}
根据https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.3/deploy/hubserving#%E5%8F%91%E9%80%81%E9%A2%84%E6%B5%8B%E8%AF%B7%E6%B1%82 的预测脚本,要测试多卡时需要启用多进程同时发送多个预测请求,改成10个并发请求后,运行预测测试,第一种配置耗时7.04秒,第二种配置耗时1.329秒,多卡serving可以正常使用。
deploy/hubserving/ocr_system/config.json
目前hub serving命令的背后支持三种形式:Flask、Gunicorn+Flask和ZMQ+Flask。 hub serving命令启动时依据
use_multiprocess
和use_gpu
两个参数的组合来确定具体形式:
use_gpu
为True,use_multiprocess
参数无效,使用ZMQ+Flask,gpu
决定了单卡还是多卡预测,如果不设置gpu
,默认启动第0号gpu。use_gpu
为False,use_multiprocess
为True,使用Gunicorn+Flask,cpu多进程预测。use_gpu
为False,use_multiprocess
为False,使用Flask,gpu单卡或者cpu单进程预测。hub serving start -c deploy/hubserving/ocr_system/config.json { "modules_info": { "ocr_system": { "init_args": { "version": "1.0.0", "use_gpu": true }, "predict_args": { } } }, "port": 8868, "use_multiprocess": false, "workers": 10, "gpu": "0,1,2,3" }
回复中给出的配置如下,因为最外层没有设置
use_gpu
(默认False),use_multiprocess
为False,因此走的是第3种形式,无论gpu
的卡数设置多或少,都是gpu单卡/cpu单进程预测。{ "modules_info": { "ocr_system": { "init_args": { "version": "1.0.0", "use_gpu": true }, "predict_args": { } } }, "port": 8868, "use_multiprocess": false, "workers": 10, "gpu": "0,1,2,3" }
如果需要多卡预测,需要更改为:
{ "modules_info": { "ocr_system": { "init_args": { "version": "1.0.0", "use_gpu": true }, "predict_args": { } } }, "port": 8868, "use_multiprocess": false, "use_gpu": true, "gpu": "0,1,2,3" }
根据https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.3/deploy/hubserving#%E5%8F%91%E9%80%81%E9%A2%84%E6%B5%8B%E8%AF%B7%E6%B1%82 的预测脚本,要测试多卡时需要启用多进程同时发送多个预测请求,改成10个并发请求后,运行预测测试,第一种配置耗时7.04秒,第二种配置耗时1.329秒,多卡serving可以正常使用。
请看一下我按照您说的设置遇到的情况,https://github.com/PaddlePaddle/PaddleHub/issues/2293
欢迎您反馈PaddleHub使用问题,非常感谢您对PaddleHub的贡献! 在留下您的问题时,辛苦您同步提供如下信息:
开启GPU,设置多卡后,比如100张图片,预测,总耗时比单卡还慢。但是我看咱们宣传的是性能会大幅度提升。是我没设置对么? 设置的参数是--use_gpu --gpu 0,1,2,3