分享

必须收藏 | 手把手教你几分钟内搭建自己强大的深度学习环境

 taotao_2016 2019-04-05

▎作者:Dipanjan Sarkar

编译:Remedios | 公众号翻译部


清明节安康

介绍


在此,向大数据致谢。不过,这里真正的MVP是更快更好的计算,这也使1980、90年代的论文具有更加重要的意义(LSTM诞生于1997)!

https://www.bioinf./publications/older/2604.pdf

因为有了更好更快的CPU和GPU,我们最终可以利用神经网络和深度学习。不管我们是否喜欢,传统统计和机器学习模型在高维、非结构化和更复杂更大体积的数据上有很大的限制性。

深度学习在这些领域开始表现出众,并且我们已经渐渐开始看到行业在一些大规模的现实问题中开始接受它们。吴恩达自己几年前也开始提到这些可喜的事实。

深度学习好的方面是,我们有更好的计算,更多的数据和广泛边界的开源框架供我们在建立解决方案时使用,如keras,tensorflow和pytorch。

深度学习的缺点是什么?从头建立你自己的深度学习环境可能是一项非常艰巨的任务,特别是你迫切需要开始写代码实现你的深度学习模型时。

多次经历了这个痛苦的过程并发现简单的使用服务的方式之后,我们写了这个指南旨在让你轻松快速地考虑建立你个人深度学习环境的各个必要方面,以便你能够更快更好地建立深度学习环境并解决问题。在这份指南中,我们将提到以下几个方面的内容:

1、最小配置基于云的深度学习环境

2、建立你自己的基于云的深度学习环境

3、自有设置的建议

让我们立刻开始吧!

最小配置基于云的深度学习环境


如果你真的想要不在专用的硬件上做任何投资就建立深度学习环境,或者你想要跳过所有那些麻烦的配置和设置命令,这里有一些专为你准备的选项!使用一个预先配置好的基于云的深度学习环境是最佳选择。这里有几个基于云的深度学习服务提供商。下面的选择使你能够使用最少的配置和设置立刻开始工作。这是我们一个很好的综合列表,其中的项目都是我们亲自用过或从同伴的深度学习从业者那里听说过的。

  • Google Colaboratory

    • https://colab.research.google.com/

  • Paperspace Gradient

    • https://www./gradient

  • FloydHub Workspace

    • https://www./product/build

  • Lambda GPU Cloud

    • https:///service/gpu-cloud

  • AWS Deep Learning AMIs

    • https://aws.amazon.com/cn/machine-learning/amis/

  • GCP Deep Learning VM Images

    • https://cloud.google.com/deep-learning-vm

我们会介绍这些提供商的概要以便你了解得足够清楚来以它们开始。除此之外,我们鼓励你走出去进一步探索它们并基于你的喜好选择其中之一。

Google Colaboratory


可能是最好的之一并且仍然是谷歌的免费产品,使你能够在一个依靠GPU甚至是TPU的深度学习环境中运行可交互的Jupyter notebook。谷歌一直积极地在使用和促进这个产品在很多方面的用途,包括他们广受欢迎的机器学习速成班(Machine Learning Crash Course)。总而言之,Colarboratory 是一个免费的Jupyter notebook 环境不需要任何社会中并且使你能够运行你自己的机器学习模型甚至无需任何花费就能使用一个GPU。

默认情况下你就得到了一个依靠CPU建立的下载了所有库的深度学习环境,你可以用以下代码来验证这些事实:

现在,使用一个CPU对于相对简单、工作量和数据更少的的模型已经足够了,你肯定需要对更复杂的问题使用GPU。正如在下面的截图中展示的,改变Google Colab的运行时间来使用一个GPU仅仅会多花几秒钟。

Google Colab然后分配出一个新的GPU使你的深度学习环境配置完成,你可以通过下列代码看GPU类型。

似乎你免费得到了一个含12GB记忆的Tesla K80 GPU !那是 AWS p2.xlarge  以0.9刀每小时的价格供给你的。最终你可以使用以下代码来确认你的深度学习库正在使用GPU。

这应该使你能够在Google Colab上尝试运行你自己的深度学习模型。轻松利用 my colab notebook来测试依靠于CPU和GPU的深度学习环境吧!

Paperspace Gradient°


Gradient°是由致力于机器学习和数据科学的轻松基础设施的公司Paperspace的产品。它给开发者一套完整的工具来探索数据,训练深度学习模型并且在GPU上运行计算工作。Gradient°完全依靠Paperspace GPU云的一键Jupyter notebook。我们从油桶上下载了这个视频,更进一步详细地进行了介绍。

下面是他们的一些基础情况:

https://www./pricing

你需要花钱购买GPU但是这个价格相较于其他服务提供商(例如Quadro P4000 每小时花0.5美元,Tesla K80 每小时花0.59美元)还是非常有竞争力的,相较于AWS上有相似功能要便宜很多。

FloydHub Workspace


FloydHub的一个有趣的产品是FloydHub Workspace,目标是通过提供一个完全配置好的开发环境减少你自己建立云端深度学习环境的麻烦。最好的部分?尽管这不是免费的,你仅仅花一秒钟的钱就可以从一个CPU终端无缝切入到一个GPU终端。

他们的价格也非常好,你可以花最便宜的价格(12刀)得到一个有 12GB空间的Tesla K80, 61GB的RAM和200GB 10小时的SSD的专用实例。

Lambda GPU Cloud


Lambda Labs 或者说 Lambda是一个为人类的进步提供计算服务的AI产业公司。他们专攻于深度学习工作站并且最近已经启动了Lambda GPU Cloud,不过目前还在封闭测试阶段。每个Lambda GPU Cloud实例有4个GPU并且比 AWS的p2.8xlarge实例快两倍。他们说你简单地按下一个按钮,就可以直接SSH远程进入一个4 GPU的实例。价格是0.9刀每个GPU每小时。

AWS Deep Learning AMIs


Amazon Web 服务(AWS)是亚马逊的一个子业务,提供基于付费订阅的按命令运行的云计算平台。最近,他们已经启动了为建立深度学习模型专用GPU加强工作量的Amazon Machine Images(AMIs)项目, Deep Learning AMIs。 AWS Deep Learning AMIs为我们提供必需的设备,预先设置好的工具和框架以大规模地加速云端深度学习。它预先配置了所有最新和最好的深度学习框架。

你可以得到特别为深度学习建立的虚拟环境Conda AMI或者是基础AMI 配上配置和定制建立。

因为你根据小时付费,请谨慎选择你自己的AWS实例。最便宜的选择应该是p2.xlarge以每小时0.9刀的价格向你提供一个12GB的GPU。

GCP Deep Learning VM Images


GCP是谷歌云平台提供给我们的一套用于运行深度学习模型和空间的云计算服务。它最大的优点是在与谷歌内部为它的终端用户所提供的相同的基础设施上运行。GCP也提供给你第一年价值300刀的免费积分。

Google Cloud Deep Learning VM Images 使开发者能够在一个Google Compute Engine 实例上运行一个包括受欢迎的深度学习和机器学习框架的VM图像。你可以使用有名的机器学习框架比如TensorFlow, PyTorch或Scikit-learn启动Compute Engine实例。优点在于,你仅仅需要一次点击就能增加云TPU和CPU支持。它的价格也非常有竞争性,并且比AWS便宜。GCP VMs给你仅花费每小时0.45刀使用一个12GB的Tesla K80 GPU的权限。

https://cloud.google.com/compute/pricing#gpus

相信这些选项应该给你了一个很好的概念来开启你的深度学习之旅。

建立你自己的云端深度学习环境


当准备好了你自己的云端配置,有时候你就想要建立你自己个性化的云端或者预置深度学习环境。在这个章节,我们会介绍如何在云端利用广为使用的云平台建立一个强大的深度学习环境。主要步骤如下:

  • 选择一个云提供商

  • 创建你的虚拟服务器

  • 配置你的虚拟服务器

  • 设置你的深度学习环境

  • 使用你的深度学习环境

  • 验证GPU可用性

让我们来仔细看看建立深度学习环境的过程。

选择一个云提供商


现在市面上有许多价格比较便宜并且具有竞争性的云提供商。我们已经在上一部分看到了他们中的一部分。我们正在寻找具有“平台即服务”能力产品,这些产品要使我们能够在平台上管理数据应用和基础的配置,同时为深度学习使用GPU计算。下图展示了一些深度学习从业者常用的云提供商,包括亚马逊的AWS,微软的Azure和谷歌的GCP。

支持深度学习的云提供商

创建你的虚拟服务器


选择你的云服务器提供商之后的下一步是创建你的VM实例,这个实例基本上包括一个作为代码主机的服务器,数据和配置设置。建立一个VM的下一步取决于你选择了什么云服务器。

下面的教程将为你提供一个深入的指南,帮助你在AWS和GCP中创建和设置自己的实例。

使用AWS深度学习AMI创建和设置云实例

https://aws.amazon.com/cn/blogs/machine-learning/get-started-with-deep-learning-using-the-aws-deep-learning-ami/

使用GCP Marketplace创建和设置云实例

https://cloud.google.com/deep-learning-vm/docs/quickstart-marketplace#before-you-begin

在这本书《Hands-on Transfer Learning with Python》第二章中,介绍了一步一步地在AWS上创建和实例化自己的VM的指南。整个代码库都是开源的,可以在GitHub上查看:

https://github.com/dipanjanS/hands-on-transfer-learning-with-python


配置你的虚拟服务器


实例创建之后,你就可以从云提供商的平台启动这个实例了,特别是当你是从AWS或者是从GCP实例页面启动的EC2用户时。通常你需要一个私人密匙来登录你的服务器,从本地终端使用SSH。通常情况下AWS会让你在创建你的VM的最后一步时设置内自己的密匙,并且给你一个可下载的私人密匙。GCP允许你直接使用SSH从GCP实例页面登陆你的系统。然后,如果需要你可以在系统上创建你自己的SSH密匙。

记得在一个安全位置保存你的私人SSH密匙,并从终端使用下列指令登陆你的服务器。

祝贺!你现在已经成功地登陆了你的深度学习服务器。下面的深度学习设置细节仅当你使用的是Linux服务器时才需要被执行。我们的Linux版本是Ubuntu 18.10.你可以根据你的喜好自由选择你自己的操作系统。

我们将广泛地在试验和研究中使用Jupyter notebook,它也经常被用于给notebook服务器建立一个密码,这样未知访问者就不能通过公共IP地址访问该服务器了。如果你不想设置密码,你可以跳过密码设置的步骤。这里的第一步是创建一个新的由Open SSL认证的SSL。

如果系统中没有下载python,我们推荐使用Anaconda搭建Python环境。

下一步是为我们的Jupyter notebook服务器生成一个认证文件,以防它没有呈现。通常情况下这个文件会在你的主文件夹,在~/.jupyter/jupyter_notebook_config.py 

。如果它没有被呈现,你可以用以下命令创造它。

为了保证notebook的密码安全性,我们首先要生成一个密码和它的哈希。我们可以利用以下代码:

一旦你键入密码并认证,函数会返回给你一个哈希,这个哈希就是你密码的哈希。复制并保存返回的哈希值因为我们很快又要用到,接下来,启动你最爱的文本编辑器来编辑Jupyter 认证文件,如下:

我们现在做好了设置我们的深度学习环境的准备。

设置你的深度学习环境


我们现在开始设置使用GPU的深度学习环境的必须配置。如果你的实例中已经有了CUDA和cuDNN,你可以跳过以下所需步骤:

▍1、下载图片驱动器

这里的第一步是为了保证你的图片驱动器已经为你的GPU下载好了。接下去我们假设你正在使用一个NVIDIA GPU。最好的方法来测试驱动器是否下载好了的就是在终端中运行 nvidia-smi 命令。现在如果下面的命令运行失败,我们就需要下载这个GPU驱动器。

▍2、下载CUDA

NVIDIA® CUDA® 工具箱是一个用于创建应用和程序的可以最大化使用NVIDIA GPU的开发环境。有GPU加速的CUDA库使许多领域有所发展,包括线性代数,图像和视频处理,深度学习和图像分析等。假设我们正在使用一个基于Ubuntu的系统,你可以到官方的NVIDIA CUDA页面并且下载这个必要的配置文件:

https://developer./cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu

在写这篇文章的时候,CUDA10已经发布了但还是非常新,因此我们将使用旧版的CUDA9.0,你可以从旧版的发布页面获取:

https://developer./cuda-toolkit-archive

如果你已经有了一个服务器,那你最好使用终端下载配置文件使用以下命令认证CUDA。

▍3、下载cuDNN

NVIDIA CUDA® 深度神经网络库是一个GPU加速的深度神经网络基元的库cuDNN库提供神经网络标准路径高度调谐的实现,包括前向和后向卷积,池化,正则化和激活层。深度学习从业者可以依赖于cuDNN使用深度学习框架广泛在GPU上广泛加速。你可以从官方页面下载cuDNN,但是你需要注册一个NVIDIA账号:

https://developer./cudnn

你将得到一个cuDNN的下载链接,之后在终端时从服务器时直接下载时会用到。通常情况下,这很大程度上依赖于GPU的设置。

▍4、下载深度学习框架

现在,我们需要下载并配置我们的Python深度学习框架。我们使用大量的keras和tensorflow和下列指令来帮助我们下载到我们的环境中。

使用你的深度学习环境


我们并不是一直要在服务器的终端商编写代码。因为我们想要将Jupyter Notebooks用于交互性研究,我们将在从本地操作系统在云端服务器上进入Notebook。为了达到这个目的,我们首先需要从远程实例启动我们的Jupyter Notebook。

现在如果你有一个公共的IP只想你的实例并且端口8888是暴露的,你可以直接键入http://<IP_Address>:8888 然后从本地浏览器进入你的Jupyter 服务器。

另一个选项,特别对于AWS实例来说,是要允许本地实例中的虚拟主机从本地机器上的浏览器进入我们的云端服务器notebook,也就是要建立SSH隧道。

我们从虚拟服务器进入远程notebook服务器,注意检查浏览器的地址中有https,否则会出现SSL错误。

验证GPU可用性


最后的步骤是确认一切都在正常运作中,并且我们的深度学习框架正在利用我们的(付费使用的)GPU,下面的代码将帮助我们验证这个事实。

我们的深度学习设置已经基本完成啦!

自有设置的建议


通常使用者或机构可能不想要利用云端服务器,特别是当他们的数据敏感是,他们致力于建立私有的深度学习环境。这里的主要关注点应当是投资在正确的硬件和软件上,以最大化地利用正确的GPU以建立深度学习模型。对于硬件有以下几点需要强调的:

处理器:你可以购买i5或者i7的英特尔CPU,或者是奢侈一点买一个Intel Xeon。

RAM:为内存考虑投资至少32GB 的 DDR4\DDR5或更好的RAM。

硬盘:选择一个1TB的硬盘是很棒的,为了快速获取数据你也可以购买至少128GB或者256GB的SSD。

GPU:GPU也许是深度学习需要的最重要的配件。买一个NVIDIA GPU,或者至少是比8GB的GTX1070更好的。

其他你不能忽略的东西包括一个母版,能源提供,坚固的盒子和冷却器。一旦你配置好了你的装备,对于软件配置,你可以重复前面几节的出去云环境配置外的所有步骤,然后开始你的深度学习研究。

总结


这个手把手指南的目标是让开发者,工程师和深度学习从业者从零开始快速建立自己的深度学习环境。我希望这个指南帮助你建立你自己的深度学习环境并不要把时间浪费在从论坛和Stack Overflow数不清的帖子里找答案上。

现在,开始你的深度学习吧!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多