0
本文作者: 吳德新 | 2016-09-14 09:30 | 專題:GPU引爆中國新興企業(yè)——GTC CHINA2016大會(huì)專題 |
編者按:本文是百度首席科學(xué)家吳恩達(dá)在GTC China 2016上的演講實(shí)錄整理。在今年的GTC China上,吳恩達(dá)的議題分享是到底什么是神經(jīng)網(wǎng)絡(luò),為什么GPU非常適合對(duì)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。
大家好,現(xiàn)在人們說人工智能是新的電能。電能改變了很多不同的行業(yè),我覺得現(xiàn)在人工智能也會(huì)對(duì)很多行業(yè)帶來一樣大的改變。現(xiàn)在人工智能的計(jì)算大部分都需要依賴GPU,我今天想跟大家分享這是為什么,也跟大家分享一下人工智能對(duì)你們的工作會(huì)有怎么樣的影響。
我們?cè)谌斯ぶ悄茴I(lǐng)域的人都是非常幸運(yùn)的,因?yàn)楹茉绲臅r(shí)候大家還不清楚深度學(xué)習(xí)是多么的重要,當(dāng)時(shí)黃仁勛就在人工智能方面做了很多工作,生產(chǎn)出這種GPU的平臺(tái),使得百度和其他公司能夠取得很多的成就。
兩個(gè)星期之前,百度發(fā)布了很多技術(shù)為大家提供服務(wù),其中很多都是使用機(jī)器學(xué)習(xí)和深度學(xué)習(xí),尤其是基于GPU的學(xué)習(xí)來進(jìn)行訓(xùn)練的。到底什么是深度學(xué)習(xí),我們往往會(huì)把它和大腦中的神經(jīng)元做一個(gè)類比,我希望更深地介紹一下技術(shù)方面的問題,到底什么是神經(jīng)網(wǎng)絡(luò),為什么我們覺得GPU非常適合對(duì)這些神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。
我們所做的深度學(xué)習(xí)的工作99%都可以類比成將不同的矩陣進(jìn)行相乘或者矩陣和向量進(jìn)行相乘。從第一天開始,GPU在矩陣相乘上就是非常高效的,所以整個(gè)領(lǐng)域都使用GPU平臺(tái)來做他們的工作。
什么叫做監(jiān)督式學(xué)習(xí)?輸入什么就輸出什么,如果說進(jìn)行人臉識(shí)別,你想對(duì)人臉識(shí)別的系統(tǒng)進(jìn)行訓(xùn)練,首先是一些數(shù)據(jù)組,比如一張臉和一個(gè)不是臉,我們對(duì)神經(jīng)網(wǎng)絡(luò)通過不同的矩陣相乘進(jìn)行訓(xùn)練,這就是我們進(jìn)行人臉識(shí)別的做法。很多深度學(xué)習(xí)的經(jīng)濟(jì)價(jià)值在于找到非常聰明的辦法來使用監(jiān)督式學(xué)習(xí)。有比較多的例子,比如想識(shí)別垃圾郵件;如果你有足夠的數(shù)據(jù),在百度看到很多用戶和廣告的信息也可以訓(xùn)練一個(gè)模型來預(yù)測(cè)用戶會(huì)不會(huì)點(diǎn)擊一個(gè)廣告。所以就是要找到非常聰明的監(jiān)督式學(xué)習(xí)模型,這也帶來了很多的經(jīng)濟(jì)價(jià)值。有很多現(xiàn)在我們所做的基礎(chǔ)研究都是關(guān)于監(jiān)督式學(xué)習(xí)的,還有加強(qiáng)式學(xué)習(xí)和很多其他的學(xué)習(xí),希望未來的幾年在其他領(lǐng)域也會(huì)進(jìn)行。這種監(jiān)督式學(xué)習(xí)的公式已經(jīng)足以對(duì)很多你們現(xiàn)在的工作帶來改變。
有幾個(gè)主要的趨勢(shì):第一是深度學(xué)習(xí)在這幾年才剛剛發(fā)展起來的原因是規(guī)?;?。我喜歡做一個(gè)類比,建立人工智能就像是建立一個(gè)火箭一樣,到底什么叫做火箭,你要造一個(gè)火箭首先需要一個(gè)大的引擎,然后需要很多的火箭燃料,這兩個(gè)都是非常大。如果引擎非常大,但是燃料非常少,這個(gè)火箭也飛不了多遠(yuǎn)。如果說引擎非常小,燃料非常多,有可能火箭根本就無法起飛。只有引擎非常大燃料非常多的時(shí)候才能建造一個(gè)非常好的火箭。神經(jīng)網(wǎng)絡(luò)就像火箭的引擎,現(xiàn)在我們能夠建立這樣的神經(jīng)網(wǎng)絡(luò),是因?yàn)楝F(xiàn)在規(guī)模化,是因?yàn)镚PU的發(fā)展。而前面提到的火箭燃料就是今天大量的互聯(lián)網(wǎng)公司獲得的數(shù)據(jù)。
算法的創(chuàng)新也是非常重要的。對(duì)我們來講首先要建立一個(gè)非常好的網(wǎng)絡(luò),然后要有充足的數(shù)據(jù),這是一個(gè)基礎(chǔ)。在過去的幾年,我看到這樣一些趨勢(shì),也就是規(guī)?;?,大概在十年前我們都通過普通的CPU進(jìn)行深度學(xué)習(xí)的訓(xùn)練,當(dāng)時(shí)大概有100萬的連接,進(jìn)步是非常慢的。2008年的時(shí)候我們寫了第一篇在CUDA上進(jìn)行神經(jīng)網(wǎng)絡(luò)訓(xùn)練的文章,當(dāng)時(shí)是斯坦福大學(xué)的一個(gè)研究,有了10倍的轉(zhuǎn)變。
2001年我?guī)ьI(lǐng)谷歌的一個(gè)團(tuán)隊(duì),我們使用CPU計(jì)算進(jìn)一步實(shí)現(xiàn)規(guī)?;煤芏嗟腃PU。但是很快我們就意識(shí)到使用很多CPU使用云計(jì)算其實(shí)并不能真正促進(jìn)深度學(xué)習(xí)發(fā)展,當(dāng)時(shí)在斯坦福以及后來在百度我們意識(shí)到使用HPC高性能計(jì)算。最近使用超級(jí)計(jì)算機(jī)才能更加促進(jìn)深度學(xué)習(xí)算法進(jìn)步的一個(gè)方向,所以最先進(jìn)的深度學(xué)習(xí)的系統(tǒng)已經(jīng)開始使用高性能算法了。我們要訓(xùn)練一個(gè)語音識(shí)別的模型需要20百萬億次,我們需要花100萬美元的電進(jìn)行一個(gè)模型的訓(xùn)練,我們的一個(gè)研究人員要進(jìn)行一個(gè)模型的訓(xùn)練需要花100美元的數(shù)據(jù),需要4兆字節(jié)的數(shù)據(jù)。
百度是全球第一個(gè)為深度學(xué)習(xí)建立GPU群的公司,我們不光進(jìn)行訓(xùn)練,而是真正的進(jìn)行運(yùn)作,我們?cè)缙诘耐顿Y是看好GPU能夠幫助我們?cè)谶@方面取得領(lǐng)先的能力,能夠促進(jìn)AI能力的發(fā)展。
以前語音識(shí)別系統(tǒng)分為很多的階段,首先輸入一個(gè)音頻,要抓取音頻的特征,獲得音位,要有語言的模型,然后再轉(zhuǎn)錄。在2011年的時(shí)候,在百度建立一個(gè)語音識(shí)別的系統(tǒng),我們認(rèn)為我們花了幾十年的時(shí)間來做語音識(shí)別,我們還是把整個(gè)的工作全部都用神經(jīng)網(wǎng)絡(luò)給取代。我們發(fā)現(xiàn)有了很大的神經(jīng)網(wǎng)絡(luò),相當(dāng)于一個(gè)火箭的引擎,使用端對(duì)端的學(xué)習(xí)方法可以幫助我們對(duì)最好的語音識(shí)別系統(tǒng)進(jìn)行訓(xùn)練。
上個(gè)月我們跟斯坦福大學(xué)和華盛頓大學(xué)合作發(fā)現(xiàn)如果你想用手機(jī)來輸入某個(gè)信息,用語音識(shí)別比用鍵盤可以快3倍,這些結(jié)果都是依賴我們的DSP系統(tǒng)。
之前我們講到規(guī)模的重要性,包括計(jì)算的規(guī)模和數(shù)據(jù)的規(guī)模,對(duì)于這些深度學(xué)習(xí)系統(tǒng)來進(jìn)行訓(xùn)練,這里我想給大家介紹一個(gè)簡單的方法,如果能夠提升機(jī)器學(xué)習(xí)系統(tǒng)的表現(xiàn),這當(dāng)然有點(diǎn)過于簡單了,但是我的團(tuán)隊(duì)問我怎么提升他們的機(jī)器學(xué)習(xí)系統(tǒng)的時(shí)候,我首先會(huì)把這個(gè)簡單的方法告訴他們。
首先要問他們,目前在訓(xùn)練數(shù)據(jù)上表現(xiàn)好嗎?如果不是的話,那我就會(huì)跟他們說你的這個(gè)神經(jīng)網(wǎng)絡(luò)需要有更大的規(guī)模,也就是說火箭的引擎要更強(qiáng)、更大。然后你繼續(xù)在這個(gè)方面進(jìn)行改進(jìn),直到你在訓(xùn)練數(shù)據(jù)上能夠有好的表現(xiàn),在這之后就問你測(cè)試數(shù)據(jù)上表現(xiàn)好嗎,如果不是的話我就跟他們說數(shù)據(jù)要更多,也就是說要有更多的火箭燃料。再繼續(xù)在這個(gè)方面進(jìn)行改進(jìn),直到在測(cè)數(shù)據(jù)上表現(xiàn)得好。這是一個(gè)非常簡單的公式,真實(shí)世界會(huì)更加復(fù)雜,這過于簡單,但這樣一個(gè)簡單的方法有很大的幫助,幫助我們提升了系統(tǒng)的性能,我也相信能夠幫助大家的機(jī)器學(xué)習(xí)系統(tǒng)的性能提升。
過去幾年很多性能提升都在于計(jì)算以及數(shù)據(jù)規(guī)模的提升,之所以計(jì)算的規(guī)模提升很多在于GPU計(jì)算的出現(xiàn),實(shí)際比這復(fù)雜得多,如果大家想要了解具體的細(xì)節(jié),如何提升機(jī)器學(xué)習(xí)的表現(xiàn),大家可以去參照我所寫的一本書,從這個(gè)網(wǎng)站可以拿到免費(fèi)的書。
前面我講到用GPU進(jìn)行訓(xùn)練,我也看到這個(gè)對(duì)于百度的工作以及很多其他公司的工作有很大的幫助。另外一個(gè)趨勢(shì),用GPU不僅進(jìn)行訓(xùn)練,也包括提供在線服務(wù)。HPC訓(xùn)練的巨大的神經(jīng)網(wǎng)絡(luò),我們發(fā)現(xiàn)我們有個(gè)問題,怎么樣可以把這么大的神經(jīng)網(wǎng)絡(luò)放在服務(wù)器上面提供在線服務(wù)?
如果看一下傳統(tǒng)的提供在線服務(wù)的架構(gòu),傳統(tǒng)的CPU服務(wù)器的架構(gòu),架構(gòu)是這樣的,比如這是CPU服務(wù)器,有幾個(gè)線程,如果有一個(gè)用戶有一些數(shù)據(jù)過來,他給了一個(gè)4乘1的向量,比如是一些語音數(shù)據(jù),你把這個(gè)交給一個(gè)線程進(jìn)行計(jì)算然后會(huì)有輸出。第二個(gè)用戶過來了,還是用第二個(gè)線程幫他進(jìn)行計(jì)算,第三第四也是一樣。這是比較傳統(tǒng)的CPU架構(gòu)提供在線的服務(wù)。因?yàn)槲覀冊(cè)诔?jí)計(jì)算及用很多GPU,訓(xùn)練非常大的神經(jīng)網(wǎng)絡(luò),我們發(fā)現(xiàn)這些非常大的模型部署在傳統(tǒng)的CPU當(dāng)中是非常困難的,因?yàn)檫@個(gè)架構(gòu)不適合。
我們有一個(gè)專門的技術(shù)叫Batch Dispatch,我們把數(shù)據(jù)放到我們的數(shù)據(jù)中心當(dāng)中,如果用戶出現(xiàn)了,當(dāng)他這端有一些數(shù)據(jù)的輸入,我們會(huì)暫時(shí)讓這個(gè)數(shù)據(jù)稍微等一點(diǎn)點(diǎn)時(shí)間,然后再等幾位用戶出現(xiàn),各自都有自己的數(shù)據(jù),把他們做成一個(gè)批次。我們把這些向量堆疊到一起變成一個(gè)矩陣,這是第一第二第三第四,變成了一個(gè)4乘4的矩陣。同時(shí)交給GPU處理器進(jìn)行處理,它是同時(shí)對(duì)這四個(gè)用戶的數(shù)據(jù)進(jìn)行處理,這些結(jié)果也同時(shí)會(huì)出來,GPU有非常強(qiáng)的并行處理能力,可以非常高效的進(jìn)行并行處理,我們把結(jié)果拿到之后再把它們分開,分別提供給四個(gè)用戶。
我們發(fā)現(xiàn)這樣使得我們可以有更大的模型規(guī)模,而且可以以更低的成本給更多的用戶提供服務(wù)。昨天我們?cè)诎俣鹊臄?shù)據(jù)中心和數(shù)據(jù)中心的負(fù)責(zé)人,在百度我們看到的一個(gè)趨勢(shì),現(xiàn)在越來越多的使用GPU及高性能計(jì)算在數(shù)據(jù)中心當(dāng)中,因此我們的團(tuán)隊(duì)在重新設(shè)計(jì)數(shù)據(jù)中心來更好地利用高密度的計(jì)算模式,我們有團(tuán)隊(duì)在重新設(shè)計(jì)供電、散熱,使得我們可以把更高密度的計(jì)算站納入到我們的數(shù)據(jù)中心當(dāng)中進(jìn)行訓(xùn)練,然后進(jìn)行推理。大家有些人可能是做數(shù)據(jù)中心工作的,這里邊有很多的工作是可以開展對(duì)于數(shù)據(jù)中心的架構(gòu)來進(jìn)行重新的設(shè)計(jì),從而使用這些高密度的GPU。
之前我講到了深度學(xué)習(xí),首先第一個(gè)就是計(jì)算的規(guī)模和數(shù)據(jù)的規(guī)模。第二個(gè)我所看到的過去幾年的趨勢(shì),深度學(xué)習(xí)現(xiàn)在可以給出更復(fù)雜的輸出。我的意思是五年之前大部分的機(jī)器學(xué)習(xí)所輸出的都只是整數(shù),比如垃圾郵件分類,你輸入一個(gè)郵件,輸入的是0或1是不是垃圾,圖片也是一樣的,輸出的是一個(gè)整數(shù),現(xiàn)在發(fā)生了變化,深度學(xué)習(xí)越來越多的可以去輸出非常復(fù)雜的結(jié)果,比如一個(gè)句子或者是一個(gè)圖像。我們的DSP Batch系統(tǒng)輸入音頻片段,可以輸出一個(gè)英文或者是中文的句子,圖片說明我們可以把圖片輸進(jìn)去,輸出是一個(gè)圖片說明來描述這個(gè)圖片說這是一輛黃色的車在路上開。所以現(xiàn)在神經(jīng)網(wǎng)絡(luò)可以輸出復(fù)雜的東西,比如句子和一些圖片說明,不僅僅是一些整數(shù)。包括翻譯,你可以輸入英文的句子,然后輸出中文的句子,也可以文法的校正,可能你輸入的是語法錯(cuò)誤的文本,輸出的是語法正確的句子。這個(gè)重要的趨勢(shì)也是可以非常聰明的使用,可以在AI和深度學(xué)習(xí)方面得到更大的價(jià)值挖掘。
當(dāng)然我們也知道,AI現(xiàn)在主要的局限性在于這樣的學(xué)習(xí)方式,也就是監(jiān)督式學(xué)習(xí)的方式是需要很多的標(biāo)記數(shù)據(jù),未來我希望我們能夠?qū)τ诜潜O(jiān)督學(xué)習(xí)有一些突破,但是目前我們可以通過監(jiān)督學(xué)習(xí)去轉(zhuǎn)化很多的行業(yè)來實(shí)現(xiàn)巨大的發(fā)展。
剛才我們講到了規(guī)模非常重要,我們需要用大量的數(shù)據(jù)進(jìn)行大量的模型的訓(xùn)練。規(guī)模非常重要,我們需要用很多的數(shù)據(jù)對(duì)大的模型進(jìn)行訓(xùn)練。還有另外一個(gè)原因,
我們看一下剛才的神經(jīng)網(wǎng)絡(luò)這個(gè)簡單的例子。我們要花很多的時(shí)間、很多的實(shí)驗(yàn)去發(fā)現(xiàn)這些神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),我可能在這個(gè)方面的工作已經(jīng)有25年的時(shí)間了,現(xiàn)在我開始要開始一個(gè)新問題的時(shí)候我也不知道什么樣的網(wǎng)絡(luò)是合適的,研究者需要進(jìn)行很多實(shí)驗(yàn),十幾種幾百種模型才能發(fā)現(xiàn)一個(gè)好的模型去完成這種任務(wù)。有這么多的訓(xùn)練數(shù)據(jù),語音識(shí)別系統(tǒng)有5萬小時(shí)的數(shù)據(jù),所以你要進(jìn)行這樣一個(gè)訓(xùn)練可能需要3個(gè)月的時(shí)間,這樣研究者的時(shí)間利用率不是那么高。另外一個(gè)原因,百度花很多的努力去優(yōu)化開發(fā)者的效率,因?yàn)槟銈冊(cè)谧鲞@個(gè)模型,你不知道到底什么樣的模型,你要做很多的實(shí)驗(yàn)去發(fā)現(xiàn)到底什么是可行的。我們發(fā)現(xiàn)我們投資于計(jì)算系統(tǒng)來加速這種實(shí)驗(yàn)的過程、試錯(cuò)的過程,可以使得研究者更加的高效,可以使得他們有更多的時(shí)間可以更快的去發(fā)明新的想法。
因此在這個(gè)方面,我們非常強(qiáng)調(diào),第一我們是投資計(jì)算平臺(tái),基于GPU的HPC計(jì)算平臺(tái)。第二我們是很大的投資于開發(fā)易于使用的深度學(xué)習(xí)工具,我們把我們自己的深度學(xué)習(xí)平臺(tái)開源化,它叫PaddlePaddle,易于使用,大家可以非常方便的嘗試深度學(xué)習(xí)的模型,來發(fā)現(xiàn)到底什么樣的模型對(duì)你的應(yīng)用是最為合適的。PaddlePaddle支持用多GPU,我們現(xiàn)在不是在一個(gè)GPU上進(jìn)行計(jì)算,一次可以用32個(gè)、64個(gè)、128個(gè)GPU進(jìn)行實(shí)驗(yàn)。
我對(duì)AI的未來寄予很高的希望,對(duì)人工智能的未來充滿信心,希望幾年后我們可以使用人工智能做到陪伴機(jī)器人,做到個(gè)性化私教、音樂作曲、機(jī)器人醫(yī)生,這些產(chǎn)品和技術(shù)可以為很多行業(yè)帶來巨大的改變,也對(duì)人類帶來巨大的價(jià)值。這些項(xiàng)目很多都正在研究階段,在人工智能時(shí)代如果你聽我們講未來,未來有時(shí)候很快就到了。
我想給大家看一個(gè)例子,我們正在做一個(gè)百度醫(yī)療大腦的項(xiàng)目,這個(gè)項(xiàng)目正在研究階段,請(qǐng)大家看看這段視頻。如果你輸入一個(gè)問題,寶寶發(fā)燒了出了很多紅疹,百度醫(yī)療大腦這個(gè)軟件會(huì)理解你的問題,問你很多病情的問題,如果你慢慢回答它的問題,它就可以識(shí)別出你的病情是怎么樣的,也可以輸出一些有關(guān)你病情的信息和建議。這個(gè)軟件當(dāng)然不可以替代醫(yī)生,假如患者想用這些信息先要跟醫(yī)生討論,技術(shù)還在研究階段,希望這種技術(shù)未來可以為患者和醫(yī)生帶來很多非常有用的信息。
我覺得我們非常幸運(yùn)能夠有這么好的GPU平臺(tái),在這個(gè)平臺(tái)上開發(fā)很多的AI應(yīng)用,在百度我非常振奮的是開發(fā)出AI的工具,不光是幫助我們自己也幫助很多的行業(yè),我在百度希望能夠在我們的硬件的基礎(chǔ)之上開發(fā)一些AI的工具幫助大家。謝謝大家!
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。