Update: Diese Frage bezieht sich auf Google Colabs "Notebook-Einstellungen: Hardwarebeschleuniger: GPU". Diese Frage wurde geschrieben, bevor die Option "TPU" hinzugefügt wurde.
Als ich mehrere aufgeregte Ankündigungen über Google Colaboratory las, das eine kostenlose Tesla K80-GPU bereitstellte, versuchte ich, fast.ai zu lernen, damit es nie fertig wird - schnell geht der Speicher aus. Ich begann zu untersuchen, warum.
Das Fazit ist, dass "free Tesla K80" nicht für alle "kostenlos" ist - für einige ist nur ein kleiner Teil davon "kostenlos".
Ich stelle von West Coast Canada aus eine Verbindung zu Google Colab her und erhalte nur 0,5 GB eines angeblich 24 GB GPU-RAM. Andere Benutzer erhalten Zugriff auf 11 GB GPU-RAM.
Offensichtlich reichen 0,5 GB GPU-RAM für die meisten ML / DL-Arbeiten nicht aus.
Wenn Sie nicht sicher sind, was Sie erhalten, finden Sie hier eine kleine Debug-Funktion, die ich zusammengestellt habe (funktioniert nur mit der GPU-Einstellung des Notebooks):
# 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()
Wenn ich es in einem Jupiter-Notizbuch ausführe, bevor ich einen anderen Code ausführe, habe ich folgende Möglichkeiten:
Gen RAM Free: 11.6 GB | Proc size: 666.0 MB
GPU RAM Free: 566MB | Used: 10873MB | Util 95% | Total 11439MB
Die glücklichen Benutzer, die Zugriff auf die vollständige Karte erhalten, werden sehen:
Gen RAM Free: 11.6 GB | Proc size: 666.0 MB
GPU RAM Free: 11439MB | Used: 0MB | Util 0% | Total 11439MB
Sehen Sie einen Fehler in meiner Berechnung der GPU-RAM-Verfügbarkeit, die von GPUtil ausgeliehen wurde?
Können Sie bestätigen, dass Sie ähnliche Ergebnisse erhalten, wenn Sie diesen Code auf dem Google Colab-Notizbuch ausführen?
Wenn meine Berechnungen korrekt sind, gibt es eine Möglichkeit, mehr von diesem GPU-RAM auf die kostenlose Box zu bekommen?
Update: Ich bin mir nicht sicher, warum einige von uns 1/20 von dem bekommen, was andere Benutzer bekommen. zB die Person, die mir beim Debuggen geholfen hat, kommt aus Indien und bekommt das Ganze!
Hinweis : Bitte senden Sie keine weiteren Vorschläge zum Beenden der potenziell festgefahrenen / außer Kontrolle geratenen / parallelen Notebooks, die möglicherweise Teile der GPU verbrauchen. Egal wie Sie es schneiden, wenn Sie sich im selben Boot wie ich befinden und den Debug-Code ausführen würden, würden Sie sehen, dass Sie immer noch insgesamt 5% des GPU-RAM erhalten (ab diesem Update noch).