我正在使用批处理,并且正在通过Docker容器tf-serving
运行tensorflow/serving:1.13.0-gpu
。
我的batch.config
文件如下:
max_batch_size { value: 32 }
batch_timeout_micros { value : 0 }
num_batch_threads { value : 64 }
allowed_batch_sizes : 1
allowed_batch_sizes : 2
allowed_batch_sizes : 8
allowed_batch_sizes : 32
max_enqueued_batches { value : 100000000}
我通过执行tensorflow_model_server --model_base_path=/models/object-detect --rest_api_port=8501 --port=8081 --enable_batching --batching_parameters_file=batch.config
来运行所有程序。
GPU是Tesla P100,系统有8个运行tf 1.13.1
的内核。
当我向服务器发送1000个并发请求时(每个请求带有一个图像),大约需要35秒的时间(不分批处理)。对于批处理,它需要几乎相同的准确时间-大约34.5秒。
我知道batch.config
文件需要手工进行微调,我对此感到很困惑,并对其数字进行了微调,但是似乎并没有真正影响运行时。
我看到其他一些帖子提到,从源头构建tf-serving
可以解决此问题,但对我而言不是。
任何建议都会很棒!