omniture

七牛云李朝光:深度學習平臺AVA及海量資源管理

2018-07-11 15:13 17147
5月26日下午,在第二十八期七牛云架構(gòu)師實踐日,李朝光進行了題為《深度學習平臺 AVA 及海量資源管理》的實戰(zhàn)分享。本文是對演講內(nèi)容的整理。

杭州2018年7月11日電 /美通社/ -- 5月26 日下午,在第二十八期七牛云架構(gòu)師實踐日,李朝光進行了題為《深度學習平臺 AVA 及海量資源管理》的實戰(zhàn)分享。本文是對演講內(nèi)容的整理。

七牛云在深度訓練平臺里如何管理數(shù)據(jù)以及 GPU ?

深度訓練平臺有兩個核心,一個是數(shù)據(jù)管理,一個是計算資源管理。首先提數(shù)據(jù)管理的原因是,從傳統(tǒng)意義上使用數(shù)據(jù)到深度訓練訪問數(shù)據(jù),會發(fā)現(xiàn)一個有趣的問題:數(shù)據(jù)量已經(jīng)大到?jīng)]法管理的地步了。李朝光表示,“比如以往,我們用網(wǎng)盤或搭一個 CEPH,數(shù)據(jù)一般都是少數(shù)幾個 T 的級別,但等到真正運作深度訓練的時候,會發(fā)現(xiàn)跑一個訓練,比如圖像分類或視頻檢索訓練,就能消耗幾十個 T 的空間。怎么有效把這些數(shù)據(jù)喂到深度訓練里?七牛云 AVA 平臺的誕生就是要想辦法解決這個問題。

第二是計算資源的管理。這里的計算資源,基本指 GPU,一般來說是 NVIDIA 的 GPU。七牛云實驗室里,現(xiàn)在已經(jīng)有百臺級別的 GPU,里面有各種型號,比如 M4、K80,到 P100、V100 都有。這些資源怎么有效地管理、使用,是個難題。七牛云開始是用非常原始的方式,比如搶占方式,后來再慢慢把資源管理模塊化、精細化,最后才做到 AVA 這個平臺。

七牛云目前圍繞的是數(shù)據(jù)創(chuàng)新服務。但七牛云是做存儲起步的,開始是集中在海量(對象)存儲,后面進入了機器學習、智能多媒體服務,這些的共用特點是對數(shù)據(jù)本身的存儲管理,比如對象存儲。怎么把這么多數(shù)據(jù)存儲起來?怎么高效地把它放在 CDN 里,快速地進行轉(zhuǎn)發(fā)?目前七牛云已經(jīng)基本實現(xiàn)了第一步:把數(shù)據(jù)有效地管理起來。第二步,怎么發(fā)現(xiàn)數(shù)據(jù)之間的關系?如何根據(jù)數(shù)據(jù)內(nèi)容做創(chuàng)新?比如一個視頻有幾千幀,幀和幀之間有什么關系?一個圖片,是否屬于黃色或暴恐的?七牛云重點做圖片、視頻檢索、分類,還有人臉識別等。

一個圖片過來,不能直接喂到七牛云深度訓練系統(tǒng)里,第一步就要做數(shù)據(jù)處理。之前七牛云有個 DORA 系統(tǒng),是做圖片視頻處理的,比如裁減翻轉(zhuǎn)、加水印等。這樣可以把數(shù)據(jù)轉(zhuǎn)換成深度訓練需要的格式,然后喂到深度訓練系統(tǒng)里,這是目前正在做的一塊工作。數(shù)據(jù)喂進來以后,經(jīng)過深度訓練、視頻截幀,發(fā)現(xiàn)其中的關系,比如判斷圖片是不是暴力的、恐怖的,再重新把數(shù)據(jù)放在結(jié)構(gòu)化存儲里。然后反過來做一個迭代。做一個基礎模型,內(nèi)容分發(fā),重新進入系統(tǒng)做一個循環(huán)。在這個循環(huán)的不停迭代中,不停改變訓練的精度,輸出一個最終想要的結(jié)果。這大體上現(xiàn)在 AVA 平臺想做的事情,它的背景就是從傳統(tǒng)的內(nèi)容服務,慢慢過渡到數(shù)據(jù)挖掘,這部分就是通過七牛云深度訓練平臺來實現(xiàn)的。

七牛云 AVA 平臺的概貌

七牛云 AVA 平臺
七牛云 AVA 平臺

上面一層是七牛云 AI 實驗室主打的方向,是對外部可見的業(yè)務層,大部分的業(yè)務都是圍繞圖像、視頻定制化,包括鑒黃產(chǎn)品、目標檢測等。因為網(wǎng)絡上充斥的黃色圖片太多,很多客戶每天有幾千萬張甚至上億張圖片存到七牛云。根據(jù)國家的法規(guī),這些圖片可能會有相當一部分是不適宜在網(wǎng)上出現(xiàn)的。但有時候客戶也不知道,不可能靠人把這些圖搜出來,我們怎么把這樣的圖片拎出來?這就需要做一個自動化處理,把圖片自動識別。在七牛云這端,把圖片清理掉,網(wǎng)站就不會把黃色圖片或敏感圖片放出去。這是通過深度訓練平臺,利用算法識別出不同的模型,然后在毫秒級別把圖片識別出來。下面一層提供基礎的服務功能,即 AVA 深度訓練平臺。

七牛云 AVA 平臺能為大家提供一些什么?

AVA 平臺最初是直接服務于算法工程師的。通過引入 CEPH,屏蔽掉存儲管理細節(jié),引入  Kubernetes 屏蔽容器管理細節(jié),并把不同的深度訓練框架打包到 Docker 鏡像中,方便算法工程師使用。算法工程師可以聚焦于算法本身的設計,不用關心下面資源如何提供的。開始的時候機器比較少,GPU 資源有限,大家使用方式基本是獨占模式,直接面對存儲和 GPU 資源。后來隨著業(yè)務量增大,機器資源增多,平臺的靈活性和擴展性越發(fā)顯得重要。AVA 平臺重點從對資源的包裝到對資源的靈活調(diào)度轉(zhuǎn)變。算法人員已經(jīng)解除對資源的直接依賴,一個簡單的命令或 GUI 操作就能啟動訓練。除了針對算法人員,目前這套系統(tǒng)也開始提供給外部用戶使用,首先會給高校學生提供一個免費嘗試深度訓練的平臺,后面將會具體介紹。

七牛云 AVA 平臺主要有哪些部分組成?

第一個部分是數(shù)據(jù)集管理。這里講的數(shù)據(jù)集管理包含幾個部分。第一是如何管理 P 級別的云上云下數(shù)據(jù),并能及時有效地提供給深度訓練。第二是對數(shù)據(jù)進行加工處理,比如圖片裁剪,把數(shù)據(jù)打包成不同深度訓練框架所需的格式,自動掛載入深度訓練平臺進行訓練。還有一種是如何把訓練產(chǎn)生的結(jié)果自動回傳。

第二就是標注。機器其實并不是一上來就能識別圖片,很多時候需要人工輔助它,即要人先教會它怎么做。在信息大爆炸的時代,每天進來、出去可能 60% 以上都是圖像、視頻,這不是現(xiàn)有模型倉庫里能準確識別出來的。AVA 平臺提供一套打標機制(LabelX),讓非專業(yè)或?qū)I(yè)人士,通過標注手段,告訴平臺這些圖片到底是哪種類型,然后輸入到訓練算法進行模型迭代、更新,最后輸出標準模型?;诋a(chǎn)生的模型,我們就可以通過推理來判斷新輸入的圖片是屬于什么分類了,比如黃色,暴恐的等。目前七牛云對黃圖識別的準確率已經(jīng)達到 96% 以上。

同時,深度訓練是平臺比較重頭的一塊,包括對 GPU 資源的管理、存儲資源的管理、訓練管理, Quota 管理、以及跟深度訓練相關的聯(lián)合調(diào)度。現(xiàn)在七牛云有比較好的調(diào)度系統(tǒng),比如 Kubernetes,但當真正使用的時候,發(fā)現(xiàn) Kubernetes 能做的非常有限,調(diào)度管理粒度比較粗,只能調(diào)度到容器的級別。做到容器級別,可部分解決資源共享問題,比如 100 臺 GPU,可以全部用起來。但如果有成千上萬的并發(fā)訓練任務,Kubernetes 的管理就有點捉襟見肘了,比如不同機器的 GPU 怎么聯(lián)合調(diào)度、通信怎么管、資源怎么分配更合理等。七牛云現(xiàn)在要做的一件事,就是在 Kubernetes 調(diào)度之上,細化對 GPU、CPU 的管理,引入 RDMA 的技術,把資源管理、通信和調(diào)度做深,做細,達到更好的資源共享和使用。

最后一個部分,是評估推理。前期的訓練做了大量準備工作,準備好了評估模型。推理評估要做的就比較簡單,是把新的少量圖片加上模型再訓練一次,在毫秒級別能夠得出結(jié)果。這一部分大都與業(yè)務結(jié)合比較緊密。

 AVA 平臺的技術架構(gòu)是怎樣的?

下圖顯示的是 AVA 平臺的技術架構(gòu),主要分為三層。最下面一層屬于硬件和資源管理層,我們現(xiàn)在基本不會買單臺 GPU 做訓練,一般我們都是做一個集群,這一塊交給 Kubernetes 就可以了。最上面一層是業(yè)務系統(tǒng),包括模型、推理、標注和各個不同的訓練系統(tǒng),七牛云 AI 實驗室業(yè)務大部分業(yè)務都在這層。中間這層是 AVA 平臺重點要發(fā)力的地方,也是我們現(xiàn)在重點在做的。

AVA 平臺的技術架構(gòu)
AVA 平臺的技術架構(gòu)

這層有三個部分:

第一部分是存儲系統(tǒng)。這一部分的核心是如何把大量的數(shù)據(jù)管起來。較早我們的數(shù)據(jù)是直接搭在 CEPH 上使用,但數(shù)據(jù)量一旦達到幾十 T 的規(guī)模,問題就開始顯現(xiàn)了。舉個例子,一個視頻訓練有幾十 T 容量,包含十多億張文件,存在 CEPH PVC 上,有一天突然發(fā)現(xiàn)數(shù)據(jù)讀不了了,找了半天才發(fā)現(xiàn)是文件系統(tǒng) inode 用完了。另外一個例子是,當 PVC 空間滿了之后,新的數(shù)據(jù)進不來,老的數(shù)據(jù)不知道哪些該刪,很被動。七牛云現(xiàn)在的一個策略,就是不再基于 CEPH 做訓練,而是基于云做訓練,CEPH 可以做中間緩存。目前中等規(guī)模的訓練已經(jīng)完全跑通,對于 IO 吞吐要求不是特別高的訓練,和在 CEPH 上訓練沒有顯著差別。目前 AVA 是通過 Alluxio 把本地訓練和云上的數(shù)據(jù)對接起來。

第二是數(shù)據(jù)管理。所有數(shù)據(jù)都來源于互聯(lián)網(wǎng),開始都是存在對象存儲中。AVA 剛做的時候,必須把數(shù)據(jù)拉到本地來才能訓練。標準用法是,用戶提供一個 json 文件,里面每行是七牛對象存儲的 URL,AVA 會把 json 中每個文件都下載,放到一個 PVC 中并掛載到 Kubernetes 的 Pod 中進行訓練。在存放到 PVC 之前,還會調(diào)用七牛的圖像處理系統(tǒng) Dora 對數(shù)據(jù)進行一些必要的操作如旋轉(zhuǎn),裁剪等。在現(xiàn)實使用中,大家會不停地調(diào)整數(shù)據(jù)內(nèi)容并進行迭代訓練,每次調(diào)整都重新把數(shù)據(jù)拉取一遍將是很繁瑣的事情?,F(xiàn)在我們的做法,一個是直接在云上訓練,這樣對數(shù)據(jù)的改動直接反饋到云端,另外一個是引入結(jié)構(gòu)化存儲,把數(shù)據(jù)和元數(shù)據(jù)信息存放到 Mongo 中,并通過打快照的方式,方便靈活的選擇不同版本數(shù)據(jù)進行訓練。

第三是調(diào)度管理系統(tǒng)。在七牛內(nèi)部,現(xiàn)有比較成熟的框架比如 Caffe、MXNet、Pytorch、TensorFlow 等都在使用。最初是直接使用,后來遷移到七牛容器云,由 Kubernetes 提供調(diào)度,這樣的調(diào)度還是比較簡單的。比如, Kubernetes 現(xiàn)在的調(diào)度策略是,選中了 GPU 機器后,對 GPU 卡是隨機選擇。但是,一臺機器上的兩張 GPU 卡,處于不同拓撲連接方式,性能相差非常大。比如 QPI 連接帶寬可能是 3GB,而 P2P 模式可能達到 12GB。AVA 通過檢查 GPU 的 Affinity 模式,改寫 Kubernetes 的 scheduler,避免選擇處于不同 CPU 通道上的 GPU 卡。還有,現(xiàn)有的調(diào)度策略是讓所有 GPU 機器卡使用比較均衡,但如果一個訓練需要使用 8 張卡,系統(tǒng)中卡總數(shù)滿足,可能沒有一臺機器可以提供完整的 8 張卡,AVA 通過定制策略,提供特殊的 scheduler,可以選擇優(yōu)先把 Pod 調(diào)度到部分分配的 GPU 機器上。對于分布式訓練,七牛云調(diào)研過 Tensorflow、MXNet 等,最終選擇 MXNet ps-lite 作為基礎。MXNet 可以做分布式訓練,但只能把任務調(diào)到機器里,調(diào)過去 GPU 怎么共享、使用,依然有很多東西可以優(yōu)化。后續(xù)七牛云會基于 MXNet 的 PS-LITE 框架,把分布式調(diào)度往深里做,滿足深度訓練的需要。七牛云也正在引進 RDMA 機制,通過 RDMA 機制把 GPU 跟 GPU 之間聯(lián)系打通,提升運行的性能。

對海量數(shù)據(jù),七牛云怎么管?

之前數(shù)據(jù)管理的現(xiàn)狀是:大部分的數(shù)據(jù)會存放在對象存儲中,做訓練的時候,會把數(shù)據(jù)拉到本地來。所謂本地,一般指本地的一個集群或本地一臺機器,一般玩法,都是搭一個本地 CEPH 集群,通過 Kubernetes 調(diào)度,把 PVC 掛上去,然后訓練數(shù)據(jù)從對象存儲導到這里,可以在里面跑訓練,跑一兩個月或是一兩天都可以。這樣做的問題是用戶數(shù)據(jù)不能共享,大家如果用過 CEPH 就知道,CEPH RBD 在 Kubernetes 中不能共享讀寫,CEPH FS 可以,但性能有點差距。還有,CEPH 提供的存儲空間對于深度訓練的數(shù)據(jù)量來說是杯水車薪。

去年七牛云搭了一個 100T 的集群,在真正用的時候感覺還是比較吃力,會碰到各種問題。一個訓練,就可能有幾十 T,把 CEPH 會一下子撐爆。這只是七牛內(nèi)部一個正常的訓練,算上對外開放的用戶,還有內(nèi)部上百號人同時使用,這個集群明顯不能滿足要求。

視頻數(shù)據(jù)一下占幾十 T,其他人沒法玩了,這是比較頭痛的一個問題。運維空間不夠,可以加盤,加了幾次以后就沒法加了,或者盤位沒了,然后再加機器,形成惡性循環(huán)。幾十T的數(shù)據(jù)可能前面半個月用了一半數(shù)據(jù)就不用了,這個時候其實放在云上對象存儲里就可以了。但剛開始沒有這個機制,大部分的數(shù)據(jù)都躺著“睡覺”,而其他人又沒有空間可用

對 GPU 也是類似,如果一個集群中的 GPU 不能充分利用,到最后會發(fā)現(xiàn)運維就是不停加盤、加機器,用戶不停倒數(shù)據(jù)。這過程還會影響帶寬,陷入惡性循環(huán)。怎么破這個問題?這是七牛云 AVA 要解決的問題,AVA 首先要解決痛點問題,然后才解決好用的問題。

存儲問題怎么解決?

七牛云引入了一個 Alluxio 的特性。對七牛云來講不只是單純把一個開源系統(tǒng)引進,七牛云還會做優(yōu)化、定制化,后期也會開源出去。Alluxio 這個系統(tǒng)現(xiàn)在相對比較成熟了,支持的廠家也很多,微軟、百度、京東都用了這個系統(tǒng),這個系統(tǒng)還算成熟。將來大家的數(shù)據(jù)可以直接放到七牛云存儲上,直接利用 AVA 平臺做訓練,當然其中也會有些優(yōu)化、定制。

為什么選 Alluxio?它有以下幾個特性:

第一,支持多對象存儲,海量空間。七牛云來講,CEPH 按百 T 級別,運維就很難做了。但對對象存儲來講,上 P 都不是問題,可能稍微慢一點,但數(shù)據(jù)放在這里,總歸可以做訓練,雖然有時候會慢,但通過其他的手段解決,至少先把空間問題解決了。

第二,統(tǒng)一命名空間。通過 Alluxio 做,就是一個大系統(tǒng),做訓練的時候,數(shù)據(jù)放到任何地方照樣可以把數(shù)據(jù)拉過來,導入七牛云的深度訓練平臺,訓練完以后把結(jié)果再導回原來的地方。

第三,內(nèi)存分布式文件系統(tǒng)。比如一百臺機器,每個機器貢獻幾百 G 內(nèi)存形成幾個 T 的內(nèi)存系統(tǒng),可以把數(shù)據(jù)放在里面,后續(xù)所有訓練都是從內(nèi)存讀取,不會從云上讀取,這是非常好的一個好處。在實際訓練中,七牛云經(jīng)常用到這個內(nèi)存文件系統(tǒng)的特性。

第四,Multiple  tier 緩存系統(tǒng)。內(nèi)存可能是幾個 T 的級別,現(xiàn)在七牛云本身訓練數(shù)據(jù)已經(jīng)到了 P 級別,加上后續(xù)平臺開放出去,可能要到 E 級別,T 級別的內(nèi)存系統(tǒng)對 E 級別的云上數(shù)據(jù)肯定不可用,這里就可以做一個多層的緩存系統(tǒng),內(nèi)存放不下了可以放在本地的硬盤。這一塊可以不落 CEPH 空間,因為 CEPH 空間可能還要再走一次網(wǎng)絡,速度會受影響,七牛云可以直接落到本地緩存系統(tǒng)。

Alluxio 在七牛的應用

首先為了考慮穩(wěn)定性,七牛云會搭兩套集群。

一個是只讀 Alluxio 集群,會分配大量的 RAM,還有基于 SSD 裸盤作二級緩存,大部分的云上訓練數(shù)據(jù),可以落到這里。平時不繁忙的時候,數(shù)據(jù)可以完全落在 RAM 空間里。另外一個是 Alluxio 寫集群,可以把訓練過程產(chǎn)生的模型、log、qw、h 新文件等寫入它,并通過同步或異步方式傳回云上。寫集群對接的不是 SSD 裸盤,而是 CEPH 集群。為什么考慮 CEPH?因為可以保證機器故障的時候,數(shù)據(jù)不會丟。寫集群分配的 RAM 容量較少,數(shù)據(jù)寫入的時候直接落入 CEPH,再次訪問的時候才提升到 RAM 中。大部分的加速會在 Alluxio 讀緩存集群, Alluxio 寫集群也有加速功能,但不是主要的。

再上面對接的是 FUSE  Adapter。這是基于 Kubernetes 的 Flex Volume 做的,可以把云上數(shù)據(jù)通過 Alluxio 直接導到訓練平臺。采用 Adapter 是為了安全原因,再通過 FUSE 就可以把數(shù)據(jù)掛進來。比如每個用戶在七牛云 AVA 平臺訓練的時候,把 bucket 直接掛進來就行了,之后七牛云會自動把數(shù)據(jù)緩存到本地的系統(tǒng),后續(xù)所有讀寫訓練都走本地系統(tǒng)。從使用者角度來看,相當于在本地系統(tǒng)里做訓練。通過這種方式,很大程度上簡化了用戶的使用。 AVA 把外面的這些東西都掩蓋了,用戶做訓練的時候,根本看不到自己的 bucket,只看到自己的目錄,當做本地目錄直接讀寫就行了。       ??

數(shù)據(jù)讀寫流程約為

訓練開始的時候,可以對數(shù)據(jù)預熱,讀取到本地 Alluxio 集群緩存起來,大部分框架都有這樣的預取功能?;蛘卟蛔鲱A熱,這樣訓練速度可能受損,但訓練完全沒有問題。RAM 充滿以后,會把數(shù)據(jù)下沉到下一層的 SSD 盤。通過 FUSE 系統(tǒng),訓練所在的 POD 可以直接讀取 Alluxio 的數(shù)據(jù),就像讀取本地文件系統(tǒng)文件一樣。讀取的其實不是云上的內(nèi)容,內(nèi)容已經(jīng)存在集群內(nèi)部了。這個集群容量完全可以替代原來的 CEPH 集群,另外的好處是數(shù)據(jù)不用的時候可以自動剔掉,大部分在使用的數(shù)據(jù),在這個集群里都可以找得到,相當于把加速性能發(fā)揮到了極致。

而對寫也是一樣,但寫七牛云有個不一樣的地方。為了保證數(shù)據(jù)安全,寫的話可以直接穿過 RAM 寫入 CEPH,最終 RAM 或 CEPH 空間到達高水位了,可以自動把寫入數(shù)據(jù)推到云上。訓練完以后,異步的把一些干凈數(shù)據(jù)淘汰,臟數(shù)據(jù)送回云上。

七牛云通過這個流程,把海量數(shù)據(jù)管理起來。用了這套系統(tǒng)后,大家就不需要頻繁倒數(shù)據(jù)了,因為系統(tǒng)就可以自動把冷數(shù)據(jù)踢掉,也不會存在空間不夠的問題了。以前用 CEPH 的時候盤很快會滿,很多工程師不知道哪些數(shù)據(jù)該丟哪些該留,現(xiàn)在不需要考慮這些問題了。AVA 會自動把冷數(shù)據(jù)踢掉,自動把臟數(shù)據(jù)上傳云。

計算資源管理

七牛云剛開始對 GPU 的使用還是比較原始的。比如通過 Kubernetes 啟動 Pod 綁定 GPU,綁定以后跑訓練,綁定以后,GPU 不能共享,而且 Pod 基本是停留在那,不釋放。正確的使用方式應該是做一個 GPU 的池子,訓練開始的時候分配、綁定 GPU,結(jié)束后馬上歸還,這是可以做到的。現(xiàn)在七牛云對計算資源的使用,也是遵循這個模式。七牛云采用了 workspace 和訓練兩種方式來管理使用計算資源。 Workspace 和訓練共享用戶的存儲。用戶通過workspace來編輯代碼,準備數(shù)據(jù)并做簡單的編譯、調(diào)試。一切準備就緒后,從 AVA 平臺啟動訓練實例,綁定 GPU,訓練結(jié)束后,歸還 GPU 到池子里,后面的訓練可循環(huán)使用。       

計算資源管理
計算資源管理

現(xiàn)在所有的新用戶不能直接看到 GPU,具體訓練的時候他不知道用的是哪幾個 GPU,放在哪里。較早的時候大家占住幾個 GPU 一直使用,不釋放,別人沒法共享?,F(xiàn)在七牛云把它做成一個池子 GPU 就完全可以流轉(zhuǎn)起來。以后的目標,就是用少數(shù)的 GPU 可以做大量的訓練。目前,七牛云正在加一些新的特性,比如加 quota,分組機制,這樣可以避免少數(shù)人無限制地霸占 GPU。

如何解決使用 GPU 存在問題?

如何解決使用 GPU 存在問題,典型的問題是:GPU 的調(diào)度問題。

Kubernetes 的調(diào)度策略是比較簡單的,先通過 predicate 檢查,再通過 priority 檢查,然后由 Kubelet 具體分配綁定資源。假如有兩臺 GPU 機器,每臺 8 張卡,第一臺已經(jīng)分配出去 2 張卡了,再次申請 2 張卡的時候,Kubernetes 很可能會調(diào)度到第二臺機器上,這樣每臺機器都使用了 2 張卡。如果這時有個訓練要求使用同一臺機器上的 8 張卡訓練,調(diào)度將失敗。這個時候需要把調(diào)度改掉,第二次分配在選擇第一臺機器的 GPU,第二臺機器的 8 張卡可以完整留下來。通過不同策略就可以滿足不同的需求。還有,假設是單臺機器上選擇兩張 GPU 訓練,如果選 GPU1 和 GPU3,它們屬于不同 CPU,通過 QPI 鏈接,它們之間帶寬可能只有是 3 個 GB 每秒。如果選擇 GPU0 和 GPU1,它們之間屬于同一個 CPU,那么帶寬可能達到 12G 每秒。調(diào)度的時候盡量要選擇 GPU0 和 GPU1 在一起。

實測中,七牛云也發(fā)現(xiàn),比如內(nèi)存和 CPU 有一定限制的情況下,通過不同的 GPU 分配方式跑的訓練時間差異非常大,最多性能差距達到1倍以上。將來一旦擴大到整個集群,差別會更大。所以 GPU 的調(diào)度模式對訓練影響會非常大。

AVA 平臺的展望

原來七牛云內(nèi)部從業(yè)務角度出發(fā),也做了一個分布式的訓練系統(tǒng) ESPP,用于圖像和視頻訓練,其中也用到了 Kubernetes 和一些訓練框架,但是針對于特定業(yè)務系統(tǒng)的。現(xiàn)在七牛云準備把原來的業(yè)務系統(tǒng)都收編到 AVA 平臺。 RDMA 這一塊也是要重點考慮的,正在跟廠家做一些溝通交流,馬上就要布上去,加上分布式調(diào)度系統(tǒng),以后訓練會比現(xiàn)在快很多。

雖然說現(xiàn)在 AVA 有了分布式的調(diào)度機制和 RDMA 機制,但從算法模型的生產(chǎn)角度講,還處在一個手工階段,大家還是通過手工方式不停的調(diào)整參數(shù),然后不停的跑訓練,以期調(diào)試出一個滿意的模型。目前 Google 已經(jīng)通過 AutoML 的方式自動能產(chǎn)生出很好的模型,七牛云還有很多路要走。七牛云正在和算法團隊一起研究,如果讓模型訓練變得更高效,更自動化,更智能化。

總結(jié)

這套 AVA 系統(tǒng),不僅七牛云內(nèi)部使用,現(xiàn)在已經(jīng)推廣給高校學生免費使用。第一步已經(jīng)準備了幾十張 GPU 卡和常用的訓練框架,登陸到平臺后就可直接使用。高校學生遵循下面幾個步驟就可以非常方便的使用 AVA 平臺:

  1. 登陸七牛云  www.qiniu.com,創(chuàng)建一個賬號
  2. 創(chuàng)建一個對象存儲 Bucket
  3. 把學校名稱/實驗室名稱,賬號, bucket 發(fā)送到 atlab-review@qiniu.com  
  4. 審批通過后,進入 portal.qiniu.com,選擇深度訓練平臺,綁定 bucket
  5. 創(chuàng)建 Workspace,編輯訓練代碼和準備數(shù)據(jù)
  6. 創(chuàng)建訓練,從 workspace 查看運行結(jié)果
  7. Done
消息來源:七牛云
China-PRNewsire-300-300.png
相關鏈接:
全球TMT
微信公眾號“全球TMT”發(fā)布全球互聯(lián)網(wǎng)、科技、媒體、通訊企業(yè)的經(jīng)營動態(tài)、財報信息、企業(yè)并購消息。掃描二維碼,立即訂閱!
collection