tutorial google colab python machine-learning gpu ram google-colaboratory

python - tutorial - Google Colaboratory: información engañosa sobre su GPU(solo 5% de RAM disponible para algunos usuarios)



google drive (9)

¡No estoy seguro de si esta lista negra es cierta! Es bastante posible, que los núcleos se compartan entre los usuarios. También ejecuté la prueba, y mis resultados son los siguientes:

Gen RAM libre: 12.9 GB | Tamaño de proceso: 142.8 MB GPU RAM Gratis: 11441MB | Usado: 0MB | Util 0% | Total 11441 MB

Parece que también estoy obteniendo el núcleo completo. Sin embargo, lo ejecuté varias veces y obtuve el mismo resultado. Tal vez repita esta comprobación varias veces durante el día para ver si hay algún cambio.

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 agregar la opción "TPU".

Leyendo varios anuncios entusiasmados sobre Google Colaboratory que proporciona GPU Tesla K80 gratuita, traté de correr fast.ai lección para que nunca se completara, se quedó sin memoria rápidamente. 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.5GB de lo que se supone que es una GPU RAM de 24GB. Otros usuarios obtienen acceso a 11 GB de RAM de GPU.

Claramente, la RAM de 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 alguna falla en mi cálculo de la disponibilidad de RAM de GPU, prestada de GPUtil?

¿Puede confirmar que obtendrá resultados similares si ejecuta este código en el cuaderno de Google Colab?

Si mis cálculos son correctos, ¿hay alguna forma de obtener más RAM de GPU en la caja libre?

actualización: no estoy seguro de por qué algunos de nosotros recibimos 1/20 de lo que obtienen otros usuarios. ¡Por ejemplo, la persona que me ayudó a depurar esto es de la India y lo consigue todo!

nota : no envíe más sugerencias sobre cómo matar los portátiles potencialmente atascados / fuera de control / 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 todavía).


Anoche ejecuté tu fragmento y obtuve exactamente lo que tienes:

Gen RAM Free: 11.6 GB | Proc size: 666.0 MB GPU RAM Free: 566MB | Used: 10873MB | Util 95% | Total 11439MB

pero hoy:

Gen RAM Free: 12.2 GB I Proc size: 131.5 MB GPU RAM Free: 11439MB | Used: 0MB | Util 0% | Total 11439MB

Creo 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 es probable que cambie a una que esté siendo utilizada por otros usuarios.

ACTUALIZADO: Resulta que puedo usar GPU normalmente incluso cuando el GPU RAM Free es de 504 MB, lo que pensé como la causa de ResourceExhaustedError que obtuve anoche.


Creo que si tenemos varios cuadernos abiertos. Solo cerrarlo en realidad no detiene el proceso. No he descubierto cómo detenerlo. Pero usé top para encontrar el PID del python3 que se ejecutaba más tiempo y usaba la mayor parte de la memoria y lo maté. Todo vuelve a la normalidad ahora.


Descripción engañosa por parte de Google. Supongo que también me emocioné demasiado. Configuré todo, cargué los datos y ahora no puedo hacer nada debido a que solo tengo 500Mb de memoria asignada a mi computadora portátil.


Encuentra el Python3 pid y acaba con el pid. Por favor vea la imagen de abajo

Nota: matar solo python3 (pid = 130) no jupyter python (122).


Entonces, para evitar otra docena de respuestas que sugieran no válido en el contexto de esta sugerencia de hilo para! Kill -9 -1, cerremos este hilo:

La respuesta es simple:

Al momento de escribir este artículo, Google simplemente da solo el 5% de la GPU a algunos de nosotros, mientras que el 100% a los demás. Período.

Actualización de marzo de 2019 : un año más tarde, Google finalmente notó este hilo y envió a @AmiF para desacreditarlo, lo que implica que todos los que tienen este problema son usuarios incompetentes que no saben cómo restablecer su tiempo de ejecución para recuperar memoria. @AmiF sugiere además que tal vez este problema fue solo un error en su código y que los usuarios no podemos distinguir una política de la compañía frente a un error.

Desafortunadamente, no se realiza una revelación completa y solo nos quedan nuestras conjeturas sobre lo que realmente podría estar sucediendo. Claramente, una compañía con fines de lucro tendrá reservas con quienes son amables y, por lo tanto, es imposible evitar la discriminación aquí. Tiene mucho sentido y es muy lógico. Dado que este recurso se proporciona de forma gratuita, realmente no podemos quejarnos, pero solo preguntamos por qué algunos de nosotros estamos en la lista negra, mientras que otros que provienen de configuraciones / entornos idénticos no lo son.

Dado que mi cuenta personal se eliminó de la lista negra en diciembre de 2018 (consulte mi actualización a continuación), solo puedo confiar en otros usuarios que todavía están en la lista negra para que me ayuden a decir la verdad. Mientras escribo esta actualización, este hilo recibió otro voto positivo.

Se dice que esperemos que Google termine la lista negra al menos para aquellos que solicitan ser eliminados de ella. La mayoría de nosotros no ha realizado ninguna actividad incriminatoria para estar en esa lista y simplemente nos atraparon cerebros inmaduros de aprendizaje automático y no tenemos la oportunidad de demostrar que no somos culpables. @AmyF sugirió informar este problema en http://github.com/googlecolab/colabtools/issues ; si informa el problema y se borra con su boleto cerrado sin ninguna investigación como en este case , publique el enlace a su no resuelto problema en los comentarios de esta respuesta, para que podamos pedir algo de responsabilidad.

Y, por supuesto, antes de votar este hilo, realice "Restablecer todos los tiempos de ejecución" en el menú Tiempo de ejecución en colab y vea si tal vez realmente tuvo el problema de los portátiles inacabados que aún consumen RAM de GPU y no está afectado en absoluto por La política de listas negras.

Una vez que se detenga la votación, sabremos que esta política de discriminación ha sido abolida. Desafortunadamente, a partir de esta actualización, este no es el caso, lo que hace que los comentarios de @ AmyF a continuación sean muy dudosos.

Actualización de diciembre de 2018 : tengo la teoría de que Google puede tener una lista negra de ciertas cuentas, o tal vez huellas digitales 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 requiriera, 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 acertijo y cualquier re-captcha de Google se resuelve con solo un 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 sospecho que si estás en una lista negra teórica de Google, entonces no se te confía para que te den muchos recursos gratis. 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, también podría ser una coincidencia total.


Reinicie Jupyter IPython Kernel:

!pkill -9 -f ipykernel_launcher


Si ejecuta una celda que solo tiene
! kill -9 -1
en él, eso hará que todo el estado de tiempo de ejecución (incluida la memoria, el sistema de archivos y la GPU) se borre y reinicie. Espere 30-60 segundos y presione el botón CONECTAR en la esquina superior derecha para volver a conectar.


!pkill -9 -f ipykernel_launcher

Esto liberó el espacio