Google सहयोगी: अपने GPU के बारे में भ्रामक जानकारी (केवल 5% रैम कुछ उपयोगकर्ताओं के लिए उपलब्ध है)


111

अद्यतन: यह सवाल Google Colab की "नोटबुक सेटिंग्स: हार्डवेयर त्वरक: GPU" से संबंधित है। यह प्रश्न "TPU" विकल्प जोड़े जाने से पहले लिखा गया था।

Google टेस्लाट्रीटरी के बारे में कई उत्साहित घोषणाएँ पढ़ते हुए, मुफ्त टेस्ला K80 जीपीयू प्रदान करने के लिए, मैंने इसे तेजी से चलाने का प्रयास किया। इसके लिए इसे कभी पूरा न करने के लिए - जल्दी से स्मृति से बाहर चलाने के लिए। मैंने क्यों की जांच शुरू की।

लब्बोलुआब यह है कि "मुक्त टेस्ला K80" सभी के लिए "मुक्त" नहीं है - कुछ के लिए केवल इसका एक छोटा टुकड़ा "मुक्त" है।

मैं वेस्ट कोस्ट कनाडा से Google Colab से जुड़ता हूं और मुझे 24GB GPU रैम होने के लिए केवल 0.5GB ही मिलता है। अन्य यूजर्स को 11GB की GPU रैम की सुविधा मिलती है।

अधिकांश एमएल / डीएल कार्य के लिए स्पष्ट रूप से 0.5 जीबी जीपीयू रैम अपर्याप्त है।

यदि आप सुनिश्चित नहीं हैं कि आपको क्या मिलेगा, तो यहां थोड़ा डीबग फ़ंक्शन है जिसे मैंने एक साथ स्क्रैप किया है (केवल नोटबुक की GPU सेटिंग के साथ काम करता है):

# memory footprint support libraries/code
!ln -sf /opt/bin/nvidia-smi /usr/bin/nvidia-smi
!pip install gputil
!pip install psutil
!pip install humanize
import psutil
import humanize
import os
import GPUtil as GPU
GPUs = GPU.getGPUs()
# XXX: only one GPU on Colab and isn’t guaranteed
gpu = GPUs[0]
def printm():
 process = psutil.Process(os.getpid())
 print("Gen RAM Free: " + humanize.naturalsize( psutil.virtual_memory().available ), " | Proc size: " + humanize.naturalsize( process.memory_info().rss))
 print("GPU RAM Free: {0:.0f}MB | Used: {1:.0f}MB | Util {2:3.0f}% | Total {3:.0f}MB".format(gpu.memoryFree, gpu.memoryUsed, gpu.memoryUtil*100, gpu.memoryTotal))
printm()

किसी भी अन्य कोड को चलाने से पहले एक ज्यूपिटर नोटबुक में इसे निष्पादित करना मुझे देता है:

Gen RAM Free: 11.6 GB  | Proc size: 666.0 MB
GPU RAM Free: 566MB | Used: 10873MB | Util  95% | Total 11439MB

भाग्यशाली उपयोगकर्ता जो पूर्ण कार्ड तक पहुंच प्राप्त करेंगे, वे देखेंगे:

Gen RAM Free: 11.6 GB  | Proc size: 666.0 MB
GPU RAM Free: 11439MB | Used: 0MB | Util  0% | Total 11439MB

क्या आपको GPU RAM उपलब्धता की मेरी गणना में कोई दोष दिखाई देता है, जो GPUtil से उधार लिया गया है?

क्या आप इस बात की पुष्टि कर सकते हैं कि यदि आप इस कोड को Google Colab नोटबुक पर चलाते हैं तो आपको समान परिणाम मिलते हैं?

यदि मेरी गणना सही है, तो क्या निशुल्क बॉक्स पर उस GPU रैम के अधिक प्राप्त करने का कोई तरीका है?

अद्यतन: मुझे यकीन नहीं है कि हम में से कुछ को दूसरे उपयोगकर्ताओं को क्यों / 1/20 मिलता है। उदाहरण के लिए, जिस व्यक्ति ने मुझे डिबग करने में मदद की, वह भारत का है और उसे पूरी बात मिलती है!

नोट : कृपया संभावित अटक / भगोड़ा / समानांतर नोटबुक को मारने के बारे में कोई और सुझाव न भेजें जो GPU के कुछ हिस्सों का उपभोग कर सकते हैं। कोई फर्क नहीं पड़ता कि आप इसे कैसे स्लाइस करते हैं, यदि आप एक ही नाव में हैं जैसे कि मैं और डिबग कोड चलाने वाले थे तो आप देखेंगे कि आपको अभी भी कुल 5% GPU RAM (इस अपडेट के रूप में अभी भी) मिलता है।


इसका कोई हल? क्यों करते समय मुझे अलग-अलग परिणाम मिलते हैं! बिल्ली / proc / meminfo
मिलोउंडरबिन्दर

हाँ, एक ही समस्या, GPU राम के लगभग 500 एमबी ... भ्रामक वर्णन :(
नवीन

2
आईबीएम ओपन सोर्स डेटा साइंस टूल्स (cognitiveclass.ai) आज़माएं क्योंकि उनके पास ज्यूपिटर नोटबुक के साथ एक मुफ्त GPU भी है।
AQ

मैंने इस प्रश्न को उस स्थिति में वापस ला दिया है जहां वास्तव में एक प्रश्न है। यदि आपने अधिक शोध किया है और उत्तर पाया है, तो उसके लिए उपयुक्त स्थान उत्तर बॉक्स में है। समाधान के साथ प्रश्न को अपडेट करना गलत है।
क्रिस हेस

@ क्रिसहैस, मैं आपका इरादा समझता हूं, लेकिन यह सही नहीं है, क्योंकि आपके रोलबैक ने प्रासंगिक विवरणों का एक पूरा गुच्छा हटा दिया है जो अब चले गए हैं। यदि आप एक बेहतर शब्द का सुझाव देना चाहते हैं जो इस समुदाय के नियमों को बेहतर ढंग से फिट करता है तो कृपया ऐसा करें, लेकिन अन्यथा कृपया अपना रोलबैक वापस कर दें। धन्यवाद। ps मैंने पहले ही उत्तर पोस्ट कर दिया था
स्टैसन

जवाबों:


42

तो इस धागे के सुझाव के संदर्भ में अमान्य सुझाव देने वाले अन्य दर्जन उत्तरों को रोकने के लिए! -9 -1, इस धागे को बंद करें:

उत्तर सीधा है:

इस लेखन के रूप में, Google केवल हम में से कुछ को केवल 5% GPU देता है, जबकि दूसरों को 100%। अवधि।

dec-2019 अपडेट: समस्या अभी भी मौजूद है - इस सवाल का उठाव अभी भी जारी है।

mar-2019 अपडेट: एक साल बाद एक Google कर्मचारी @AmiF ने इस स्थिति के बारे में टिप्पणी की, जिसमें कहा गया कि समस्या मौजूद नहीं है, और जिस किसी को भी यह समस्या है, उसे स्मृति पुनर्प्राप्त करने के लिए बस अपना रनटाइम रीसेट करने की आवश्यकता है। फिर भी, जारी है, जो मुझे यह बताता है कि समस्या अभी भी मौजूद है, इसके विपरीत @ AmiF के सुझाव के बावजूद।

dec-2018 अपडेट: मेरे पास एक सिद्धांत है कि Google के पास कुछ खातों का ब्लैकलिस्ट हो सकता है, या शायद ब्राउज़र फिंगरप्रिंट्स हो सकते हैं, जब इसके रोबोट एक गैर-मानक व्यवहार का पता लगाते हैं। यह कुल संयोग हो सकता है, लेकिन काफी समय से मुझे Google री-कैप्चा के साथ किसी भी वेबसाइट पर एक समस्या थी जो इसकी आवश्यकता थी, जहां मुझे दर्जनों पहेली से गुजरना होगा, इससे पहले कि मुझे अक्सर अनुमति दी जाए, अक्सर मुझे पूरा करने के लिए 10+ मिनट लगते हैं। यह कई महीनों तक चला। इस महीने के अचानक के रूप में मुझे कोई पहेली नहीं मिलती है और कोई भी गूगल री-कैप्चा सिर्फ एक माउस क्लिक से हल हो जाता है, क्योंकि यह लगभग एक साल पहले हुआ करता था।

और मैं यह कहानी क्यों कह रहा हूं? खैर, क्योंकि उसी समय मुझे कोलाब पर 100% जीपीयू रैम दिया गया था । इसलिए मेरा संदेह यह है कि यदि आप एक सैद्धांतिक Google ब्लैक लिस्ट में हैं तो आपको बहुत सारे संसाधन मुफ्त में दिए जाने पर भरोसा नहीं किया जा रहा है। मुझे आश्चर्य है कि अगर आप में से कोई भी सीमित जीपीयू पहुंच और पुनः कैप्चा दुःस्वप्न के बीच एक ही सहसंबंध पाता है। जैसा कि मैंने कहा, यह पूरी तरह से एक संयोग भी हो सकता है।


4
आपका यह कथन "इस लेखन के रूप में Google केवल हम में से कुछ को केवल 5% GPU देता है, जबकि अन्य को 100%। अवधि।" गलत है - कोलाब ने कभी इस तरह से काम नहीं किया। GPU उपलब्ध रैम के उपयोग से उपयोगकर्ताओं के सभी निदान किए गए मामलों में उनके लिए उपलब्ध GPU RAM के पूर्ण अनुपूरक से कम देखने को एक अन्य प्रक्रिया (एक ही उपयोगकर्ता द्वारा शुरू, संभवतः दूसरे नोटबुक में) के लिए उबाल दिया गया है।
अमी एफ

11
भविष्य के पाठक: यदि आपको लगता है कि आप GPU RAM के इस या इसके समान लक्षणों को देख रहे हैं, तो रनटाइम मेनू में "सभी रनटाइम को रीसेट करें" आपको एक नया VM मिलेगा जिसकी गारंटी है कि कोई भी बासी प्रक्रिया अभी भी GPU RAM पर नहीं है। यदि आप उस मेनू विकल्प का उपयोग करने के तुरंत बाद भी इस लक्षण को देखते हैं, तो कृपया github.com/googlecolab/colabtools/issues
Ami F

आपकी वास्तविकता कई अन्य लोगों की वास्तविकता से स्पष्ट रूप से अलग है जो इस पोस्ट को एक साल बाद बनाए रखना जारी रखते हैं। यह बहुत संभावना है कि कुछ उपयोगकर्ता वास्तव में आपके द्वारा वर्णित का सामना करते हैं, लेकिन यह सभी के लिए ऐसा नहीं है। इसलिए मुझे यकीन नहीं है कि आपका बयान यहाँ कैसे मदद करता है। इसके अलावा जब किसी ने आपके सुझाए गए रेपो में यह सटीक सवाल पूछा, तो उसे एक बीएस जवाब मिला और उसका टिकट बंद हो गया: github.com/googlecolab/colabtools/issues/52
stason

2
मामले में यह स्पष्ट नहीं था: मैं वर्णन नहीं कर रहा हूं कि मेरा मानना ​​है कि कार्यान्वयन उपयोगकर्ता के रूप में सिस्टम के व्यवहार के अवलोकन पर आधारित है। मैं वर्णन कर रहा हूं कि मैं जो कुछ भी जानता हूं, उसे लागू करना है। मैंने यह उम्मीद करते हुए पोस्ट किया कि जो उपयोगकर्ता पूर्ण उपलब्धता से कम देखते हैं, वे इसे ऊपर दिए गए गलत कथनों को पढ़ने और चीजों को मानने के बजाय एक समस्या (या तो उपयोगकर्ता त्रुटि या सिस्टम बग) के रूप में रिपोर्ट करते हैं।
अमी एफ

1
नहीं, GPU को कभी साझा नहीं किया गया है, और आपके द्वारा लिंक किए गए उदाहरण में कोई झूठ नहीं है (केवल एक अनुमान पर और दूर के लक्षण के लिए सबसे सामान्य कारण बताया गया है)।
अमी एफ

22

कल रात मैंने आपका स्निपेट चलाया था और आपको जो मिला था, ठीक उसी तरह से मिला:

Gen RAM Free: 11.6 GB  | Proc size: 666.0 MB
GPU RAM Free: 566MB | Used: 10873MB | Util  95% | Total 11439MB

लेकिन आज:

Gen RAM Free: 12.2 GB  I Proc size: 131.5 MB
GPU RAM Free: 11439MB | Used: 0MB | Util   0% | Total 11439MB

मुझे लगता है कि सबसे संभावित कारण GPUs VMs के बीच साझा किए जाते हैं, इसलिए हर बार जब आप रनटाइम को पुनरारंभ करते हैं तो आपके पास GPU को स्विच करने का मौका होता है, और संभावना यह भी होती है कि आप किसी अन्य उपयोगकर्ता द्वारा उपयोग किए जा रहे स्विच पर जाते हैं।

अद्यतन: यह पता चलता है कि मैं GPU का उपयोग तब भी कर सकता हूं जब GPU RAM Free 504 MB हो, जो कि मैंने सोचा था कि ResourceExerateedError के कारण मुझे कल रात मिला।


1
मुझे लगता है कि मैं कुछ दिनों की अवधि में शायद 50 बार फिर से जुड़ा हूं और मुझे हमेशा 95% उपयोग शुरू करने के लिए मिल रहा है। केवल एक बार मैंने 0% देखा। 100% के करीब आने के बाद उन सभी प्रयासों में मुझे मेमोरी एरर से कोडा मिल रहा था।
स्टैसन

आपके अपडेट का क्या मतलब है? क्या आप अभी भी 500Mb के साथ सामान चला सकते हैं? मेरे पास एक ही समस्या है, मुझे मिल रहा हैRuntimeError: cuda runtime error (2) : out of memory at /pytorch/torch/lib/THC/generated/../THCTensorMathCompare.cuh:84
ivan_bilan

6

यदि आप किसी सेल को निष्पादित करते हैं, जिसमें बस
! -9 -1 है
, तो यह आपके रनटाइम की स्थिति (मेमोरी, फाइलसिस्टम और GPU सहित) को साफ और फिर से पोंछने का कारण बनेगा। 30-60 प्रतीक्षा करें और पुन: कनेक्ट करने के लिए शीर्ष-दाईं ओर कनेक्ट बटन दबाएँ।


2
धन्यवाद, लेकिन आपका सुझाव कुछ भी नहीं बदलता है। मुझे अभी भी 5% GPU RAM मिल रहा है।
स्टासन

यह मदद नहीं करता है। मारने और फिर से जोड़ने के बाद, GPU मेमोरी अभी भी ~ 12GB में से 500Mb पर है।
ivan_bilan

4

Google की ओर से भ्रामक विवरण। मैं इसके बारे में बहुत उत्साहित हो गया, मुझे लगता है। सब कुछ सेट करें, डेटा लोड किया है, और अब मैं अपने नोटबुक में केवल 500 एमबी मेमोरी आवंटित होने के कारण इसके साथ कुछ भी करने में सक्षम नहीं हूं।


2

पायथन 3 पिड का पता लगाएं और पिड को मारें। कृपया नीचे दी गई छवि देखेंयहां छवि विवरण दर्ज करें

नोट: केवल python3 को मारें (pid = 130) ज्यूपिटर पाइथन (122) को नहीं।


क्या यह मेमोरी इश्यू में मदद करेगा? क्या आप अन्य सभी लोगों के रन नहीं मार रहे हैं?
ivan_bilan

यह मदद नहीं करता है, वही समस्या है:GPU RAM Free: 564MB
ivan_bilan

2

ज्यूपिटर आईपीथॉन कर्नेल को पुनरारंभ करें:

!pkill -9 -f ipykernel_launcher

1
करीब, लेकिन कोई सिगार नहीं:GPU RAM Free: 564MB
ivan_bilan

कर्नेल को पुनरारंभ करने की सरल विधि के रूप में, आप बस रनटाइम क्लिक कर सकते हैं | रनटाइम को पुनरारंभ करें ... या शॉर्टकटCMD/CTRL+M
एजाइल बीन

2

यकीन नहीं हो रहा है कि क्या यह ब्लैक लिस्टिंग सच है! इसके बजाय संभव है, कि उपयोगकर्ताओं के बीच कोर साझा किए जाते हैं। मैंने परीक्षण भी चलाया, और मेरे परिणाम निम्नलिखित हैं:

जनरल रैम फ्री: 12.9 जीबी | प्रोक आकार: 142.8 एमबी GPU RAM नि: शुल्क: 11441MB | प्रयुक्त: 0MB | उपयोग 0% | कुल 11441MB

ऐसा लगता है कि im भी पूर्ण कोर प्राप्त कर रहा है। हालाँकि मैंने इसे कुछ बार चलाया, और मुझे वही परिणाम मिला। हो सकता है कि मैं इस जाँच को दिन में कुछ बार दोहराऊं कि क्या कोई बदलाव है।


2

बस Google कोलाब को एक भारी काम दें, यह हमें 25 gb तक बदलने के लिए कहेगा RAM।

यहां छवि विवरण दर्ज करें

उदाहरण दो बार इस कोड को चलाते हैं:

import numpy as np
from keras.layers import Conv2D, MaxPooling2D, AveragePooling2D
from keras.layers import Dropout, Flatten, Dense
from keras.models import Sequential
from keras.layers.advanced_activations import LeakyReLU
from keras.datasets import cifar10
(train_features, train_labels), (test_features, test_labels) = cifar10.load_data()
model = Sequential()

model.add(Conv2D(filters=16, kernel_size=(2, 2), padding="same", activation="relu", input_shape=(train_features.shape[1:])))
model.add(MaxPooling2D(pool_size=(2, 2), padding='same'))

model.add(Conv2D(filters=32, kernel_size=(3, 3), padding="same", activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2), padding='same'))

model.add(Conv2D(filters=64, kernel_size=(4, 4), padding="same", activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2), padding='same'))

model.add(Flatten())

model.add(Dense(25600, activation="relu"))
model.add(Dense(25600, activation="relu"))
model.add(Dense(25600, activation="relu"))
model.add(Dense(25600, activation="relu"))
model.add(Dense(10, activation="softmax"))

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

model.fit(train_features, train_labels, validation_split=0.2, epochs=10, batch_size=128, verbose=1)

फिर अधिक राम पर क्लिक करें :) यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें


मैं इसकी पुष्टि कर सकता हूं। मेरे पास ज्यादातर HD चित्रों का 15 गीगावॉट डेटासेट था (मेरी ड्राइव में 15 जीजीएस के बजाय 30 गीगा है) और मैंने छवि कोड को 224,224,3 में बदलने के लिए अपना कोड चलाया और मुझे एक उच्च रैम रनटाइम पर स्विच किया गया। फिर जब मैंने प्रशिक्षण शुरू किया तो RAM का उपयोग 31.88gigs तक हो गया।
अंशुमान कुमार

लेकिन मैं यह जोड़ना चाहूंगा कि एक बार जब मैंने वह काम पूरा कर लिया, तो मैं पिछले 24 घंटों से दूसरे जीपीयू / टीपीयू तक नहीं पहुंच पा रहा हूं। यह संभव है कि मुझे ब्लैकलिस्ट किया गया था।
अंशुमान कुमार

@ अशुमानकुमार, शुरुआत में ही उच्च भार दें अन्यथा बदलते कॉन्फ़िगरेशन पर आप पहले किए गए काम को खो देंगे जो राम में है। मैंने 24 घंटे के लिए उच्च कॉन्फ़िगरेशन का उपयोग नहीं किया, इसलिए मुझे ब्लैकलिस्ट करने के बारे में पता नहीं है।
जैनिल पटेल

हां, मेरे साथ वही हुआ। हालाँकि काम हो गया।
अंशुमान कुमार

1

मेरा मानना ​​है कि अगर हमारे पास कई नोटबुक खुले हैं। बस इसे बंद करना वास्तव में प्रक्रिया को रोकना नहीं है। मुझे नहीं पता है कि इसे कैसे रोकना है। लेकिन मैंने पायथन 3 के पीआईडी ​​को खोजने के लिए शीर्ष का उपयोग किया जो सबसे लंबे समय तक चल रहा था और अधिकांश मेमोरी का उपयोग कर रहा था और मैंने इसे मार दिया। अब सब कुछ सामान्य हो गया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.