我们使用TensorFlow模型动物园的Faster Rcnn对1280 * 720 RGB图像进行了推断,对COCO数据集进行了训练,并得到了一些结果
测试案例1: 使用'tf.Session(graph = tf.Graph())'创建了一个tf会话
Batch Size = 4,GPU use = 100% (as default)
Time Taken for inference of 4 images = 0.32 secs
测试案例2: 然后,我们使用gpu_options将每个TF会话的gpu使用量限制为一小部分
'gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.40)'
'tf.Session(graph=tf.Graph(),config=tf.ConfigProto(gpu_options=gpu_options))'
For a batch size of 2,the time taken for inference was 0.16secs,which is understandable because this is linear.
测试案例3: 将两个推理实例作为两个不同的python进程运行。在这里,两个批处理大小均为2。推理速度大大降低,最终值为0.32秒,与一个进程对批处理大小为4进行推理的情况相同。
Batch Size = 2,GPU use = 40%,Processes = 2
Time Taken = 0.32 secs
因此,在情况1和情况3中,花费的时间是相同的。
Q.1是否有任何减少时间的方法?
Q.2瓶颈在哪里?同样在第一种情况下,似乎并没有利用整个GPU内存。因此,我们曾认为,如果将推理分为两部分,则可以更有效地利用资源。我们所了解的哪里出问题了?