Google Colaboratory: GPU'su hakkında yanıltıcı bilgiler (bazı kullanıcılar için yalnızca% 5 RAM mevcuttur)


112

güncelleme: bu soru Google Colab'ın "Not defteri ayarları: Donanım hızlandırıcı: GPU" ile ilgilidir. Bu soru, "TPU" seçeneği eklenmeden önce yazılmıştır.

Ücretsiz Tesla K80 GPU sağlayan Google Colaboratory hakkında çok sayıda heyecanlı duyuru okurken, hızlı bir şekilde hafızam tükenmek üzere hiçbir zaman tamamlamaması için üzerinde fast.ai dersi vermeye çalıştım . Nedenini araştırmaya başladım.

Sonuç olarak, "bedava Tesla K80" herkes için "bedava" değildir - bazıları için sadece küçük bir dilimi "bedava".

West Coast Canada'dan Google Colab'a bağlanıyorum ve 24GB GPU RAM olması gerekenden yalnızca 0,5 GB'ı alıyorum. Diğer kullanıcılar 11GB GPU RAM'e erişebilir.

Açıkçası 0.5GB GPU RAM, çoğu ML / DL çalışması için yetersizdir.

Ne elde ettiğinizden emin değilseniz, burada küçük hata ayıklama işlevi bir araya getirdim (yalnızca dizüstü bilgisayarın GPU ayarıyla çalışır):

# 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()

Başka bir kodu çalıştırmadan önce bir jupyter not defterinde yürütmek bana şunu verir:

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

Tam karta erişim sağlayan şanslı kullanıcılar şunları görecektir:

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

GPUtil'den ödünç aldığım GPU RAM kullanılabilirliği hesaplamamda herhangi bir kusur görüyor musunuz?

Bu kodu Google Colab not defterinde çalıştırırsanız benzer sonuçlar aldığınızı onaylayabilir misiniz?

Hesaplamalarım doğruysa, ücretsiz kutuda bu GPU RAM'den daha fazlasını almanın bir yolu var mı?

güncelleme: Neden bazılarımızın diğer kullanıcıların aldıklarının 1 / 20'sini aldığından emin değilim. Örneğin, bu konuda hata ayıklamama yardım eden kişi Hindistan'dan ve her şeyi o alıyor!

not : lütfen GPU'nun parçalarını tüketen potansiyel olarak sıkışmış / kaçak / paralel dizüstü bilgisayarların nasıl ortadan kaldırılacağına dair başka öneri göndermeyin. Nasıl dilimlediğiniz önemli değil, eğer benimle aynı gemideyseniz ve hata ayıklama kodunu çalıştıracak olsaydınız, hala toplamda% 5 GPU RAM aldığınızı göreceksiniz (bu güncellemeden itibaren hala).


Buna herhangi bir çözüm var mı? cat / proc / meminfo
MiloMinderbinder

Evet, aynı sorun, sadece yaklaşık 500 mb GPU ram ... yanıltıcı açıklama :(
Naveen

2
Jupyter not defterlerine sahip ücretsiz bir GPU'ya sahip oldukları için IBM açık kaynaklı veri bilimi araçlarını (cognitiveclass.ai) deneyin.
AQ

Bu soruyu, içinde aslında bir sorunun olduğu bir duruma geri çevirdim . Daha fazla araştırma yaptıysanız ve bir cevap bulduysanız, bunun için uygun yer cevap kutusundadır. Soruyu bir çözümle güncellemek yanlıştır.
Chris Hayes

@ChrisHayes, niyetinizi anlıyorum, ancak bu doğru değil, çünkü geri alma işleminiz artık gitmiş olan bir sürü ilgili ayrıntıyı sildi. Bu topluluğun kurallarına daha iyi uyan daha iyi bir ifade önermek istiyorsanız lütfen bunu yapın, aksi takdirde lütfen geri dönüşünüzü geri alın. Teşekkür ederim. ps Cevabı zaten gönderdim .
stason

Yanıtlar:


42

Öyleyse, bu iş parçacığı önerisi bağlamında geçersiz olduğunu öne süren başka bir düzine yanıtı önlemek için! Kill -9 -1, bu konuyu kapatalım:

Cevap basit:

Bu yazı itibariyle Google sadece bazılarımıza GPU'nun sadece% 5'ini, diğerlerine% 100 veriyor. Dönem.

dec-2019 güncellemesi: Sorun hala var - bu sorunun olumlu oyları hala devam ediyor.

mar-2019 güncellemesi: Bir yıl sonra bir Google çalışanı @AmiF, sorunun mevcut olmadığını ve bu sorunu yaşayan herkesin hafızayı kurtarmak için çalışma zamanını sıfırlaması gerektiğini belirterek durumun durumu hakkında yorum yaptı. Yine de olumlu oylar devam ediyor, bana göre bu, @ AmiF'nin aksi yöndeki önerisine rağmen sorunun hala var olduğunu gösteriyor.

dec-2018 güncellemesi: Google'ın, robotları standart olmayan bir davranış tespit ettiğinde belirli hesaplardan oluşan bir kara listeye veya belki de tarayıcı parmak izlerine sahip olabileceğine dair bir teorim var. Bu tamamen bir tesadüf olabilir, ancak epey bir süredir Google Re-captcha ile ilgili herhangi bir web sitesinde, izin verilmeden önce düzinelerce bulmacadan geçmem gereken bir sorun yaşadım. başarmam 10 dakikadan fazla sürüyor. Bu aylarca sürdü. Bu ay itibariyle birdenbire hiç bulmaca almadım ve herhangi bir google re-captcha neredeyse bir yıl önce olduğu gibi tek bir fare tıklamasıyla çözüldü.

Ve neden bu hikayeyi anlatıyorum? Eh, çünkü aynı zamanda Colab'da GPU RAM'in% 100'ü bana verildi . Bu yüzden şüphem şu ki, eğer teorik bir Google kara listesindeyseniz, o zaman size ücretsiz olarak çok fazla kaynak verileceğine güvenilmiyorsunuz. Sınırlı GPU erişimi ile Re-captcha kabusu arasında aynı ilişkiyi bulup bulmadığınız merak ediyorum. Dediğim gibi, tamamen tesadüf de olabilir.


4
"Bu yazı itibariyle Google sadece bazılarımıza GPU'nun yalnızca% 5'ini, diğerlerine ise% 100'ünü veriyor." yanlış - Colab hiç bu şekilde çalışmadı. Kullanabilecekleri GPU RAM'in tam tamamlanmasından daha azını gören kullanıcıların tüm teşhis vakaları, GPU'nun RAM'inin geri kalanını kullanarak başka bir işleme (aynı kullanıcı tarafından, muhtemelen başka bir dizüstü bilgisayarda başlatılan) kaynatıldı.
Ami F

11
Gelecekteki okuyucular: Bu veya benzer GPU RAM kullanılamama belirtilerini gördüğünüzü düşünüyorsanız, Çalışma Zamanı menüsündeki "Tüm çalışma zamanlarını sıfırla" size eski bir işlemin hala GPU RAM'i tutmadığını garanti eden yeni bir VM sağlayacaktır. Bu menü seçeneğini kullandıktan hemen sonra hala bu belirtiyi görüyorsanız, lütfen github.com/googlecolab/colabtools/issues
Ami F

Sizin gerçekliğiniz, oluşturulduktan bir yıl sonra bu gönderiye oy vermeye devam eden diğerlerinin gerçekliğinden açıkça farklı. Bazı kullanıcıların tanımladığınız şeyle gerçekten karşılaşması çok muhtemeldir, ancak bu herkes için geçerli değildir. Bu yüzden ifadenizin burada nasıl yardımcı olduğundan emin değilim. Ayrıca birisi sizin önerdiğiniz depoda
stason

2
Belirsiz olması durumunda: Uygulamanın, sistemin bir kullanıcı olarak davranışının gözlemlenmesine dayalı olduğuna inandığım şeyi açıklamıyorum. Uygulamanın ne olduğunu doğrudan bildiğimi anlatıyorum. Tam kullanılabilirlikten daha azını gören kullanıcıların, yukarıdaki yanlış ifadeleri okumak ve işlerin amaçlandığı gibi çalıştığını varsaymak yerine, bunu bir sorun (kullanıcı hatası veya sistem hatası) olarak bildirmesini umarak gönderdim.
Ami F

1
Hayır, GPU'lar hiçbir zaman paylaşılmadı ve bağladığınız örnekte hiçbir yalan yok (yalnızca bildirilen semptomun en yaygın nedenine dair bir tahmin ve açıklama).
Ami F

22

Dün gece pasajını araştırdım ve tam olarak ne olduğunu aldım:

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

ama bugün:

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

Bence en olası neden, GPU'ların VM'ler arasında paylaşılmasıdır, bu nedenle çalışma zamanını her yeniden başlattığınızda GPU'yu değiştirme şansınız olur ve ayrıca diğer kullanıcılar tarafından kullanılan birine geçme olasılığınız da vardır.

GÜNCELLENDİ: Dün gece aldığım ResourceExhaustedError'ın nedeni olarak düşündüğüm GPU RAM Free 504 MB olduğunda bile GPU'yu normal olarak kullanabileceğim ortaya çıktı.


1
Sanırım birkaç gün içinde muhtemelen 50 kez yeniden bağlandım ve başlamak için her zaman aynı% 95 kullanımı elde ediyordum. Sadece bir kez% 0 gördüm. Tüm bu girişimlerde,% 100'e yaklaştığında cuda'dan bellek hatası alıyordum.
stason

Güncellemenle ne demek istiyorsun? Hala 500Mb ile bir şeyler çalıştırabiliyor musunuz? Ben de aynı sorunu yaşıyorum, alıyorumRuntimeError: cuda runtime error (2) : out of memory at /pytorch/torch/lib/THC/generated/../THCTensorMathCompare.cuh:84
ivan_bilan

6

İçinde sadece
! Kill -9 -1
bulunan bir hücreyi çalıştırırsanız , bu, tüm çalışma zamanınızın durumunun (bellek, dosya sistemi ve GPU dahil) silinmesine ve yeniden başlatılmasına neden olur. 30-60 saniye bekleyin ve yeniden bağlanmak için sağ üstteki CONNECT düğmesine basın.


2
teşekkür ederim, ancak öneriniz hiçbir şeyi değiştirmez. Hala GPU RAM'in% 5'ini alıyorum.
stason

Bu yardımcı olmuyor. Öldürüp yeniden bağlandıktan sonra, GPU belleği hala ~ 12GB'nin 500Mb'sinde.
ivan_bilan

4

Google tarafında yanıltıcı açıklama. Ben de çok heyecanlandım sanırım. Her şeyi ayarlayın, verileri yükledim ve şimdi Dizüstü Bilgisayarıma tahsis edilmiş yalnızca 500Mb belleğe sahip olduğum için onunla hiçbir şey yapamıyorum.


2

Python3 pid'ini bulun ve pid'i öldürün. Lütfen aşağıdaki resme bakıngörüntü açıklamasını buraya girin

Not: jupyter python (122) değil sadece python3'ü (pid = 130) öldür.


bu hafıza sorununa yardımcı olacak mı? o zaman diğer insanların tüm koşularını öldürmüyor musun?
ivan_bilan

bu yardımcı olmuyor, aynı sorun var:GPU RAM Free: 564MB
ivan_bilan

2

Jupyter IPython Kernel'i yeniden başlatın:

!pkill -9 -f ipykernel_launcher

1
yakın, ancak puro yok:GPU RAM Free: 564MB
ivan_bilan

çekirdeği yeniden başlatmak için daha basit bir yöntem olarak Runtime | Çalışma zamanını yeniden başlatın ... veya kısayolCMD/CTRL+M
Agile Bean

2

Bu kara listenin doğru olup olmadığından emin değilim! Çekirdeklerin kullanıcılar arasında paylaşılması oldukça mümkündür. Ben de testi yaptım ve sonuçlarım şu şekilde:

Gen RAM Boş: 12.9 GB | Proc boyutu: 142,8 MB GPU RAM Boş: 11441MB | Kullanılmış: 0MB | Util 0% | Toplam 11441MB

Görünüşe göre tam çekirdek alıyorum. Ancak birkaç kez çalıştırdım ve aynı sonucu aldım. Belki de herhangi bir değişiklik olup olmadığını görmek için bu kontrolü gün içinde birkaç kez tekrar edeceğim.


2

sadece google colab'a ağır bir görev verin, bizden 25 gb ram'a geçmemizi isteyecek.

görüntü açıklamasını buraya girin

örnek bu kodu iki kez çalıştırın:

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)

sonra daha fazla ram al'a tıklayın :) görüntü açıklamasını buraya girin görüntü açıklamasını buraya girin

görüntü açıklamasını buraya girin


Bunu teyit edebilirim. Çoğunlukla HD resimlerden oluşan 15 giglik bir veri kümem vardı (sürücümde 15 gig yerine 30 gig var) ve görüntü veri kümesini 224,224,3 olarak yeniden boyutlandırmak için kodumu çalıştırdım ve yüksek bir RAM çalışma zamanına geçtim. Daha sonra eğitime başladığımda RAM kullanımı 31.88 gig'e çıktı.
Anshuman Kumar

Ancak, bu işi bitirdikten sonra, son 24 saattir başka bir GPU / TPU'ya erişemediğimi de eklemek isterim. Kara listeye alınmış olabilirim.
Anshuman Kumar

@AnshumanKumar, yüksek yükü başlangıçta verin, aksi takdirde konfigürasyonu değiştirdiğinizde daha önce yapılmış olan ramda olan işi kaybedersiniz. 24 saat boyunca yüksek yapılandırma kullanmadığım için kara listeye alma hakkında bilgim yok.
Jainil Patel

Evet, bu benim başıma geldi. Ancak iş yapıldı.
Anshuman Kumar

1

Sanırım birden fazla açık defterimiz var. Sadece kapatmak aslında süreci durdurmaz. Nasıl durduracağımı bulamadım. Ama en uzun süre çalışan ve belleğin çoğunu kullanan python3'ün PID'sini bulmak için top'u kullandım ve onu öldürdüm. Artık her şey normale döndü.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.