选自towardsdatascience
作者:Dipanjan (DJ) Sarkar
机器之心编译
参加:李诗萌、Chita
深度学习优点多多,但构建起来却有些令人苦楚。为此,本文供给了一份翔实的教程来教你快速构建自己的深度学习环境。不只教你运用现有资源快速树立深度学习模型,还一步步列出了怎么经过云渠道树立自己的深度学习环境。
导言
多亏了更快更好的核算,咱们总算能运用神经网络和深度学习的优点在于,在构建处理方案时,咱们有更好的核算力、更多数据和各种易于运用的开源结构,比方 keras、深度学习的害处是什么呢?从头开端构建你自己的深度学习环境是很苦楚的事,尤其是当你刻不容缓要开端写代码和完成自己的深度学习模型的时分。
这个苦楚的进程我阅历了好几次,也在这个进程中发现了更易于运用的服务,本文旨在教你改善自己设置的深度学习模型中不那么令人满意的部分,以便你能够更快更好地树立自己的深度学习模型并处理问题。本文涵盖了以下几个方面:
最小化装备依据云的深度学习环境树立你自己的依据云的深度学习环境本地布置提示
装备依据云的深度学习环境
假如你不想用专用硬件树立深度学习模型,或许你想越过那些烦人的装备和设置指令,这儿有一些挑选!运用预装备的依据云的深度学习环境是最好的挑选。一般,有一些常用的依据云端的深度学习服务器供货商。下面的几个只需求很少的设置和装备,就能够让你立刻开端作业。不过,这个列表并不全面,根本都是我用过或许从他人那听过的:
Google Colaboratory:https://colab.research.google.com/Paperspace Gradient°:https://www.paperspace.com/gradientFloydHub Workspace:https://www.floydhub.com/product/buildLambda GPU Cloud:https://lambdalabs.com/service/gpu-cloudAWS Deep Learning AMIs:https://aws.amazon.com/machine-learning/amis/GCP Deep Learning VM Images:https://cloud.google.com/deep-learning-vmGoogle Colaboratory或许谷歌是最好的挑选之一,并且它(依然)免费,它能够让你在 GPU 乃至是 TPU 支撑的深度学习环境中运转交互式 现在,关于作业负载和数据量较小的相对简略的模型来说,运用 CPU 就能够了,但在处理更杂乱的问题时你必定需求运用 GPU。在 Google Colab 中改动运转时来运用 GPU 只需求几秒,如下图所示:
然后 Google Colab 会给你分配一个新的GPU用于深度学习,你能够经过以下代码检查 GPU 类型:
你能够免费运用有 12 GB 内存的 Tesla K80 GPU了!相同的装备,AWS 的 p2.xlarge 每小时收费 0.9 美元。太棒了!这应该能够帮你在 Google Colab 上测验运转自己的深度学习模型。你在用 Colab 时,能够随意用我的 colab notebook来测验CPU 和 GPU支撑的深度学习环境。Paperspace Gradient°Gradient° 是 Paperspace 的产品,该公司要点重视的是机器学习和数据科学的根底设备。它为开发人员供给了一套用于在 GPU 上探究数据、练习深度学习模型以及运转核算作业的完好东西。Gradient° 包含1-click jupyter notebook,该notebook支撑 Paperspace GPU 云端一切功用。
假如你用 GPU 的话的确需求按小时付费,但其价格与其他服务器供货商比较极具竞赛力——Quadro P4000 每小时收费 0.5$,Tesla K80 每小时收费 0.59$。而这些和 AWS 的同类产品比较也更廉价一些。FloydHub WorkspaceFloydHub 有一个风趣的产品——FloydHub Workspace,它为依据云端的深度学习供给了彻底装备的开发环境。优势?虽然它不是免费的,但你能够从 CPU 后端无缝切换到 GPU 后端,并且你能够依据所运用的处理器按秒付费。
他们的价格也很值得考虑。12 GB 内存、61 GB RAM 和 200 GB SSD 的 Tesla K80,运用 10 小时的费用为 12$,这是最廉价的挑选。Lambda GPU CloudLambda Labs(Lambda) 是一家 AI 根底设备公司,他们供给了能够加快人类前进的核算力。他们重视的要点是深度学习作业站,最近推出了 Lambda GPU Cloud,但它尚处于关闭测验阶段。每个 Lambda GPU Cloud 都有 4 个 GPU,比 AWS 的 p2.8xlarge 快 2 倍。他们宣称,你只需求简略地按一下按钮,就能够当即经过 SSH 长途拜访该云GPU。每个 GPU 每小时收费 0.9$。AWS Deep Learning AMISAMS(Amazon Web Services)是亚马逊的子公司,他们依据用户需求供给付费订阅的云核算渠道。近期,他们推出了深度学习 AMI(Amazon Machine Images),专门用于构建深度学习模型的GPU 密集型作业负载。AWS Deep Learning AMI 给咱们供给了必要的根底架构和预装备的东西与结构,能够大规模加快云端的深度学习。它预先装备了一切最新和最好的深度学习结构。
假如挑选用 AWS 那你要慎重一点,因为它是按小时收费的。最廉价的挑选是 p2.xlarge,它供给了 12 GB 的GPU,每小时收费为 0.9$。GCP Deep Learning VM ImagesGCP(Google Cloud Platform)供给了一整套云核算服务,包含运转深度学习模型和作业负载的根底设备。最棒的是,它是在谷歌内部用于终端用户产品的相同根底设备上运转的。你注册的话,GCP会在第一年给你供给价值 300$ 的免费积分,这简直太酷了!
Google Cloud Deep Learning VM Images 能够让开发人员在谷歌核算引擎(Google Compute Engine)上实例化包含盛行深度学习和机器学习结构的 VM 图画。你能够运用预先装置了盛行 ML 结构(如 TensorFlow、PyTorch 或 scikit-learn 等)的核算引擎。最棒的是,你能够一键增加云端 TPU 和 GPU 支撑。和 AWS 比较,它的价格也十分有竞赛优势。用 GCP VM 的话,每小时仅需 0.45$就能够运用 12 GB 的 Tesla K80 GPU。上述内容能够让你充沛了解潜在选项,以最少的装备和设置敞开深度学习之旅。
树立依据云端的深度学习环境
虽然在云端预装备的设置很好用,但有时分你或许会想构建自定义的依据云端或许是本地的深度学习环境。在本节中,咱们将研讨该怎么经过常用的云渠道服务供货商在云端树立自己的深度学习环境。首要包含以下几步:
挑选云供货商创立虚拟服务器装备虚拟服务器设置深度学习环境运用深度学习环境验证 GPU 的运用
现在咱们来介绍怎么设置依据云的深度学习环境。
挑选云供货商现在有许多装备不错且价格低廉的云供货商。咱们能够运用 PaaS(Platform as a Service,渠道即服务)才能,做一些办理数据、运用程序以及根本装备的作业,还能够用 GPU 核算来进行深度学习。常用的供货商包含亚马逊的 AWS、微软的 Azure 和谷歌的 GCP。创立虚拟服务器挑选云服务供货商之后,就要创立自己的虚拟机了,它根本上便是保管代码、数据以及装备设置的服务器。创立虚拟机的过程取决于你所挑选的云供货商。在我写的《Hands-on Transfer Learning with Python》第二章中具体介绍了怎么在 AWS 上创立和实例化自己的虚拟机。完好的代码库是开源的,假如你感兴趣的话,能够在 GitHub 库中检查更多细节:https://github.com/dipanjanS/hands-on-transfer-learning-with-python。
装备虚拟服务器创立虚拟机后,你就能够在云供货商的渠道上发动实例了。在 AWS 上一般是 EC2 用户界面,在 GCP 中一般是虚拟机的页面。现在你需求个人秘钥才能从本地终端运用 SSH 登录服务器。一般来说,AWS 在创立虚拟机的最终一步才让你设置暗码,并给你供给可下载的个人秘钥。GCP 答应你用 SSH 经过 GCP 页面直接登录体系。假如需求的话,你能够依据这篇攻略创立SSH 暗码:https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys。将你的 SSH 暗码保存在安全的当地,用下列指令从终端登录服务器:
祝贺!你现在现已成功登入了自己的深度学习服务器。以下是关于深度学习设置方面的内容,条件是你在用 Linux 服务器。咱们的 Linux 发行版是 Ubuntu 18.10。你能够依据自己的喜爱自由挑选操作体系。因为咱们在原型规划和开发时广泛地运用了 Jupyter notebook,因而要为笔记本服务器设置暗码,这样即使有人以某种办法得到了你的公共 IP 地址,他也无法运用你的 Jupyter notebook。假如你不想设置暗码,你能够先越过本节中暗码设置的过程。这儿首要要用 Open SSL 创立新的 SSL 证书。
假如体系中没有装置 Python,咱们主张你运用 Anaconda 发行版,它的package办理体系很强壮,并且还有一整套预装置的库。咱们主张依照官方攻略装置 Anaconda 的 Python 发行版:https://docs.anaconda.com/anaconda/install/linux/。为了避免装备文件不存在,要为 Jupyter notebook 服务器生成装备文件。一般来说,文件在你的主目录中:~/.jupyter/jupyter_notebook_config.py,假如该文件不存在,你能够用下列指令创立一个:
为了保证笔记本依据暗码的安全性,咱们首要要生成暗码及其哈希码。能够在 Ipython.lib 顶用 passwd() 函数完成,如下所示:
输入暗码并验证后,函数会回来一个哈希值,这是你暗码的哈希值(本例中,我输入的暗码实际上便是单词「password」,你绝对不要用!)。将这个哈希值仿制并保存下来,咱们很快就会用到。接下来,发动你常用的文本修改器来修改 Jupyter 的装备文件,如下图所示:
咱们现在预备设置自己的深度学习环境了。设置深度学习环境咱们现在要开端设置深度学习环境所需的必要装备,以便开端运用 GPU。假如你的实例中现已装备了 CUDA 和 cuDNN,能够依据需求越过下面的过程。1. 装置图形驱动首要要确认你现已为 GPU 装置了图形驱动。假定你用的是英伟达的 GPU。测验你是否装置了驱动的最好办法是在终端运转 nvidia-smi 指令。假如指令不起作用,咱们就要装置 GPU 驱动。
2. 装置 CUDANVIDIA CUDA Toolkit 根本上便是一个创立能最大程度运用英伟达 GPU 的运用和程序的开发环境。GPU 加快的 CUDA 库支撑跨多个域的嵌入式加快,包含线性代数、图画和视频处理、深度学习以及图形剖析。假定咱们用的是依据 Ubuntu 的体系,你能够查阅英伟达 CUDA 的官方文档并下载必要的装置文件。在编撰本文时,CUDA 10 现已发布了,可是它还太新。因而咱们用的是旧版的 CUDA 9.0,你能够从前史版别的发布页面获取该版别。假如你在服务器上,最好用终端直接下载装置文件,并用下面的指令装备 CUDA:
3. 装置 cuDNN英伟达 CUDA 深度神经网络库(cuDNN)是用于深度神经网络GPU 加快的原语库。cuDNN 库为神经网络中的规范例程供给了高度优化的完成,包含正向和反向卷积、池化、归一化和激活层。深度学习从业者能够依靠 cuDNN 加快在 GPU 上广泛运用的深度学习结构。你能够从官方网站下载 cuDNN,但你先要注册一个英伟达的账号。之后你会得到下载 cuDNN 的链接,然后你能够在服务器上经过这个链接直接在终端上下载:
一般来说,这能处理 GPU 设置所需的大部分依靠。4. 装置深度学习结构假如还没有装置深度学习结构,咱们能够装置和设置 Python 深度学习结构。咱们用得比较多的是 keras 和 tensorflow,下面的指令能够协助咱们在自己的深度学习环境上装置它们:
拜访深度学习云端环境咱们并不想一直在服务器的终端上写代码。因而咱们想用 Jupyter Notebook 进行交互式开发,所以咱们要经过本地体系拜访在云服务器上的 Notebook。首要,要发动长途实例上的 Jupyter Notebook:
现在,假如你给实例分配了公共 IP,并且公开了 8888 端口,你能够直接输入 http://:8888,然后就能够经过本地浏览器拜访在云端虚拟机中的 Jupyter 服务器了!还有另一个挑选,尤其是对 AWS 实例来说,那便是在本地实例上用端口转发,经过本地机器的浏览器来拜访云端服务器的笔记本。这也称为 SSH 地道(tunneling)。
假如用的是端口转发,转到本地浏览器并导航到本地主机地址,例如 https://localhost:8890,咱们将转到虚拟服务器的长途笔记本服务器。保证地址顶用的是 https,否则会触发 SSL 过错。验证 GPU 的运用最终一步是保证一切都在正常运转,保证咱们的深度学习结构在运用 GPU(咱们是按小时付费的!)。下面的代码能够协助咱们验证这一点。
本地布置的装置提示
有些用户或安排或许不想用云端服务,特别是在他们的数据比较灵敏的情况下,因而他们重视更多的是树立本地布置的深度学习环境。这儿首要介绍怎么出资恰当的硬件和软件,以完成功能最大化,并运用适宜的 GPU 树立深度学习模型。关于硬件,特别需求留意的是:
处理器:你能够用 i5 或 i7 的 Intel CPU,假如你想奢华一下那也能够买 Intel Xeon!RAM:就内存而言,你至少要用 32 GB 的 DDR4或 DDR5,更好的 RAM 也能够。硬盘:1 TB 的硬盘就很好了,假如想快速拜访数据的话,至少也要 128 GB 或许 256 GB!GPU:这或许是深度学习中最重要的组件了。主张你买英伟达的 GPU,至少要是 8 GB 的 GTX 1070。
当然,其他元件你也不应该忽视,包含主板、电源、巩固的外壳以及冷却器等。配好硬件设备后,关于软件装备,你能够重复上面的一切过程,除了云端设置。现在,你应该能够开端了!
总结
本文旨在协助开发人员、工程师以及深度学习从业者从零开端快速布置深度学习环境。期望本文能够帮你节约精力,不用费尽心机花数小时阅览论坛和 Stack Overflow中很多关于设置深度学习环境的文章,就能树立自己的深度学习环境。现在走出去,开端「深度学习」吧!
原文链接:https://towardsdatascience.com/build-your-own-robust-deep-learning-environment-in-minutes-354cf140a5a6
本文为机器之心编译,转载请联络本大众号取得授权。