聊聊GPU虛擬化應(yīng)用
提起NVIDIA,你多半會(huì)想起顯卡,像我一般年紀(jì)的人,對(duì)顯卡的理解就是游戲加速。上大學(xué)時(shí)玩實(shí)況足球,有個(gè)GeForce顯卡是一件很幸福的事情,比起主板上集成的顯卡,它的存在能夠讓我們游戲中的草皮更加翠綠,腳下足球更加的行云流水,那時(shí)候的實(shí)況足球可以實(shí)現(xiàn)足球經(jīng)理人的任何夢(mèng)想,鈔票能買到任何想要的球員。門(mén)將圣卡西,后衛(wèi)由左至右分別是馬爾蒂尼、內(nèi)斯塔、特里、薩內(nèi)蒂;中場(chǎng)維埃拉、法布雷加斯、小羅;前鋒則是梅西、亨利、羅納爾多;陣容夠炫吧!
隨著人工智能的火爆發(fā)展,顯卡不再是游戲的代名詞了,而被冠上了“機(jī)器學(xué)習(xí)心臟”這個(gè)高大上的名字。而nvida公司則憑借視覺(jué)計(jì)算領(lǐng)域的絕對(duì)王者地位,3年時(shí)間市值***翻了6倍之多。我剛?cè)肼毴斯ぶ悄茴I(lǐng)域時(shí),不理解為什么顯卡會(huì)成為“深度學(xué)習(xí)”的依賴,相信很多人也跟我有一樣的困惑;簡(jiǎn)單來(lái)說(shuō),GPU主要側(cè)重于計(jì)算能力,它由數(shù)千個(gè)更小、但更高效的Cores組成,通過(guò)并行計(jì)算的方式,處理多重且復(fù)雜的任務(wù)。
CPU我們知道,它的全稱是中央處理器,是一臺(tái)計(jì)算機(jī)的控制核心和計(jì)算核心。它的主要功能在于邏輯控制和任務(wù)調(diào)度。因此GPU較之于CPU,CPU更像是一個(gè)公司的CEO,掌管的整個(gè)公司的運(yùn)營(yíng)和戰(zhàn)略,統(tǒng)籌整個(gè)公司的工作。而GPU則是某個(gè)部門(mén)的得力干將,能力強(qiáng),迅速并超額完成公司交于的任務(wù)。
深度學(xué)習(xí)是模擬人腦的神經(jīng)系統(tǒng)組成,通過(guò)設(shè)定一些規(guī)則和數(shù)學(xué)網(wǎng)絡(luò)模型而發(fā)展起來(lái)的一門(mén)學(xué)科,目的是為了讓計(jì)算機(jī)能夠像人腦一樣去思考,去認(rèn)識(shí)和理解這個(gè)世界。由于計(jì)算機(jī)本身沒(méi)有思維能力,因此需要大量的數(shù)據(jù)去訓(xùn)練它,因此,它對(duì)電腦處理器的要求就必須具備高效的并行計(jì)算能力,這一點(diǎn)對(duì)于以串行為主、核心數(shù)基本在2位數(shù)的CPU而言是不具備的。因此,GPU憑借其千級(jí)核心,高效運(yùn)算的特點(diǎn),成為了深度學(xué)習(xí)、模型訓(xùn)練的最理想選擇。
我所在公司也在涉及人工智能領(lǐng)域,GPU顯卡的數(shù)目也有了一定規(guī)模,如Tesla的M40、P40、P100等顯卡都有所應(yīng)用,當(dāng)前這些顯卡主要用于算法與Demo的訓(xùn)練。我們通過(guò)Docker虛擬化形式實(shí)現(xiàn)對(duì)GPU資源的分發(fā)利用。
首先在搭載有GPU的宿主機(jī)上安裝CUDA架構(gòu)環(huán)境,進(jìn)入CUDA Tookit Download官網(wǎng),現(xiàn)在對(duì)應(yīng)的版本。安裝完成后,還需要安裝 出DNN,這個(gè)是專門(mén)對(duì)深度學(xué)習(xí)框架設(shè)計(jì)的一套GPU加速方案,支持Caffe和TensorFlow等框架。
基礎(chǔ)環(huán)境安裝完畢后,即可以利用nvidia提供的nvidia-docker進(jìn)行GPU的Docker虛擬化了。官方提供了這些包的安裝源列表,安裝起來(lái)還是比較簡(jiǎn)單的,安裝完畢后,可以通過(guò)
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
查看docker GPU容器的運(yùn)行情況。
***可以通過(guò) learningtensorflow.com 官方提供的基于TensorFlow的基準(zhǔn)測(cè)試腳本,進(jìn)行GPU與CPU的對(duì)比測(cè)試,可以發(fā)現(xiàn),GPU在并行運(yùn)算上,性能要由于CPU很多的。
如上圖所示,以上基于Docker虛擬化GPU的方案,從本質(zhì)上說(shuō),GPU資源被打包在一個(gè)workspace(即Container)中,workspace運(yùn)行在宿主機(jī)上。這種虛擬化方案雖然能夠解決獨(dú)立訓(xùn)練的問(wèn)題,但同時(shí)也存在一些單點(diǎn)和依賴性問(wèn)題。首先Workspace的運(yùn)行依賴于宿主機(jī)的運(yùn)行情況,宿主機(jī)從本質(zhì)上講是一個(gè)孤島;其次,Docker Container的正常運(yùn)行,也決定了Workspace的生存情況;第三,由于Container是根據(jù)Docker命令生成的,在彈性擴(kuò)容上,存在一定的限制。
面對(duì)以上問(wèn)題,我們考慮,是否能夠采用另外一種虛擬化方案,讓GPU也向云端靠攏?云計(jì)算的發(fā)展,使得應(yīng)用場(chǎng)景發(fā)展至異構(gòu)計(jì)算體系架構(gòu),隨著機(jī)器學(xué)習(xí)、深度學(xué)習(xí)的發(fā)展,對(duì)GPU、FPGA等專業(yè)計(jì)算芯片也提出了虛擬化的需求。最早可以追溯到2013年,NVIDA發(fā)布了GRID K1產(chǎn)品,標(biāo)志著GPU虛擬化的成熟運(yùn)用。“A Full GPU Virtualization Solution with Mediated Pass-Through”,及分片虛擬化的vGPU技術(shù),Nvidia對(duì)于分片虛擬化社區(qū)的推動(dòng)起了至關(guān)重要的角色,并在自己的GRID一系列產(chǎn)品線中,不斷地發(fā)展和更新著vGPU技術(shù)。
虛擬化技術(shù)的最終目標(biāo),就是努力提供與工作人員在物理機(jī)上使用時(shí)一樣的體驗(yàn)。 NVIDIA GRID®VirtualPC(GRID vPC)和GRID®
虛擬應(yīng)用程序(GRID vApp)可為每個(gè)用戶改進(jìn)虛擬桌面和應(yīng)用程序,并在NVIDIA®Tesla®GPU上構(gòu)建經(jīng)過(guò)驗(yàn)證的性能,實(shí)現(xiàn)卓越的生產(chǎn)力,安全性和IT可管理性。 虛擬化軟件劃分了Tesla GPU資源,因此GPU可以在運(yùn)行任何應(yīng)用程序的多個(gè)虛擬機(jī)之間共享。目前GRID各release版本對(duì)GPU的虛擬化支持如下:
基本上能夠支持市場(chǎng)上主流的Tesla GPU型號(hào)。
以下分享一個(gè)本田集團(tuán)利用GRID對(duì)GPU的應(yīng)用案例
通過(guò)GRID管理平臺(tái),Honda IT部門(mén)通過(guò)調(diào)度物理GPU M60,根據(jù)用戶需要并提供適當(dāng)數(shù)量的vGPU,并能夠通過(guò)單個(gè)Dashboard管理vGPU,從而確保每個(gè)用戶都有足夠的運(yùn)算性能完成所處理的任務(wù),如此做到了更高級(jí)別的彈性擴(kuò)容。如同云存儲(chǔ)、云計(jì)算資源類似,GPU也實(shí)現(xiàn)了按需分配。
人工智能是第四次工業(yè)革命的***技術(shù),大數(shù)據(jù)和基于GPU的深度訓(xùn)練是人工智能發(fā)展的關(guān)鍵所在,無(wú)論之于國(guó)家還是企業(yè),都應(yīng)該通過(guò)技術(shù)創(chuàng)新,在這一次全世界范圍內(nèi)的浪潮中開(kāi)啟屬于自己的一片天地。
https://v.youku.com/v_show/id_XNjY3MTY4NjAw.html
一個(gè)很經(jīng)典的視頻,對(duì)比了GPU和CPU在圖形運(yùn)算處理上的差別。