我們知道器一,任何一臺(tái)計(jì)算機(jī)课锌,也包括智能手機(jī),游戲機(jī)等有計(jì)算能力的設(shè)備,都有一個(gè)計(jì)算的核心芯片渺贤,叫做CPU(Central Processing Unit)雏胃,即中央處理器,它負(fù)責(zé)所有的計(jì)算志鞍,并且控制計(jì)算機(jī)的全部工作瞭亮。
CPU的性能從上個(gè)世紀(jì)60年代中期開(kāi)始,幾乎按照每18個(gè)月翻一番的速度在進(jìn)步固棚,從1965年至今统翩,差不多翻了34次了,也就是說(shuō)計(jì)算速度提高了160億倍此洲。如果再把這個(gè)進(jìn)步分解一下厂汗,又可以分成兩個(gè)維度,一個(gè)是主頻的提高呜师,另一個(gè)是集成電路芯片密度(稱為集成度)的提高面徽。
主頻提高后,本來(lái)一秒鐘算10萬(wàn)個(gè)周期匣掸,現(xiàn)在可以算30億個(gè)趟紊,增加了幾萬(wàn)倍。密度提高后碰酝,本來(lái)幾個(gè)周期完成一次計(jì)算任務(wù)霎匈,現(xiàn)在可以流水作業(yè)、分工合作送爸,一個(gè)周期完成好幾次計(jì)算铛嘱。兩者的加速是疊加的,使得今天計(jì)算機(jī)的速度變得飛快袭厂。
但是墨吓,CPU的主頻不可能無(wú)限制提高,因?yàn)楣馑偈且粋€(gè)絕對(duì)的瓶頸纹磺,今天計(jì)算機(jī)CPU內(nèi)部帖烘,電子運(yùn)動(dòng)的速度已經(jīng)接近光速所給的極限了,幾乎沒(méi)有了再提高的可能性橄杨,事實(shí)上從10年前開(kāi)始秘症,這條路就走不通了。
那么怎么辦呢式矫?英特爾公司的辦法是乡摹,將計(jì)算機(jī)CPU的集成度進(jìn)一步提高,最早一個(gè)集成電路中只有幾千個(gè)晶體管采转,今天最多的有60億個(gè)聪廉,這樣計(jì)算可以并行開(kāi)展,這也是為什么我們計(jì)算機(jī)和手機(jī)CPU有什么四核、八核之說(shuō)板熊。
那么接下來(lái)框全,為什么不能做成16核、32核甚至100核呢邻邮?因?yàn)橐越裉斓墓に嚳⒖觯龅侥敲炊嗪颂幚砥鞯捏w積要大得不得了克婶,光是散熱問(wèn)題就沒(méi)法解決筒严。面對(duì)這個(gè)問(wèn)題怎么辦呢?英特爾總的態(tài)度是情萤,沒(méi)法解決鸭蛙,你們多買我一些處理器,多建造一些服務(wù)器筋岛,再把計(jì)算中心修得大一點(diǎn)就好了娶视。且不說(shuō)這個(gè)法子靈不靈,在很多場(chǎng)合也沒(méi)有條件這么做睁宰,比如在無(wú)人駕駛汽車中肪获,總不能扛著一個(gè)機(jī)柜上路吧。
我們知道柒傻,有主動(dòng)性的人孝赫,總是想方設(shè)法尋找更好的解決方法。英偉達(dá)的創(chuàng)始人黃仁勛就是這樣的人红符。黃仁勛和他在英偉達(dá)的同事就想青柄,CPU的計(jì)算速度之所以不夠快,是因?yàn)樗辉O(shè)計(jì)成能夠適應(yīng)所有的計(jì)算了预侯,里面很多晶體管都用來(lái)搭建控制電路了致开。
另外,因?yàn)橛?jì)算太復(fù)雜萎馅,因此處理器本身設(shè)計(jì)得太復(fù)雜双戳。而在計(jì)算機(jī)里面,有一種計(jì)算相對(duì)單一糜芳,就是控制顯示器的圖形計(jì)算拣技,于是英偉達(dá)就為這一類計(jì)算專門設(shè)計(jì)了一種處理器,叫做GPU耍目,即圖形處理器膏斤。
當(dāng)然,在英偉達(dá)之前邪驮,做圖形工作站的太陽(yáng)公司和SGI公司也設(shè)計(jì)出類似的產(chǎn)品莫辨,但是不通用。GPU比CPU的好處有兩個(gè):
第一,控制電路簡(jiǎn)單了沮榜,因此更多的晶體管用于了計(jì)算盘榨,而不是控制,這樣本來(lái)10億個(gè)晶體管可以搭建四個(gè)內(nèi)核蟆融,還有希望搭建八個(gè)草巡、十六個(gè)甚至更多。
第二型酥,將單個(gè)兒?jiǎn)蝹€(gè)兒的計(jì)算山憨,變成一批一批的計(jì)算。在現(xiàn)實(shí)生活中弥喉,大部分的計(jì)算每次都是在兩個(gè)數(shù)之間進(jìn)行的郁竟,比如A+B=C,它是一個(gè)運(yùn)算指令(“+”)帶上兩個(gè)數(shù)字(“A”和“B”)由境,下一次做X-Y棚亩,是另一個(gè)運(yùn)算指令(“-”)帶上另外兩個(gè)數(shù)字(“X”和“Y”)。因此計(jì)算機(jī)處理器實(shí)際上是按照一個(gè)指令通道(流)對(duì)應(yīng)一個(gè)數(shù)據(jù)通道設(shè)計(jì)的(被稱為SISD)虏杰。打個(gè)不很恰當(dāng)?shù)谋确郊ン。话愕挠?jì)算就如同你蹲在地上一個(gè)個(gè)地?fù)於棺印?/p>
而圖形計(jì)算是整個(gè)一條線(在計(jì)算機(jī)科學(xué)里被稱為向量)按照同一種操作一口氣算完,比如A1+B1=C1纺阔,A2+B2=C2瘸彤,……,最后A1000+B1000=C1000州弟,對(duì)于這些計(jì)算來(lái)講钧栖,指令都是一樣的,只是使用不同的數(shù)據(jù)而已婆翔,因此它可以設(shè)計(jì)出非常多的功能簡(jiǎn)單的計(jì)算核心拯杠,然后對(duì)一條指令開(kāi)發(fā)很多數(shù)據(jù)通道(即所謂的SIMD)即可。
這就相當(dāng)于用一個(gè)吸塵器在地上吸豆子啃奴,你走過(guò)一條線潭陪,就吸起一大堆,效率就高多了最蕾。對(duì)此依溯,英偉達(dá)提出一種所謂的“統(tǒng)一計(jì)算架構(gòu)”(CUDA)的概念,就是很多很多核都做同一件事情瘟则,并且在此基礎(chǔ)上設(shè)計(jì)出圖形處理器GPU黎炉。
有了GPU,很多重復(fù)一致的計(jì)算就可以并行了醋拧。GPU最早是針對(duì)圖形計(jì)算設(shè)計(jì)的慷嗜,但是后來(lái)英偉達(dá)發(fā)現(xiàn)機(jī)器學(xué)習(xí)的算法也可以用這種方式實(shí)現(xiàn)淀弹,于是到了2016年,英偉達(dá)又針對(duì)機(jī)器學(xué)習(xí)的特點(diǎn)庆械,設(shè)計(jì)了針對(duì)機(jī)器學(xué)習(xí)的GPU薇溃,它最新的P40處理器內(nèi)部有多達(dá)3000個(gè)所謂“統(tǒng)一計(jì)算架構(gòu)”的內(nèi)核。
雖然每一個(gè)能力都比不上英特爾四核處理器中的一個(gè)內(nèi)核缭乘,但是P40等GPU的內(nèi)核數(shù)量非常多沐序,因此做人工智能計(jì)算就非常快堕绩。今天特斯拉搞的輔助駕駛策幼,一片這樣的處理器就能解決所有的問(wèn)題。在去年對(duì)陣?yán)钍朗腁lphaGo中逛尚,就是用了176個(gè)英偉達(dá)的GPU垄惧,承擔(dān)了主要的計(jì)算功能刁愿。
但是畢竟機(jī)器學(xué)習(xí)中的向量計(jì)算和通用的向量計(jì)算還是有所不同绰寞,能否讓計(jì)算的內(nèi)核功能再專一一點(diǎn),只做和一種非常特定的機(jī)器學(xué)習(xí)算法(即Google的人工神經(jīng)網(wǎng)絡(luò)算法)相關(guān)的向量計(jì)算呢铣口?
于是滤钱,Google提出了一種張量(Tensor)計(jì)算的概念。所謂張量脑题,它原本是一個(gè)數(shù)學(xué)概念件缸,表示各種向量或者數(shù)值之間的關(guān)系。比如你的兩張照片是兩個(gè)不同的向量叔遂,它們之間的一些相似性就是一個(gè)張量他炊。人工神經(jīng)網(wǎng)絡(luò)的算法可以看成是張量的計(jì)算,至于為什么已艰,大家不必細(xì)究痊末,記住這個(gè)結(jié)論就可以了。
接下來(lái)哩掺,Google就在英偉達(dá)等公司GPU的基礎(chǔ)上凿叠,進(jìn)一步讓計(jì)算變得專注,設(shè)計(jì)了一種僅僅針對(duì)特定張量計(jì)算的處理器嚼吞,叫做TPU盒件,其中T就代表張量(Tensor)。Google宣稱舱禽,一個(gè)TPU對(duì)AlphaGo這樣的任務(wù)炒刁,效率抵得上15-30個(gè)英偉達(dá)的GPU,這也就是為什么這一次Google講新版的AlphaGo在硬件上瘦身了的原因誊稚。
去年戰(zhàn)勝李世石的AlphaGo的耗電量是人腦的300倍翔始,如今的AlphaGo用的機(jī)器少了很多飒筑,至少少了一個(gè)數(shù)量級(jí),也就是說(shuō)耗電量從人腦的300倍下降到30倍以下绽昏,這個(gè)進(jìn)步速度還是很驚人的协屡。
當(dāng)然,英偉達(dá)表示不服氣全谤,說(shuō)你Google是在拿蘋果和橘子比肤晓,而用我的測(cè)試處理器性能的程序來(lái)評(píng)測(cè),我的P40可比你的TPU快多了认然。其實(shí)TPU和GPU誰(shuí)更好补憾,完全要看做什么事情了。
從CPU到GPU卷员,再到TPU盈匾,效率提升的根本原因在于兩個(gè)字——專注,相比之下毕骡,我們手機(jī)和電腦的CPU是非诚鞫“不專注”的。
在社會(huì)生活中未巫,情況和計(jì)算機(jī)處理器其實(shí)很相似窿撬。工業(yè)革命開(kāi)始后,英國(guó)工廠主把分工做得特別細(xì)叙凡,于是效率大增劈伴。亞當(dāng)·斯密在《國(guó)富論》中講,即使是制作縫衣服針這件事握爷,當(dāng)分工很細(xì)致后跛璧,一個(gè)工人一天能生產(chǎn)上千根,如果一個(gè)工人做所有的工序新啼,一天恐怕連10根都做不了追城。因此,英國(guó)工業(yè)革命后师抄,就把整個(gè)歐洲的加工業(yè)碾壓了漓柑。這其實(shí)就好比TPU和CPU的關(guān)系。
但是叨吮,TPU的使用有一個(gè)前提辆布,就是這種芯片的市場(chǎng)至少要有上百萬(wàn)片,否則就不值得做茶鉴,因?yàn)樗鲆粋€(gè)樣片的成本就得上百萬(wàn)美元锋玲,而設(shè)計(jì)成本則是上千萬(wàn)。如果市場(chǎng)需求量只有幾萬(wàn)片涵叮,還不如用很多CPU來(lái)工作呢惭蹂。這就如同制作縫衣服針伞插,一年僅歐洲恐怕要用到上億根,才值得做社會(huì)分工盾碗。如果只用三五十根媚污,還不如讓幾個(gè)工人慢慢磨呢!因此廷雅,分工和專注的前提都是市場(chǎng)規(guī)模足夠大耗美。
最后講一下人的技能,什么時(shí)候需要專而精航缀,什么時(shí)候需要廣博商架,其實(shí)沒(méi)有一定之規(guī),但是一個(gè)很好的判斷標(biāo)準(zhǔn)就是市場(chǎng)是否大到需要非常專而精芥玉。