में 'जीपीयू मेमोरी से बाहर चला गया' को कैसे हल कर सकता हूं, मैंने 2 सेंसर परतों और पूर्ण-पूर्ण परत के साथ टेंसरफ्लो में एमएनआईएसटी डेमो चलाया, मुझे एक संदेश मिला कि '2.5 9 जीआईबी आवंटित करने की कोशिश कर रहे मेमरी से बाहर चला गया' , लेकिन यह दिखाता है कि कुल मेमोरी 4.6 9 जीआईबी है, और फ्री मेमोरी 3.22 जीआईबी है, यह 2.5 9 जीआईबी के साथ कैसे रुक सकती है? और बड़े नेटवर्क के साथ, मैं जीपीयू मेमोरी कैसे प्रबंधित कर सकता हूं? मुझे केवल जीपीयू मेमोरी का सबसे अच्छा उपयोग करने के बारे में चिंता है और यह जानना है कि यह कैसे हुआ, स्मृतिमैं टेंसरफ्लो
उत्तर
यह पूर्व नहीं है। सबसे पहले आप देख सकते हैं कि यह आपके जीपीयू की निगरानी करके कितनी मेमोरी हो जाती है। उदाहरण के लिए यदि आपके पास nvidia gpu है तो आप इसे watch -n 1 nvidia-smi
कमांड से देख सकते हैं। लेकिन ज्यादातर मामलों में यदि आपने जीपीयू मेमोरी का अधिकतम अंश सेट नहीं किया है, तो यह लगभग पूरी फ्री मेमोरी आवंटित करता है। आपकी समस्या आपके जीपीयू के लिए पर्याप्त स्मृति की कमी है। सीएनएन नेटवर्क पूरी तरह से भारी हैं। जब आप अपने नेटवर्क को खिलाने की कोशिश कर रहे हैं तो इसे अपने पूरे डेटा से न करें। कम बैच आकार में यह खिलाने की प्रक्रिया करें।
मेरे पास एक बड़ा नेटवर्क (सीएनएन + एलएसटीएम) है। मेरा इनपुट डेटा आकार का है, batch_size = 5, (5x396x396) - यह एक 3 डी वॉल्यूम है। तो एक छोटे से बैच आकार। मैं जीटीएक्स 1070 पर 8 जीबी रैम के साथ चल रहा हूं, लेकिन मैं अभी भी स्मृति से बाहर हूं। क्या आपके पास कोई कामकाज है? कोई ट्यूटोरियल जो वर्कअराउंड की रूपरेखा देता है? –
यह बैच आकार की वजह से नहीं हो सकता है। क्या आप इनपुट बैच बनाने के लिए किसी भी कतार का उपयोग कर रहे हैं (जैसे 'tf.train.shuffle_batch')? यदि ऐसा है तो कतार की क्षमता की जांच करें। – Nandeesh
मुझे जीटीएक्स 9 70 पर एक छोटे सीएनएन को प्रशिक्षित करते समय मेमोरी त्रुटियों से सामना करना पड़ रहा था। कुछ हद तक झुकाव के माध्यम से, मैंने पाया कि जीपीएसयू पर स्मृति (आवंटित करने के बजाय) की स्मृति आवंटित करने के लिए टेंसरफ्लो को बताकर मेरे सभी मुद्दों का समाधान हुआ । यह निम्नलिखित पायथन कोड का उपयोग कर पूरा किया जा सकता:
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config = config)
इससे पहले, TensorFlow हैं पूर्व आवंटित ~ GPU स्मृति के 90%। लेकिन, किसी अज्ञात कारण के लिए, जब मैंने नेटवर्क के आकार में वृद्धि की, तो बाद में यह स्मृति त्रुटियों से बाहर हो गया। उपर्युक्त कोड का उपयोग करके, अब मेरे पास ओओएम त्रुटियां नहीं हैं।
यह मेरी स्क्रिप्ट पर काम करता है भले ही मैं कैमरे का उपयोग कर रहा हूं – Hong
डिफ़ॉल्ट रूप से, TensorFlow प्रक्रिया के लिए दृश्यमान सभी GPUs (CUDA_VISIBLE_DEVICES के अधीन) की लगभग सभी GPU स्मृति को मानचित्र करता है। यह स्मृति विखंडन को कम करके उपकरणों पर अपेक्षाकृत बहुमूल्य जीपीयू स्मृति संसाधनों का अधिक कुशलता से उपयोग करने के लिए किया जाता है।
टेंसरफ्लो इस पर नियंत्रण के लिए सत्र पर दो कॉन्फ़िगर विकल्प प्रदान करता है।
config = tf.ConfigProto() config.gpu_options.allow_growth = True session = tf.Session(config=config, ...)
दूसरी विधि per_process_gpu_memory_fraction विकल्प है, जो कुल मात्रा के अंश का निर्धारण करती है:
पहले allow_growth विकल्प है, जो क्रम आवंटन के आधार पर उतना ही GPU स्मृति आवंटित करने के लिए प्रयास करता है स्मृति की है कि प्रत्येक दृश्य जीपीयू आवंटित किया जाना चाहिए। उदाहरण के लिए, आप TensorFlow बता केवल द्वारा प्रत्येक GPU की कुल स्मृति का 40% आवंटित करने के लिए कर सकते हैं:
config = tf.ConfigProto() config.gpu_options.per_process_gpu_memory_fraction = 0.4 session = tf.Session(config=config, ...)
- 1. टेंसरफ्लो
- 2. टेंसरफ्लो
- 3. टेंसरफ्लो
- 4. टेंसरफ्लो
- 5. टेंसरफ्लो
- 6. टेंसरफ्लो
- 7. टेंसरफ्लो
- 8. टेंसरफ्लो
- 9. टेंसरफ्लो
- 10. टेंसरफ्लो:
- 11. टेंसरफ्लो
- 12. टेंसरफ्लो
- 13. टेंसरफ्लो?
- 14. मैं एक टेंसरफ्लो फ़ीड डिक्शनरी
- 15. टेंसरफ्लो - छवि
- 16. टेंसरफ्लो प्रशिक्षण
- 17. टेंसरफ्लो: tf.merge_all_summaries()
- 18. टेंसरफ्लो seq2seq
- 19. टेंसरफ्लो: आरएनएन
- 20. टेंसरफ्लो आरईएसटी फ्रंटेंड लेकिन टेंसरफ्लो की सेवा नहीं
- 21. टेंसरफ्लो: tf.argmax() और tf.equal()
- 22. टेंसरफ्लो - एक वैरिएबल
- 23. टेंसरफ्लो cholesky decomposition
- 24. टेंसरफ्लो numpy array
- 25. टेंसरफ्लो: एक यादृच्छिक स्थिर
- 26. टेंसरफ्लो: एसकेकॉमपेट मूल्यह्रास चेतावनी
- 27. केरास और टेंसरफ्लो
- 28. टेंसरफ्लो रैखिक रिग्रेशन पायथन
- 29. टेंसरफ्लो में अनुक्रम लेबलिंग
- 30. टेंसरफ्लो वैरिएबल और कॉन्स्टेंट
संभावित डुप्लिकेट: //stackoverflow.com/questions/34199233/how-to-prevent-tensorflow-from-allocating-the-totality-of-a-gpu-memory) –
मैंने इसे पहले देखा, लेकिन यह पूर्व-आवंटित जीपीयू मेमोरी को संदर्भित करता है, स्मृति की कमी नहीं – Fangxin