“在分布式計(jì)算系統(tǒng)中瑟捣,最早也是最有名的就是Hadoop绒极。Hadoop利用MapReduce模型讓我們開始有能力將大量的數(shù)據(jù)分布在不同的廉價(jià)機(jī)器集群中完成運(yùn)算喂饥。但是Hadoop的致命問題是必須將所有數(shù)據(jù)處理完成后才能得到最后的輸出旅急,但如果是在視頻流這種處理場(chǎng)景下醇坝,實(shí)時(shí)性非常重要胜嗓,Hadoop完全無(wú)法滿足要求高职,因?yàn)槲覀儫o(wú)法將所有數(shù)據(jù)處理完然后返回結(jié)果〈侵荩”
這種情況下Storm應(yīng)運(yùn)而生怔锌。Apache Storm采用了類似的計(jì)算模型,將所有的處理流程劃分成一個(gè)個(gè)的組件变过,然后將這些組件組合成一臺(tái)永不停息的網(wǎng)絡(luò)機(jī)器埃元,隨時(shí)等待數(shù)據(jù)流入,處理完數(shù)據(jù)馬上返回對(duì)應(yīng)的結(jié)果媚狰,有效地解決了大部分問題岛杀。而最近開源的Twitter Heron則是Apache Storm的后繼者(或者說(shuō)是強(qiáng)有力的改進(jìn)版),采用了和Storm一樣模型和接口崭孤,但在平臺(tái)架構(gòu)类嗤、易用性和性能上都做出了非常大的改進(jìn),相信不久之后就能成為Storm的有力競(jìng)爭(zhēng)者辨宠。
但這些計(jì)算系統(tǒng)基本都局限在一個(gè)通用的計(jì)算平臺(tái)上遗锣,在應(yīng)付某些特定問題上需要開發(fā)者做出相當(dāng)多的工作,比如機(jī)器學(xué)習(xí)彭羹。目前機(jī)器學(xué)習(xí)技術(shù)得到了越來(lái)越廣泛的應(yīng)用黄伊,在圖像處理泪酱、模式識(shí)別派殷、決策支持等領(lǐng)域發(fā)揮了很大作用还最,已經(jīng)成為了最重要的計(jì)算機(jī)技術(shù)之一。近幾年非痴毕В火的深度學(xué)習(xí)(Deep Learning)更將機(jī)器學(xué)習(xí)提高了一個(gè)層次拓轻,而深度學(xué)習(xí)對(duì)浮點(diǎn)數(shù)的運(yùn)算性能提出了非常高的要求。這么冷不丁的把深度學(xué)習(xí)這個(gè)概念擺上來(lái)经伙,可能有些突兀扶叉,我們這里就先了解一下不久之前大熱的Google AlphaGo,AlphaGo使用了大量的機(jī)器學(xué)習(xí)算法帕膜,包括傳統(tǒng)的機(jī)器學(xué)習(xí)算法和深度學(xué)習(xí)枣氧,其中深度學(xué)習(xí)是提高AlphaGo機(jī)器學(xué)習(xí)能力的關(guān)鍵。因此垮刹,分布式的多機(jī)多GPU運(yùn)算很可能會(huì)成為一個(gè)新趨勢(shì)达吞。而就目前來(lái)說(shuō),除了這些通用計(jì)算系統(tǒng)以外荒典,在深度學(xué)習(xí)中酪劫,大家會(huì)使用特殊的機(jī)器學(xué)習(xí)框架來(lái)完成訓(xùn)練等計(jì)算任務(wù),但大多數(shù)此類框架在分布式上還并不成熟(比如Caffe和MXNet等)寺董,要不就是難以將訓(xùn)練結(jié)果直接用到產(chǎn)品中覆糟,往往需要大量的裁剪和移植工作。而許多框架也與CUDA完全耦合遮咖,完全沒有CPU和AMD顯卡的市場(chǎng)滩字,而在某些特定應(yīng)用場(chǎng)景,這是不切實(shí)際的御吞。
Hurricane實(shí)時(shí)處理系統(tǒng)(目前還處于原型和初期開發(fā)階段踢械,最新版本號(hào)為0.5)是一個(gè)使用C++開發(fā)的分布式實(shí)時(shí)計(jì)算系統(tǒng),其架構(gòu)上仿效了Apache Storm魄藕,保持了接口的高度一致内列,并期望能夠在實(shí)時(shí)數(shù)據(jù)處理、機(jī)器學(xué)習(xí)訓(xùn)練預(yù)處理和高性能運(yùn)算方面做些工作背率。同時(shí)话瞧,為了應(yīng)付新的應(yīng)用場(chǎng)景,比如VR的云渲染問題寝姿,正計(jì)劃開發(fā)一個(gè)Hurricane的子項(xiàng)目——sewedBLAS——這是一個(gè)BLAS(Basic Linear Algebra Subprograms交排,即基礎(chǔ)線性代數(shù)子程序)庫(kù)的高層抽象,希望整合現(xiàn)有BLAS庫(kù)饵筑,比如使用CPU的MKL/OpenBLAS埃篓,使用GPU的CUDA(來(lái)自于NVIDIA)和ACML,構(gòu)建一個(gè)易于使用根资、跨平臺(tái)的高性能線性代數(shù)庫(kù)架专,并與Hurricane進(jìn)行原生C++層級(jí)的深度整合同窘,期望能夠在分布式和科學(xué)計(jì)算、深度學(xué)習(xí)部脚、VR渲染中找到一個(gè)切合點(diǎn)想邦,減少?gòu)目蒲械疆a(chǎn)品的轉(zhuǎn)換難度。與此同時(shí)委刘,還希望能夠幫助開發(fā)者更輕松地提高工作單元的運(yùn)算能力丧没。
Hurricane實(shí)時(shí)處理系統(tǒng)v0.5的源碼可以訪問http://github.com/samblg/hurricane,其中的設(shè)計(jì)細(xì)節(jié)锡移、架構(gòu)設(shè)計(jì)以及思想可以看書《分布式實(shí)時(shí)處理系統(tǒng):原理呕童、架構(gòu)和實(shí)現(xiàn)》拉庵,由機(jī)械工業(yè)出版社華章于2016年7月上市。本書由多位大數(shù)據(jù)專家聯(lián)袂推薦套蒂,資深研發(fā)工程師撰寫钞支,參透大規(guī)模分布式實(shí)時(shí)處理系統(tǒng)烁挟。抽絲剝繭撼嗓,從概念、原理到分布式實(shí)時(shí)計(jì)算框架實(shí)現(xiàn)斑芜,兼顧理論與實(shí)踐杏头,帶領(lǐng)讀者逐步實(shí)現(xiàn)一個(gè)高性能、基于C++11的分布式實(shí)時(shí)處理系統(tǒng)Hurricane寓娩。