close

深度學習入門指北——從硬件到軟件

原標題:深度學習入門指北——從硬件到軟件



雷鋒網AI科技評論按:近日,Rachel Thomas在fast.ai上發佈瞭一篇博文《What you need to do deep learning》,他希望通過這篇文章回答一些深度學習入門者經常會問到的問題:什麼樣的電腦才能用來做深度學習?為什麼 fast.ai 推薦使用英偉達的 GPU 呢?哪些深度學習庫不適合初學者?你又是如何將深度學習應用到實際生產中的?



Rachel Thomas認為,所有的這些問題都可以歸結到一個主題,那就是“究竟需要準備好哪些東西(硬件、軟件、知識背景以及數據等)才能開始深度學習?”。所以本篇博客正是針對那些想入門深度學習以及對深度學習感興趣的新人而寫的。雷鋒網編譯如下。



一、硬件基礎

關於硬件基礎,我們首先不得不感謝一下遊戲工業的蓬勃發展。



視頻遊戲工業的體量(就盈利而言)遠遠超出瞭電影工業和音樂工業之和。在過去的 20 年裡,視頻遊戲工業極大地推進瞭 GPUs (圖像處理單元)的發展進步,這是由於 GPU 可用於加速遊戲圖像渲染的矩陣數學運算過程。並且非常幸運的是,深度學習運算中也涉及到大量的矩陣操作。而這些年在 GPU 上取得運算能力的進步也正是為什麼神經網絡算法在早期沒有發揮出效力,直到在近幾年才展露頭角的原因之一。因為在沒有 GPU 的條件下,要訓練一個深度學習模型在大多數情況下都將是一個非常漫長而痛苦的過程。





圖一 英偉達Tesla系列顯卡



註意 GPU 的選擇桃園靜電機租賃

大多數的深度學習從業者並不需要直接通過編程來操控 GPUs,而是使用一些諸如 PyTorch 或 TensorFlow 這樣的軟件包來實現的。但是為瞭能夠高效地使用這些軟件包,我們必須購買正確的 GPU,而這幾乎就等價於我們需要購買英偉達出產的 GPU。



CUDA 和 OpenCL 是當前用來實現 GPU 編程的主流方式。CUDA 是迄今為止發展最好的,擁有最廣泛生態系統的,也是最被深度學習框架支持的集成技術。由於 CUDA 是由英偉達創建的集成技術,所以它無法被其它公司的 GPU 所使用。所以當 fast.ai 推薦使用英偉達的 GPU 時,並不是因為我們對英偉達公司有好感或者說英偉達給瞭好處,而僅僅是因為這是目前深度學習的最佳選擇。



英偉達在 GPUs 的市場中占據著絕對的統治地位,然後緊隨其後的競爭者則是 AMD。在這個夏天,AMD 發佈瞭 ROCm 平臺,用於對深度學習提供更多的技術支持。當前 ROCm 平臺對於主流的深度學習框架(諸如 PyTorch, TensorFlow 和 CNTK 等)的支持還處於開發階段。因為 ROCm 平臺進行瞭開源,並且能夠為深度學習的底層提供更多的選擇,我是非常希望它能夠取得成功的,但還是不得不承認 ROCm 的文檔比較晦澀難懂。以至於盡管我想要這裡介紹一下 ROCm 平臺,但是在閱讀瞭 ROCm 網站提供的 Overview、Getting Started 和 Deep Learning 頁面之後卻依然無法通過自己的語言來描述和解釋 ROCm。(我承認自己沒有硬件知識背景,但是我認為像我這樣的數據科學傢應該成為該項目的目標讀者之一)



如果沒有 GPU

如果你的電腦不具有 GPU 或者是沒有英偉達產的 GPU,你還擁有以下幾個選擇:



使用 Crestle,僅僅需要使用瀏覽器進行操作。Crestle 提供瞭一套已經配置成熟的雲服務方案(由 fast.ai 的學生 Anurag Goel 開發),雲服務器中已經預裝瞭所有的主流科學計算與深度學習將使用到的框架,並且還配置好瞭相應的 GPU 支持。而且你能夠通過瀏覽器輕松地進行訪問。每位新用戶都將免費獲得 10 個小時的體驗時間以及 1GB 的存儲空間。體驗過後,帶有 GPU 支持的服務器收費是每小時 0.59 美元。我建議那些從未使用過 AWS 服務或者不熟悉控制臺操作的同學選擇這個。



通過控制臺創建一個 AWS 雲實例。你可以選擇參考這篇由 fast.ai 出品的配置教程來創建一個 AWS 實例(AWS 能夠遠程為你提供英偉達的 GPUs 服務)。AWS 的收費標準是每小時 0.9 美元。雖然我們的教程是關於配置 AWS 的,還是有一位 fast.ai 的同學寫瞭一篇關於在 Azure 虛擬機上配置深度學習環境的博客。另外如果有哪位同學寫瞭關於如何在 Google 雲引擎上配置深度學習環境的博客,我也非常樂於將其鏈接分享出來並添加到這裡。



組建自己的深度學習工作站。這是我們 fast.ai 論壇中一個較為冗長的話題,人們可以在其中提問題、分享自己正在使用的組件以及發佈其它有用的鏈接或者提示。最便宜的新款英偉達 GPU 大概需要 300 美元左右,有些同學在 eBay 或 Craigslist 上發現瞭更便宜的舊版 GPU,另外也有些同學選擇瞭花費更多的錢來購買性能更加強悍的 GPUs。並且有許多的同學寫瞭博客來分享他們是如何組建起自己的深度學習機器:



Mariya Yao 寫的 Deep Confusion: Misadventures in Building a Deep Learning Machine



Sravya Tirukkovalur 寫的 Setting up a Deep learning machine in a lazy yet quick way




二、軟件基礎

深度學習還是一個相對新興的領域,因此與它有關的框架和工具也是日新月異。比如說,我們在 2016 年教學課程第一部分采用的深度學習框架 Theano 就在最近宣佈停止瞭支持和更新。而我們目前正在使用的 PyTorch 框架則是 2017 剛剛發佈的。正如 Jeremy 在早些的博客中提到的——在學習任何特定的深度學習框架和軟件時你都必須做好它們可能在一年或者兩年後將被拋棄的心理準備。最重要的事情是理解最基礎的概念,所以為瞭實現這一目標,我們基於 PyTorch 的基礎上創建瞭自己的軟件庫,並且我們認為這將有助於更加清晰地展示深度學習的概念,同時也有助於實現最佳編碼。



Python 是當前在深度學習領域使用最為廣泛的編程語言。另外還存在著各式各樣的深度學習框架可供選擇,並且幾乎所有的主流科技公司都支持著各自不同的框架,盡管這些公司的員工在實際研發中總是混合使用著各類框架。深度學習框架包括有 TensorFlow (谷歌)、PyTorch (Facebook)、MxNet (華盛頓大學開發,後由亞馬遜維護)、CNTK (微軟)、DeepLearning4j (Skymind)、Caffe2 (Facebook)、Nnabla (索尼)、PaddlePaddle (百度)和Keras (一個基於前邊若幹個框架為基礎進行高級封裝的 API)。並且所有這些框架都提供有 Python 的 API 接口。



動態圖 vs. 靜態圖

在 fast.ai,我們在選擇框架時優先考慮程序員編程的便捷性(能更方便地進行調試和更直觀地設計),而不是框架所能帶來的模型加速能力。這也正是我們選擇 PyTorch 的理由,因為它是一個具有動態圖機制的靈活框架。



依據采用動態計算或是靜態計算的不同,可以將這些眾多的深度學習框架劃分成兩大陣營,當然也有些框架同時具有動態計算和靜態計算兩種機制(比如 MxNet 和最新的 TensorFlow)。動態計算意味著程序將按照我們編寫命令的順序進行執行。這種機制將使得調試更加容易,並且也使得我們將大腦中的想法轉化為實際代碼變得更加容易。而靜態計算則意味著程序在編譯執行時將先生成神經網絡的結構,然後再執行相應操作。從理論上講,靜態計算這樣的機制允許編譯器進行更大程度的優化,但是這也意味著你所期望的程序與編譯器實際執行之間存在著更多的代溝。這也意味著,代碼中的錯誤將更加難以發現(比如,如果計算圖的結構出現問題,你可能隻有在代碼執行到相應操作的時候才能發現它)。盡管理論上而言,靜態計算圖比動態計算圖具有更好的性能,但是在實踐中我們經常發現並不是這樣的。



谷歌的 TensorFlow 主要使用瞭靜態計算圖,而 Facebook 的 PyTorch 則使用瞭動態計算圖機制。(註:TensorFlow 在兩周前宣佈瞭一個動態計算選項 Eager Execution,不過該特性還比較新穎並且 TensorFlow 的文檔和項目依然以靜態計算為主)。在九月份,fast.ai 宣佈將在今年的課程中采用 PyTorch 框架進行教學以及開發 fast.ai 自己的框架(實際上就是采用瞭更好的編碼方式對 PyTorch 進行高級封裝)。簡而言之,以下是我們選擇 PyTorch 的幾個原因(更詳細的原因請參見這裡):



更加容易調試



動態計算更適用於自然語言處理



傳統的面向對象編程風格(這對我們來說更加自然)



TensorFlow 中采用的諸如 scope 和 sessions 等不尋常的機制容易使人感到疑惑不解,而且需要花費更多時間學習



谷歌在推廣 TensorFlow 上已經花費瞭大量的資源,其投入要遠遠大於任何其它公司或者團隊,並且我想這也是為什麼 TensorFlow 會如此出名的原因之一(對於很多深度學習的門外漢油煙靜電機出租,TensorFlow 是他們唯一聽說過的框架)。正如之前所述,TensorFlow 在幾周前發佈瞭動態計算選項,這將解決瞭一些上述提到的問題。然後許多人就向 fast.ai 提問說我們是否考慮遷移回 TensorFlow 框架。但是目前 TensorFlow 提供的動態選項還比較新穎而且開發也不夠完善,所以我們依然選擇繼續愉快地使用 PyTorch。但是 TensorFlow 團隊非常樂意於接受我們的想法,我們也很高興看到我們的 fastai 庫被移植到 TensorFlow 中。



三、如何讓技術落地?

許多人把工業應用中的深度學習想的過於復雜,認為自己需要比實際更加復雜的系統。你可以在生產中使用 CPU 和網絡服務器,並且這也是我們在多數情況下所推薦的。這裡有一些關鍵點:



在工業應用中需要訓練網絡的情況是非常罕見的。即便你想要每天都更新模型權重,你也不需要在應用中去進行訓練。這是一條很好的消息,這意味著我們在應用中隻需要進行推理(模型前向傳播的過程),這遠比訓練要來的簡單和快速。



你可以使用任何自己所喜愛的網絡服務器(比如 Flask),並且將推理的過程設置成一個簡單的 API 調用。



隻有能夠有效地批量處理數據,GPU 才能夠提供更快的計算速度。不然假設你每秒獲得 32 個請求,使用 GPU 反而可能減慢速度,因為從第一個請求數據達到直到收集全 32 個請求數據時,你必須等待一秒鐘,然後再執行計算,然後返回結果。因此我們建議在實際生產中使用 CPU,並且你也可以根據需要添加更多的 CPU(這比使用多 GPU 要來的簡單)。



對於大公司而言在服務器中采用 GPU 是有意義的,當你發展到這個程度的時候你自然就知道自己需要瞭。但是過早地進行擴展隻會增加不必要的復雜性並且拖慢你的速度。



四、所需背景:一年的編程經歷

啟發 Jeremy 和我編寫《寫給程序員看的深度學習實踐》的一大原因是,目前大多數的深度學習材料存在著以下缺陷:



內容過於簡單籠統,以至於不能提供如何將深度學習應用在實踐中或者創造最先進模型所需的信息或技能。如果你僅僅需要一個整體的概覽,這些內容沒有問題。但是如果你想學會如何應用深度學習,這卻是遠遠不夠的。

靜電油煙機出租

高度理論化並且假設讀者具備有本科生的數學背景知識。對於許多人來說,這是一道障礙,即使是具有數學博士學位的人。另外我發現這些過於理論化的學習對於掌握如何編寫實際代碼並沒有特別大的幫助。這些材料有這種理論化的傾向其實也並不奇怪。因為直到最近,深度學習還是一門學術學科,並且很大程度上是由在頂級學術刊物上發表的內容所推動的。



我們的《寫給程序員看的深度學習實踐》是一門免費課程,其特點在於僅僅要求學員具備至少一年的編程經驗,然後我們就可以教會你們如何創建最先進的模型。你的編程語言背景可以是任何一門語言,但是在開始學習我們的課程之前你最好先學會使用 Python,因為這正是我們所使用的。我們將根據需要介紹相關的數學概念,並不建議大傢單獨嘗試學習數學理論。



如果你還不知道如何編寫代碼,我們強烈建議你去學習一下。另外如果你對數據科學感興趣的話,Python 是一門非常合適的語言。



五、所需數據:遠比你想象的要少

雖然許多人都聲稱需要具備有像谷歌一般的數據量才能從事深度學習工作,但這種觀點是錯誤的。因為遷移學習(結合諸如數據增強的技術)的出現使得人們能夠將經過預訓練的模型在更小的數據集上進行訓練。正如我們在其它地方談到的,在一傢醫療初創公司 Enlitic,Jeremy Howard 帶領著一支團隊僅僅隻使用瞭 1000 例肺癌 CT 掃描樣本,創建瞭一個比 4 位專業放射科醫師具備更準確判別肺癌能力的算法。另外 C++ 庫 Dlib 提供瞭另外一個樣例,在這個例子中僅僅使用瞭 4 張圖片的 18 張臉來訓練一個面部檢測器!





圖二 使用Dlib實現人臉識別



六、關於 fast.ai

fast.ai 是一個致力於為所有人提供學習深度學習機會的平臺。我們相信,深度學習將是一個轉型的技術,將顯著改善對發展中國傢影響最大的醫藥,教育,農業,交通等諸多領域。但是要真正實現這一點,技術需要比現在更加容易使用,可靠和直觀。我們正在研究綜合利用人類與計算機各自優勢的混合“人機”解決方案,建立一個隨時可用的應用程序和模型庫,開發完整的教育框架,並為開發人員和用戶編寫能夠快速上手和易於使用的軟件。

台灣電動床工廠 電動床
台灣電動床工廠 電動床
AUGI SPORTS|重機車靴|重機車靴推薦|重機專用車靴|重機防摔鞋|重機防摔鞋推薦|重機防摔鞋
AUGI SPORTS|augisports|racing boots|urban boots|motorcycle boots
一川抽水肥清理行|台中抽水肥|台中市抽水肥|台中抽水肥推薦|台中抽水肥價格|台中水肥清運
X戰警多鏡頭行車記錄器專業網|多鏡頭行車記錄器|多鏡頭行車紀錄器比較|多鏡頭行車紀錄器推薦|多鏡頭行車紀錄器影片
台中抽水肥專業網|台中抽水肥|台中市抽水肥|台中抽水肥推薦|台中抽水肥價格|台中水肥清運
台灣靜電機批發工廠|靜電機|靜電機推薦|靜電油煙處理機|靜電油煙處理機推薦
優美環保科技工程-靜電機,靜電機推薦,靜電機保養,靜電機清洗,靜電油煙處理機


arrow
arrow
    全站熱搜

    ent02pu488 發表在 痞客邦 留言(0) 人氣()