मान लें कि आप GPU पर संग्रहीत तत्वों की संख्या को जानते हैं, आप आसानी से उन तत्वों को संग्रहीत करने के लिए आवश्यक स्मृति की मात्रा की गणना कर सकते हैं।
एक साधारण उदाहरण:
import numpy as np
import theano.tensor as T
T.config.floatX = 'float32'
dataPoints = np.random.random((5000, 256 * 256)).astype(T.config.floatX)
#float32 data type requires 4 bytes
sizeinGBs = 5000 * 256 * 256 * 4/1024./1024/1024 + (some small over-head constant)
print "Data will need %2f GBs of free memory" % sizeInGB
से अधिक सिर निरंतर मानते हुए 0 प्रिंट होगा:
>>> Data will need 1.22 GBs of free memory
आप एक NVIDIA ग्राफिक्स कार्ड का उपयोग कर रहे हैं, तो और फिर आपकी मशीन पर CUDA स्थापित किया है तुम कोड की निम्न पंक्ति का उपयोग करके आसानी से अपने जीपीयू पर मुफ्त मेमोरी की कुल राशि प्राप्त कर सकते हैं:
import theano.sandbox.cuda.basic_ops as sbcuda
import numpy as np
import theano.tensor as T
T.config.floatX = 'float32'
GPUFreeMemoryInBytes = sbcuda.cuda_ndarray.cuda_ndarray.mem_info()[0]
freeGPUMemInGBs = GPUFreeMemoryInBytes/1024./1024/1024
print "Your GPU has %s GBs of free memory" % str(freeGPUMemInGBs)
#An operation is to be executed below
testData = shared(np.random.random((5000, 256 * 256)).astype(T.config.floatX), borrow = True)
print "The tasks above used %s GBs of your GPU memory. The available memory is %s GBs" % (str(freeGPUMemInGBs - GPUFreeMemoryInBytes/1024./1024/1024), str(GPUFreeMemoryInBytes/1024./1024/1024))
तो उत्पादन निम्नलिखित प्रारूप (मेरी मशीन के लिए यहाँ) में है:
>>> Your GPU has 11.2557678223 GBs of free memory
>>> The tasks above used 1.22077941895 GBs of your GPU memory. The available memory is 10.0349884033 GBs
मुक्त स्मृति की मात्रा की निगरानी और अपने मॉडल/डेटा के आकार की गणना आप बेहतर GPU स्मृति का उपयोग कर सकते हैं। हालांकि, memory fragmentation समस्या से अवगत रहें क्योंकि यह अप्रत्याशित रूप से MemoryError
का कारण बन सकता है।
बहुत बढ़िया उत्तर, धन्यवाद! – Will
तो ऐसा लगता है कि सबसे विश्वसनीय तरीका आपके और दोनों के सुझावों को मर्ज करने जा रहा है। एक नया मॉडल चलाने से पहले, मैं विभिन्न लंबाई अनुक्रमों के लिए स्मृति उपयोग को मापूंगा और यह अनुमान लगाने के लिए उपयोग करूंगा कि अन्य अनुक्रम लंबाई के लिए कितनी मेमोरी का उपयोग किया जाएगा और इष्टतम बैच आकार निर्धारित करें। धन्यवाद –