Google Colab:从本地上传 Pytorch 模型后“无法连接到运行时”

Posted

技术标签:

【中文标题】Google Colab:从本地上传 Pytorch 模型后“无法连接到运行时”【英文标题】:Google Colab: "Unable to connect to the runtime" after uploading Pytorch model from local 【发布时间】:2018-11-13 11:20:25 【问题描述】:

我正在使用一种简单(不一定有效)的方法来保存 Pytorch 模型。

import torch
from google.colab import files

torch.save(model, filename) # save a trained model on the VM
files.download(filename) # download the model to local

best_model = files.upload() # select the model just downloaded
best_model[filename] # access the model

Colab 在执行最后一行期间断开连接,点击RECONNECT 选项卡始终显示ALLOCATING -> CONNECTING(失败,左下角显示“无法连接到运行时”消息)-> @ 987654325@。同时,执行任何一个单元格都会给出错误消息“无法执行单元格,无法将执行消息发送到运行时:[object CloseEvent]”

我知道这与最后一行有关,因为我可以成功连接到我的其他不执行该操作的谷歌帐户。

为什么会这样?执行完最后一行的 google 帐户似乎无法再连接到运行时。

编辑:

一晚后,我可以在会话到期后重新连接谷歌帐户。我刚刚尝试了评论中的方法,发现只有files.upload() Pytorch 模型会导致问题。上传完成后,Colab 将断开连接。

【问题讨论】:

您可以尝试使用files.upload 将文件写入磁盘,然后使用适当的方法(pickle、torch.load、...)加载它?只是:files.upload(); pickle.load(....) 谢谢,如果问题确实是最后一行,我认为这是一个不错的选择。但是,我刚刚发现files.upload() Pytorch 模型可以断开笔记本。请查看我的编辑。 【参考方案1】:

尝试禁用您的广告拦截器。为我工作

【讨论】:

并确保 chrome 没有要求您重新进行身份验证。或者只是确保您在使用的任何浏览器中都经过身份验证【参考方案2】:

(我在阅读您的更新之前写了这个答案。认为它可能会有所帮助。)

files.upload() 仅用于上传文件。我们没有理由期望它会返回一些 pytorch type/model

当您调用 a = files.upload() 时,a 是一个文件名字典 - 一个大字节数组。

'my_image.png': b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR....' 
type(a['my_image.png'])

就像你做open('my_image', 'b').read()时一样

所以,我认为下一行 best_model[filename] 尝试打印整个巨大的字节数组,这让 colab 出了问题。

【讨论】:

谢谢,我想你是对的,打印大字节数组是问题的原因。我必须使用best_model = files.upload() 而不仅仅是files.upload() 以避免打印,并将best_model[filename] 替换为best_model = torch.load(filename)。现在我可以导入保存的模型了 :)

以上是关于Google Colab:从本地上传 Pytorch 模型后“无法连接到运行时”的主要内容,如果未能解决你的问题,请参考以下文章

将多标签图像从云端硬盘上传到 Google Colab

将数据从 google colab 导出到本地计算机

Colab / Google Cloud SDK - 本地运行时总是“忙” - 无法重新启动

上传图像数据集后,Google colab 内存已满

如何从 Google Colab 下载多个文件或整个文件夹?

从 Google Drive 读取图像时,Google Colab 太慢了