aggiornamento: questa domanda è correlata alle "Impostazioni notebook: acceleratore hardware: GPU" di Google Colab. Questa domanda è stata scritta prima dell'aggiunta dell'opzione "TPU".
Leggendo diversi annunci entusiasti su Google Colaboratory che fornisce GPU Tesla K80 gratuita, ho provato a eseguire una lezione veloce su di esso affinché non si completasse mai, esaurendo rapidamente la memoria. Ho iniziato a indagare sul perché.
La conclusione è che "Tesla K80 gratuita" non è "gratuita" per tutti - per alcuni solo una piccola parte è "gratuita".
Mi collego a Google Colab dalla costa occidentale del Canada e ottengo solo 0,5 GB di quella che dovrebbe essere una GPU RAM da 24 GB. Altri utenti hanno accesso a 11 GB di RAM GPU.
Chiaramente 0,5 GB di RAM GPU non sono sufficienti per la maggior parte del lavoro ML / DL.
Se non sei sicuro di cosa ottieni, ecco una piccola funzione di debug che ho raccolto insieme (funziona solo con l'impostazione GPU del 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()
Eseguirlo in un notebook jupyter prima di eseguire qualsiasi altro codice mi dà:
Gen RAM Free: 11.6 GB | Proc size: 666.0 MB
GPU RAM Free: 566MB | Used: 10873MB | Util 95% | Total 11439MB
I fortunati utenti che avranno accesso alla scheda completa vedranno:
Gen RAM Free: 11.6 GB | Proc size: 666.0 MB
GPU RAM Free: 11439MB | Used: 0MB | Util 0% | Total 11439MB
Vedi qualche difetto nel mio calcolo della disponibilità di RAM della GPU, presa in prestito da GPUtil?
Puoi confermare di ottenere risultati simili se esegui questo codice su Google Colab Notebook?
Se i miei calcoli sono corretti, c'è un modo per ottenere più di quella GPU RAM sulla scatola gratuita?
aggiornamento: non sono sicuro del motivo per cui alcuni di noi ottengono 1/20 di ciò che ricevono gli altri utenti. ad esempio, la persona che mi ha aiutato a eseguire il debug viene dall'India e ottiene tutto!
nota : si prega di non inviare altri suggerimenti su come eliminare i notebook potenzialmente bloccati / in fuga / paralleli che potrebbero consumare parti della GPU. Non importa come lo tagli, se ti trovi nella stessa barca di me e dovessi eseguire il codice di debug, vedresti che hai ancora un totale del 5% di RAM della GPU (ancora a partire da questo aggiornamento).