怎樣加速“深度學(xué)習(xí)”?GPU、FPGA還是專用芯片?
計算機(jī)發(fā)展到今天,已經(jīng)大大改變了我們的生活,我們已經(jīng)進(jìn)入了智能化的時代。但要是想實現(xiàn)影視作品中那樣充分互動的人工智能與人機(jī)互動系統(tǒng),就不得不提到深度學(xué)習(xí)。
本文引用地址:http://www.ex-cimer.com/article/201803/377456.htm深度學(xué)習(xí)
深度學(xué)習(xí)的概念源于人工神經(jīng)網(wǎng)絡(luò)的研究。含多隱層的多層感知器就是一種深度學(xué)習(xí)結(jié)構(gòu)。深度學(xué)習(xí)通過組合低層特征形成更加抽象的高層表示屬性類別或特征,以發(fā)現(xiàn)數(shù)據(jù)的分布式特征表示。
深度學(xué)習(xí)的概念由Hinton等人于2006年提出。基于深信度網(wǎng)(DBN)提出非監(jiān)督貪心逐層訓(xùn)練算法,為解決深層結(jié)構(gòu)相關(guān)的優(yōu)化難題帶來希望,隨后提出多層自動編碼器深層結(jié)構(gòu)。此外Lecun等人提出的卷積神經(jīng)網(wǎng)絡(luò)是第一個真正多層結(jié)構(gòu)學(xué)習(xí)算法,它利用空間相對關(guān)系減少參數(shù)數(shù)目以提高訓(xùn)練性能。
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)研究中的一個新的領(lǐng)域,其動機(jī)在于建立、模擬人腦進(jìn)行分析學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),它模仿人腦的機(jī)制來解釋數(shù)據(jù),例如圖像,聲音和文本。
同機(jī)器學(xué)習(xí)方法一樣,深度機(jī)器學(xué)習(xí)方法也有監(jiān)督學(xué)習(xí)與無監(jiān)督學(xué)習(xí)之分.不同的學(xué)習(xí)框架下建立的學(xué)習(xí)模型很是不同.
例如,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional neural networks,簡稱CNNs)就是一種深度的監(jiān)督學(xué)習(xí)下的機(jī)器學(xué)習(xí)模型,而深度置信網(wǎng)(Deep Belief Nets,簡稱DBNs)就是一種無監(jiān)督學(xué)習(xí)下的機(jī)器學(xué)習(xí)模型。
Artificial Intelligence,也就是人工智能,就像長生不老和星際漫游一樣,是人類最美好的夢想之一。雖然計算機(jī)技術(shù)已經(jīng)取得了長足的進(jìn)步,但是到目前為止,還沒有一臺電腦能產(chǎn)生“自我”的意識。是的,在人類和大量現(xiàn)成數(shù)據(jù)的幫助下,電腦可以表現(xiàn)的十分強大,但是離開了這兩者,它甚至都不能分辨一個喵星人和一個汪星人。
圖靈(圖靈,大家都知道吧。計算機(jī)和人工智能的鼻祖,分別對應(yīng)于其著名的“圖靈機(jī)”和“圖靈測試”)在 1950 年的論文里,提出圖靈試驗的設(shè)想,即,隔墻對話,你將不知道與你談話的,是人還是電腦。這無疑給計算機(jī),尤其是人工智能,預(yù)設(shè)了一個很高的期望值。但是半個世紀(jì)過去了,人工智能的進(jìn)展,遠(yuǎn)遠(yuǎn)沒有達(dá)到圖靈試驗的標(biāo)準(zhǔn)。這不僅讓多年翹首以待的人們,心灰意冷,認(rèn)為人工智能是忽悠,相關(guān)領(lǐng)域是“偽科學(xué)”。
但是自 2006 年以來,機(jī)器學(xué)習(xí)領(lǐng)域,取得了突破性的進(jìn)展。圖靈試驗,至少不是那么可望而不可及了。至于技術(shù)手段,不僅僅依賴于云計算對大數(shù)據(jù)的并行處理能力,而且依賴于算法。這個算法就是,Deep Learning。借助于 Deep Learning 算法,人類終于找到了如何處理“抽象概念”這個亙古難題的方法。
2012年6月,《紐約時報》披露了Google Brain項目,吸引了公眾的廣泛關(guān)注。這個項目是由著名的斯坦福大學(xué)的機(jī)器學(xué)習(xí)教授Andrew Ng和在大規(guī)模計算機(jī)系統(tǒng)方面的世界頂尖專家JeffDean共同主導(dǎo),用16000個CPU Core的并行計算平臺訓(xùn)練一種稱為“深度神經(jīng)網(wǎng)絡(luò)”(DNN,Deep Neural Networks)的機(jī)器學(xué)習(xí)模型(內(nèi)部共有10億個節(jié)點。這一網(wǎng)絡(luò)自然是不能跟人類的神經(jīng)網(wǎng)絡(luò)相提并論的。要知道,人腦中可是有150多億個神經(jīng)元,互相連接的節(jié)點也就是突觸數(shù)更是如銀河沙數(shù)。曾經(jīng)有人估算過,如果將一個人的大腦中所有神經(jīng)細(xì)胞的軸突和樹突依次連接起來,并拉成一根直線,可從地球連到月亮,再從月亮返回地球),在語音識別和圖像識別等領(lǐng)域獲得了巨大的成功。
項目負(fù)責(zé)人之一Andrew稱:“我們沒有像通常做的那樣自己框定邊界,而是直接把海量數(shù)據(jù)投放到算法中,讓數(shù)據(jù)自己說話,系統(tǒng)會自動從數(shù)據(jù)中學(xué)習(xí)?!绷硗庖幻?fù)責(zé)人Jeff則說:“我們在訓(xùn)練的時候從來不會告訴機(jī)器說:‘這是一只貓。’系統(tǒng)其實是自己發(fā)明或者領(lǐng)悟了“貓”的概念。”
2012年11月,微軟在中國天津的一次活動上公開演示了一個全自動的同聲傳譯系統(tǒng),講演者用英文演講,后臺的計算機(jī)一氣呵成自動完成語音識別、英中機(jī)器翻譯和中文語音合成,效果非常流暢。據(jù)報道,后面支撐的關(guān)鍵技術(shù)也是DNN,或者深度學(xué)習(xí)(DL,DeepLearning)。
用什么加快計算速度?異構(gòu)處理器
在摩爾定律的作用下,單核標(biāo)量處理器的性能持續(xù)提升,軟件開發(fā)人員只需要寫好軟件,而性能就等待下次硬件的更新,在2003年之前的幾十年里,這種“免費午餐”的模式一直在持續(xù)。2003年后,主要由于功耗的原因,這種“免費的午餐”已經(jīng)不復(fù)存在。為了生存,各硬件生產(chǎn)商不得不采用各種方式以提高硬件的計算能力,以下是目前最流行的幾種方式是。
1) 讓處理器一個周期處理多條指令 ,這多條指令可相同可不同。如Intel Haswell處理器一個周期可執(zhí)行4條整數(shù)加法指令、2條浮點乘加指令,同時訪存和運算指令也可同時執(zhí)行。
2) 使用向量指令 ,主要是SIMD和VLIW技術(shù)。SIMD技術(shù)將處理器一次能夠處理的數(shù)據(jù)位數(shù)從字長擴(kuò)大到128或256位,也就提升了計算能力。
3) 在同一個芯片中集成多個處理單元 ,根據(jù)集成方式的不同,分為多核處理器或多路處理器。多核處理器是如此的重要,以至于現(xiàn)在即使是手機(jī)上的嵌入式ARM處理器都已經(jīng)是四核或八核。
4) 使用異構(gòu)處理器,不同的架構(gòu)設(shè)計的處理器具有不同的特點,如X86 處理器為延遲優(yōu)化,以減少指令的執(zhí)行延遲為主要設(shè)計考量(當(dāng)然今天的X86 處理器設(shè)計中也有許多為吞吐量設(shè)計的影子);如NVIDIA GPU和AMD GPU則為吞吐量設(shè)計,以提高整個硬件的吞吐量為主要設(shè)計目標(biāo)。
GPU加速
相比之前在游戲、視覺效果中的應(yīng)用,GPU正在成為數(shù)據(jù)中心、超算中心的標(biāo)配,并廣泛應(yīng)用于深度學(xué)習(xí)、大數(shù)據(jù)、石油化工、傳媒娛樂、科學(xué)研究等行業(yè)。GPU計算正在加速著深度學(xué)習(xí)革命,作為深度學(xué)習(xí)研究技術(shù)平臺領(lǐng)導(dǎo)廠商,NVIDIA將為中國的深度學(xué)習(xí)提供更多的技術(shù)平臺和解決方案,并繼續(xù)與中國的合作伙伴一起積極參加和推動深度學(xué)習(xí)生態(tài)鏈的構(gòu)建。
基于GPU加速的深度學(xué)習(xí)算法,百度、微軟和Google的計算機(jī)視覺系統(tǒng)在ImageNet圖像分類和識別測試中分別達(dá)到了5.98% (2015年1月數(shù)據(jù))4.94%(2015年2月數(shù)據(jù))、4.8%(2015年2月數(shù)據(jù))、的錯誤率,接近或超過了人類識別水平——跑分競賽雖然有針對已知數(shù)據(jù)集進(jìn)行特定優(yōu)化之嫌,但優(yōu)化結(jié)果對工業(yè)界的實踐仍然具有參考價值。
人工智能從過去基于模型的方法,變成現(xiàn)在基于數(shù)據(jù)、基于統(tǒng)計的方法,主要得益于GPU高度并行的結(jié)構(gòu)、高效快速的連接能力。事實證明GPU很適合深度學(xué)習(xí)。
幾乎所有深度學(xué)習(xí)的研究者都在使用GPU
熟悉深度學(xué)習(xí)的人都知道,深度學(xué)習(xí)是需要訓(xùn)練的,所謂的訓(xùn)練就是在成千上萬個變量中尋找最佳值的計算。這需要通過不斷的嘗試實現(xiàn)收斂,而最終獲得的數(shù)值并非是人工確定的數(shù)字,而是一種常態(tài)的公式。通過這種像素級的學(xué)習(xí),不斷總結(jié)規(guī)律,計算機(jī)就可以實現(xiàn)像像人一樣思考。如今,幾乎所有的深度學(xué)習(xí)(機(jī)器學(xué)習(xí))研究者都在使用GPU進(jìn)行相關(guān)的研究。當(dāng)然,我說的是“幾乎”。除了GPU之外,包括MIC和FPGA也提供了不同的解決方案。NVIDIA如何看待不同的硬件架構(gòu)對深度學(xué)習(xí)的影響,又是如何評價這些技術(shù)的呢?
NVIDIA中國區(qū)解決方案架構(gòu)工程總監(jiān)羅華平認(rèn)為:“技術(shù)發(fā)展和科技的發(fā)展,是需要不同的技術(shù)一起來參與。無論是GPU也好、FPGA也好或者是專用的神經(jīng)網(wǎng)芯片也好,它的主要目的都是推動深度學(xué)習(xí)(機(jī)器學(xué)習(xí))這個方向的技術(shù)發(fā)展。那么我們在初期,確實可以嘗試不同的技術(shù),來探討哪種技術(shù)可以更好的適合這項應(yīng)用。從目前來看,深度學(xué)習(xí)大量的使用,主要集中在訓(xùn)練方面。那么在這個領(lǐng)域,GPU確實是非常適合的,這也體現(xiàn)在所有的這些工業(yè)界的大佬如BAT、谷歌,F(xiàn)acebook等等,都在使用GPU在做訓(xùn)練?!倍擞?xùn)練之外,在實際的應(yīng)用方面,NVIDIA也正在結(jié)合中國地區(qū)IDC機(jī)房普遍具備的功耗、網(wǎng)絡(luò)等特點,“考慮是否設(shè)計低功耗的GPU,來滿足用戶的需求”。
除了硬件方面的因素之外,英偉達(dá)中國區(qū)技術(shù)經(jīng)理賴俊杰也從軟件方面解答了GPU對于深度學(xué)習(xí)應(yīng)用的價值。首先從深度學(xué)習(xí)應(yīng)用的開發(fā)工具角度,具備CUDA支持的GPU為用戶學(xué)習(xí)Caffe、Theano等研究工具提供了很好的入門平臺。其實GPU不僅僅是指專注于HPC領(lǐng)域的Tesla,包括Geforce在內(nèi)的GPU都可以支持CUDA計算,這也為初學(xué)者提供了相對更低的應(yīng)用門檻。除此之外,CUDA在算法和程序設(shè)計上相比其他應(yīng)用更加容易,通過NVIDIA多年的推廣也積累了廣泛的用戶群,開發(fā)難度更小。最后則是部署環(huán)節(jié),GPU通過PCI-e接口可以直接部署在服務(wù)器中,方便而快速。得益于硬件支持與軟件編程、設(shè)計方面的優(yōu)勢,GPU才成為了目前應(yīng)用最廣泛的平臺。
深度學(xué)習(xí)發(fā)展遇到瓶頸了嗎?
我們之所以使用GPU加速深度學(xué)習(xí),是因為深度學(xué)習(xí)所要計算的數(shù)據(jù)量異常龐大,用傳統(tǒng)的計算方式需要漫長的時間。但是,如果未來深度學(xué)習(xí)的數(shù)據(jù)量有所下降,或者說我們不能提供給深度學(xué)習(xí)研究所需要的足夠數(shù)據(jù)量,是否就意味著深度學(xué)習(xí)也將進(jìn)入“寒冬”呢?對此,賴俊杰也提出了另外一種看法。“做深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練需要大量模型,然后才能實現(xiàn)數(shù)學(xué)上的收斂。深度學(xué)習(xí)要真正接近成人的智力,它所需要的神經(jīng)網(wǎng)絡(luò)規(guī)模非常龐大,它所需要的數(shù)據(jù)量,會比我們做語言識別、圖像處理要多得多。假設(shè)說,我們發(fā)現(xiàn)我們沒有辦法提供這樣的數(shù)據(jù),很有可能出現(xiàn)寒冬”。
不過他也補充認(rèn)為——從今天看到的結(jié)果來說,其實深度學(xué)習(xí)目前還在蓬勃發(fā)展往上的階段。比如說我們現(xiàn)階段主要做得比較成熟的語音、圖像方面,整個的數(shù)據(jù)量還是在不斷的增多的,網(wǎng)絡(luò)規(guī)模也在不斷的變復(fù)雜。現(xiàn)在我沒有辦法預(yù)測,將來是不是會有一天數(shù)據(jù)真不夠用了。
對于NVIDIA來說,深度學(xué)習(xí)是GPU計算發(fā)展的大好時機(jī),也是繼HPC之后一個全新的業(yè)務(wù)增長點。正如Pandey所提到的那樣,NVIDIA將世界各地的成功經(jīng)驗帶到中國,包括國外的成功案例、與合作伙伴的良好關(guān)系等等,幫助中國客戶的快速成長?!耙驗楝F(xiàn)在是互聯(lián)網(wǎng)的時代,是沒有跨界的時代,大家都是同等一起的?!?/p>
GPU、FPGA 還是專用芯片?
盡管深度學(xué)習(xí)和人工智能在宣傳上炙手可熱,但無論從仿生的視角抑或統(tǒng)計學(xué)的角度,深度學(xué)習(xí)的工業(yè)應(yīng)用都還是初階,深度學(xué)習(xí)的理論基礎(chǔ)也尚未建立和完善,在一些從業(yè)人員看來,依靠堆積計算力和數(shù)據(jù)集獲得結(jié)果的方式顯得過于暴力——要讓機(jī)器更好地理解人的意圖,就需要更多的數(shù)據(jù)和更強的計算平臺,而且往往還是有監(jiān)督學(xué)習(xí)——當(dāng)然,現(xiàn)階段我們還沒有數(shù)據(jù)不足的憂慮。未來是否在理論完善之后不再依賴數(shù)據(jù)、不再依賴于給數(shù)據(jù)打標(biāo)簽(無監(jiān)督學(xué)習(xí))、不再需要向計算力要性能和精度?
退一步說,即便計算力仍是必需的引擎,那么是否一定就是基于GPU?我們知道,CPU和FPGA已經(jīng)顯示出深度學(xué)習(xí)負(fù)載上的能力,而IBM主導(dǎo)的SyNAPSE巨型神經(jīng)網(wǎng)絡(luò)芯片(類人腦芯片),在70毫瓦的功率上提供100萬個“神經(jīng)元”內(nèi)核、2.56億個“突觸”內(nèi)核以及4096個“神經(jīng)突觸”內(nèi)核,甚至允許神經(jīng)網(wǎng)絡(luò)和機(jī)器學(xué)習(xí)負(fù)載超越了馮·諾依曼架構(gòu),二者的能耗和性能,都足以成為GPU潛在的挑戰(zhàn)者。例如,科大訊飛為打造“訊飛超腦”,除了GPU,還考慮借助深度定制的人工神經(jīng)網(wǎng)絡(luò)專屬芯片來打造更大規(guī)模的超算平臺集群。
不過,在二者尚未產(chǎn)品化的今天,NVIDIA并不擔(dān)憂GPU會在深度學(xué)習(xí)領(lǐng)域失寵。首先,NVIDIA認(rèn)為,GPU作為底層平臺,起到的是加速的作用,幫助深度學(xué)習(xí)的研發(fā)人員更快地訓(xùn)練出更大的模型,不會受到深度學(xué)習(xí)模型實現(xiàn)方式的影響。其次,NVIDIA表示,用戶可以根據(jù)需求選擇不同的平臺,但深度學(xué)習(xí)研發(fā)人員需要在算法、統(tǒng)計方面精益求精,都需要一個生態(tài)環(huán)境的支持,GPU已經(jīng)構(gòu)建了CUDA、cuDNN及DIGITS等工具,支持各種主流開源框架,提供友好的界面和可視化的方式,并得到了合作伙伴的支持,例如浪潮開發(fā)了一個支持多GPU的Caffe,曙光也研發(fā)了基于PCI總線的多GPU的技術(shù),對熟悉串行程序設(shè)計的開發(fā)者更加友好。相比之下,F(xiàn)PGA可編程芯片或者是人工神經(jīng)網(wǎng)絡(luò)專屬芯片對于植入服務(wù)器以及編程環(huán)境、編程能力要求更高,還缺乏通用的潛力,不適合普及。
評論