Google Cloud和数据科学(入门指南)

本文概述

  • Google Compute Engine
  • 虚拟机, 磁盘, 映像和快照
  • GCP上的第一个VM入门
  • 创建一个实例
  • Google的Cloud Shell
  • Debian软件包
  • 总结
尽管AWS EC2是云计算的领导者, 但Google Cloud开发了一个非常引人注目的竞争性强的云计算平台。
在本教程中, 你将学习如何:
  • 在Google Compute Engine(GCE)上创建实例,
  • 安装基于Anaconda Python发行版的数据科学环境, 并
  • 运行可在线访问的Jupyter笔记本。
对于数据科学项目, 在云中而不是在你自己的计算机上工作有两个主要优点:
  1. 可扩展性:你可以根据自己的即时需求调整实例的功能(RAM, CPU, GPU)。从小型廉价实例开始, 并随着项目的发展添加内存, 存储器, CPU或GPU。
  2. 可重复性:任何数据科学项目的关键条件。允许其他数据科学家审查你的模型并重现你的研究是成功实施的必要条件。通过在虚拟实例上设置工作环境, 你可以确保其他团队成员可以轻松共享, 复制和审核你的工作。
Google Compute Engine 尽管EC2和GCE围绕相同的概念和元素(实例, 图像和快照)构建, 但在访问和资源组织上却有所不同。
Google Cloud Platform(GCP)的一个关键方面是以项目为中心的组织。所有账单, 权限, 资源和设置都在一个用户定义的项目中分组, 该项目基本上充当全局名称空间。这不仅简化了你使用的资源(存储, 数据库, 实例等)的互连映射, 而且还简化了从基于角色的权限到实际ssh密钥和安全性的访问管理。当涉及到用户友好性以及访问和角色管理时, 我发现使用GCP比使用AWS更容易, 尤其是使用多种服务时。
GCP还提供某些与数据科学特别相关的服务, 包括但不限于:
  • Dataprep建立数据处理管道,
  • 用于数据探索的Datalab,
  • 基于TensorFlow构建的Google机器学习引擎
  • BigQuery一种数据仓库解决方案, 其中包含许多引人入胜的大数据数据集。
低学习曲线和数据友好的服务使GCP成为数据科学家工具箱中必不可少的东西。
在开始启动实例和安装Python软件包之前, 让我们花一些时间来回顾一下Cloud Computing中使用的一些常用词汇。
虚拟机, 磁盘, 映像和快照 虚拟机(VM)也称为” 实例” , 是根据需要激活的按需服务器。基础硬件以透明方式在其他用户之间共享, 因此对你来说完全是虚拟的。你只能选择托管在Google数据中心之一中的实例的全球地理位置。
VM由永久性磁盘的类型和基于Windows或Linux的操作系统(OS)定义。永久磁盘是你的虚拟硬件切片。
映像是永久性磁盘和操作系统的物理组合。 VM映像通常用于在多个其他VM上共享和实现特定配置。公开图片是Google提供的特定操作系统的图片, 而私有图片则由用户自定义。
快照是给定时间的VM内容(磁盘, 软件, 库, 文件)的反映, 通常用于即时备份。快照和映像之间的主要区别在于, 快照相对于以前的快照存储为差异, 而映像则不存储。
映像和快照均可用于定义和激活新的VM。
概括地说, 当你启动新实例时, GCE首先将永久性磁盘连接到VM。这样可以提供磁盘空间, 并为实例提供启动所需的根文件系统。磁盘将安装与所选映像关联的操作系统。通过拍摄映像快照, 你可以创建即时备份, 并且可以从现有VM复制数据以启动新VM。
让我们将所有这些付诸实践, 并开始使用你的第一个VM!
GCP上的第一个VM入门 创建一个帐户和项目
要在GCP上开设帐户, 你需要一个标准的Google(Gmail)帐户。在撰写本文时, Google提供了该平台的12个月/ 300美元的免费试用期。尽管此优惠有一定的限制(例如, 没有比特币挖掘), 但足以让你开始在这种环境中工作。
要使用免费试用版创建GCP帐户, 请访问cloud.google.com, 然后点击免费试用按钮。系统将要求你使用你的Google帐户登录并添加你的帐单信息。创建帐户后, 你可以通过http://console.cloud.google.com/访问网络控制台。
你将首先使用Web控制台定义和启动基于Debian的实例, 然后切换到基于Web的Shell终端, 以安装数据科学堆栈所需的所有必要软件包。
但是首先你需要创建一个新项目:
  • 转到” 资源管理” 页面,
  • 点击” 创建一个新项目” ,
  • 指定项目的标题, 并注意Google如何动态生成项目ID。
  • 根据需要编辑项目ID, 然后单击” 创建” 。
项目ID在GCP命名空间中必须唯一, 而项目标题可以是你想要的任何内容。我将项目命名为srcmini-gcp, 如下所示:
Google Cloud和数据科学(入门指南)

文章图片
默认情况下, 当你创建一个新项目时, 你的Google帐户将被设置为该项目的所有者, 并具有全部权限, 并且可以访问该项目的所有资源和帐单。
在IAM页面的角色部分, 你可以将具有特定角色的人员添加到你的项目中。就本教程而言, 你将跳过该部分, 并保留为项目的唯一用户和管理员。
创建一个实例 要创建第一个虚拟机, 只需执行以下步骤:
  1. 转到位于https://console.cloud.google.com/home/dashboard的仪表板, 然后选择刚刚创建的项目。
  2. 在左上方菜单中, 选择” Compute Engine” , 然后单击” VM实例” 。
  3. 在对话框中, 单击” 创建” 按钮。
Google Cloud和数据科学(入门指南)

文章图片
你现在位于” 创建实例” 页面上。
  1. 为实例命名:你可以选择任何名称。我将实例命名为八哥。
  2. 选择区域:经验法则是选择距离你最近的最便宜的区域, 以最大程度地减少延迟。我选择东维。请注意, 价格因地区而异。
  3. 选择所需的内存, 存储器和CPU。你可以使用多个预设之一, 也可以自定义自己的实例。在这里, 我选择带有3.75 Gb RAM和1vCPU的默认设置n1-standard-1, 估计价格为每月$ 24.67。
  4. 选择启动盘, 并使用默认的10 Gb Debian GNU / Linux 9(拉伸)操作系统。如果你更喜欢使用Ubuntu或任何其他Linux发行版, 请单击” 更改” 按钮并进行适当的选择。由于Ubuntu是Debian的衍生版本, 因此两种发行版均可在本教程中使用。
Google Cloud和数据科学(入门指南)

文章图片
5.确保你可以通过允许http和https流量从互联网访问VM。
Google Cloud和数据科学(入门指南)

文章图片
6.(可选)启用用于备份的永久磁盘:单击” 管理, 磁盘, 网络, SSH密钥” 链接。这将显示一组选项卡, 选择” 磁盘” 选项卡, 然后取消选择” 删除规则” 。这样, 当你删除实例时, 该磁盘将不会被删除, 以后可以用于启动新实例。
Google Cloud和数据科学(入门指南)

文章图片
【Google Cloud和数据科学(入门指南)】7.最后, 单击” 创建” 。你的实例将在几分钟内准备就绪。
请注意” 创建” 按钮下方的” 等效命令行” 链接。此链接显示了从头开始创建相同实例所需的等效命令行。这是一项真正的智能功能, 可帮助学习gcloud SDK的语法。
此时, 你正在运行的实例几乎是空的。你可以通过两种方式访问??实例。通过在本地计算机上安装gcloud SDK或使用Google的Cloud Shell。
Google的Cloud Shell Google的Cloud Shell是浏览器中的独立终端, 你可以从中访问和管理资源。你可以通过点击控制台页面右上角的> \ _图标来激活Google Shell。浏览器的下部成为一个shell终端。
Google Cloud和数据科学(入门指南)

文章图片
该终端在带有Debian操作系统和5Gb存储的f1-micro Google Compute Engine虚拟机上运行。它是基于每个用户, 每个会话创建的。它在你的云Shell会话处于活动状态时仍然存在, 并在20分钟不活动后被删除。由于关联的磁盘在会话之间是持久的, 因此你的内容(文件, 配置等)将在会话之间可用。云外壳实例预装有gcloud SDK和vim。
Google Cloud和数据科学(入门指南)

文章图片
区分基于用户的Cloud Shell实例和你刚创建的实例非常重要。云外壳下面的实例只是拥有资源管理环境并将你的配置存储在临时实例上的一种便捷方法。你刚刚创建的VM实例(在上面的示例中名为starling)是你要安装数据科学环境的实例。
除了使用Google Cloud Shell, 你还可以在本地计算机上安装gcloud SDK并管理本地环境中的所有内容。
这里有一些有用的命令来管理你的实例。
  • 列出你的实例
    gcloud计算实例列表
  • 停止实例(需要几秒钟)
    gcloud计算实例停止< 实例名称>
  • 启动实例(也需要几秒钟)
    gcloud计算实例开始< 实例名称>
  • 和SSH进入starling实例
    gcloud compute ssh < 实例名称>
设置虚拟机
在你的Google Shell窗口中运行最后一个命令以登录你的实例。下一步将包括:
  1. 使用apt-get install安装一些Debian软件包。
  2. 安装Anaconda或Miniconda发行版。
  3. 设置实例以使Jupyter笔记本电脑可以安全地在线访问。
Debian软件包 让我们从安装Debian软件包开始:
  • bzip2, 这是安装Mini / Anaconda所必需的,
  • git, 它总是很有用, 并且
  • libxml2-dev, 目前不需要, 但是在安装其他Python库时通常会需要它。
在终端中运行以下命令, 这些命令对Ubuntu和Debian均适用:
$ sudo apt-get update $ sudo apt-get install bzip2 git libxml2-dev

水蟒/迷你康达
安装完上述软件包后, 将注意力转向安装Python 3的Anaconda发行版。你可以选择安装完整的Anaconda版本(包括许多科学的Python库, 你可能实际上不需要其中的某些库)或安装较轻的Miniconda版本。这需要你手动安装Jupyter库。两种情况下的过程非常相似。
要安装较轻的Miniconda发行版, 请运行
$ wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh $ bash Miniconda3-latest-Linux-x86_64.sh $ rm Miniconda3-latest-Linux-x86_64.sh $ source .bashrc $ conda install scikit-learn pandas jupyter ipython

将下载安装外壳程序脚本, 并使用前两行运行。你应该接受许可证和默认位置。在第3行中, 不再需要的外壳文件被删除。在第4行上搜索.bashrc, 而无需打开新终端, 即可将conda命令添加到$ PATH中。最后, 最后一行安装所需的python库:scikit-learn pandas jupyter ipython。
安装完整的Anaconda发行版的命令非常相似。确保检查下载页面以获取最新版本的Shell脚本文件:
$ wget https://repo.continuum.io/archive/Anaconda3-5.0.1-Linux-x86_64.sh $ bash Anaconda3-5.0.1-Linux-x86_64.sh $ rm Anaconda3-5.0.1-Linux-x86_64.sh $ source .bahsrc

要验证所有内容是否均已正确安装, 请使用python – version检查你的python版本, 并验证默认情况下使用哪个python命令调用了正确的python。你应该得到类似的东西
Google Cloud和数据科学(入门指南)

文章图片
现在, 你已经可以使用安装了标准数据科学库(sklearn, pandas)的Python环境。
允许网络访问
第三步(也是最后一步)是配置VM, 以允许通过Web访问Jupyter笔记本。
你首先需要使VM可从Web访问。为此, 你将通过Google Cloud控制台创建防火墙规则。返回到” 实例” 仪表板, 然后在左上方菜单中选择” VPC网络> 防火墙规则” 。单击” 创建防火墙规则” 链接, 然后填写以下值:
  • 名称:jupyter-rule(你可以选择任何名称)
  • 源IP范围:0.0.0.0/0
  • 指定的协议和端口:tcp:8888
  • 并将所有其他变量保留为其默认值。
该表格应如下所示:
Google Cloud和数据科学(入门指南)

文章图片
此防火墙规则允许所有传入流量(来自所有IP)进入端口8888。
使用” 等效命令行链接” , 你可以看到还可以使用以下命令行从终端创建防火墙规则:
$ gcloud compute – project = srcmini-gcp防火墙规则创建jupyter-rule – direction = INGRESS – priority = 1000 – network = default – action = ALLOW – rules = tcp:8888 – source-ranges = 0.0.0.0/0
现在返回VM页面(左上方菜单> Compute Engine> VM实例), 单击你的VM名称。
记下你的VM IP地址。这是你将在浏览器中用来访问Jupyter环境的IP地址。在我的示例中, IP地址为:35.196.81.49, 你的将不同。
Google Cloud和数据科学(入门指南)

文章图片
并确保检查了防火墙规则:
Google Cloud和数据科学(入门指南)

文章图片
Jupyter配置
Jupyter笔记本电脑随附一个配置文件, 该文件需要生成和编辑才能设置对笔记本电脑的在线访问。在终端中, 运行jupyter notebook – generate-config生成配置文件。并用jupyter笔记本密码生成密码。
提示:请确保这是一个强密码!
现在编辑刚刚使用vim创建的配置文件.jupyter / jupyter_notebook_config.py并将以下行添加到文件顶部
c.NotebookApp.ip =’ *’
(要在vim中切换到编辑模式, 只需键入i字符)。按以下顺序退出并保存ESC:wq。
这将使笔记本可用于VM上的所有IP地址, 而不仅仅是你在本地计算机上可能熟悉的http:// localhost:8888 URL。
发射
现在, 你可以使用命令行启动Jupyter笔记本了:
$ jupyter-notebook – no-browser – port = 8888
并且你应该在终端中看到类似的内容:
Google Cloud和数据科学(入门指南)

文章图片
在浏览器中, 访问URL:http:// < your_VM_IP> :8888 /以访问新运行的Jupyter笔记本。
要检查一切是否按预期进行, 请创建一个新的Python 3笔记本并导入熊猫
Google Cloud和数据科学(入门指南)

文章图片
间奏曲
关于当前设置的一些注意事项:
你在浏览器中使用的IP地址是临时的。这意味着, 每次重新启动VM时, 笔记本将使用不同的URL。你可以通过以下方法将该IP设为静态:左上方菜单> VPC网络> 外部IP地址, 然后在下拉菜单中选择” 静态”
Google Cloud和数据科学(入门指南)

文章图片
当前设置的安全性取决于你先前定义的Jupyter笔记本电脑密码的强度。互联网上的任何人都可以使用你使用的相同URL访问Jupyter环境(机器人绝对会尝试)。 Jupyter笔记本的一个强大但非常不安全的核心功能是你可以直接从笔记本启动具有sudo访问权限的终端。这意味着访问笔记本的任何人都可以在破解你的笔记本密码后控制你的VM, 并有可能运行任何可能使你的账单透支的事情。防止这种情况发生的第一级措施包括
确保你的Jupyter密码是安全的
记住不要在不使用它时停止它
你当前还通过http而不是https运行服务器, 这不够安全。 Let’ s Encrypt提供免费的SSL / TLS证书, 是jupyter文档中建议的加密解决方案。有关与运行公共Jupyter笔记本相关的安全性问题的更多信息, 请阅读此内容。
IPython的
Jupyter笔记本对于在线协作工作非常方便。但是, 你也可以仅使用ipython命令从终端运行IPython会话。这将打开一个IPython会话, 该会话具有Jupyter笔记本的所有功能, 例如魔术命令(%paste, %run等), 但没有Web界面。
[R
设置虚拟机以在Jupyter控制台中启用R笔记本很容易。出色的srcmini教程中提供了启用R Markdown的说明:Jupyter和R Markdown:Karlijn Willems撰写的带有R的笔记本。
总结 Google Cloud提供了许多有趣的数据科学服务以及功能强大且易于设置的VM实例, 同时还提供了非常诱人的免费试用版。 Web控制台易于浏览, 并且经常显示与当前配置页面等效的命令行, 从而降低了使用gcloud SDK的障碍。
在本文中, 你学习了如何选择和启动VM实例, 安装必要的Debian软件包, Anaconda发行版和数据科学堆栈, 以及最后如何设置访问规则以启动可从浏览器访问的Jupyter笔记本。
尽管整个过程乍一看似乎有些复杂, 但是随着你创建和启动越来越多的VM, 它将很快变得熟悉。如果情况变得有些混乱, 你可以随时删除正在使用的VM, 然后从头开始重新启动。这是在云中工作的好处之一。几次之后, 你将能够在几分钟内在Google Cloud上启动完整的数据科学环境。随时与我们联系并在Twitter上与我分享你的评论和问题:@alexip。

    推荐阅读