यह एक टिप्पणी है, लेकिन बाहर इशारा लायक.
कारण, सामान्य रूप में वास्तव में है क्या talonmies टिप्पणी की है, लेकिन आप कर रहे हैं संक्षेप में नंबर गलत है । चलो देखते हैं क्या होता है जब tensors स्थानांतरित कर रहे हैं करने के लिए GPU (मैं यह करने की कोशिश की पर मेरे पीसी के साथ RTX2060 के साथ 5.8 G प्रयोग करने योग्य GPU स्मृति में कुल):
चलो चलाने के लिए निम्न अजगर आदेशों सहभागी:
Python 3.8.10 (default, Sep 28 2021, 16:10:42)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> a = torch.zeros(1).cuda()
>>> b = torch.zeros(500000000).cuda()
>>> c = torch.zeros(500000000).cuda()
>>> d = torch.zeros(500000000).cuda()
निम्नलिखित outputs के watch -n.1 nvidia-smi
:
सही होने के बाद torch
आयात:
| 0 N/A N/A 1121 G /usr/lib/xorg/Xorg 4MiB |
सही के निर्माण के बाद a
:
| 0 N/A N/A 1121 G /usr/lib/xorg/Xorg 4MiB |
| 0 N/A N/A 14701 C python 1251MiB |
के रूप में आप देख सकते हैं, आप की जरूरत है 1251MB
प्राप्त करने के लिए pytorch उपयोग शुरू करने के लिए CUDA, यहां तक कि अगर आप की जरूरत है केवल एक एकल फ्लोट ।
सही के निर्माण के बाद b
:
| 0 N/A N/A 1121 G /usr/lib/xorg/Xorg 4MiB |
| 0 N/A N/A 14701 C python 3159MiB |
b
की जरूरत है 500000000*4 bytes = 1907MB
, यह के रूप में एक ही वेतन वृद्धि में स्मृति द्वारा इस्तेमाल किया अजगर की प्रक्रिया है ।
सही के निर्माण के बाद c
:
| 0 N/A N/A 1121 G /usr/lib/xorg/Xorg 4MiB |
| 0 N/A N/A 14701 C python 5067MiB |
कोई आश्चर्य यहाँ है ।
सही के निर्माण के बाद d
:
| 0 N/A N/A 1121 G /usr/lib/xorg/Xorg 4MiB |
| 0 N/A N/A 14701 C python 5067MiB |
आगे कोई स्मृति आवंटन, और OOM त्रुटि दिया गया है:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: CUDA out of memory. Tried to allocate 1.86 GiB (GPU 0; 5.80 GiB total capacity; 3.73 GiB already allocated; 858.81 MiB free; 3.73 GiB reserved in total by PyTorch)
जाहिर है:
- "पहले से ही आवंटित" भाग शामिल है में "आरक्षित कुल में से PyTorch" हिस्सा है । आप नहीं कर सकते हैं उन्हें राशि अप, अन्यथा राशि से अधिक की कुल उपलब्ध स्मृति है ।
- न्यूनतम स्मृति प्राप्त करने के लिए आवश्यक pytorch पर चल रहा है GPU (
1251M
) में शामिल नहीं है "आरक्षित कुल में" हिस्सा है ।
तो आपके मामले में, इस राशि से मिलकर चाहिए:
- 792MB (आरक्षित कुल में)
- 1251MB (न्यूनतम प्राप्त करने के लिए pytorch पर चल रहा है GPU है, यह सोचते हैं यह एक ही है, हम दोनों के लिए)
- 5.13 जीबी के लिए (मुक्त)
- 168+363+161=692MB (अन्य प्रक्रियाओं)
वे योग करने के लिए लगभग 7988MB=7.80 जीबी है, जो वास्तव में आप कुल GPU स्मृति.