我可以运行Google Colab(免费版)脚本,然后关闭计算机吗?

时间:2019-03-07 18:58:23

标签: python google-colaboratory

我可以运行Google colab(免费版)脚本,然后关闭计算机吗?

我正在使用交叉验证来训练几个深度学习模型,因此我想知道是否可以在云中同时运行训练的情况下关闭窗口或计算机。

4 个答案:

答案 0 :(得分:4)

  

已编辑:关闭浏览器后,Colabs实例最多运行 12小时 90分钟,然后您的运行时才被视为空闲并被回收。

同时,最好定期保存模型权重以避免丢失工作。


详细信息:

“闲置”和“最长寿命”持续时间没有官方参考,但是testing done by Korakot Chaovavanich显示:

  • 正在运行的笔记本电脑的“最长寿命” 12小时(浏览器处于打开状态)
  • '空闲'笔记本实例在 90分钟
  • 后中断
  • 您最多可以同时运行 2台笔记本电脑
  • 如果关闭笔记本窗口并在实例仍在运行时将其打开,则单元格输出和变量仍将保留。但是,如果笔记本实例已回收,您的单元格输出和变量将不再可用。

您可以尝试的一种偷偷摸摸的变通办法是在您的移动浏览器中打开Colabs实例,以防止将该实例视为“空闲”。


您自己的里程会有所不同,因为根据个人经验,我有时会缩短工期。但是,只要检查模型(定期保存训练权重),您就应该能够在回收VM之前进行大量的训练,之后您可以将权重简单地加载到新VM实例上的模型中并恢复培训。

但是,如果您想一次训练模型超过12个小时,可以使用run Google Colaboratory on a local instance或标准的Jupyter Notebook。但是您会放弃Colaboratory提供的免费GPU / TPU。 (在这里检查点仍然是个好主意!)


来自Google Colaboratory FAQ的相关问题:

  

我的代码在哪里执行?如果关闭浏览器窗口,执行状态会怎样?

     

代码在专用于您的帐户的虚拟机中执行。虚拟机在闲置一段时间后将被回收,并且具有由系统强制执行的最长生存期。

     

我应该如何使用GPU,为什么有时不可用?

     

协作室旨在用于交互使用。长期运行的背景   尤其是在GPU上的计算可能会停止。请不要使用   加密货币挖矿的合作伙伴。不支持这样做,并且   可能会导致服务不可用。我们鼓励希望   通过Colaboratory的UI运行连续或长期运行的计算   使用本地运行时。

答案 1 :(得分:2)

打开浏览器控制台,然后复制并粘贴下面的代码,这将避免您因空闲而被踢开。

function ClickConnect() {
console.log("Working"); 
document
  .querySelector('#top-toolbar > colab-connect-button')
  .shadowRoot.querySelector('#connect')
  .click() 
}
setInterval(ClickConnect, 60000)

Ps。无论如何,您都会在12小时后被踢,因此请确保将进度保存到Google云端硬盘。

答案 2 :(得分:1)

外壳循环

对我来说,我选择 ,chroot 通过 ssh Ngrok 进入 VM 并在后台运行命令 shell(循环)
while true;do sleep 300; done & 我正在使用&` for 在后台运行此命令 这样我就可以退出 colab 的网站并让 VM 工作 12 小时

ssh Ngrok

在 colab 中使用 ssh 的最佳方式,您必须在 ngrok.com 中登录一次并获取您的 OAuth 密钥并将此单元格添加到您的 colab 笔记本

#@title **SSH**

! pip install colab_ssh --upgrade &> /dev/null

Ngrok = True  

try:
    if username:
        pass
    elif password:
        pass
except NameError:
    !echo "root:root"   | chpasswd
    username='root'
    password='root'




#@markdown [OAuth](https://dashboard.ngrok.com/auth)
ngrokToken = "" #@param {type:'string'}


def runNGROK():
    from colab_ssh import launch_ssh
    from IPython.display import clear_output
    launch_ssh(ngrokToken, password)
    clear_output()

    print("ssh", username, end='@')
    ! curl -s http://localhost:4040/api/tunnels | python3 -c \
            "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'][6:].replace(':', ' -p '))"










if Ngrok:
    if ngrokToken == "":
        print("No ngrokToken Found, Please enter it")
    else:
        runNGROK()

现在在 colab cell 的 Edite 文本中通过您的 OAuth 密钥,3-9 秒后您会看到这样的 ssh

ssh root@2.tcp.ngrok.io -p 13225

不要忘记更改root用户的密码(默认为root),为了更安全,您应该通过:!echo "root:new password" | chpasswd 更改root用户password =password='new password'和python变量的linux密码,您必须匹配linux password 和 var python password ,看看上面的这个ligne:

print("No user found using username and password as 'root'")
    !echo "root:t"   | chpasswd
    username='root'
    password='root'

答案 3 :(得分:1)

在python中使用多进程创建另一个函数并在那里启动while循环! while 循环不会让它睡觉!