PyTorch推理速度随调用频率提升的原因排查求助
PyTorch推理测速:高频调用下平均耗时降低的原因分析
我在用PyTorch做图像推理测速时发现一个奇怪现象:推理流水线调用频率越高,单条推理的平均耗时反而越短。具体数据如下:
- 调用频率约10Hz时,每1000次推理的平均耗时约1ms
- 调用频率达到1000Hz时,每1000次推理的平均耗时降至500-600μs,性能提升明显
- 该现象在CPU和GPU推理场景下均存在
我初步猜测原因可能是以下三者之一:
- 计时方式存在错误
- 高频调用推理会触发某种性能提升机制
- 同一多进程中的其他代码在低频率时占用GIL(但我认为该猜测不合理)
请问各位有什么思路?
核心计时与推理代码
try: self.new_img = image_queue.get(False) t1 = timeit.default_timer() decision = self.inference_model(self.new_img) self.total_time += timeit.default_timer() - t1 self._counter += 1 if self._counter % 1000 == 0: print("Avg Time:", self.total_time/1000) self.total_time = 0 except queue.Empty: pass
推理函数实现
def inference_model(self, img): outputs = self.model(img) _, predicted = torch.max(outputs.data, 1) self.output = outputs.data.tolist()[0] return predicted.item()
编辑补充
- 根据评论提示,意识到队列的try/except逻辑可能导致问题,已更新上述代码
- 将
get(False)改为get()后,现象仍未改变
内容的提问来源于stack exchange,提问作者kgenbio
相关产品推荐
相关产品推荐

