update: pertanyaan ini terkait dengan "Pengaturan notebook: Akselerator perangkat keras: GPU" Google Colab. Pertanyaan ini ditulis sebelum opsi "TPU" ditambahkan.
Membaca beberapa pengumuman gembira tentang Google Colaboratory yang menyediakan Tesla K80 GPU gratis, saya mencoba menjalankan pelajaran fast.ai tentangnya agar tidak pernah selesai - kehabisan memori dengan cepat. Saya mulai menyelidiki mengapa.
Intinya adalah bahwa "Tesla K80 gratis" tidak "gratis" untuk semua - untuk beberapa hanya sebagian kecil saja yang "gratis".
Saya terhubung ke Google Colab dari West Coast Kanada dan saya hanya mendapatkan 0,5GB dari apa yang seharusnya menjadi RAM GPU 24GB. Pengguna lain mendapatkan akses ke RAM GPU 11GB.
Jelas, RAM 0,5 GB GPU tidak cukup untuk sebagian besar pekerjaan ML / DL.
Jika Anda tidak yakin dengan apa yang Anda dapatkan, berikut adalah sedikit fungsi debug yang saya kumpulkan (hanya berfungsi dengan pengaturan GPU pada notebook):
# 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()
Mengeksekusinya di notebook jupyter sebelum menjalankan kode lain memberi saya:
Gen RAM Free: 11.6 GB | Proc size: 666.0 MB
GPU RAM Free: 566MB | Used: 10873MB | Util 95% | Total 11439MB
Pengguna beruntung yang mendapatkan akses ke kartu penuh akan melihat:
Gen RAM Free: 11.6 GB | Proc size: 666.0 MB
GPU RAM Free: 11439MB | Used: 0MB | Util 0% | Total 11439MB
Apakah Anda melihat adanya kekurangan dalam kalkulasi saya tentang ketersediaan RAM GPU, yang dipinjam dari GPUtil?
Dapatkah Anda mengonfirmasi bahwa Anda mendapatkan hasil yang serupa jika menjalankan kode ini di notebook Google Colab?
Jika perhitungan saya benar, apakah ada cara untuk mendapatkan lebih banyak RAM GPU di kotak gratis?
update: Saya tidak yakin mengapa sebagian dari kita mendapatkan 1/20 dari apa yang didapat pengguna lain. misalnya orang yang membantu saya men-debug ini dari India dan dia mendapatkan semuanya!
catatan : tolong jangan kirim saran lagi tentang cara mematikan notebook yang berpotensi macet / runaway / paralel yang mungkin menghabiskan bagian-bagian GPU. Tidak peduli bagaimana Anda mengirisnya, jika Anda berada di perahu yang sama dengan saya dan menjalankan kode debug, Anda akan melihat bahwa Anda masih mendapatkan total 5% RAM GPU (hingga pembaruan ini masih).
Jawaban:
Jadi untuk mencegah selusin jawaban yang menyarankan tidak valid dalam konteks saran utas ini ke! Kill -9 -1, mari tutup utas ini:
Jawabannya sederhana:
Saat tulisan ini dibuat, Google hanya memberikan 5% GPU kepada sebagian dari kita, sedangkan 100% kepada yang lain. Titik.
pembaruan des-2019: Masalah masih ada - suara positif pertanyaan ini masih berlanjut.
pembaruan mar-2019: Setahun kemudian seorang karyawan Google @AmiF mengomentari keadaan, menyatakan bahwa masalahnya tidak ada, dan siapa pun yang tampaknya memiliki masalah ini perlu mengatur ulang runtime mereka untuk memulihkan memori. Namun, upvote terus berlanjut, yang bagi saya ini menunjukkan bahwa masalah masih ada, meskipun saran @AmiF sebaliknya.
pembaruan des-2018: Saya memiliki teori bahwa Google mungkin memiliki daftar hitam akun tertentu, atau mungkin sidik jari browser, ketika robotnya mendeteksi perilaku non-standar. Ini bisa menjadi kebetulan total, tetapi untuk beberapa waktu saya memiliki masalah dengan Google Re-captcha di situs web mana pun yang kebetulan membutuhkannya, di mana saya harus melalui lusinan teka-teki sebelum diizinkan, sering kali membutuhkan waktu 10+ menit untuk saya capai. Ini berlangsung selama berbulan-bulan. Tiba-tiba saja pada bulan ini saya tidak mendapatkan teka-teki sama sekali dan semua captcha ulang google diselesaikan hanya dengan satu klik mouse, seperti yang dulu hampir setahun yang lalu.
Dan mengapa saya menceritakan kisah ini? Nah, karena pada saat yang sama saya diberi 100% RAM GPU di Colab . Itulah mengapa kecurigaan saya adalah bahwa jika Anda termasuk dalam daftar hitam Google teoretis maka Anda tidak dipercaya untuk diberi banyak sumber daya secara gratis. Saya ingin tahu apakah ada di antara Anda yang menemukan korelasi yang sama antara akses GPU terbatas dan mimpi buruk Re-captcha. Seperti yang saya katakan, itu bisa jadi benar-benar kebetulan juga.
sumber
Tadi malam saya menjalankan cuplikan Anda dan mendapatkan apa yang Anda dapatkan:
tapi hari ini:
Saya pikir alasan yang paling mungkin adalah GPU dibagikan di antara VM, jadi setiap kali Anda memulai ulang runtime Anda memiliki kesempatan untuk mengganti GPU, dan ada juga kemungkinan Anda beralih ke salah satu yang sedang digunakan oleh pengguna lain.
DIPERBARUI: Ternyata saya dapat menggunakan GPU secara normal meskipun GPU RAM Free adalah 504 MB, yang saya kira sebagai penyebab ResourceExhaustedError yang saya dapatkan tadi malam.
sumber
RuntimeError: cuda runtime error (2) : out of memory at /pytorch/torch/lib/THC/generated/../THCTensorMathCompare.cuh:84
Jika Anda menjalankan sel yang hanya memiliki
! Kill -9 -1
di dalamnya, itu akan menyebabkan semua status waktu proses Anda (termasuk memori, sistem file, dan GPU) dihapus bersih dan dimulai ulang. Tunggu 30-60-an dan tekan tombol CONNECT di kanan atas untuk menghubungkan kembali.
sumber
Deskripsi yang menyesatkan di pihak Google. Kurasa aku terlalu bersemangat tentang itu. Atur semuanya, muat data, dan sekarang saya tidak dapat melakukan apa pun dengannya karena hanya memiliki memori 500Mb yang dialokasikan ke Notebook saya.
sumber
Temukan pid Python3 dan matikan pid. Silakan lihat gambar di bawah ini
Catatan: bunuh hanya python3 (pid = 130) bukan jupyter python (122).
sumber
GPU RAM Free: 564MB
Mulai ulang Kernel IPython Jupyter:
sumber
GPU RAM Free: 564MB
CMD/CTRL+M
Saya tidak yakin apakah daftar hitam ini benar! Lebih mungkin, bahwa inti dibagi di antara pengguna. Saya juga menjalankan tes, dan hasil saya adalah sebagai berikut:
Gen RAM Gratis: 12,9 GB | Ukuran Proc: 142,8 MB GPU RAM Gratis: 11441MB | Digunakan: 0MB | Gunakan 0% | Total 11441MB
Sepertinya saya juga mendapatkan inti penuh. Namun saya menjalankannya beberapa kali, dan saya mendapatkan hasil yang sama. Mungkin saya akan mengulangi pemeriksaan ini beberapa kali pada siang hari untuk melihat apakah ada perubahan.
sumber
berikan saja tugas berat ke google colab, itu akan meminta kami untuk mengubah ram 25 gb.
contoh jalankan kode ini dua kali:
lalu klik dapatkan lebih banyak ram :)
sumber
Saya yakin jika kita membuka beberapa buku catatan. Hanya menutupnya tidak benar-benar menghentikan prosesnya. Saya belum menemukan cara untuk menghentikannya. Tetapi saya menggunakan atas untuk menemukan PID dari python3 yang berjalan paling lama dan menggunakan sebagian besar memori dan saya membunuhnya. Semuanya kembali normal sekarang.
sumber