首页 文章

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

提问于
浏览
51

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

阅读有关Google Colaboratory提供免费Tesla K80 GPU的多个激动人心的公告,我试图在它上面运行fast.ai课程,因为它永远不会完成 - 快速耗尽内存 . 我开始调查原因 .

最重要的是,“免费特斯拉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()

在运行任何其他代码之前在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 . 例如帮助我调试的人来自印度,他得到了整个事情!

note :请不要't send any more suggestions on how to kill the potentially stuck/runaway/parallel notebooks that might be consuming parts of the GPU. No matter how you slice it, if you are in the same boat as I and were to run the debug code you' d看到你仍然得到总共5%的GPU RAM(截至此更新仍然如此) .

9 回答

  • 5
    !pkill -9 -f ipykernel_launcher
    

    这释放了空间

  • 2

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

    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 RAM Free为504 MB,我也可以正常使用GPU,我认为这是我昨晚获得的ResourceExhaustedError的原因 .

  • 2

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

    答案很简单:

    As of this writing Google simply gives only 5% of GPU to some of us, whereas 100% to the others. Period.

  • 2

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

  • -4

    我也有

    GPU RAM免费:16MB |使用:11423MB |使用100%|总计11439MB

    我怀疑当每个用户都获得专用虚拟机时,所有虚拟机都是普通硬件机的多租户...所以共享32 GB的特斯拉K80 .

    有点令人失望 .

    结果我放弃使用谷歌colab! :O(

  • 16

    Google的误导性描述 . 我猜,我也太兴奋了 . 设置一切,加载数据,现在由于只有500Mb内存分配给我的笔记本电脑,我无法做任何事情 .

  • 2

    找到Python3 pid并杀死pid . 请看下面的图片
    enter image description here

    注意:只杀死python3(pid = 130)而不是jupyter python(122) .

  • 0

    重启Jupyter IPython内核:

    !pkill -9 -f ipykernel_launcher
    
  • 10

    我相信如果我们打开多个笔记本电脑 . 关闭它实际上并没有停止这个过程 . 我还没弄明白如何阻止它 . 但我使用top来查找运行时间最长的python3的PID并使用大部分内存并将其杀死 . 一切都恢复正常了 .

相关问题