मैं ऐसे वातावरण में काम करता हूं जिसमें कम्प्यूटेशनल संसाधन साझा किए जाते हैं, यानी, हमारे पास कुछ सर्वर मशीनें हैं जो कुछ एनवीडिया टाइटन एक्स जीपीयू से लैस हैं।
छोटे से मध्यम आकार के मॉडल के लिए, टाइटन एक्स के 12 जीबी आमतौर पर 2-3 लोगों के लिए समान GPU पर समवर्ती प्रशिक्षण चलाने के लिए पर्याप्त हैं। यदि मॉडल इतने छोटे होते हैं कि एक एकल मॉडल GPU की सभी कम्प्यूटेशनल इकाइयों का पूरा लाभ नहीं उठाता है, तो यह वास्तव में एक के बाद एक प्रशिक्षण प्रक्रिया चलाने की तुलना में स्पीडअप हो सकता है। यहां तक कि ऐसे मामलों में जहां GPU का समवर्ती उपयोग अलग-अलग प्रशिक्षण समय को धीमा कर देता है, फिर भी कई उपयोगकर्ताओं को एक साथ GPU पर प्रशिक्षित करने की लचीलापन होना अच्छा है।
TensorFlow के साथ समस्या यह है कि डिफ़ॉल्ट रूप से, यह लॉन्च होने पर उपलब्ध GPU मेमोरी की पूरी राशि आवंटित करता है। यहां तक कि एक छोटे से दो-परत तंत्रिका नेटवर्क के लिए, मैं देखता हूं कि सभी 12 जीबी जीपीयू मेमोरी का उपयोग किया जाता है।
क्या TensorFlow को केवल आवंटित करने का एक तरीका है, कहें, 4 GB GPU मेमोरी, यदि कोई जानता है कि यह किसी दिए गए मॉडल के लिए पर्याप्त है?