机器学习算法高级教程(四)
十四、在云中实现算法
有时,执行一项任务所需的计算量可能非常大。当有一个大型数据集的大小大于机器的典型 RAM 大小时,通常会发生这种情况。当需要对数据进行大量处理时,通常也会发生这种情况。
在这种情况下,切换到基于云的分析是一个好主意,这有助于快速扩展更大的 RAM。它还可以避免购买扩展 RAM 来解决可能不会经常出现的问题。然而,使用云服务是有成本的,某些配置比其他配置更昂贵。您需要在选择配置时小心谨慎,并且遵守纪律,以便知道何时停止使用云服务。
三大云提供商如下:
- 谷歌云平台(GCP)
- 微软 Azure
- 亚马逊网络服务(AWS)
在本章中,我们将致力于在所有三个云平台中设置一个虚拟机。一旦实例设置完毕,我们将学习如何访问 Python 和 R on cloud。
谷歌云平台
可以在 https://cloud.google.com 访问 GCP。建立帐户后,您可以使用控制台创建项目。在控制台中,点击计算引擎,然后点击虚拟机实例,如图 14-1 (VM 代表虚拟机)。
图 14-1
Selecting the VM option
单击创建以创建新的虚拟机实例。您将会看到如图 14-2 所示的屏幕。
图 14-2
Options to create an instance
根据数据集的大小,使用所需的内核、内存以及是否需要 GPU 来自定义机器类型。
接下来,选择您选择的操作系统(图 14-3 )。
图 14-3
Selecting the OS
我们将对 PuTTY 执行一些操作。可以从 www.ssh.com/ssh/putty/windows/puttygen 下载 PuTTYgen。打开程序并单击生成以生成公钥/私钥对。将生成一个密钥,如图 14-4 所示。
图 14-4
Generating a public/private key pair in PuTTYgen
单击“保存私钥”保存私钥。复制顶部的公钥,粘贴到 GCP 上的 SSH 密钥框中,如图 14-5 所示。
图 14-5
Pasting in the key
单击创建。这应该会为您创建一个新实例。它还应该给你对应于实例的 IP 地址。复制 IP 地址并将其粘贴到 PuTTY 中的主机名下。
在左窗格中点击 SSH,点击 Auth,浏览到保存私钥的位置,如图 14-6 所示。
图 14-6
The Auth options
在图 14-4 中生成公钥和私钥时,输入登录名作为 PuTTYgen 中显示的“密钥注释”条目。你现在应该登录到谷歌云机器。
输入 python,你应该能运行 Python 脚本了。
务必在完成工作后立即删除该实例。否则,服务可能仍然会向您收费。
微软 Azure 云平台
在微软 Azure 中创建虚拟机实例与在 GCP 的方式非常相似。访问 https://azure.microsoft.com 并设立账户。
在 Azure 中创建一个帐户并登录。然后点击“虚拟机”,如图 14-7 所示。
图 14-7
Microsoft’s Virtual machines page
单击添加,然后执行以下操作:
- 选择所需的机器——在我们的例子中,我选择的是 Ubuntu Server 16.04 LTS 版。
- 单击默认的创建按钮。
- 在基本配置设置中输入机器级别的详细信息。
- 选择所需虚拟机的大小。
- 配置可选功能。
- 最后,创建实例。
一旦实例被创建,仪表板提供对应于实例的 IP 地址,如图 14-8 所示。
图 14-8
The IP address you need
打开 PuTTY(有关下载和启动它的更多信息,请参见上一节)并使用 IP 地址连接到实例,方法是输入密码(如果在创建实例时选择了密码选项)或使用私钥。
您可以连接到实例,并使用 PuTTY 打开 Python,方法与我们在上一节 GCP 中所做的类似。
亚马逊网络服务
在这一部分,我们将注册 Amazon Web Services。进入 https://aws.amazon.com 并创建账户。
点击“启动虚拟机”,如图 14-9 所示。
图 14-9
Launching a virtual machine in AWS
在下一个屏幕上,单击“开始”命名实例并选择所需的属性,如图 14-10 所示。
图 14-10
Setting up your instance
下载。pem 文件,然后单击“创建此实例”然后点击“进入控制台”
与此同时,
图 14-11
Saving the private key
- 打开 PuTTYgen。
- 加载。pem 文件。
- 将其转换为. ppk 文件。
- 保存私钥,如图 14-11 所示。
回到 AWS 控制台,屏幕如图 14-12 所示。
图 14-12
The AWS console
单击连接按钮。注意弹出窗口中给出的例子(图 14-13 )。
图 14-13
The example
在图 14-13 的高亮部分,@后面的字符串是主机名。复制它,打开 PuTTY,将主机名粘贴到 PuTTY 配置界面的主机名框中,如图 14-14 所示。
图 14-14
Adding the host name
回到图 14-13 ,刚好在@之前的单词是用户名。在左侧面板中选择“数据”后,在 PuTTY 的“自动登录用户名”框中输入,如图 14-15 所示。
图 14-15
Adding the username
单击 SSH 将其展开,单击 Auth,然后浏览到。先前创建的 ppk 文件。点击打开,如图 14-16 所示。
图 14-16
Setting the private key
现在,您应该能够在 AWS 上运行 Python 了。
将文件传输到云实例
您可以使用 WinSCP 将文件从本地机器传输到所有三个平台中的云实例。如果你还没有安装,从 www.winscp.net 下载 WinSCP 并安装。打开 WinSCP,您应该会看到类似于图 14-17 的登录屏幕。
图 14-17
The WinSCP login screen
输入主机名和用户名,类似于您在 PuTTY 中输入的方式。为了进入。ppk 文件详细信息,单击高级按钮。
单击 SSH 部分中的身份验证,并提供的位置。ppk 文件,如图 14-18 所示。
图 14-18
Setting the private key
单击确定,然后单击登录。
现在,您应该能够将文件从本地机器传输到虚拟实例。
另一种传输文件的方法是将文件上传到其他云存储中(例如 Dropbox),获取文件位置的链接,并将其下载到虚拟实例中。
从本地机器运行 jupiter 笔记本实例
通过在 GCP、AWS 或 Azure 的 Linux 实例上运行以下代码,您可以从本地机器上运行 Jupyter 笔记本:
sudo su
wget http://repo.continuum.io/archive/Anaconda3-4.1.1-Linux-x86_64.sh
bash Anaconda3-4.1.1-Linux-x86_64.sh
jupyter notebook --generate-config
vi jupyter_notebook_config.py
通过按 I 键插入以下代码:
c = get_config()
c.NotebookApp.ip = '*';
c.NotebookApp.open_browser = False
c.NotebookApp.port = 5000
按 Escape 键,键入:wq,然后按 Enter 键。
键入以下内容:
sudo su
jupyter-notebook --no-browser --port=5000
Jupyter 笔记本打开后,转到本地机器上的浏览器,在地址栏中键入虚拟实例的 IP 地址和端口号(确保防火墙规则配置为打开端口 5000)。例如,如果 IP 地址是http://35.188.168.71,那么在屏幕顶部的浏览器地址栏中输入http://35.188.168.71:5000。
您应该能够在连接到虚拟实例的本地机器上看到 Jupyter 环境(图 14-19 )。
图 14-19
The Jupyter environment
在实例上安装 R
默认情况下,r 不会安装在实例上。您可以在 Linux 中安装 R,如下所示:
sudo apt-get update
sudo apt-get install r-base
现在在您的终端中键入 R:
R
现在,您应该能够在虚拟实例中运行 R 代码了。
摘要
在本章中,您学习了以下内容:
- 如何在三大云平台上建立和打开虚拟实例
- 如何在三个平台上运行 Python/R
- 如何将文件传输到云环境中