谷歌云端教学
Google cloud云端教学
在我们开始之前
大提醒:请确保您停止实例!
(我们知道,一旦您的作业开始运行,您就不会读到最底部,因此,由于它非常重要,我们也将其打印在顶部 )
完成操作后,别忘了 停止实例 (通过单击显示您的实例的页面顶部的“停止”按钮),否则您将 用尽所有积分 ,这将非常可悲。:(
如果您正确地遵循以下说明,则应该能够重新启动实例,并且下载的软件仍然可用。

创建和配置您的帐户
对于班级项目和作业,我们提供了一个选项,可以使用Google Compute Engine开发和测试您的实施。本教程列出了使用Google Cloud处理分配的必要步骤。 我们希望本教程大约需要一个小时。不要被这些步骤吓到,我们试图使本教程更加详细,以使您不太可能陷入某个特定步骤。请在Piazza上使用google_cloud标记所有与Google Cloud有关的问题。
本教程介绍了如何设置自己的Google Compute Engine(GCE)实例以处理分配。每个学生在整个季度中将获得100美元的信用额度。首次注册时,默认情况下,您还会从Google获得$ 300的信用。请尝试明智地使用资源。但是,如果最终$ 100不够用,我们将尝试在季度继续进行时调整此数字。 注意:对于作业1,我们仅支持python版本2.7(脚本的默认安装)和3.5.3。
首先,如果您还没有Google Cloud帐户,请转到Google Cloud主页 并点击 Compute来创建一个 。转到下一页时,单击蓝色的“ 免费试用”按钮。如果您尚未登录gmail,则会看到类似于以下页面的页面。登录您的gmail帐户或创建一个新帐户(如果您还没有帐户)。

如果您已经有一个Gmail帐户,它将把您定向到如下所示的注册页面。

单击 第一个选项的相应的“ 是” 或“ 否”按钮,在 阅读必需的协议后,对后两个选项选择“ 是 ”。按下蓝色的 同意并继续 按钮以继续至下一页,以输入所需的信息(您的姓名,账单地址和信用卡信息)。输入所需的信息后,按蓝色的 开始我的免费试用 按钮。这样的页面会打招呼:

要更改项目名称,请单击 “ 项目信息” 按钮上的“ 管理项目设置 ”, 然后保存更改。

启动虚拟实例
要启动虚拟实例,请转到 信息中心左侧栏中的 Compute Engine菜单,然后单击 VM实例。然后单击 下一页上的蓝色 CREATE按钮。这将带您进入一个页面,如下图所示。 (注意:除了查看屏幕截图外,请仔细阅读说明。这些说明会告诉您要填写的值)。

确保将区域设置为 us-west1-b (尤其是对于需要使用GPU实例的分配)。在 计算机类型下, 选择 8个vCPU 选项。单击“ 机器类型” 下的“ 自定义”按钮, 并确保将核心数设置为8,将GPU数设置为“ 无” (我们将不在作业1中使用GPU,并且本教程将更新有关GPU使用说明的信息)。单击启动盘 下的 更改按钮 ,选择 OS映像,检查 Ubuntu 16.04 LTS,然后单击蓝色的 选择 按钮。检查一下 允许HTTP通信 和 允许HTTPS通信。单击 磁盘,然后 磁盘 并取消 当实例被删除删除启动盘 (注意“磁盘”选项,可以在一个可扩展的URL在该网页表单的底部隐藏)。单击 页面底部的蓝色 创建按钮。您现在应该已经成功创建了Google Compute实例,它可能需要几分钟才能开始运行。您的屏幕应类似于以下屏幕。当您要停止运行实例时,单击上方的蓝色停止按钮。

记下您的<YOUR-INSTANCE-NAME>,在这种情况下,我的实例名称为instance-2。
连接到您的虚拟实例并下载分配
现在,您已经创建了虚拟GCE,您希望能够从计算机连接到它。本教程的其余部分介绍了如何使用命令行执行此操作。首先,从此处下载适合您平台的Google Cloud SDK, 然后按照其安装说明进行操作。 注意:本教程假定您已在网站上执行了步骤4,并将其列为可选步骤。出现提示时,请确保选择us-west1-b作为时区。最简单的连接方法是使用下面的gcloud compute命令。该工具为您处理身份验证。在OS X上,运行:
./<DIRECTORY-WHERE-GOOGLE-CLOUD-IS-INSTALLED>/bin/gcloud compute ssh --zone=us-west1-b <YOUR-INSTANCE-NAME>
有关 更多详细说明,请参 见此页面。现在,您可以在Google Cloud上进行分配了。
运行以下命令将当前分配下载到您的GCE:
wget http://cs231n.stanford.edu/assignments/2017/spring1617_assignment1.zip
然后运行:
sudo apt-get install unzip
和
unzip spring1617_assignment1.zip
获取内容。现在,您应该看到一个名为X的文件夹。要为分配1安装必要的依赖项(注意: 您只需要对分配1执行此操作),将cd放入分配目录并运行提供的shell脚本:( 注意:您需要在所有输入框中按[ Enter ]键“ [Y / n]”提示)
cd assignment1 ./setup_googlecloud.sh
在下载过程中,系统会在不同时间提示您输入Y / N。按Enter出现每个提示。现在,您应该拥有分配X所需的所有软件。如果没有错误,则可以正常使用virtualenv。
即跑
source .env/bin/activate
在您的分配目录中以加载venv并运行
deactivate
退出静脉。有关详细信息,请参见作业讲义。
注意:以上说明将使用Python 2.7运行所需的一切。如果您想改用Python 3.5,请编辑setup_googlecloud.sh以替换该行
virtualenv .env
与
virtualenv -p python3 .env
跑步前
./setup_googlecloud.sh
将Jupyter Notebook与Google Compute Engine一起使用
许多作业将涉及使用Jupyter Notebook。下面,我们讨论如何从GCE实例运行Jupyter Notebook并在本地浏览器上使用它。
获取静态IP地址
将您的GCE实例的外部IP地址更改为静态(请参见下面的屏幕截图)。

为此,请点击 屏幕左上角Google Cloud Platform按钮旁边的3行图标 ,转到“ 网络 和 外部IP地址” (请参见下面的屏幕截图)。

要具有静态IP地址,请将Type 从 Ephemeral更改 为 Static。输入您的静态IP的首选名称,我的名称是Assignment-1(请参见下面的屏幕截图)。然后单击“保留”。完成后,请记住释放静态IP地址,因为根据 此页面, Google会为未使用的静态IP收取少量费用。 现在应该将Type设置为 Static。

记下您的静态IP地址(在下面的屏幕快照中圈出)。我在本教程中使用104.196.224.11。

添加防火墙规则
您要做的最后一件事是添加新的防火墙规则,以允许对特定的<PORT-NUMBER>使用TCP访问。我通常将7000或8000用于<PORT-NUMBER>。点击页面顶部Google Cloud Platform旁边的3行图标 。在左列弹出的菜单上,转到“ 网络和 防火墙规则” (请参见下面的屏幕截图)。

单击蓝色的“ 创建防火墙规则” 按钮。输入您想要的任何名称:我使用了assignment1-rules。输入0.0.0.0/0作为源IP范围, 并输入 tcp:<PORT-NUMBER>作为 允许的协议和端口,其中<PORT-NUMBER>是您在上面使用的数字。单击蓝色的 创建 按钮。请参阅下面的屏幕截图。

注意: 某些人看到的是不同的屏幕,而不是允许的协议和端口,而是 标题为“ 指定的协议和端口 ”的字段 。如果这是您看到的页面,则应在此字段中输入tcp:<PORT-NUMBER>。另外,如果您看到标题为“ 目标”的字段,请 选择 “网络中的所有实例”。
配置Jupyter Notebook
以下说明是此页面的摘录, 其中包含更详细的说明。
在您的GCE实例上,检查Jupyter配置文件的位置:
ls ~/.jupyter/jupyter_notebook_config.py
我的位于/home/timnitgebru/.jupyter/jupyter_notebook_config.py
如果不存在,请创建一个:
# Remember to activate your virtualenv ('source .env/bin/activate') so you can actually run jupyter :)jupyter notebook --generate-config
使用您喜欢的编辑器(vim,emacs等)将以下行添加到配置文件中(例如:/home/timnitgebru/.jupyter/jupyter_notebook_config.py):
c = get_config() c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False c.NotebookApp.port = <PORT-NUMBER>
其中<PORT-NUMBER>是与上一节中使用的相同的数字。保存您的更改并关闭文件。
启动并连接到Jupyter Notebook
以下说明假定您已使用先前的说明通过SSH进入GCE实例,已下载当前任务文件夹并将其解压缩到任务X(其中X为任务编号),并且已成功配置Jupyter Notebook。
如果您还不在分配目录中,请通过运行以下命令将其cd入:
cd assignment1
如果尚未执行此操作,请通过运行以下命令激活您的virtualenv:
source .env/bin/activate
使用以下命令启动Jupyter Notebook:
jupyter-notebook --no-browser --port=<PORT-NUMBER>
其中<PORT-NUMBER>是您在上一节中编写的内容。
在本地浏览器上,如果转到http:// <YOUR-EXTERNAL-IP-ADDRESS>:<PORT-NUMBER>,则应该看到类似以下屏幕的内容。如上所述,我的<YOUR-EXTERNAL-IP-ADDRESS>值为104.196.224.11。现在,您应该可以开始进行作业了。

提交:将文件从您的实例传输到计算机
完成分配后,请在分配文件夹中运行提交脚本。对于assignment1,这将创建一个名为zip文件, assignment1.zip
其中包含您需要上传到Canvas的文件。如果您还不在Assignment1目录中,请通过运行CD进入该目录
cd assignment1
通过运行 安装 zip
sudo apt-get install zip
然后运行
bash collectSubmission.sh
创建需要上传到画布的zip文件。然后,使用gcloud compute copy-file命令将文件复制到本地计算机,如下所示。 注意:在您的本地计算机上运行此命令:
gcloud compute copy-files [INSTANCE_NAME]:[REMOTE_FILE_PATH] [LOCAL_FILE_PATH]
例如,要将文件复制到桌面,我运行了:
gcloud compute copy-files instance-2:~/assignment1/assignment1.zip ~/Desktop
学生提出的另一个(可能更容易)的选择是直接从Jupyter下载zip文件。在运行提交脚本并创建了assignment1.zip之后,您可以直接从Jupyter下载该文件。为此,请转到Jupyter Notebook,然后单击zip文件(在本例中为Assignment1.zip)。该文件将下载到本地计算机。
最后,请记住将包含提交内容的zip文件上传到 Canvas。(如果您要再次检查ipython笔记本和其他代码文件是否正确位于内部,则可以在本地解压缩该文件)。