我正在使用 onnxruntime 在 GPU 上运行 ML 推理以进行图像识别,我看到图像批处理给我带来多少性能改进的上限 - 推理时间减少到大约 8 的 batch_size,超过该时间仍然存在持续的。我认为这一定是因为 GPU 资源的一些最大利用率,因为我没有看到 onnx 文档中提到的任何此类限制。我尝试使用包 pynmvl.smi 来获取 nvidia_smi 并在推理过程中打印一些利用率因子 -
utilization_percent = nvidia_smi.getInstance().DeviceQuery()['gpu'][0]['utilization']
gpu_util.append(utilization_percent ['gpu_util'])
mem_util.append(utilization_percent ['memory_util'])
我所看到的是 gpu_util 和 memory_util 在我的整个推理运行中都在 25% 以内,即使批量大小为 32 或 64,所以这些不太可能是造成瓶颈的原因。然后我假设它一定是总线负载限制可能导致这种情况。我在 nvidia-smi 中没有找到任何打印 GPU 总线负载的选项。如何在推理过程中找到总线负载?