我正在尝试将TFLite Benchmark tool与mobilenet模型一起使用,并以微秒为单位检查最终的inference time
以比较不同的模型。我面临的问题是两次运行之间的结果不尽相同。我还在与reducing variance between runs on Android有关的文档中找到此部分。它说明了如何在运行基准测试之前设置CPU关联性,以在两次运行之间获得一致的结果。当前使用Redmi Note 4和One Plus进行工作。
请问有人可以解释我为实验设置的CPU affinity
值吗?
我可以在线或在Android手机上找到不同手机的相似性掩码吗?
当我增加--warmup_runs
参数的数量时,得到的结果变少了。还有其他方法可以使结果更一致吗?
Android手机上的后台进程是否会影响inference time
我的test_list.c
,是否有办法阻止它们以减少结果差异?
答案 0 :(得分:1)
正如文档所建议的,只要您在各个实验中保持一致就可以。要考虑的一件事是使用大型内核还是小型内核(如果您使用的是big.little架构),通常最好同时尝试使用两者(它们具有不同的缓存大小,等等)
是的,您通常可以在线找到此信息。以http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0515b/CJHBGEBA.html为例。您需要查看您的特定手机,查看其使用的特定CPU,然后从那里搜索更多信息。
我尝试了--warmup_runs = 2000+,通常情况下它非常稳定。较小的模型会有更多差异。对于密集型机型(至少对于特定设备而言),您可能希望查看设备是否过热等。对于中等级别的手机,我还没有看到这种情况,但是听说人们有时将设备放在凉爽的地方(风扇,冰箱)。
他们可能会这样做,但这是不可避免的。最好的办法是关闭所有应用程序并断开与Internet的连接。我个人还没有看到它们引入太多差异。