用于机器学习项目的 Google Colab

您是否曾想要一个易于配置的交互式环境来运行您的机器学习代码,并且还能免费使用 GPU?Google Colab 就是您一直在寻找的答案。它是云上运行 Jupyter notebook 的一种便捷易用的方式,其免费版本还提供一些有限的 GPU 访问权限。

如果您熟悉 Jupyter notebook,那么学习 Colab 将会轻而易举,我们甚至可以导入 Jupyter notebook 在 Google Colab 上运行。但是,Colab 还有很多巧妙的功能,我们将在本文中进行探讨。让我们开始吧!

完成本教程后,您将学习如何

  • 通过 Google Colab 的免费 GPU 套餐加速训练
  • 使用 Google Colab 的扩展程序保存到 Google Drive、为 pandas DataFrame 提供交互式显示等。
  • 在训练 Google Colab 模型时保存模型进度

通过我的新书 Python for Machine Learning **开始您的项目**,其中包含分步教程以及所有示例的Python源代码文件。

让我们开始吧!

用于机器学习项目的 Google Colab
照片由 NASA 拍摄,由 Thomas Thomopoulos 处理。部分权利保留。

概述

本教程分为五个部分;它们是:

  • 什么是 Google Colab?
  • Google Colab 快速入门指南
  • 探索您的 Colab 环境
  • 有用的 Google Colab 扩展程序
  • 示例:将模型进度保存到 Google Drive

什么是 Google Colab?

来自“欢迎来到 Colab” notebook

Colab notebook 允许您在单个文档中结合可执行代码丰富的文本,以及图像、HTML、LaTeX 等。当您创建自己的 Colab notebook 时,它们会存储在您的 Google Drive 帐户中。您可以轻松地与同事或朋友共享您的 Colab notebook,让他们可以评论甚至编辑您的 notebook。

我们可以像使用 Jupyter notebook 一样使用 Google Colabs。它们非常方便,因为 Google Colab 会托管它们,所以我们不需要使用自己的计算机资源来运行 notebook。我们还可以共享这些 notebook,以便其他人可以轻松运行我们的代码,并且由于它不依赖于我们自己的本地机器,因此具有标准的运行环境。但是,在初始化期间我们可能需要在我们的环境中安装一些库。

想开始学习机器学习 Python 吗?

立即参加我为期7天的免费电子邮件速成课程(附示例代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

Google Colab 快速入门指南

要创建您的 Google Colab 文件并开始使用 Google Colab,您可以转到 Google Drive 并创建一个 Google Drive 帐户(如果您还没有)。现在,单击 Google Drive 页面左上角的“新建”按钮,然后选择“更多 ▷ Google Colaboratory”。

创建新的 Google Colab Notebook

然后您将进入新的 Google Colab 文件页面

新的 Google Colab Notebook

从这里,您可以通过右上角的“共享”按钮与他人共享您的 Google Colab 文件,或开始编码!

Colab 和 Jupyter notebook 的快捷键很相似。以下是一些有用的快捷键:

  • 运行单元格:Ctrl + Enter
  • 运行单元格并在下方添加新单元格:Alt + Enter
  • 运行单元格并转到下一个单元格:Shift + Enter
  • 将行缩进两个空格:Ctrl + ]
  • 将行取消缩进两个空格:Ctrl + [

但还有一个非常实用的快捷键,可以只运行单元格中特定选定的代码部分。

  • 运行单元格的选定部分:Ctrl + Shift + Enter

与 Jupyter notebook 一样,您也可以使用 Markdown 单元格编写文本。但 Colab 还有一个附加功能,可以根据您的 Markdown 内容自动生成目录,您还可以根据 Markdown 单元格中的标题隐藏代码部分。

Google Colab 的 Markdown 和目录

如果您在自己的计算机上运行 Jupyter,您别无选择,只能使用您计算机的 CPU。但在 Colab 中,您可以将运行时更改为包含 GPU 和 TPU 以及 CPU,因为它是在 Google 的云上执行的。您可以通过转到“运行时 ▷ 更改运行时类型”来切换到不同的运行时。

更改 Google Colab 的运行时类型

然后,您可以从不同的硬件加速器中进行选择,以配置您的环境。

为 Google Colab Notebook 环境添加 GPU/TPU

与您的计算机不同,Google Colab 不提供终端来输入命令来管理您的 Python 环境。要安装 Python 库和其他程序,我们可以使用!字符像在 Jupyter notebook 中一样运行 shell 命令,例如!pip install numpy(但正如我们稍后将看到的,Colab 已经预装了许多我们需要的库,例如 NumPy)。

现在我们知道了如何设置 Colab 环境并开始运行一些代码,让我们来探索一下这个环境吧!

探索您的 Colab 环境

由于我们可以使用!运行一些 shell 命令,使用wget命令可能是获取数据最简单的方法。例如,运行此命令会将 CSV 文件下载到 Colab 环境中。

要探索虚拟机器上 Colab 文件的当前工作目录,请点击屏幕左侧的文件图标。默认情况下,Colab 会提供一个名为sample_data的目录,其中包含一些文件。

Google Colab Notebook 的文件标签页

这是我们 Colab notebook 的当前工作目录。您可以使用 notebook 中的以下代码通过 Python 读取其中一个文件:

稍后我们将看到如何使用 Colab 扩展程序将我们的 Google Drive 挂载到此目录,以便存储和访问我们的 Google Drive 帐户中的文件。

通过运行!的 shell 命令,我们还可以查看我们 Colab 环境的硬件配置。要查看 CPU,我们可以使用:

我的环境的输出如下:

我们还可以使用以下命令检查运行时是否连接了 GPU:

如果您有 GPU,输出如下:

这些只是我们可以用来探索 Colab 环境的一些 shell 命令的示例。还有许多其他命令,例如!pip list用于查看 Colab 环境可以访问的库,标准的!ls用于探索工作目录中的文件等等。

有用的 Colab 扩展程序

Colab 还附带了许多非常实用的扩展程序。其中一个扩展程序允许我们将 Google Drive 挂载到我们的工作目录。我们可以使用以下方法进行操作:

然后,Colab 会请求访问您的 Google Drive 文件的权限,您可以在选择要授予访问权限的 Google 帐户后进行操作。在授予所需权限后,我们就可以在左侧的文件选项卡中看到已挂载的 Google Drive。

Google Drive 挂载到 Google Colab Notebook 的当前工作目录

然后,要将文件写入 Google Drive,我们可以这样做:

此代码片段将 `Hello World!` 写入 Google Drive 顶层的 `test.txt` 文件中。同样,我们也可以使用以下方法从 Google Drive 中的文件中读取:

输出如下:

这基于我们之前的示例。

此外,Google Colab 还附带了一些扩展程序,可提供更好的 notebook 使用体验。如果我们经常使用 pandas DataFrame,有一个扩展程序可以显示交互式表格。要使用它,我们可以使用魔术函数:

这会启用 DataFrame 的交互式显示,然后当我们运行:

这将把 DataFrame 显示为一个交互式表格,我们可以在其中按列进行筛选,查看表格中的不同行等等。

Google Colab 中 pandas DataFrame 的交互式界面

要稍后禁用此功能,我们可以运行:

当我们再次显示相同的 DataFrame X 时,我们会看到标准的 Pandas DataFrame 界面。

pandas DataFrame 的标准界面

示例:将模型进度保存到 Google Drive

Google Colab 可能是为您的机器学习项目提供强大 GPU 资源的最佳方式。但在 Colab 的免费版本中,Google 会限制您在每个会话中使用 Colab notebook 的时间。您的内核可能会无缘无故终止。我们可以重新启动 notebook 并继续工作,但可能会丢失内存中的所有内容。如果您需要长时间训练模型,这会是一个问题。您的 Colab 实例可能会在训练完成前意外终止。

通过使用 Google Colab 扩展程序挂载 Google Drive 并使用 Keras ModelCheckpoint 回调,我们可以将模型进度保存到 Google Drive。这对于解决 Colab 超时问题特别有用。对于付费的 Pro 和 Pro+ 用户来说,它的限制更少,但总有可能我们的模型训练在随机时间 midway 中止。如果我们不想丢失部分训练好的模型,这一点就非常有价值。

在此演示中,我们将使用 MNIST 数据集上的 LeNet-5 模型。

然后,要在训练期间将模型进度保存到 Google Drive,我们首先需要将 Google Drive 挂载到我们的 Colab 环境。

之后,我们声明回调函数,将检查点模型保存到 Google Drive。

接下来,我们开始在 MNIST 数据集上进行训练,并使用检查点回调,以确保万一我们的 Colab 会话超时,我们可以从最后一个 epoch 继续。

这训练了我们的模型并给出了输出

从输出中,我们可以看到检查点已被保存。查看我的 Google Drive 文件夹,我们也能看到检查点存储在那里。

存储在 Google Drive 中的检查点

Colab 实例运行在谷歌的云环境中。它运行的机器有一些存储空间,所以我们可以安装一个包或下载一些文件到里面。但是,我们不应该把检查点保存在那里,因为我们不能保证在会话终止后还能取回它们。因此,在上面,我们将 Google Drive 挂载到实例中,并将检查点保存在我们的 Google Drive 中。这样我们就可以确保检查点文件是可访问的。

在这里,我们附上模型训练并保存到 Google Drive 的完整代码

如果模型训练中途停止,我们可以通过重新编译模型并加载权重来继续,然后我们可以继续训练

进一步阅读

如果您想深入了解,本节提供了更多关于该主题的资源。

文章

总结

在本教程中,您学习了什么是 Google Colab,如何利用 Google Colab 通过其免费套餐获得免费的 GPU 访问权限,如何将 Google Colab 与您的 Google Drive 帐户一起使用,以及如何在 Google Colab 笔记本中将模型保存到 Google Drive 以便在训练期间存储模型进度。

具体来说,你学到了:

  • 什么是 Google Colab,以及如何开始使用它
  • 如何使用 bash 命令和 ! 探索您的 Google Colab 笔记本环境
  • Google Colab 自带的实用扩展
  • 在训练期间将模型进度保存到 Google Drive

掌握机器学习 Python!

Python For Machine Learning

更自信地用 Python 编写代码

...从学习实用的 Python 技巧开始

在我的新电子书中探索如何实现
用于机器学习的 Python

它提供自学教程数百个可运行的代码,为您提供包括以下技能:
调试性能分析鸭子类型装饰器部署等等...

向您展示高级 Python 工具箱,用于
您的项目


查看内容

5 条对Google Colab for Machine Learning Projects的回复

  1. Radek 2022 年 4 月 29 日下午 7:41 #

    感谢您对使用 Google Colab 功能的出色介绍,特别是 GPU 使用方面。但我不太确定最后的代码是否实际使用了注册的检查点。根据我的测试,似乎整个训练过程是从头开始实现的,而不是从第 5 个 epoch 开始的。我说错了吗?

    • Zhe Ming Chng 2022 年 5 月 1 日上午 5:02 #

      你好 Radek,谢谢你的评论!如果你加载了权重,训练过程就是从已训练的模型停止的地方开始(带有已训练的权重),它会从 epoch 1 开始计数,但模型应该会加载已训练的权重(你可以通过使用 model.evaluate 来查看模型性能,然后再继续训练)。要存储完整的模型状态,我认为你需要将 ModelCheckpoint 中的 save_weights_only 参数设置为 False 来保存完整模型。

  2. saimen 2022 年 8 月 6 日下午 6:40 #

    这对任何人来说都是一个很好的入门指南。谢谢!

    • James Carmichael 2022 年 8 月 7 日上午 7:09 #

      谢谢你的支持和反馈 saimen!我们非常感激!

  3. Pravin 2022 年 11 月 10 日下午 2:34 #

    你好 Zhe Ming,

    我正试图升级到 GPU,但支付门户只列出了美国。
    如何支付 Colab Pro。

    谢谢
    Pravin

Leave a Reply

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。