如今,大多數機器學習都是在處理器上完成的。有人會說,學習的過程必須由GPU進行加速,但對于多數用戶來說,這可能并不是最好的建議。
到目前為止,GPU仍然比其他東西更適合用于機器學習的軟件。不過英特爾的一系列努力已經讓這種近乎被GPU制霸的狀態(tài)有所緩和——加上英特爾Xeon SP家族的白金版本,最高性能間的差距已縮小到近2倍,而不是之前的100倍。這可能會讓一些人感到震驚,但它的文檔記錄確實不錯,而且當我們了解它的底層架構時,也許就不會那么震驚了。性能上如此接近,使得GPU加速器成為一種奢侈品,而不是必需品——也就是說當我們真正需要的時候,GPU是一個更好的選擇。
毫無疑問,機器學習領域中,“加速器”在性能和/或功耗方面都有優(yōu)勢。在這篇文章的結尾,筆者會回過頭來談一談:“如果我們只做機器學習會怎樣?”。由于多數用戶需要的不僅僅是一臺“機器學習”服務器,筆者將關注的是為何英特爾Xeon SP白金處理器仍然是服務器的最佳選擇,包括需要將機器學習作為其工作負載的一部分服務器。
基準在哪里?
英特爾的工程師會告訴你,深度學習的框架是高度偏向于為GPU優(yōu)化的,而不是CPU。因此,英特爾采取了一些措施——在這些框架缺乏CPU優(yōu)化的今天,英特爾對已經為GPU優(yōu)化的框架進行了CPU優(yōu)化。
結果不言自明。隨著CPU優(yōu)化的增加,TensorFlow基準測試的CPU獲得了高達72X的性能(參見Intel博客,標題為關于現代英特爾架構的TensorFlow優(yōu)化)。類似的,Caffe基準測試中,CPU優(yōu)化使其增益高達82X(參見Intel的博客,標題為Intel優(yōu)化Caffe與BVLC Caffe相比)。這只是一個開始。Torch框架的網站中宣稱“Torch是一個科學的計算框架,廣泛支持將GPU視為首選項的機器學習算法?!?/span>
在本文后面,筆者將逐一介紹這些框架和庫,并提供下載的鏈接,詳細介紹基準測試結果。
當然,最重要的基準是你自己的程序。因此,我建議您在使用提供CPU優(yōu)化和GPU優(yōu)化的框架和庫時對比一下結果。
實際上,最流行的框架都有針對CPU優(yōu)化的版本,尤其是英特爾 Xeon SP處理器。這里有一個部分運行的關鍵軟件,用于加速對英特爾Xeon白金處理器版本的深入學習,這足以使GPU的最佳性能優(yōu)勢接近于2倍,而不是100倍。
我們所了解和熱愛的深度學習框架
以下所有這些框架都對英特爾Math內核庫(英特爾 MKL)和英特爾高級矢量擴展指令集(Intel AVX)進行了優(yōu)化。
TensorFlow是谷歌創(chuàng)建的領先的深度學習和機器學習框架。對于Linux來說,對于處理器的Tensorflow優(yōu)化是可以通過pip安裝的。Intel性能測試顯示,如果沒有這些性能優(yōu)化,Tensorflow基本版本的CPU性能將提高72倍。要了解更多關于優(yōu)化工作的信息,以及性能數據,請參閱題為《現代英特爾架構的TensorFlow優(yōu)化》的博客文章。地址https://software.intel.com/en-us/articles/tensorflow-optimizations-on-modern-intel-architecture
Caffe是最受歡迎的圖像識別社區(qū)應用程序之一。在CPU上運行時,英特爾已經為改進Caffe的性能做出了貢獻,可以參閱https://github.com/BVLC/caffe/tree/intel。一些性能測試顯示,對CPU的優(yōu)化增加了82倍,參閱博客《與BVLC Caffe相比,英特爾優(yōu)化Caffe的收益》。地址https://software.intel.com/en-us/articles/comparison-between-intel-optimized-caffe-and-vanilla-caffe-by-intel-vtune-amplifier
Torch是一個流行的深度學習框架。在未經調整CPU優(yōu)化的情況下使用標準的Torch是不現實的。使用英特爾軟件優(yōu)化的Torch,運行在CPU上時會Torch的性能,特別是在英特爾Xeon可擴展處理器上??蓞㈤啠篽ttps://github.com/intel/torch。
Theano是一個開放源碼的Python庫,很受機器學習程序員的歡迎,可以幫助定義、優(yōu)化和評估涉及多維數組的數學表達式。CPU優(yōu)化為CPU設備提高了性能,尤其是英特爾Xeon可擴展處理器和英特爾Xeon處理器Phi,參閱https://github.com/intel/theano。
Neon是一種基于python的深度學習框架,旨在為現代深度神經網絡的使用和可擴展性提供便利,并致力于在所有硬件上提供最佳性能。Neon是由Nervana推出的,它已被英特爾公司收購。了解更多相關信息:https://www.intelnervana.com/neon/
深度學習數學庫
Python和它的庫可能是機器學習應用中最流行的基層部分。Python的加速版本在過去的幾年里得到了廣泛的應用——可以直接下載,或者通過Conda、yum和apt-get、Docker images。運行沒有加速Python在多數情況下是不可行的。在此網站上尋找你需要知道的所有信息:https://software.intel.com/distribution-for-python。
BigDL是Apache Spark的分布式深度學習庫。對于BigDL,用戶可以將他們的深度學習應用程序編寫為標準的Apache Spark程序,它可以直接運行在現有的Apache Spark或Hadoop集群之上。以Torch為模型,BigDL為深度學習提供了全面的支持,包括數字計算(通過張量)和高水平的神經網絡;此外,用戶還可以使用BigDL將預先訓練的Caffe或Torch模型加載到Spark程序中。據報道,英特爾聲稱在BigDL的處理比單節(jié)點Xeon處理器上的“開箱即用的開源caffe、Torch或TensorFlow快得多”,與主流GPU相當。它可以從https://github.com/intel-analytics/BigDL獲得。
MXNet是一個開源深度學習框架,可以從https://github.com/apache/incubator-mxnet獲得。
英特爾MKL-DNN是一個開源的、能提高性能的庫,可以通過英特爾MKL-DNN概述博客https://software.intel.com/articles/intel-mkl-dnn-part-1-library-overview-and-installation.獲得在CPU上加速深度學習框架的方法。
除了上面提到的框架和庫之外,英特爾數據分析加速庫(DAAL)是一個開源的優(yōu)化算法構建塊,用于數據分析階段,此階段通常與解決大數據問題相關聯(lián)。該庫是為使用流行數據平臺而設計的,包括Hadoop、Spark、R和Matlab??梢詤㈤唄ttps://software.intel.com/intel-daal。
如果我們只做機器學習呢?
一個服務器需要支持多種工作負載時,英特爾Xeon可擴展處理器可能是最好的解決方案,但如果我們想要購買一臺“機器學習”服務器或超級計算機呢?
筆者的建議是“確定你真正知道你需要什么”,并意識到這個領域的事情正在發(fā)生變化。機器學習的加速器可能會從GPU轉變?yōu)镕PGA、ASIC,以及一些描述中有“神經網絡”的產品。在所有這些解決方案中,支持各種工作負載的CPU仍然是英特爾Xeon處理器。
加速器的選擇越來越多樣化。高核心的CPU和FPGA提供了非常靈活的選擇,性價比和效率都不差。英特爾的Xeon Phi處理器系統(tǒng)可以進行訓練,或者學習一個AlexNet圖像分類系統(tǒng),比使用Nvidia GPU的類似配置系統(tǒng)的速度快2.3倍。(參見英特爾內部:加快機器學習的競賽https://www.intel.com/content/www/us/en/analytics/machine-learning/the-race-for-faster-machine-learning.html)。英特爾已經表明,英特爾Xeon Phi處理器每美元的性能比一個主機GPU解決方案高出9倍,每瓦的性能提高了8倍。未來還有更多英特爾Nervana專為人工智能設計的產品。
機器學習的基礎
Xeon SP處理器,尤其是白金級處理器,為機器學習提供了出色的性能,同時給我們提供了比其他任何解決方案更多的通用性。如果我們需要進行加速,英特爾Xeon可擴展處理器仍然是一個具有加速器的通用系統(tǒng)的核心,而這些加速器的選項正在迅速增多。不管怎樣,依靠Skylake處理器和他們對機器學習的出色支持,給了我們一個性能和通用性的最佳組合。
it168網站原創(chuàng) 作者: 謝濤編譯