我對Tensorflow和ML一般都很陌生,想知道我可以用什麼策略來提高我正在構建的應用程序的性能。在使用Tensorflow w/C++時提高性能的策略?
我的應用程序使用Tensorflow C++接口,對於AVX或AVX,使用源編譯的TF 0.11 libtensorflow_cc.so(使用bazel構建-c opt --copt = -mavx並可選地添加--config = cuda) + Mac OS X 10.12.1上的CUDA,MacBook Pro 2.8 GHz Intel Core i7(2核8線程),16GB RAM和Nvidia 750m w/2GB VRam)
我的應用程序使用Inception V3模型並拉動來自pool_3圖層的特徵向量。我通過本地API解碼視頻幀,並將那些內存緩衝區傳遞給TF的C++接口並將它們運行到會話中。
我目前沒有配料,但我正在緩存我的會話,並重新使用它爲每個單獨的解碼幀/張量提交。我注意到,CPU和GPU的性能大致相同,需要40到50秒來處理222幀,這對我來說似乎很慢。我確認CUDA正在被調用,加載並且GPU正在運行(或者看起來如此)。
一些問題:
一般來說我應該期待合理的表演時間明智TF在消費筆記本電腦做盜夢空間的框架?
配料對這些操作有多大的區別?對於1x299x299x3的張量,我想我正在進行更多的PCI傳輸等待,而不是等待GPU的有意義的工作?
if if在C++中爲InceptionV3進行批處理有一個很好的例子嗎?
是否有操作導致額外的CPU-> GPU同步,否則可能會被避免?
有沒有辦法確保我的會話/圖表共享資源?我能以這種方式以某種方式使用嵌套示波器嗎?我無法完成這項工作,但可能錯過了一些東西。
要做/避免的一般策略的任何好的文檔?
我的代碼如下:
利用感知哈希,直方圖,密集光流,對於點跟蹤稀疏光流非常感謝您
僅供參考,OpenCV的分析,對於使用CPU或CPU + OpenCL的相同222幀,簡單顯着性檢測需要4到5秒。
https://github.com/Synopsis/Synopsis/tree/TensorFlow/Synopsis/StandardAnalyzer