2016-12-26 12 views
6

चलाते समय कम अस्थिर GPU उपयोग जब मुझे अपने सिस्टम पर कुशलता से Nvidia GeForce GTX 1080 GPU का उपयोग करने के लिए tensorflow बनाने में समस्या हो रही है। मैंने अपना कोड नीचे दिखाए गए बहुत ही सरल संस्करण में घटा दिया; मैं केवल session.run() ऑपरेशन के माध्यम से लूपिंग कर रहा हूं जो GPU का उपयोग करना चाहिए, डेटा केवल एक बार लाया जाता है और लूप के अंदर पुन: उपयोग किया जाता है, इसलिए इस कोड को केवल GPU का उपयोग करना चाहिए।टेंसर प्रवाह

input_training_data=self.val_data[batch_size, :] input_training_label=self.val_label[batch_size, :] feed_dict = self.get_feed_dict(input_training_data, input_training_label) for i in range(1000): acc = sess.run(cost, feed_dict)

मैंने देखा है कि batch_size = 16 के लिए, मैं एक ज्यादातर तेजी से GPU उपयोग लगभग 8% पर, मिल के रूप में मैं 9-12% तक अधिकतम GPU उपयोग बढ़ जाती है लेकिन उपयोग रहता है 32 करने के लिए batch_size वृद्धि ज्यादातर 0% और समय-समय पर यह 15% -25% तक पहुंच जाता है और तुरंत 0% पर गिर जाता है। यह पैटर्न बड़े बैच_साइज के लिए जारी है, मूल रूप से 16 से अधिक किसी भी बैच आकार में अधिकतम उपयोग बढ़ता है लेकिन उपयोग समय पर 0 पर रहता है और समय-समय पर केवल स्पाइक्स रहता है। मुझे यहां क्या समझ नहीं आ रहा है?

+0

आप प्रत्येक ऑपरेशन के सटीक समय के लिए प्रोफाइलिंग टूल लागू करने का प्रयास कर सकते हैं, उदाहरण देखें [यहां] (http://stackoverflow.com/documentation/tensorflow/3850/ उपाय-निष्पादन के-व्यक्ति-संचालन समय)। यह आपको समझने में मदद कर सकता है कि GPU उपयोग कम क्यों है, और आप अधिक जानकारी के साथ अपना प्रश्न अपडेट कर सकते हैं। –

+1

आपके पास या तो कुछ बाधाएं हैं जहां कुछ धीमे सेशन को सीपीयू पर रखा जाता है और जीपीयू को इसके लिए इंतजार करना पड़ता है, या आपका गणना बहुत छोटा है, और आपका डेटा ट्रांसफर ट्रांसफर करना GPU के साथ नहीं रह सकता है। डेटा स्थानांतरण जैसे ऑप्टिमाइज़ करने के लिए कुछ युक्तियां हैं [यहां] (https://github.com/tensorflow/tensorflow/issues/5722#issuecomment-266297116) –

उत्तर

2

मुझे एक ही समस्या है। मेरे मुद्दा था: मेरी गणना के आंशिक रूप से GPU और सीपीयू पर मार डाला गया था (ताकि दोनों उपकरणों है, जो एक कम GPU उपयोग करने के लिए नेतृत्व के बीच संचार का एक बहुत वहाँ था) मैं एक अलग धागे में पढ़ा है :

  1. डॉन 'टी छोरों में data_dictornaries का उपयोग करें (Tensorvariable का उपयोग करने के बजाय)
  2. वहाँ float64 डेटाप्रकार (जो CPU पर गणना की जा करने के लिए केवल ली) के साथ एक मुद्दा रहा है -> float32 डेटाप्रकार (यदि संभव हो)
  3. का प्रयोग करें प्रोफाइलर ने सुझाव दिया उपयोग करें Olivier Moindrot जांचने के लिए, अगर कुछ भी आपके सीपीयू पर स्पष्ट रूप से चलाया जाता है। फिर अपने कोड के बारे में GPU

के लिए सब कुछ लाने के लिए वैसे, एक संकेत का प्रयास करें: एक OutOfMemory अपवाद संभव है जब तक प्रत्येक यात्रा बढ़ेगा आपका सत्र (डिफ़ॉल्ट ग्राफ) ... -> मैं सत्र हर एक्स बंद - डिफ़ॉल्ट ग्राफ को रीसेट करते समय ...

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