2016-01-06 28 views
19

क्या कोई टेंसरफ़्लो नेटवर्क में प्रत्येक नोड के लिए समय लागत की गणना करने का कोई तरीका है?
मुझे प्रदर्शन बाधाओं का पता लगाना मुश्किल लगता है।TensorFlow नेटवर्क कैसे प्रोफाइल करें?

संपादित करें: Timeline प्रोफाइलर वास्तव में कमाल है (https://stackoverflow.com/a/37774470/3632556)।

+4

संभावित डुप्लिकेट: http://stackoverflow.com/questions/34293714/tensorflow-can-i-measure-the-execution-time-of-individual-operations – user3559888

उत्तर

2

अभी सीपीयू/जीपीयू प्रोफाइलर के साथ संकलित करने का सबसे अच्छा बाहरी तरीका है, लेकिन इसे BUILD और tensorflow.bzl फ़ाइलों में विकल्प बदलकर मैन्युअल रूप से किया जाना चाहिए (सुनिश्चित नहीं है कि)।

फिर आप प्रोफ़ाइल जानकारी कार्य करता है जो के बारे में सबसे अधिक समय, आदि यह आप पर निर्भर है ले जा रहे हैं प्राप्त कर सकते हैं, आप के बाद से TensorFlow के कोड swig के माध्यम से जुड़ा हुआ है gperftools का उपयोग करने और pprof

द्वारा visualizing द्वारा चलाए जा सकता है, i ' मीटर 100% सुनिश्चित नहीं है कि pprof के माध्यम से प्रोफ़ाइल पढ़ने के दौरान प्रतीकों को प्राप्त करना कितना आसान होगा। आप इसे निर्मित .so फ़ाइल को इंगित करने में सक्षम हो सकते हैं।

इसे आज़माएं और हमें बताएं कि यह आपके लिए काम करता है या नहीं!

2

यदि आप यह जानना चाहते हैं कि टीएफ में प्रत्येक ऑपरेशन पर कितना समय व्यतीत किया गया था, तो आप इसे runtime statistics का उपयोग करके टेंसरबोर्ड में कर सकते हैं। आप कुछ इस तरह (उपर्युक्त कड़ी में पूर्ण उदाहरण की जाँच करें) करने की आवश्यकता होगी:

run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE) 
run_metadata = tf.RunMetadata() 
sess.run(<values_you_want_to_execute>, options=run_options, run_metadata=run_metadata) 
your_writer.add_run_metadata(run_metadata, 'step%d' % i) 

बस इसे मुद्रण की तुलना में बेहतर आप tensorboard में देख सकते हैं:

इसके अतिरिक्त , नोड पर क्लिक करने से सटीक कुल मेमोरी, गणना समय, और टेंसर आउटपुट आकार प्रदर्शित होंगे।

इसके अलावा अब tensorflow एक debugger है। यहां इसका उपयोग करने का एक ट्यूटोरियल है।

[1]: https://www.tensorflow.org/get_started/graph_viz#

+0

वर्तमान (देर से 2017, टेंसरफ्लो 1.4) प्राप्त करने का तरीका टाइमलाइन एक [ProfilerHook] (https://www.tensorflow.org/api_docs/python/tf/train/ProfilerHook) का उपयोग कर रही है। यह tf.Estimator में मॉनीटर किए गए सत्रों के साथ काम करता है जहां tf.RunOptions उपलब्ध नहीं हैं। – Urs

1

https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler

मेजर सुविधाएँ:

उपाय मॉडल पैरामीटर, नाव संचालन, टेंसर आकार।

प्रोफ़ाइल सेशन निष्पादन समय, स्मृति आकार और डिवाइस प्लेसमेंट का अनुरोध किया गया।

चेकपॉइंट टेंसर के आकार और उनके मूल्यों का निरीक्षण करें।

चुनिंदा समूह, फ़िल्टर, खाता और ऑर्डर ऑप्स।

+0

सवाल कहता है * "क्या टेंसरफ्लो नेटवर्क में प्रत्येक नोड के लिए समय लागत की गणना करने का कोई तरीका है?" * क्या आप "समय लागत की गणना" करने के लिए टूल का उपयोग करने के तरीके को दिखाकर अपना जवाब सुधार सकते हैं? – Pang

+0

बहुत बुरा, लिंक नहीं मिला –

संबंधित मुद्दे