Google Colaboratory:关于其GPU的误导性信息(某些用户只能使用5%的RAM)

sta*_*son 89 python ram gpu machine-learning google-colaboratory

更新:此问题与Google Colab的"笔记本设置:硬件加速器:GPU"有关.这个问题是在添加"TPU"选项之前编写的.

阅读关于谷歌Colaboratory提供免费特斯拉K80 GPU的多个激动人心的公告,我试图快速运行上课,因为它永远不会完成 - 快速耗尽内存.我开始调查原因.

最重要的是,"免费特斯拉K80"对所有人来说都不是"免费" - 因为有些只是"免费"的一小部分.

我从加拿大西海岸连接到谷歌Colab,我只得到0.5GB的24GB GPU内存.其他用户可以访问11GB的GPU RAM.

显然,0.5GB的GPU RAM不足以满足大多数ML/DL的工作需求.

如果你不确定你得到了什么,这里有一点点调试功能(只适用于笔记本的GPU设置):

# 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()
Run Code Online (Sandbox Code Playgroud)

在运行任何其他代码之前在jupyter笔记本中执行它给了我:

Gen RAM Free: 11.6 GB  | Proc size: 666.0 MB
GPU RAM Free: 566MB | Used: 10873MB | Util  95% | Total 11439MB
Run Code Online (Sandbox Code Playgroud)

获得完整卡的幸运用户将看到:

Gen RAM Free: 11.6 GB  | Proc size: 666.0 MB
GPU RAM Free: 11439MB | Used: 0MB | Util  0% | Total 11439MB
Run Code Online (Sandbox Code Playgroud)

你是否看到我从GPUtil借来的GPU RAM可用性计算中存在任何缺陷?

如果您在Google Colab笔记本上运行此代码,您能否确认获得类似结果?

如果我的计算是正确的,有没有办法在免费盒子上获得更多的GPU内存?

更新:我不确定为什么我们中的一些人得到其他用户得到的1/20.例如,帮助我调试这个的人来自印度,他得到了整个事情!

注意:请不要再发送任何有关如何杀死可能消耗部分GPU的可能卡住/失控/并行笔记本的建议.无论你如何切片,如果你和我在同一条船上并运行调试代码,你会发现你仍然得到总共5%的GPU RAM(截至此更新仍然如此).

sta*_*son 28

所以为了防止在这个线程建议的上下文中出现无效的另外十几个答案!kill -9 -1,让我们关闭这个帖子:

答案很简单:

在撰写本文时,谷歌只向我们中的一些人提供5%的GPU,而对其他人提供100%的GPU.期.

dec-2018更新:我有一个理论认为,当Google机器人检测到非标准行为时,Google可能会列出某些帐户或浏览器指纹的黑名单.这可能完全是巧合,但是很长一段时间我在任何碰巧需要它的网站上都遇到了Google Re-captcha的问题,在我被允许通过之前我必须经历几十个谜题,经常花了我10多分钟才完成.这持续了好几个月.突然之间,截至本月我完全没有任何谜题,任何google re-captcha只需点击一下鼠标即可解决,就像差不多一年前一样.

为什么我要讲这个故事?好吧,因为同时我在Colab上获得了100%的GPU内存.这就是为什么我的怀疑是,如果你在理论谷歌黑名单上,那么你不会被信任免费获得大量资源.我想知道你们中是否有人发现有限的GPU访问和Re-captcha噩梦之间存在相同的相关性.正如我所说,这也可能完全是巧合.

  • 未来的读者:如果您认为出现GPU内存不可用的这种或类似症状,则在“运行时”菜单中的“重置所有运行时”将为您提供一个新的VM,以确保没有过时的进程仍保留在GPU RAM上。如果使用该菜单选项后仍立即看到此症状,请在https://github.com/googlecolab/colabtools/issues提交错误。 (6认同)
  • 如果不清楚:我没有描述我认为实现是基于对系统作为用户的行为的观察。我正在描述我直接知道的实现。我发帖希望看到低于完全可用性的用户将其报告为问题(用户错误或系统错误),而不是阅读上面的错误陈述并假设事情按预期工作。 (4认同)
  • 您的声明“在撰写本文时,Google仅向我们中的某些人提供了5%的GPU,而其他人仅为了100%。” 是不正确的-Colab从未以这种方式工作。所有诊断出的用户看不到可用的GPU RAM的完整情况,都归结为使用其余GPU RAM的另一个进程(由同一用户启动,可能是在另一个笔记本中启动)。 (3认同)
  • 不,GPU 从未被共享过,并且您链接的示例中没有任何谎言(只是对所报告症状的最常见原因的猜测和解释)。 (2认同)

Ngu*_*ong 21

昨晚我运行你的片段,得到你所得到的:

Gen RAM Free: 11.6 GB  | Proc size: 666.0 MB
GPU RAM Free: 566MB | Used: 10873MB | Util  95% | Total 11439MB
Run Code Online (Sandbox Code Playgroud)

但今天:

Gen RAM Free: 12.2 GB  I Proc size: 131.5 MB
GPU RAM Free: 11439MB | Used: 0MB | Util   0% | Total 11439MB
Run Code Online (Sandbox Code Playgroud)

我认为最可能的原因是GPU在VM之间共享,因此每次重新启动运行时都有机会切换GPU,并且您也有可能切换到其他用户正在使用的GPU.

更新:事实证明,即使GPU RAM Free为504 MB,我也可以正常使用GPU,我认为这是我昨晚获得的ResourceExhaustedError的原因.


Aja*_*pa1 6

如果你执行一个只有
!kill -9 -1的单元格
,那将导致所有运行时的状态(包括内存,文件系统和GPU)被清除并重新启动.等待30-60秒,然后按右上角的CONNECT按钮重新连接.

  • 谢谢你,但你的建议不会改变任何事情.我仍然获得5%的GPU RAM. (2认同)