deepfashion 深度学习_基于Alluxio加速混合云下的Intel Analytics Zoo开源深度学习平台...
本文描述了Alluxio如何在混合云環(huán)境中,加速oneAPI支撐的英特爾Analytics Zoo開(kāi)源平臺(tái)深度學(xué)習(xí)模型訓(xùn)練。本文會(huì)討論有關(guān)新架構(gòu)和工作流的細(xì)節(jié),以及Alluxio的性能優(yōu)勢(shì)和基準(zhǔn)測(cè)試結(jié)果。
1.混合環(huán)境中的深度學(xué)習(xí)
從架構(gòu)演進(jìn)到混合模式
傳統(tǒng)上,數(shù)據(jù)處理和分析系統(tǒng)是將計(jì)算和存儲(chǔ)服務(wù)作為一個(gè)整體平臺(tái)來(lái)設(shè)計(jì)、構(gòu)建和操作,并部署在本地/私有數(shù)據(jù)倉(cāng)庫(kù)中的。盡管這種體系結(jié)構(gòu)具有易于管理和高性能的優(yōu)點(diǎn),但這種深度耦合存儲(chǔ)和計(jì)算的體系結(jié)構(gòu),通常難以在不擴(kuò)展另一種類型資源的情況下,提供良好的應(yīng)用程序彈性和資源擴(kuò)展性。
越來(lái)越多的用戶正在轉(zhuǎn)向混合模型,將來(lái)自云和本地環(huán)境的資源結(jié)合在一起。該模型采用了另一種架構(gòu),將數(shù)據(jù)保留在通常位于本地?cái)?shù)據(jù)倉(cāng)庫(kù)中,但是根據(jù)需要啟動(dòng)單獨(dú)的計(jì)算層。混合模型允許計(jì)算和存儲(chǔ)資源獨(dú)立擴(kuò)展,從而帶來(lái)眾多優(yōu)勢(shì):
- 無(wú)資源爭(zhēng)用:由于不存在來(lái)自計(jì)算服務(wù)的資源競(jìng)爭(zhēng),因此本地存儲(chǔ)服務(wù)可以充分利用內(nèi)部機(jī)器
- 無(wú)計(jì)算停機(jī)時(shí)間:因?yàn)榧菏前葱柙谠浦袉?dòng)的,因此不存在閑置的計(jì)算資源
- 無(wú)數(shù)據(jù)冗余:長(zhǎng)時(shí)間運(yùn)行的批處理作業(yè)或臨時(shí)性查詢可以共享同一組數(shù)據(jù),而無(wú)需創(chuàng)建單獨(dú)的副本
為深度學(xué)習(xí)提供快速I/O面臨的挑戰(zhàn)
盡管混合架構(gòu)提供了靈活性和成本優(yōu)勢(shì),但是在大數(shù)據(jù)上進(jìn)行訓(xùn)練時(shí),深度學(xué)習(xí)分析還面臨著其他挑戰(zhàn)。深度學(xué)習(xí)訓(xùn)練時(shí)使用相同的數(shù)據(jù)集對(duì)不同的神經(jīng)網(wǎng)絡(luò)模型和不同的超參數(shù)進(jìn)行大量訓(xùn)練。此外,訓(xùn)練集的規(guī)模也在不斷增長(zhǎng)。當(dāng)訓(xùn)練數(shù)據(jù)存儲(chǔ)在遠(yuǎn)程存儲(chǔ)系統(tǒng)中時(shí),每次訓(xùn)練加載所有這些數(shù)據(jù)會(huì)產(chǎn)生巨大開(kāi)銷。
如今,跨混合環(huán)境管理數(shù)據(jù)的一種常見(jiàn)做法是,在運(yùn)行深度學(xué)習(xí)作業(yè)之前,將數(shù)據(jù)復(fù)制到計(jì)算群集中的存儲(chǔ)服務(wù)中。通常,用戶使用“distCP”之類的命令在內(nèi)部部署環(huán)境和云環(huán)境之間來(lái)回復(fù)制數(shù)據(jù)。盡管這看起來(lái)很簡(jiǎn)單,但通常需要手動(dòng)處理,并且很慢和容易出錯(cuò)。
為了解決在混合環(huán)境中訓(xùn)練深度學(xué)習(xí)模型所面臨的I/O挑戰(zhàn),并利用英特爾的oneAPI優(yōu)化性能,我們開(kāi)發(fā)并測(cè)試了一個(gè)新架構(gòu)/工作流,該架構(gòu)/工作流將Alluxio集成在由oneAPI支持的Analytics Zoo平臺(tái)中。
2.使用Analytics Zoo和Alluxio的新架構(gòu)和工作流
什么是Analytics Zoo
由oneAPI支撐的Analytics Zoo是英特爾開(kāi)發(fā)的開(kāi)源統(tǒng)一分析和AI平臺(tái),旨在將多個(gè)深度學(xué)習(xí)應(yīng)用程序無(wú)縫地整合到一個(gè)集成流水線中。用戶可以透明地?cái)U(kuò)展規(guī)模,從在筆記本電腦上運(yùn)行示例作業(yè)擴(kuò)展到在大型集群上處理生產(chǎn)規(guī)模的大數(shù)據(jù)。
它支持:
- 使用Spark代碼內(nèi)聯(lián)編寫(xiě)TensorFlow或PyTorch,以進(jìn)行分布式訓(xùn)練和推理
- 在Spark ML流水線中支持本地深度學(xué)習(xí)(TensorFlow/Keras/PyTorch/BigDL)
- 通過(guò)RayOnSpark在大數(shù)據(jù)群集上直接運(yùn)行Ray程序
- 用于(TensorFlow / PyTorch / BigDL / OpenVINO)模型推理的純Java/Python API
什么是Alluxio
Alluxio是用于數(shù)據(jù)分析的開(kāi)源數(shù)據(jù)編排層。它充當(dāng)一個(gè)分布式緩存層來(lái)防止從遠(yuǎn)程數(shù)據(jù)源重復(fù)拉取數(shù)據(jù),以此為數(shù)據(jù)分析或機(jī)器學(xué)習(xí)系統(tǒng)(如Analytics Zoo)提供高性能。與其他解決方案相比,Alluxio在具有“零拷貝突發(fā)”功能的混合云環(huán)境中具有以下優(yōu)勢(shì),可將數(shù)據(jù)處理突發(fā)遷移到云上進(jìn)行:
- 按需計(jì)算驅(qū)動(dòng)的數(shù)據(jù):將存儲(chǔ)系統(tǒng)掛載到Alluxio上時(shí),初始僅會(huì)加載其元數(shù)據(jù)。Alluxio僅在應(yīng)用程序請(qǐng)求時(shí)緩存數(shù)據(jù)。這種按需應(yīng)變的行為允許對(duì)云進(jìn)行突發(fā)數(shù)據(jù)處理,從而避免了手動(dòng)將數(shù)據(jù)從內(nèi)部集群復(fù)制到云。
- 數(shù)據(jù)本地化:Alluxio可根據(jù)數(shù)據(jù)訪問(wèn)模式,智能地在應(yīng)用程序附件緩存數(shù)據(jù),復(fù)制熱數(shù)據(jù),或驅(qū)逐過(guò)時(shí)數(shù)據(jù)。
- 數(shù)據(jù)彈性:Alluxio可以根據(jù)分析框架(包括容器編排的環(huán)境)靈活擴(kuò)展。
- 用于數(shù)據(jù)訪問(wèn)的通用API:Alluxio使用不同的通用API提供數(shù)據(jù)抽象,包括HDFS API,S3 API,POSIX API等。為分析和AI工作構(gòu)建的現(xiàn)有應(yīng)用程序可以直接在此數(shù)據(jù)上運(yùn)行,而無(wú)需對(duì)應(yīng)用程序本身進(jìn)行任何更改
設(shè)置和工作流程
下圖是集成了Alluxio和Analytics Zoo的架構(gòu)圖,可實(shí)現(xiàn)快速高效的深度學(xué)習(xí)工作:
本地或遠(yuǎn)程數(shù)據(jù)存儲(chǔ)被掛載到Alluxio上。Analytics Zoo應(yīng)用程序通過(guò)運(yùn)行Spark作業(yè)啟動(dòng)深度學(xué)習(xí)訓(xùn)練任務(wù),通過(guò)分布式文件系統(tǒng)接口從Alluxio加載數(shù)據(jù)。初始時(shí),Alluxio尚未緩存任何數(shù)據(jù),因此它從掛載的數(shù)據(jù)存儲(chǔ)中檢索數(shù)據(jù),并將其提供給Analytics Zoo應(yīng)用程序,同時(shí)在其Worker中保留一個(gè)緩存副本。第一次訓(xùn)練的運(yùn)行速度與應(yīng)用程序直接從本地?cái)?shù)據(jù)源讀取數(shù)據(jù)的速度大致相同。在隨后的訓(xùn)練中,Alluxio將擁有一個(gè)緩存副本,因此數(shù)據(jù)將直接由Alluxio Worker提供,從而消除了對(duì)本地?cái)?shù)據(jù)存儲(chǔ)的遠(yuǎn)程請(qǐng)求。請(qǐng)注意,緩存過(guò)程對(duì)用戶是透明的;無(wú)需人工干預(yù)即可將數(shù)據(jù)加載到Alluxio中。但是,Alluxio確實(shí)提供了諸如“distributedLoad”之類的命令來(lái)預(yù)加載工作數(shù)據(jù)集,以便在需要時(shí)預(yù)熱緩存。還有一個(gè)“free”命令用于收回緩存存儲(chǔ)空間,而無(wú)需從底層數(shù)據(jù)存儲(chǔ)中清除數(shù)據(jù)。
3.基準(zhǔn)測(cè)試結(jié)果
本節(jié)總結(jié)了Alluxio集成工作流的性能測(cè)試和基準(zhǔn)測(cè)試結(jié)果。
環(huán)境
我們?cè)贏WS EMR部署的7節(jié)點(diǎn)Spark集群(其中1個(gè)實(shí)例為主節(jié)點(diǎn),其余為工作節(jié)點(diǎn))中運(yùn)行實(shí)驗(yàn)。基準(zhǔn)測(cè)試的工作負(fù)載是inception v1訓(xùn)練,使用存儲(chǔ)在AWS S3同一區(qū)域的ImageNet數(shù)據(jù)集。
作為基準(zhǔn),Spark集群直接從S3 bucket訪問(wèn)數(shù)據(jù)集。與基準(zhǔn)作為對(duì)比,在Spark群集上安裝Alluxio,并將S3 bucket掛載為底層文件系統(tǒng)。
下表詳細(xì)介紹了具體的環(huán)境配置:
| EC2 Instance Type | r5.8xlarge |
| Number of vCPU per instance | 32 |
| Size of memory per instance | 256GB |
| Network speed | 10Gbps |
| Disk space | 100GB |
| Operation System | Ubuntu 18.04 |
| Apache Spark version | 2.4.3 |
| BigDL version | 0.10.0 |
| Analytics Zoo version | 0.7.0 |
| Alluxio version | 2.2.0 |
結(jié)果對(duì)比
在使用Analytics Zoo對(duì)ImageNet數(shù)據(jù)進(jìn)行inception訓(xùn)練時(shí),我們測(cè)量了數(shù)據(jù)加載性能。測(cè)得的時(shí)間包括訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)的加載時(shí)間。
使用Alluxio和不使用Alluxio的平均加載時(shí)間分別為579秒和369秒。當(dāng)Analytics Zoo使用Alluxio加載ImageNet訓(xùn)練和測(cè)試數(shù)據(jù)時(shí),速度大約提高了1.5倍。注意,輸入數(shù)據(jù)位于S3中計(jì)算的同一區(qū)域中。
下圖顯示了使用Alluxio時(shí),性能波動(dòng)(15.9秒)也遠(yuǎn)低于基線波動(dòng)(32.3秒)。這表明Alluxio不僅有助于平均加載時(shí)間,而且可以使性能更加穩(wěn)定。
4.結(jié)論
通過(guò)利用Alluxio作為Analytics Zoo的數(shù)據(jù)層,混合云解決方案可加速Analytics Zoo應(yīng)用程序中的數(shù)據(jù)加載以及大數(shù)據(jù)系統(tǒng)上的深度學(xué)習(xí)分析。我們的Alluxio內(nèi)部性能基準(zhǔn)測(cè)試表明,當(dāng)Analytics Zoo使用Alluxio加載ImageNet的訓(xùn)練和測(cè)試數(shù)據(jù)時(shí),該架構(gòu)提升了約1.5倍的速度。
人工智能應(yīng)用的不斷發(fā)展,將深度學(xué)習(xí)帶入了新一代數(shù)據(jù)分析發(fā)展的前沿。各類組織機(jī)構(gòu)將深度學(xué)習(xí)技術(shù)應(yīng)用于大數(shù)據(jù)分析流水線的需求將不斷增長(zhǎng)。我們代表整個(gè)Alluxio開(kāi)源社區(qū)鼓勵(lì)讀者嘗試這個(gè)解決方案,并歡迎您在遇到任何問(wèn)題時(shí)在我們的社區(qū)slack頻道中提問(wèn)。
特別感謝英特爾的Jennie Wang和Louie Tsai,感謝他們提供的寶貴的Analytics Zoo技術(shù)咨詢和支持。
總結(jié)
以上是生活随笔為你收集整理的deepfashion 深度学习_基于Alluxio加速混合云下的Intel Analytics Zoo开源深度学习平台...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java 类的高级特性_java程序-类
- 下一篇: 线性规划 - 用单纯形法解决整数规划问题