2017-05-07 7 views
5

मैं समझने की कोशिश कर रहा हूं कि प्रत्येक ट्रेन पुनरावृत्ति 1.5 सेकंड क्यों लेती है। मैंने here वर्णित ट्रेसिंग विधि का उपयोग किया .मैं एक टाइटनएक्स पास्कल जीपीयू पर काम कर रहा हूं। मेरे परिणाम बहुत अजीब लगते हैं, ऐसा लगता है कि हर ऑपरेशन अपेक्षाकृत तेज़ है और सिस्टम संचालन के बीच ज्यादातर समय निष्क्रिय रहता है। सिस्टम से सीमित क्या हो रहा है इससे मैं कैसे समझ सकता हूं। Regular Batch Size ऐसा प्रतीत होता है कि जब मैं बैच आकार को अंतराल में कम करता हूं, जैसा कि यहां देखा जा सकता है।टेन्सफोर्लो - टाइमलाइन का उपयोग करके प्रोफाइलिंग - सिस्टम को सीमित कर रहा है

Small Batch Size दुर्भाग्य से कोड बहुत जटिल है और मैं एक ही समस्या

है कि यह का एक छोटा संस्करण पोस्ट नहीं कर सकते वहाँ प्रोफाइलर क्या के बीच अंतराल में अंतरिक्ष ले जा रहा है से समझने के लिए एक रास्ता है संचालन?

धन्यवाद!

संपादित करें:

सीपीयू पर ony मैं इस व्यवहार को नहीं देख पा रहे: CPU Only

मैं चला रहा हूँ एक

+0

बीटीडब्ल्यू, अब समयरेखा का उपयोग करने की कोई आवश्यकता नहीं है। यह देखने के लिए कि [tstoroverflow.com/a/43692312/1090562) पर एक नज़र डालें, यह देखने के लिए कि आप अपने मॉडल को टेंसरबोर्ड के माध्यम से कैसे डिबग कर सकते हैं। –

+0

धन्यवाद, लेकिन किसी कारण से मुझे अपने टीबी में नोड आँकड़े नहीं दिखती हैं ... – aarbelle

+1

कुछ विचार: कुछ चीजें टाइमलाइन में प्रतिबिंबित नहीं हो सकती हैं - फीड डॉक, जीआरपीसी विलंबता के माध्यम से डेटा स्थानांतरित करने में व्यतीत समय। यदि आप केवल सीपीयू पर चलते हैं तो क्या आपके पास समान अंतराल है? क्या सामान कुछ डेक्यू संचालन पर इंतजार कर सकता है? आप टीएफ.प्रिंट नोड्स भी डाल सकते हैं और वहां उत्पन्न टाइमस्टैम्प देख सकते हैं। –

उत्तर

0

यहाँ कुछ अनुमान कर रहे हैं, लेकिन यह एक आत्म निहित बिना कहना कठिन है प्रजनन जो मैं चला सकता हूं और डीबग कर सकता हूं।

  • क्या यह संभव है कि आप GPU स्मृति से बाहर हो रहे हैं? इसका एक संकेत यह है कि यदि आप प्रशिक्षण के दौरान फॉर्म Allocator ... ran out of memory के लॉग संदेश देखते हैं। यदि आप जीपीयू मेमोरी से बाहर निकलते हैं, तो आवंटक बैक ऑफ हो जाता है और आशा में इंतजार करता है और अधिक उपलब्ध हो जाता है। यदि आप बैच आकार को कम करते हैं तो यह बड़े अंतर-ऑपरेटर अंतराल को समझा सकता है।

  • जैसा कि यरोस्लाव ऊपर एक टिप्पणी में सुझाव देता है, यदि आप केवल सीपीयू पर मॉडल चलाते हैं तो क्या होता है? टाइमलाइन कैसा दिखता है?

  • क्या यह एक वितरित प्रशिक्षण नौकरी या एकल मशीन नौकरी है? यदि यह एक वितरित नौकरी है, तो क्या एक सिंगल-मशीन संस्करण समान व्यवहार दिखाता है?

  • क्या आप session.run() या eval() को कई बार कॉल कर रहे हैं, या प्रति प्रशिक्षण चरण में केवल एक बार? प्रत्येक रन() या eval() कॉल GPU पाइपलाइन को निकाल देगा, इसलिए दक्षता के लिए आपको आमतौर पर केवल एक सिंगल रन() कॉल के साथ एक बड़ा ग्राफ के रूप में अपनी गणना को व्यक्त करने की आवश्यकता होती है। (मुझे संदेह है कि यह आपकी समस्या है लेकिन मैं इसे पूर्णता के लिए उल्लेख करता हूं।)

+0

1. मैं स्मृति से बाहर नहीं चल रहा हूं। मैं अपनी जीपीयू मेमोरी के ~ 10% पर उपयोग कर रहा हूं। 2. यह केवल सीपीयू पर नहीं होता है। मैंने मूल प्रश्न पर टाइमलाइन जोड़ा 3. यह एक एकल मशीन नौकरी है। 4. मैं प्रत्येक प्रशिक्षण चरण के लिए एक बार sess.run() को बुला रहा हूं। धन्यवाद! – aarbelle

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