逆向工程:揭示Google Colab未公开的秘密

本文深入探讨了Google Colab的内部结构,通过逆向工程揭示了其未公开的秘密。作者发现并利用了Colab的API,展示了如何访问和控制Colab实例的后端服务,包括文件服务器、Jupyter接口以及端口转发。文章通过实验演示了如何绕过限制,直接访问和使用Jupyter Notebook的用户界面,提供了对Colab更深层次的理解。
摘要由CSDN通过智能技术生成

c6748923fcec975cc166b390d48604f3.jpeg

来源|Open Source Data Science Tools

翻译|程浩源

Google Colaboratory,简称 “Colab” ,是一个免费的Jupyter notebook云平台。Colab 不仅可以为用户提供 Python 和 R notebooks 的运行环境,而且还允许用户免费共享部分 GPU 和 TPU 资源。

对于负责在 Jupyter Notebook 编程的数据科学家来说,Colab早已成为了默认的运行环境。然而,将 Colab 的算力运用到除 Jupter Notebooks 以外的其他应用,则是一件极其困难的事。

对于那些想生产模型,并将其带出Notebook阶段的机器学习工程师而言,这样的问题尤为明显。虽然 Notebooks 非常适合用来探索,但将它与训练过程编入正式流水线的高级MLOps工具一起使用时,效果不佳。

在遇到类似问题后,我决定不让 Colab 的局限性改变我的工作流程,而是尝试围绕我的工作流程去改变 Colab!

出于这个原因,今天我们将探究 Google Colab 的内部结构,并尝试稍微改变 Colab 的内置规则。需要提前声明的是,我们只是想探究 Colab,不会对 Colab 本身或者它的用户造成任何影响。

1

揭开幕后的秘密

Colab 的秘密在于它的后端:谷歌服务器为 Colab 提供基础设施支持,让用户可以轻松运行代码。因此,我们第一步先分析 Colab 的 API,最简单的方法是检查 Colab 在正常运行期间进行的 API 调用。

首先打开谷歌开发者工具,找到网络(Network)选项,然后运行一段代码,开发者工具开始记录 Colab 发出的每个请求,然后我们发现了一些有趣的东西。

41fa1f8b54985f18bbb3e2af24a83484.gif

bc535d4be24ccb05a3978f59b4e6f9bc.png

看上去这个URL(/tun/m/<id>/socket.io)是远程机器上运行的 Jupyter socket 的代理。

如果我们从 Colab 界面的左窗格打开 Files 窗格(默认显示 /content 目录),就会发现另一个有趣的请求:

56ab97fb7854a67fdc813896cdd9a9b4.gif

2d032af35ffd6e86cfa7926c81d254d7.png

这次 JSON 枚举远程主机上的文件做出了响应。这个URL(/tun/m/<id>/api/contents/)似乎指向提供文件元数据的服务。

7664fb505fc3b6efb15a52b1d2560d69.png

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值