我正在尝试针对其他后端对 Windows ML 进行基准测试,并看到一些奇怪的推理时间分布(参见情节)。这是使用 ARM64 架构的 CPU 后端。在 ARM 上没有双峰分布。
我对为什么推理时间的分布有两种模式没有很好的直觉。似乎没有时间相关性,我每秒运行一次网络,它看似随机地在“慢”和“快”模式之间切换。
我的猜测之一是,有时 Windows ML 可能决定使用两个线程,有时决定使用一个线程,这可能取决于估计的设备负载。但是,与 TensorFlow Lite 或 Caffe2 不同,我还没有找到一种方法来控制 Windows ML 使用的线程数。所以问题是:
有没有办法控制 Windows ML 在 CPU 模式下用于评估的线程数,或者在任何情况下都保证只使用一个线程进行计算?
也欢迎其他可能导致这种奇怪行为的指针。