Colab不会通过不同的会话共享同一帐户上的存储空间

时间:2019-09-07 07:11:04

标签: google-colaboratory

我在Google云端硬盘上创建了2个Colab文件。几天前,他们共享相互存储,当我在该文件上创建文件夹时,我可以在另一个文件上看到它。但是从昨天开始,他们不再喜欢这样,他们不再共享存储空间。

我尝试创建2个新文件,或重置所有运行时,但是结果仍然相同。

2 个答案:

答案 0 :(得分:1)

实际上,Colabs使用的运行时类型与在同一VM上运行时相同,因此可以共享文件。但是,这是一个安全漏洞。实际上,请考虑以下情形:

  • 您在Colab上运行了一个私人笔记本,这会将机密数据写入磁盘。
  • 同时,您运行一个由黑客编写的公共笔记本,它会读取磁盘上的内容并将其发送给黑客。

此外,共享相同的VM意味着共享相同的GPU。 TensorFlow之类的库在启动时会抢占所有GPU RAM,因此第一个Colab可以正常运行,而第二个Colab将没有GPU RAM。

可能是由于这些原因,看来Google已决定在2019年8月至9月左右为每个Colab拥有一个单独的VM(但我尚未找到有关此更改的正式公告)。对于每种运行时类型,似乎最多可以同时运行5个会话,这意味着您最多可以运行15个VM。

不幸的是,尽管此选择解决了上述问题,但确实使Colab笔记本彼此之间的通信更加困难。正如@BobSmith所建议的那样,一种解决方案是通过Google云端硬盘进行通信。方法如下:

首先,在每个笔记本的开头运行此命令(这将要求您单击链接,授权Colab访问您的Google云端硬盘,并提供一个您需要复制并粘贴回Colab的授权代码):

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

几秒钟后,您会收到以下消息:

Mounted at /content/drive

在执行其他任何操作之前,请确保在两个Colab中都执行此操作。

现在查看此文件夹的内容:

!ls /content/drive

在我的情况下,输出:

'My Drive'

现在您在/content/drive/My Drive文件夹中写的任何内容都可以在两个Colabs中看到。例如,尝试在一个Colab上运行此代码:

!echo "Hello World!" > "/content/drive/My Drive/this_is_a_test"

然后在另一个Colab上运行此

!cat "/content/drive/My Drive/this_is_a_test"

它将输出“ Hello World!”,表明Colabs可以通过Google云端硬盘共享数据。

答案 1 :(得分:0)

是的,不同的笔记本使用不同的后端。对于文件共享,您可以使用以下代码段将Google云端硬盘连接到文件系统,从而将文件放入云端硬盘中:

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