Loading

谷歌Colab pro

一、简介

        Colab 是谷歌推出的一款在线深度学习工具,提供Tesla V100 、T100等GPU,现在国内大量人使用,已经被玩坏了。今年四月份的时候,使用Colab还不用开Pro,就能使用十几个小时的GPU,现在只能使用cpu了。而且经常分不到资源,经常会断开。目前可能由于显卡短缺的原因,不容易预约到Tesla V100,经常是Tesla P100 (16GB),而且有时候不能多开3个GPU窗口了。训练网络时候,Tesla V100速度是P100的近3倍。

        今天开了Pro,频繁断开连接依旧没有得到缓解,感觉9.9刀打了水漂。最恶心的是,这个还联系不了客服,真的是有苦说不出,哎,资本家的羊毛难薅!!!不过最好的一点就是,一旦在跑代码就不会断开,所以空闲时频繁断开是为了提高GPU的利用率?真当是操作系统并发执行呢?

        好吧,Colab Pro 有点卵用,我笔记本的显卡是GTX1050,在我的实验中,Colab pro使用的GPU速度是我的本机的两倍。运行下面代码,所用时间是我的1/3000,也说明比我本机计算快了近3000倍。所以就觉得很奇怪,怎么就只提升了2倍呢?可能我的实验中,主要时间在其他方面?现在还不清楚,我把数据从谷歌硬盘加载到了colab虚拟机,所以应该不存在频繁I/O浪费大量时间。后面会提到这一点。

        总而言之,Colab 现在槽点一大堆,坑多的一批,最恶心的就是频繁掉线,说好的24小时,现在2-4秒就给我一断????呸,恶心!

import torch
import torchvision
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'
import numpy as np
print(torch.__version__)
print(torch.cuda.is_available())
print(torchvision.__version__)

import torch
# 以下代码只有在PyTorch GPU版本上才会执行
import time

a = torch.randn(10000, 50000)
b = torch.randn(50000, 2000)

device = torch.device('cuda')
a = a.to(device)
b = b.to(device)

t0 = time.time()
c = torch.matmul(a, b)
t1 = time.time()
print(a.device, t1 - t0, c.norm(2))

二、谷歌硬盘

        先讲下谷歌硬盘,进入Colab之后右上角会看到如下的界面,点击那两个黄色的圈圈可以直接进入谷歌硬盘,进入谷歌硬盘之后就可以把自己的项目从本地传到云端硬盘。然后再Colab中就可以直接访问云端的资源,执行云端的代码!

 三、连接云盘

        进入Colab之后,点击如下红色框内的图标会生成下列代码,如果没有生成也可以复制到Colab笔记本执行即可连接云盘。这个时候只需要打开生成的URL,使用谷歌账号登录到目标云盘,可以是别人的云盘,输入验证码即可连接到云盘,云盘的根目录是 content,云盘目录是content/drive/MyDrive 。Colab笔记本代码会保存在Colab NoteBooks下面。而目录的data 、check是我自己生成的目录,这些目录一旦资源释放,就会全部被清空。

from google.colab import drive
drive.mount('/content/drive')

 ​​

 四、实验与代码

         这里应该是最重要的内容了,在Colab跑自己的代码其实非常容易,我们就好比实在临时服务器上操作一模一样。在Colab笔记本中,我们既可以写Python代码,也可以写终端命令也就是cmd命令,其中Python代码可以直接写在代码行中,而终端命令需要在前面加上英文感叹号 ! , 现在需要先掌握几个命令:

        pwd 命令用来查看当前的工作路径:

         !mkdir  XXX  新建文件夹,XXX是你的路径与文件名,例如下图是在根目录下创建data文件夹。

#设置根目录为此路径,即工作路径
import os
os.chdir('/content/drive/MyDrive/paper/fastswa_semi_metric_files/')

 上面代码是设置云端硬盘项目主目录为工作根目录,这样子的话就无需改动,项目里面的路径了,对了项目中要使用相对路径,否则会报错。如实在需要使用绝对路径,那么一定要是 /content/drive/MyDrive/ 开头。这样的话,我们就进入到了我们的项目中了,再执行下面的命令就可以运行我们的mian.py 了,前面感叹号一定要是英文感叹号。

! python main.py

如此一来就可以在Colab中连接到谷歌云端硬盘,然后再进入项目主目录运行我们的代码了。但是又有个问题来了,就是我们的Colab服务器与云端硬盘并不是在一台服务器上,所以如果我们的项目中有大量的数据需要读取,那么这个I/O操作是非常消耗时间的。这个时间简直让人疯了,比我本机还慢,所以为了解决这个问题,需要把云端的数据加载到上文的 content 路径下,例如上文的data 目录下。首先把数据打包成zip压缩包上传到云端硬盘中,例如我的数据是data-local.zip,放在Demo路径下,使用如下命令进行copy到./data/下,也就是content/data路劲下,Linux中./表示主目录content/。

!cp /content/drive/MyDrive/paper/Demo/data-local.zip ./data/

 然后再进入到./data目录下,解压data-local.zip数据,这个过程都很快,前面copy数据也非常快,然后就需要改一下代码中的读取数据的路径了,改成./data/data-local/XXX 即可读取,这时候运行起来就非常快了!

!cd ./data && unzip data-local.zip

五、总结

        买了一个月的Pro,一句话,甭管是不是Pro他都会给你断开连接。我四月份使用的是宿舍的100M带宽,不会出现这个情况,连接的好好的。现在是50M的带宽,VPN也是正常的,访问YouTube也非常丝滑,一开始我怀疑是我的网络问题,后面我觉得应该是使用的人太多了,资源不够分配了,所以才频繁断开又重新连接。但是资源不会释放,如果在它正常连接时间内把代码跑起来了,那么会一直连接,不会出现断开的情况,除非超过24小时使用才会强制断开。

        总之吧,要问我买了Pro值不值?我个人觉得暂时一点都不值的,体验感为0,频繁断开已经彻底激怒了我!早点弃坑!需要借用账号的可以私聊我,资本家的羊毛不用白不用!

 

 

posted @ 2021-07-18 22:19  cheney-pro  阅读(581)  评论(0编辑  收藏  举报