天天看點

Anaconda GPU計算入門指南

GPU計算已成為資料科學領域的重要組成部分。計算需求的不斷增長,使得GPU計算逐漸流行起來。此外,現在每個主要雲計算提供商都提供了GPU服務,比如阿裡雲,是以現在通路高性能硬體是非常簡單的一件事。但是,自行建構GPU軟體是相當吓人。幸運的是,Anaconda Distribution可以很容易地啟動GPU計算,并且可以從我們的軟體包庫中直接安裝幾個支援GPU的軟體包。在這篇部落格文章中,我們将向你介紹如何在Anaconda發行版中開始使用GPU。

在本文中我将介紹NVIDIA GPU制造的GPU,因為它們在Anaconda Distribution中有内置支援,但是AMD的Radeon Open Compute計劃也在迅速改善AMD GPU計算生态系統,以保證能夠适應現在的軟體。

<b>1.</b><b>什麼時候選擇GPU?</b>

GPU并不是通用計算裝置。它們是專門的協處理器,對于一些任務來說是非常好的(一般可以提升10倍的性能)。GPU最成功的應用是在裝置的大并行浮點吞吐量和高記憶體帶寬的問題領域中。一些例子包括:

1.線性代數。

2.信号和圖像處理(FFT)。

3.神經網絡和深度學習。

4.其他機器學習算法,包括廣義線性模型,梯度增強等。

5.蒙特卡羅模拟和粒子運輸。

6.流體模拟。

7.記憶體資料庫。

...

所有這些成功用例的共同點是什麼?廣義而言,準備用于GPU加速的應用程式具有以下特征:

<b>1.1</b><b>:高“算術強度”</b>

如果數學運算與記憶體運算的比例較高,要求運算算法速度快,GPU加速是一個很好的選擇。這些算法利用了GPU的高數學吞吐量,以及在同時對其他資料進行數學運算的同時,在背景對記憶體通路進行排隊的能力。GPU可以在請求和接收存儲在GPU記憶體中的一個編号的時間内輕松地執行許多數學指令。

什麼算得上高算術強度?GPU的一個法則是,對于你輸入的每一個數字,你至少需要十個基本的數學運算(加法,減法,乘法,除法等)或至少一個特殊的數學函數調用,如exp()或者cos()。

<b>1.2</b><b>:高度的平行性</b>

GPU是處理陣列的最佳選擇,大陣列的元素可以并行計算。如果計算隻能分成少量的獨立任務,則多核CPU可能更适合。請注意,找到并行的方法是要用不同的算法替換目前的串行算法,以高度并行的方式解決相同的問題。一個快速的網絡搜尋是否有價值,看它是否有“明顯不能并行化”的東西。

<b>1.3</b><b>:工作資料集可以放入GPU記憶體</b>

16 GB(甚至24 GB)的GPU現在已經可以買到,但也比在高端伺服器上安裝的系統記憶體的數量要少一個數量級。一些算法可以将資料在同一台計算機上的多個GPU之間進行分割,而且有時可以在不同計算機的GPU之間分割資料。也可以将系統RAM中的資料傳輸到GPU中,但連接配接GPU和CPU的PCI-E總線的帶寬或将成為一個限制因素,除非計算和記憶體傳輸仔細重疊。

<b>1.4</b><b>:I / O不是瓶頸</b>

很多資料科學任務主要受I / O速度限制。例如,在一個磁盤上過濾500 GB記錄以找到與簡單搜尋模式比對的子集的應用程式将花費大部分時間等待資料從磁盤加載。如果這個資料過濾之後将要進行6個小時的深度學習的訓練,那麼使用GPU将是非常有益的(僅對于模型訓練階段)。在開始性能優化工作之前,分析你的Python應用程式以測量實際耗用的時間是一個好主意。

<b>2.</b><b>先決條件</b>

在開始使用GPU之前,你需要做一些事情:

<b>2.1</b><b>:使用NVIDIA®(英偉達</b>™)<b>GPU(圖形處理器)的系統</b>:更便宜的GeForce顯示卡非常适合實驗,更昂貴的Tesla顯示卡通常具有更好的雙精度性能和更多記憶體。移動NVIDIA GPU也可以工作,但性能非常有限。

<b>3.GPU</b><b>項目檢查</b>

<b>深度學習:Keras,TensorFlow,PyTorch</b>

Keras和支援GPU的TensorFlow版本可以使用以下指令安裝在Anaconda中:

conda

install keras-gpu

我也喜歡在Jupyter上記錄我的Keras實驗,是以你可能也想運作:

install notebook

jupyter

notebook

<b>4.GPU</b><b>加速數學庫:pyculib</b>

2.快速傅立葉變換。

3.稀疏矩陣。

4.随機數生成。

5.排序。

這些Python包采用标準的NumPy數組,并為你處理來自GPU的所有副本。請注意,由于複制開銷,你可能會發現這些函數沒有比NumPy更快的小陣列。性能也很大程度上取決于你使用的GPU類型和數組資料類型。使用GeForce顯示卡時,float32類型比float64(NumPy預設)要快得多。

<b>5.GPU</b><b>核心程式設計:Numba</b>

Numba的GPU支援是可選的,是以要啟用它,你需要安裝Numba和CUDA工具包conda軟體包:

install numba cudatoolkit

<b>6.GPU</b><b>資料框:PyGDF</b>

<b>結論:</b>

我隻介紹了關于GPU的冰山一角,但是希望上面提到的能激勵你深入了解。下面

Parallel Forall部落格中有關Numba的七件事:

<a href="https://devblogs.nvidia.com/parallelforall/seven-things-numba/" target="_blank">https://devblogs.nvidia.com/parallelforall/seven-things-numba/</a>

Stanley selbert, Stan上司着Anaconda的社群創新團隊,他的工作重點是高性能GPU計算和設計資料分析

文章原标題《Getting started

with GPU Computing in Anaconda》

作者:Stanley selbert譯者:虎說八道,審閱: