actualización: esta pregunta está relacionada con la "Configuración del portátil: Acelerador de hardware: GPU" de Google Colab. Esta pregunta se escribió antes de que se agregara la opción "TPU".
Al leer varios anuncios emocionados sobre Google Colaboratory que proporciona la GPU Tesla K80 gratuita, traté de ejecutar la lección fast.ai para que nunca se completara, agotando rápidamente la memoria. Empecé a investigar por qué.
La conclusión es que el "Tesla K80 gratuito" no es "gratuito" para todos; para algunos, sólo una pequeña parte es "gratuito".
Me conecto a Google Colab desde la costa oeste de Canadá y obtengo solo 0.5GB de lo que se supone que es una GPU RAM de 24GB. Otros usuarios obtienen acceso a 11 GB de RAM GPU.
Claramente, la RAM GPU de 0.5GB es insuficiente para la mayoría de los trabajos de ML / DL.
Si no está seguro de lo que obtiene, aquí hay una pequeña función de depuración que reuní (solo funciona con la configuración de GPU del portátil):
# 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()
Ejecutarlo en un cuaderno jupyter antes de ejecutar cualquier otro código me da:
Gen RAM Free: 11.6 GB | Proc size: 666.0 MB
GPU RAM Free: 566MB | Used: 10873MB | Util 95% | Total 11439MB
Los usuarios afortunados que tengan acceso a la tarjeta completa verán:
Gen RAM Free: 11.6 GB | Proc size: 666.0 MB
GPU RAM Free: 11439MB | Used: 0MB | Util 0% | Total 11439MB
¿Ves algún defecto en mi cálculo de la disponibilidad de RAM de la GPU, tomada de GPUtil?
¿Puede confirmar que obtiene resultados similares si ejecuta este código en el portátil Google Colab?
Si mis cálculos son correctos, ¿hay alguna forma de obtener más RAM de la GPU en la caja gratuita?
actualización: No estoy seguro de por qué algunos de nosotros obtenemos una vigésima parte de lo que obtienen otros usuarios. por ejemplo, la persona que me ayudó a depurar esto es de la India y ¡lo entiende todo!
nota : no envíe más sugerencias sobre cómo eliminar los portátiles paralelos / fugitivos que podrían estar consumiendo partes de la GPU. No importa cómo lo corte, si está en el mismo barco que yo y ejecutara el código de depuración, vería que aún obtiene un total del 5% de la RAM de la GPU (aún a partir de esta actualización).