當前位置:
首頁 > 知識 > 如何分分鐘構建強大又好用的深度學習環境?

如何分分鐘構建強大又好用的深度學習環境?

選自towardsdatascience

作者:Dipanjan (DJ) Sarkar

機器之心編譯

參與:李詩萌、Chita

深度學習好處多多,但構建起來卻有些令人痛苦。為此,本文提供了一份詳盡的教程來教你快速構建自己的深度學習環境。不僅教你利用現有資源快速搭建深度學習模型,還一步步列出了如何通過雲平台搭建自己的深度學習環境。

引言

多虧了更快更好的計算,我們終於能利用神經網路和深度學習真正的力量了,這都得益於更快更好的 CPU 和 GPU。無論我們喜不喜歡,傳統的統計學和機器學習模型在處理高維的、非結構化數據、更複雜和大量數據的問題上存在很大的局限性。

深度學習的好處在於,在構建解決方案時,我們有更好的計算力、更多數據和各種易於使用的開源框架,比如 keras、TensorFlow以及 PyTorch。

深度學習的壞處是什麼呢?從頭開始構建你自己的深度學習環境是很痛苦的事,尤其是當你迫不及待要開始寫代碼和實現自己的深度學習模型的時候。

這個痛苦的過程我經歷了好幾次,也在這個過程中發現了更易於使用的服務,本文旨在教你改進自己設置的深度學習模型中不那麼令人滿意的部分,以便你可以更快更好地建立自己的深度學習模型並解決問題。本文涵蓋了以下幾個方面:

最小化配置基於雲的深度學習環境

建立你自己的基於雲的深度學習環境

本地部署提示

配置基於雲的深度學習環境

如果你不想用專用硬體搭建深度學習模型,或者你想跳過那些煩人的配置和設置命令,這裡有一些選擇!使用預配置的基於雲的深度學習環境是最好的選擇。通常,有一些常用的基於雲端的深度學習伺服器供應商。下面的幾個只需要很少的設置和配置,就可以讓你馬上開始工作。不過,這個列表並不全面,基本都是我用過或者從別人那聽過的:

Google Colaboratory:https://colab.research.google.com/

Paperspace Gradient°:https://www.paperspace.com/gradient

FloydHub Workspace:https://www.floydhub.com/product/build

Lambda GPU Cloud:https://lambdalabs.com/service/gpu-cloud

AWS Deep Learning AMIs:https://aws.amazon.com/machine-learning/amis/

GCP Deep Learning VM Images:https://cloud.google.com/deep-learning-vm

Google Colaboratory

也許谷歌是最好的選擇之一,而且它(仍然)免費,它可以讓你在 GPU 甚至是 TPU 支持的深度學習環境中運行互動式Jupyternotebook。谷歌一直在積極使用和推廣它在各個領域的應用,包括其極受歡迎的機器學習速成課程(Machine learning Crash Course)。簡言之,Colaboratory 是免費的 Jupyter notebook 環境,它不需要任何設置,甚至能夠讓你免費用 GPU 運行深度學習模型。

現在,對於工作負載和數據量較小的相對簡單的模型來說,使用 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 Workspace

FloydHub 有一個有趣的產品——FloydHub Workspace,它為基於雲端的深度學習提供了完全配置的開發環境。優勢?雖然它不是免費的,但你可以從 CPU 後端無縫切換到 GPU 後端,而且你可以根據所使用的處理器按秒付費。

他們的價格也很值得考慮。12 GB 內存、61 GB RAM 和 200 GB SSD 的 Tesla K80,使用 10 小時的費用為 12$,這是最便宜的選擇。

Lambda GPU Cloud

Lambda Labs(Lambda) 是一家 AI 基礎設施公司,他們提供了可以加速人類進步的計算力。他們關注的重點是深度學習工作站,最近推出了 Lambda GPU Cloud,但它尚處於封閉測試階段。每個 Lambda GPU Cloud 都有 4 個 GPU,比 AWS 的 p2.8xlarge 快 2 倍。他們聲稱,你只需要簡單地按一下按鈕,就可以立即通過 SSH 遠程訪問該雲GPU。每個 GPU 每小時收費 0.9$。

AWS Deep Learning AMIS

AMS(Amazon Web Services)是亞馬遜的子公司,他們根據用戶需要提供付費訂閱的雲計算平台。近期,他們推出了深度學習 AMI(Amazon Machine Images),專門用於構建深度學習模型的GPU 密集型工作負載。AWS Deep Learning AMI 給我們提供了必要的基礎架構和預配置的工具與框架,可以大規模加速雲端的深度學習。它預先配置了所有最新和最好的深度學習框架。

如果選擇用 AWS 那你要謹慎一點,因為它是按小時收費的。最便宜的選擇是 p2.xlarge,它提供了 12 GB 的GPU,每小時收費為 0.9$。

GCP Deep Learning VM Images

GCP(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. 安裝 CUDA

NVIDIA 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中無數關於設置深度學習環境的文章,就能建立自己的深度學習環境。現在走出去,開始「深度學習」吧!

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

------------------------------------------------


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

萬字長文概述NLP中的深度學習技術(上)
中了數據可視化的毒:BBC如何使用R語言繪製數據圖表?

TAG:機器之心 |