Windows ML を他のバックエンドと比較してベンチマークし、推論時間の奇妙な分布を確認しようとしています (プロットを参照)。これは、ARM64 アーキテクチャを使用する CPU バックエンドです。ARM では、バイモーダル ディストリビューションはありません。
推論時間の分布に 2 つのモードがある理由については、よくわかりません。一時的な相関関係はないようです。ネットワークを 1 秒に 1 回実行すると、一見ランダムに「低速」モードと「高速」モードが切り替わります。
私が持っている推測の 1 つは、Windows ML が 2 つのスレッドを使用することもあれば、推定されるデバイスの負荷に応じて 1 つのスレッドを使用することもあるということです。ただし、TensorFlow Lite や Caffe2 とは異なり、Windows ML が使用するスレッド数を制御する方法が見つかりませんでした。質問は次のとおりです。
Windows ML が CPU モードでの評価に使用しているスレッドの数を制御する方法はありますか?それとも、どのような場合でも計算に 1 つのスレッドのみを使用することが保証されていますか?
この奇妙な動作を引き起こす可能性のある他のポインタも歓迎します.