कैसे पता चलेगा कि GPU को दिया गया डेटा CUDA को मेमोरी से बाहर कर देगा या नहीं

Aug 17 2020

मैं कुछ बहुत बड़े डीप लर्निंग मॉडल को चलाने के लिए GPU का उपयोग कर रहा हूं, जब मैं 8 का बैच आकार चुनता हूं, तो यह मेमोरी में फिट हो सकता है, लेकिन अगर मैं 16 के बैच आकार का उपयोग करता हूं, तो यह CUDA आउट-ऑफ-मेमोरी त्रुटि का कारण होगा, और मुझे इस प्रक्रिया को मारना होगा।

मेरा प्रश्न यह है कि वास्तव में डेटा को GPU में पारित करने से पहले, क्या कोई ऐसा तरीका है जिससे मुझे पता चल सके कि GPU में डेटा कितना बड़ा होगा?

उदाहरण के लिए, निम्नलिखित कोड इस बारे में है कि मैं एक pytorch dataloader कैसे बनाऊं और dataloader के प्रत्येक बैच को GPU में पास कर दूं, क्या मुझे पता चल सकता है कि मेरे कॉल करने से पहले यह कितना बड़ा था batch.to(device)

train_dataloader = DataLoader(train_data, sampler=train_sampler, batch_size=batch_size)
for step, batch in enumerate(train_dataloader):
    b_input_ids = batch[0].to(device)
    b_input_mask = batch[1].to(device)
    b_labels = batch[2].to(device)

जवाब

3 David Aug 17 2020 at 15:36

मैं यहाँ मशाल की नोक पैकेज का उपयोग करने की सलाह दूंगा।

pip install torchsummary

और उपयोग में है

from torchsummary import summary
myModel.cuda()
summary(myModel, (shapeOfInput)) # where shapeOfInput is a tuple of the sample's dimensions

यह आपको मॉडल का आकार देगा, फॉरवर्ड पास का आकार, और एमबी में बैकपास का आकार 1 के बैच आकार के लिए देगा, और फिर आप अपने बैच आकार से कई कर सकते हैं।