亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種針對GPU資源的深度學(xué)習容器云研究

        2017-12-13 03:47:58肖熠魯永泉謝思燁1
        關(guān)鍵詞:鏡像虛擬化容器

        肖熠,魯永泉,謝思燁1,

        (1. 中國傳媒大學(xué) 計算機學(xué)院,北京 100024;2. 中國傳媒大學(xué) 高性能計算中心,北京 100024)

        一種針對GPU資源的深度學(xué)習容器云研究

        肖熠1,2,魯永泉2,謝思燁1,2

        (1. 中國傳媒大學(xué) 計算機學(xué)院,北京 100024;2. 中國傳媒大學(xué) 高性能計算中心,北京 100024)

        伴隨深度學(xué)習的研究發(fā)展,深度學(xué)習框架成為研究深度神經(jīng)網(wǎng)絡(luò)的重要工具。深度學(xué)習框架極大縮短了網(wǎng)絡(luò)構(gòu)建與計算時間,其強大的計算能力來源于GPU。但如何有效地在多種框架下合理分配和使用異構(gòu)集群中GPU資源是一個重要問題。本文提出一種針對GPU資源深度學(xué)習容器云架構(gòu)DLC,利用容器易部署、易遷移的特點,可以將深度學(xué)習框架以容器形式快速部署在異構(gòu)集群上,結(jié)合nvidia-docker實現(xiàn)驅(qū)動文件與容器解耦合。DLC以MESOS框架的形式提供服務(wù),通過調(diào)度獲取資源后快速創(chuàng)建對應(yīng)需求的深度學(xué)習框架,并加載指定的GPU資源及對應(yīng)的運行庫,實現(xiàn)特定版本的深度學(xué)習環(huán)境的快速創(chuàng)建,這對推動深度學(xué)習發(fā)展具有一定意義。

        容器云;深度學(xué)習;Docker;GPU

        1 引言

        現(xiàn)如今,深度學(xué)習不斷推動人工智能的發(fā)展,在圖像、自然語言處理、音頻處理等領(lǐng)域獲得巨大突破[1]。深度學(xué)習框架是深度學(xué)習開發(fā)者的重要工具,它能快速構(gòu)建各種結(jié)構(gòu)的深度神經(jīng)網(wǎng)絡(luò),通過給定網(wǎng)絡(luò)的輸入和標簽數(shù)據(jù),框架會自動進行正向傳播計算和反向傳播計算來完成神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程,獲得最終模型。但是不同的深度學(xué)習框架基礎(chǔ)結(jié)構(gòu)與功能有所不同,這使得開發(fā)者需要根據(jù)所求解的網(wǎng)絡(luò)結(jié)構(gòu)類型進行選擇,而框架本身又依賴于不同的基礎(chǔ)庫。另一方面,深度學(xué)習算法對計算能力要求高,目前深度學(xué)習逐漸采用HPC領(lǐng)域的方法加速網(wǎng)絡(luò)訓(xùn)練。使用GPU加速網(wǎng)絡(luò)訓(xùn)練過程中的矩陣運算是HPC應(yīng)用的重要方式。在IT產(chǎn)業(yè)的日益發(fā)展下,云計算這一概念被提出。云計算將數(shù)臺計算機通過網(wǎng)絡(luò)協(xié)同對用戶提供服務(wù),擁有高可用性、可擴展性和適用性[2]。根據(jù)常規(guī)服務(wù)類型,云計算可劃分為IaaS、PaaS和SaaS三層。伴隨研究發(fā)展,云計算領(lǐng)域和HPC領(lǐng)域之間相互借鑒,逐漸形成了相互獨立又依存的軟、硬件體系結(jié)構(gòu)[3]??v觀HPC和云計算的發(fā)展,二者采用各自不同的特點共同致力于解決用戶對集群的使用,HPC致力于提供更強大的計算能力,而云計算則側(cè)重于通過抽象使集群更易使用[4]。云計算系統(tǒng)可以快速幫助用戶構(gòu)建包含所需計算資源的虛擬主機,如Amazon EC2和阿里云。容器技術(shù)的發(fā)展進一步推動了云計算技術(shù)的發(fā)展,為實現(xiàn)秒級部署提供支持。利用云計算技術(shù)將深度學(xué)習框架與GPU計算環(huán)境結(jié)合,將擁有強大計算能力的HPC集群以云服務(wù)的形式對外提供給用戶,是十分便捷的。

        2 容器技術(shù)研究

        2.1 虛擬化技術(shù)

        虛擬化技術(shù)是云計算技術(shù)的重要內(nèi)容,被廣泛地應(yīng)用到各個場景中。各大廠商也分別推出各自的虛擬化產(chǎn)品,如KVM、ESXi、Hyper-V等,結(jié)合開源或產(chǎn)品化的集群資源管理器構(gòu)建出云計算系統(tǒng)的基礎(chǔ)設(shè)施。近幾年,以Docker為代表的容器技術(shù)逐漸成熟,并獲得廣泛的關(guān)注,有些研究者將其作為云計算2.0的標志技術(shù)之一,并制定出了容器標準,將以容器為基礎(chǔ)的云計算系統(tǒng)稱為容器云。傳統(tǒng)虛擬化技術(shù)主要包括完全虛擬化和硬件輔助虛擬化,這兩種方式使得在虛擬機使用特定功能時需要硬件對虛擬化的支持。容器技術(shù)最早源于LXC(Linux Container)[5],與傳統(tǒng)虛擬化技術(shù)不同,容器技術(shù)通過Linux系統(tǒng)cgroup、namespaces等技術(shù)實現(xiàn)容器間資源隔離,并可以共享內(nèi)核功能[6],實現(xiàn)輕量級的虛擬化。在容器技術(shù)中,虛擬化的載體被稱為鏡像,所創(chuàng)建出實際運行的載體稱為容器。與傳統(tǒng)虛擬機包含完整的操作系統(tǒng)不同,容器中只包含一個精簡的操作系統(tǒng)。這使得容器可以被快速創(chuàng)建和啟動。對于實際應(yīng)用,基于容器技術(shù)較基于傳統(tǒng)虛擬化技術(shù)的云計算系統(tǒng)更貼近于計算資源。Jacobsen D M和Canon R S.指出容器技術(shù)為科學(xué)計算領(lǐng)域帶來了變革[7]。已有研究表明,在大部分情況下,容器的性能優(yōu)于傳統(tǒng)虛擬機[8]。

        2.2 GPU資源隔離

        在使用GPU作為計算加速器的應(yīng)用程序中,開發(fā)者通常可以獲取當前系統(tǒng)所有的GPU資源信息,并從中選擇合適的GPU設(shè)備運行核函數(shù)。由于應(yīng)用程序無法直接獲取GPU資源的占用情況,當多用戶在集群環(huán)境中使用時會造成應(yīng)用程序間相互搶奪資源。在一般情況下,先提交的GPU計算進程會獨占GPU資源,后提交的任務(wù)會處于等待狀態(tài)。如何有效地解決多用戶對GPU的并發(fā)使用,提高GPU資源的利用率是GPU資源隔離的主要目的。GPU資源隔離是將GPU根據(jù)程序的使用需求在運行前由系統(tǒng)管理者進行分配,多個程序?qū)PU資源的使用相互獨立。

        傳統(tǒng)GPU資源隔離通常有兩種方式,一種是在Hypervisor層加入vGPU Manager,利用特定GPU的虛擬化硬件支持,通過固定的模式將GPU映射到虛擬機中,每個虛擬機都具有獨立的顯存與核心,這種方式目前被ESXi所采用[9]。這種方式最大的優(yōu)點來源于GPU硬件對虛擬化的支持,通過專用硬件可將一個性能強大的GPU資源拆分為多個性能較弱的GPU資源使用,通常被用于解決VDI環(huán)境。

        另一種是通過CUDA環(huán)境變量CUDA_VISIBLE_DEVICES指定當程序運行時所能獲取的GPU編號實現(xiàn)隔離。CUDA_VISIBLE_DEVICES的值是一個由GPU minor number組成的列表,當CUDA程序運行獲取系統(tǒng)GPU設(shè)備時,系統(tǒng)只會返回列表中編號對應(yīng)的GPU,且會從0開始根據(jù)列表順序重排minor number,程序會繼續(xù)從中選擇合適的GPU設(shè)備運行核函數(shù)。程序無法獲取列表之外的GPU資源,以此實現(xiàn)程序進程間的GPU資源隔離。與vGPU Manager不同,通過環(huán)境變量的方式是以單一GPU設(shè)備為基礎(chǔ)單位進行隔離,與vGPU可以從一個GPU設(shè)備虛擬為多個vGPU設(shè)備不同,前者可以將單一GPU設(shè)備映射到唯一的隔離環(huán)境中,后者可以將單一GPU設(shè)備映射到多個隔離環(huán)境中。HPC資源調(diào)度器slurm采用環(huán)境變量的方式調(diào)度任務(wù)所使用的GPU資源,通過記錄GPU資源的使用情況,將任務(wù)對GPU的資源請求通過CUDA_VISIBLE_DEVICES編號的形式進行調(diào)度,任務(wù)獲取GPU編號即獲取GPU資源。但是每個GPU對應(yīng)的minor number并非固定的,當系統(tǒng)重新加載GPU時,其值會發(fā)生改變。這造成程序無法根據(jù)minor number向GPU資源管理器直接獲取滿足需求的GPU資源,也限制了程序的遷移。

        容器技術(shù)通過cgroup實現(xiàn)容器間的資源隔離。以docker容器為例,通過device參數(shù)將主機指定設(shè)備文件映射到容器中。NVIDIA公司的開源項目nvidia-docker以docker為基礎(chǔ),對使用GPU資源隔離的容器使用操作和運行環(huán)境進行封裝。nvidia-docker將主機端的GPU驅(qū)動與指定的GPU設(shè)備共同映射到容器內(nèi),確保容器與主機GPU驅(qū)動一致,避免容器內(nèi)重新安裝驅(qū)動的問題。以容器方式對GPU資源隔離的基礎(chǔ)單位與環(huán)境變量相同,屬于一對一的方式進行隔離映射。在深度學(xué)習計算中更需要高效的計算能力。三種GPU隔離技術(shù)的對比如表1所示。

        表1 GPU資源隔離技術(shù)對比

        3 深度學(xué)習容器云框架結(jié)構(gòu)

        3.1 系統(tǒng)結(jié)構(gòu)

        深度學(xué)習容器云框架部署在異構(gòu)集群上,其物理結(jié)構(gòu)如圖1所示。其中3臺CPU節(jié)點組成Mesos系統(tǒng)Master HA結(jié)構(gòu),3臺GPU節(jié)點為Mesos系統(tǒng)Agent節(jié)點[10]。每個GPU節(jié)點搭載2塊GPU卡。各節(jié)點間通過萬兆網(wǎng)絡(luò)互聯(lián)。

        圖1 異構(gòu)集群物理結(jié)構(gòu)

        Mesos是針對容器的分布式集群調(diào)度管理系統(tǒng),本文集群資源由Mesos負責管理與分配。在Mesos之上可以運行多種不同功能的框架,如長時容器調(diào)度器Marathon、內(nèi)存計算框架Spark等。深度學(xué)習容器云(DLC,Deep Learning Container Cloud)以框架形式運行在Mesos上,通過pymesos實現(xiàn)。Agent節(jié)點同時部署nvidia-docker以便于DLC獲取GPU資源底層信息。系統(tǒng)以DLC為基礎(chǔ)構(gòu)建深度學(xué)習框架系統(tǒng),處理用戶對深度學(xué)習框架及資源的請求,以容器形式提供多種深度學(xué)習框架服務(wù)。系統(tǒng)軟件結(jié)構(gòu)如圖2所示,系統(tǒng)主要軟件版本為Mesos 1.3.0、docker 1.12.5,深度學(xué)習框架版本由容器鏡像決定。

        圖2 深度學(xué)習云框架軟件結(jié)構(gòu)

        3.2 DLC結(jié)構(gòu)

        DLC框架主要功能是向用戶提供帶有GPU資源的深度學(xué)習容器,其功能結(jié)構(gòu)如圖3所示。Mesos資源調(diào)度系統(tǒng)作為DLC的基礎(chǔ),維護集群狀態(tài),為DLC提供集群資源。由于Mesos僅支持對GPU的數(shù)量分配,因此DLC首先要解決的問題就是擴展GPU資源分配為指定分配。GPU資源指定分配是指用戶可以指定所申請的環(huán)境包含某一特性的GPU,如GPU計算能力。用戶也可以直接指定GPU的編號,如minor number來指定某一節(jié)點的GPU資源。為了避免節(jié)點重啟所帶來的GPU minor number改變,DLC使用GPU UUID作為GPU資源設(shè)備的輔助標識符。GPU UUID是GPU資源的唯一標識,可以唯一標識GPU設(shè)備,DLC在內(nèi)部維護各個節(jié)點GPU資源UUID與minor number對應(yīng)資源表。當DLC從Mesos獲取資源后,DLC會在Agent上創(chuàng)建DLC-plugin用于占用一定比例的資源,這些資源會

        被用于深度學(xué)習容器的創(chuàng)建,剩余資源由Mesos其他框架分配。從Mesos占用的資源會被寫入資源表中,GPU資源會通過nvidia-docker獲取設(shè)備對應(yīng)的UUID。資源表是DLC資源分配的基礎(chǔ),標識了已分配的GPU資源和未分配的GPU資源。資源表另一個作用是用戶資源預(yù)留,將資源表中某些GPU資源設(shè)置為某些用戶專用,可實現(xiàn)GPU資源的合理分配。

        用戶向DLC系統(tǒng)申請資源的信息包含CPU、內(nèi)存、GPU、深度學(xué)習框架和版本。其中GPU資源可以通過3種方式給出,其格式為:

        gpu={’c’|’m’|’id’:’number|list’}

        其中’c’、’m’、’id’分別對應(yīng)數(shù)量、minor number、UUID。當用戶以minor number給出時會默認認為用戶確定當前時刻其所對應(yīng)的GPU設(shè)備。當DLC收到用戶請求時會根據(jù)資源表,向Agent nvidia-docker更新資源表中GPU資源信息與狀態(tài),通過查詢資源表確認是否滿足設(shè)備請求,若滿足則將請求傳遞給DLC-plugin。DLC-plugin通過docker創(chuàng)建容器,并返回容器信息給DLC,容器信息主要包含容器id和容器映射端口。容器的創(chuàng)建依賴于nvidia-docker提供的驅(qū)動文件卷,DLC-plugin會在映射之前檢測容器鏡像內(nèi)CUDA版本是否與驅(qū)動文件卷兼容,若不兼容則返回拒絕信息。

        圖3 DLC功能結(jié)構(gòu)

        DLC默認通過Docker Hub獲取深度學(xué)習框架容器鏡像。Docker Hub是由docker官方提供的容器鏡像資源倉庫,通過Docker Hub可以直接下載容器鏡像,便于部署。同樣也可以通過Docker Registry構(gòu)建私有容器鏡像庫。目前已直接提供對8種深度學(xué)習框架的支持,所有框架均通過automatically build方式由dockerfile在Docker Hub上直接構(gòu)建。容器鏡像庫同時提供了多版本CUDA和CUDNN作為基礎(chǔ)鏡像,用戶可以根據(jù)自身需求使用CUDA或CUDNN作為基礎(chǔ)鏡像構(gòu)建特定深度學(xué)習框架。

        以Tensorflow為例通過DLC創(chuàng)建擁有2個GPU的容器環(huán)境。DLC主要輸入?yún)?shù)如表2所示。

        表2 DLC主要參數(shù)列表

        可以直接通過如下指令進行創(chuàng)建:

        dlc -c 1 -m 2048 -gpus ‘c:2’ --opt ‘-P’ tensorflow/tensorflow

        指令會創(chuàng)建具有1個CPU,2G內(nèi)存,2個GPU的tensorflow容器,容器鏡像由tensorflow提供,通過--opt參數(shù)將容器端口映射到主機,可以使開發(fā)者通過其默認提供的Jupyter Notebook通過web進行深度網(wǎng)絡(luò)開發(fā)。

        4 結(jié)論

        本文對已有虛擬化技術(shù)進行總結(jié),并對GPU隔離技術(shù)進行深入研究分析,針對深度學(xué)習領(lǐng)域中開發(fā)者與使用者對深度學(xué)習框架的使用需求,提出一種基于Mesos的深度學(xué)習容器云。DLC系統(tǒng)擴展了Mesos對GPU的資源隔離功能。通過DLC系統(tǒng),用戶可以創(chuàng)建擁有指定GPU資源和深度學(xué)習框架的容器環(huán)境,并可以將特定GPU資源作預(yù)留。這種方式可以提高特定任務(wù)的執(zhí)行效率,為合理分配GPU資源提供便利。依托容器的快速部署,將簡化深度學(xué)習框架的使用,便于多框架的選擇和版本間的切換。這對推動深度學(xué)習發(fā)展具有一定意義。

        [1]Lecun Y,Bengio Y,Hinton G. Deep learning[J]. Nature,2015,521(7553):436-444.

        [2]Aznoli F,Navimipour N J. Cloud services recommendation:Reviewing the recent advances and suggesting the future research directions[J]. Journal of Network and Computer Applications,2017(77):73-86.

        [3]Fox G C,Qiu J,Kamburugamuve S. HPC-ABDS high performance computing enhanced apache big data stack[C].Cluster,Cloud and Grid Computing(CCGrid),2015 15th IEEE/ACM International Symposium on IEEE,2015:1057-1066.

        [4]Mateescu G,Gentzsch W,Ribbens C J. Hybrid computing—where HPC meets grid and cloud computing[J]. Future Generation Computer Systems,2011,27(5):440-453.

        [5]Helsley M. LXC:Linux container tools[J]. IBM devloperWorks Technical Library,2009:11.

        [6]Higgins J,Holmes V,Venters C. Orchestrating Docker Containers in the HPC Environment[C].International Conference on High Performance Computing,Springer International Publishing,2015:506-513.

        [7]Jacobsen D M,Canon R S. Contain this,unleashing docker for hpc[J]. Proceedings of the Cray User Group,2015.

        [8]Felter W,F(xiàn)erreira A,Rajamony R. An updated performance comparison of virtual machines and linux containers[C].Performance Analysis of Systems and Software(ISPASS).

        [9]Alex Herrera. NVIDIA GRID vGPU:Delivering Scalable Graphics-rich Virtual Desktops[J].2015.

        [10]Nvidia Corporation. Nvidia CUDA C Programming Guide 8.0[S]. 2016.

        [11]Hindman B,Konwinski A,Zaharia M. Mesos:A Platform for Fine-Grained Resource Sharing in the Data Center[C].NSDI,2011,11(2011):22-22.

        (責任編輯:宋金寶)

        ADeepLearningContainerCloudStudyforGPUResources

        XIAO Yi1,2,LU Yong-quan2,XIE Si-ye1,2

        (1. Computer School,Communication University of China,Beijing 100024,China;2. High Performance Computing Center,Communication University of China,Beijing 100024,China)

        With the development of deep learning,deep learning framework has become an important tool for the deep neural network developing. The deep learning framework greatly shortens the network construction and computing time,and its powerful computing ability comes from GPU. But it is an important issue that how to effectively allocate and use GPU resources in heterogeneous cluster among many frameworks. In this paper,we propose a Deep Learning Container Cloud(DLC)architecture for GPU resources specifically. Using the characteristics of easy deployment and easy migration,the frameworks can be deployed on heterogeneous cluster in the form of container,and the GPU driver and container can be decoupled according to nvidia-docker. The DLC provides services in the form of the MESOS framework. After obtaining resources through scheduling,a deep learning framework is created quickly to meet the requirements。DLC will load the specified GPU resource and the corresponding runtime library to achieve the rapid creation of a specific version of the deep learning environment. It is of great significance for promoting the development of deep learning.

        container cloud;deep learning;docker;GPU

        TP316

        A

        1673-4793(2017)06-0016-05

        2017-09-26

        肖熠(1989-),男(漢族),河北石家莊人,中國傳媒大學(xué)博士研究生. E-mail:louishpc@cuc.edu.cn

        猜你喜歡
        鏡像虛擬化容器
        Different Containers不同的容器
        鏡像
        當代黨員(2020年20期)2020-11-06 04:17:52
        難以置信的事情
        基于OpenStack虛擬化網(wǎng)絡(luò)管理平臺的設(shè)計與實現(xiàn)
        電子制作(2019年10期)2019-06-17 11:45:10
        鏡像
        小康(2018年23期)2018-08-23 06:18:52
        對基于Docker的虛擬化技術(shù)的幾點探討
        電子制作(2018年14期)2018-08-21 01:38:20
        虛擬化技術(shù)在計算機技術(shù)創(chuàng)造中的應(yīng)用
        電子測試(2017年11期)2017-12-15 08:57:56
        存儲虛擬化還有優(yōu)勢嗎?
        取米
        鏡像
        小康(2015年4期)2015-03-31 14:57:40
        人伦片无码中文字幕| 成人免费无码视频在线网站| 免费少妇a级毛片人成网| 亚洲国产精品自拍一区| 手机免费日韩中文字幕| 黄色一区二区三区大全观看| 久久精品人妻中文av| 人妻av中文字幕久久| 亚洲成av人片在线观看无码 | 欧美人与动牲交a精品| 天干天干啦夜天干天2017| 日本免费一区二区三区在线看| 国产一区二区三区特区| 91久久国产香蕉视频| 色一情一乱一伦| 亚洲av纯肉无码精品动漫| 日产精品一区二区三区| 久久精品视频日本免费| 中文乱码字幕精品高清国产 | 免费一区二区三区视频狠狠| 久久午夜一区二区三区| 中文字幕在线看精品乱码| 人与禽性视频77777| 中国丰满大乳乳液| 国内无遮码无码| 国产亚洲精品综合在线网站| 无码乱肉视频免费大全合集| 18禁黄久久久aaa片| 亚洲av无码成人网站www| 亚洲熟女av一区少妇| 呦系列视频一区二区三区| 亚洲精品久久久久中文字幕二区| 精品国产迪丽热巴在线| 国产精品国产三级国产专播| 亚洲精品欧美精品日韩精品| 久久人人97超碰超国产| 一级做a爱视频在线播放| 中文字幕国产精品一二三四五区| 精品一区二区三区无码免费视频| 久热re在线视频精品免费| 手机免费高清在线观看av|