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 GPU Tesla K80 gratis, traté de ejecutar la lección fast.ai para que nunca se completara, y me quedé rápidamente sin memoria. Empecé a investigar por qué.
La conclusión es que "Tesla K80 gratis" no es "gratis" para todos; para algunos, solo una pequeña porción es "gratis".
Me conecto a Google Colab desde la costa oeste de Canadá y obtengo solo 0,5 GB de lo que se supone que es una GPU RAM de 24 GB. Otros usuarios obtienen acceso a 11 GB de GPU RAM.
Claramente, la GPU RAM de 0,5 GB 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 de la computadora 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 11439MBLos afortunados usuarios que obtengan 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¿Ve alguna falla en mi cálculo de la disponibilidad de RAM de la GPU, tomada prestada de GPUtil?
¿Puedes confirmar que obtienes resultados similares si ejecutas este código en el cuaderno de Google Colab?
Si mis cálculos son correctos, ¿hay alguna forma de obtener más de esa GPU RAM en la caja libre?
actualización: no estoy seguro de por qué algunos de nosotros obtenemos 1/20 de lo que obtienen otros usuarios. por ejemplo, la persona que me ayudó a depurar esto es de la India y ¡él lo entiende todo!
nota : por favor, no envíe más sugerencias sobre cómo matar los portátiles potencialmente atascados/descontrolados/paralelos que podrían estar consumiendo partes de la GPU. No importa cómo lo corte, si está en el mismo barco que yo y ejecuta el código de depuración, verá que aún obtiene un total del 5% de RAM de GPU (a partir de esta actualización).
Entonces, para evitar otra docena de respuestas que sugieran que no son válidas en el contexto de esta sugerencia de hilo para matar -9 -1, cerremos este hilo:
La respuesta es simple:
En el momento de escribir este artículo, Google simplemente otorga solo el 5 % de la GPU a algunos de nosotros, mientras que el 100 % a los demás. Período.
Actualización de diciembre de 2019: el problema aún existe: los votos a favor de esta pregunta continúan.
Actualización de marzo de 2019: un año después, un empleado de Google @AmiF comentó sobre el estado de las cosas, afirmando que el problema no existe, y cualquiera que parezca tener este problema simplemente debe restablecer su tiempo de ejecución para recuperar la memoria. Sin embargo, los votos a favor continúan, lo que para mí indica que el problema aún existe, a pesar de la sugerencia de @AmiF de lo contrario.
Actualización de diciembre de 2018: tengo la teoría de que Google puede tener una lista negra de ciertas cuentas, o quizás huellas dactilares del navegador, cuando sus robots detectan un comportamiento no estándar. Podría ser una coincidencia total, pero durante bastante tiempo tuve un problema con Google Re-captcha en cualquier sitio web que lo requería, donde tenía que pasar por docenas de acertijos antes de que me permitieran pasar, a menudo tomándome más de 10 minutos para lograrlo. Esto duró muchos meses. De repente, a partir de este mes, no tengo ningún rompecabezas y cualquier re-captcha de Google se resuelve con un solo clic del mouse, como solía ser hace casi un año.
¿Y por qué estoy contando esta historia? Bueno, porque al mismo tiempo me dieron el 100% de la RAM de la GPU en Colab . Es por eso que mi sospecha es que si está en una lista negra teórica de Google, entonces no se puede confiar en que se le brinden muchos recursos de forma gratuita. Me pregunto si alguno de ustedes encuentra la misma correlación entre el acceso limitado a la GPU y la pesadilla de Re-captcha. Como dije, podría ser totalmente una coincidencia también.
Anoche revisé tu fragmento y obtuve exactamente lo que obtuviste:
Gen RAM Free: 11.6 GB | Proc size: 666.0 MB GPU RAM Free: 566MB | Used: 10873MB | Util 95% | Total 11439MBpero hoy:
Gen RAM Free: 12.2 GB I Proc size: 131.5 MB GPU RAM Free: 11439MB | Used: 0MB | Util 0% | Total 11439MBCreo que la razón más probable es que las GPU se comparten entre las máquinas virtuales, por lo que cada vez que reinicia el tiempo de ejecución, tiene la oportunidad de cambiar la GPU, y también existe la probabilidad de que cambie a una que estén utilizando otros usuarios.
ACTUALIZADO: Resulta que puedo usar GPU normalmente incluso cuando la GPU RAM Free es de 504 MB, lo que pensé que era la causa del ResourceExhaustedError que obtuve anoche.
Si ejecuta una celda que solo tiene
!matar -9 -1
en él, eso hará que todo el estado de su tiempo de ejecución (incluida la memoria, el sistema de archivos y la GPU) se borre y se reinicie. Espere de 30 a 60 segundos y presione el botón CONECTAR en la esquina superior derecha para volver a conectarse.