Google Colaboratory:关于GPU的误导性信息(只有5%的RAM可供一些用户使用)

2024-05-16 23:46:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我读了很多关于Google Colaboratory提供免费Tesla K80 GPU的激动人心的公告,我试着在上面运行fast.ai课程,让它永远无法完成——快速耗尽内存。我开始调查原因。

归根结底,“免费特斯拉K80”并不是对所有人都“免费”的——对一些人来说,只有一小部分是“免费”的。

我连接到来自加拿大西海岸的Google 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()

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

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

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

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

你看到我从GPUtil那里借来的GPU RAM可用性计算有什么缺陷吗?

如果你在Google Colab笔记本上运行这个代码,你能确认你得到了相似的结果吗?

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

更新:我不知道为什么我们中的一些人会得到其他用户的1/20。e、 帮我调试这个的人是从印度来的,他得到了全部!

注意:请不要再就如何杀死可能占用部分GPU的潜在卡住/失控/并行笔记本提出任何建议。不管你如何分割它,如果你和我在同一条船上,并运行调试代码,你会看到,你仍然得到总的5%的GPU内存(截至本次更新仍然)。


Tags: 内存用户importfreegpugoogle笔记本mb
3条回答

所以为了防止另外十几个答案提示无效,在这个线索的上下文中建议!杀掉-9-1,让我们关闭这个线程:

答案很简单:

在撰写本文时,Google只向我们中的一些人提供了5%的GPU,而向其他人提供了100%的GPU。周期。

2019年12月更新:问题仍然存在-这个问题的支持率仍然存在。

2019年3月更新:一年后,一名谷歌员工@AmiF对事态发展发表了评论,称问题并不存在,任何似乎有这个问题的人都需要简单地重置运行时来恢复内存。然而,支持票还在继续,这对我来说说明问题仍然存在,尽管@AmiF的建议与此相反。

2018年12月更新:我有一个理论认为,当谷歌的机器人检测到一个非标准行为时,它可能会有一个特定账户的黑名单,或者浏览器指纹。这可能完全是巧合,但在相当长的一段时间里,我在任何碰巧需要谷歌重新验证码的网站上遇到了问题,在那里,我必须经过几十个谜题才能被允许通过,通常需要10多分钟才能完成。这持续了好几个月。从这个月开始,我突然一点也没有谜题,任何谷歌重新验证码都只需点击一次鼠标就可以解决,就像一年前一样。

我为什么要讲这个故事?好吧,因为同时我在Colab上获得了100%的GPU RAM。这就是为什么我怀疑,如果你在一个理论上的谷歌黑名单上,那么你不被信任,可以免费得到很多资源。我想知道你们中是否有人发现有限的GPU访问和重新验证的噩梦之间有同样的关联。正如我所说,这也可能完全是巧合。

如果您执行的单元格只有
!杀死-9-1 在它中,这将导致清除并重新启动所有运行时状态(包括内存、文件系统和GPU)。等待30-60秒,然后按右上角的“连接”按钮重新连接。

昨晚我查了你的片段,得到了你想要的:

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

但今天:

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

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

更新时间: 结果我可以正常使用GPU,即使GPU的RAM空闲是504mb,我认为这是我昨晚遇到的resourceewesterror的原因。

相关问题 更多 >