我有一个想要不断进行预测和处理预测的应用程序。我有一个可以进行预测并对结果进行处理的函数:
makeProcessPrediction(){
return new Promise(resolve => {
let prediction : any = this.model.predict(this.input_tensor);
prediction.data().then((data_array) => {
//... do something with prediction here
}
prediction.dispose();
resolve('resolved');
});
});
}
现在,如果我一次调用makeProcessPrediction,则预测大约需要80毫秒。但是,如果我在这样的循环中调用它:
while(condition){
await this.makeProcessPrediction();
}
突然之间,预测要花费更长的时间,最多140毫秒。如果我停止循环并进行另一个“单个”预测,则大约需要80毫秒。
我希望有人能解释我为什么会发生这种情况,也许我可以做些什么来加快预测的速度。
非常感谢!
答案 0 :(得分:0)
尝试移动GPU负载。使用data()
主动将预测数据调用到JavaScript中可让您堆积一些希望,并可能阻塞GPU管道。
移至同步方法dataSync()
将正确处理主线程中的GPU内存。虽然这会阻止您的UI交互,但速度应该一样快。