Turjumaada maqaalka waxaa la diyaariyay ka hor bilowga koorsada
Tababarka loo qaybiyay ee ku saabsan tusaalooyin badan oo waxqabadka sare leh ee xisaabinta ayaa yarayn kara wakhtiga tababarka ee shabakadaha neerfayaasha qotodheer ee casriga ah ee xog badan oo laga bilaabo toddobaadyo ilaa saacado ama xitaa daqiiqado, taas oo ka dhigaysa farsamadan tababarka ku baahsan codsiyada la taaban karo ee barashada qoto dheer. Isticmaalayaashu waa inay fahmaan sida loo wadaago oo la isu waafajiyo xogta marar badan, taas oo iyaduna saameyn weyn ku leh waxtarka miisaanka. Intaa waxaa dheer, isticmaalayaashu waa inay sidoo kale ogaadaan sida loo geeyo qoraalka tababarka kaas oo ku socda hal tusaale ilaa marar badan.
Maqaalkan waxaan kaga hadli doonaa si degdeg ah oo sahlan oo loo qaybiyo waxbarashada iyadoo la adeegsanayo maktabadda barasho qoto dheer ee furan Apache MXNet iyo Horovod qaab-dhismeedka waxbarashada qaybiyay. Waxaan si cad u muujin doonaa faa'iidooyinka waxqabadka ee qaabka Horovod waxaanan muujin doonaa sida loo qoro qoraalka tababarka MXNet si uu ugu shaqeeyo habka loo qaybiyo Horovod.
Waa maxay Apache MXNet
waa qaab barasho qoto dheer oo il furan oo loo isticmaalo in lagu abuuro, lagu tababaro, lana geeyo shabakadaha neerfaha ee qoto dheer. MXNet waxay soo koobtaa kakanaanta la xidhiidha hirgelinta shabakadaha neerfaha, waa mid aad u firfircoon oo la miisaami karo, wuxuuna bixiyaa API-yada luqadaha barnaamijyada caanka ah sida , , , , , , iyo kuwa kale.
Tababarka loo qaybiyay MXNet oo wata server-ka cabbiraadda
waxay isticmaashaa habka server-ka. Waxay adeegsataa serfarada cabbiraadda si ay uga ururiso hawlwadeen kasta, u qabato isku-darka, oo ay dib ugu soo celiso gradients-ka cusub shaqaalaha dib-u-habaynta soo socota. Go'aaminta saamiga saxda ah ee server-yada shaqaalaha ayaa fure u ah miisaan wax ku ool ah. Haddii uu jiro hal halbeeg oo keliya, waxa laga yaabaa inay noqoto cidhiidhi xagga xisaabinta. Taa beddelkeeda, haddii adeegayaal badan la isticmaalo, isgaarsiin badan iyo kuwo badan ayaa xiri kara dhammaan isku xirka shabakadaha.
Waa maxay Horovod
waa qaab barasho qoto dheer oo la qaybiyey oo laga sameeyay Uber. Waxay ka faa'iidaysataa tignoolajiyada iskutallaabta-GPU iyo iskutallaabyada hufan sida NVIDIA Collective Communications Library (NCCL) iyo Message Passing Interface (MPI) si ay u qaybiso oo ay isu geyso cabbirada moodeelka guud ahaan vorecs. Waxay si fiican u wanaajisaa isticmaalka xadhkaha xatooyada iyo miisaanka si fiican marka la shaqeynayo moodooyinka shabakadaha qoto dheer ee neerfaha. Waxay hadda taageertaa dhowr qaab-dhismeedka barashada mashiinka caanka ah, kuwaas oo ah , Tensorflow, Keras, iyo PyTorch.
MXNet iyo Horovod is dhexgalka
MXNet waxay ku biirtaa Horovod iyada oo loo marayo API-yada Waxbarashada La Qaybiyay ee lagu qeexay Horovod. APIs isgaarsiinta Horovod horovod.broadcast(), horovod.allgather() ΠΈ horovod.allreduce() la hirgeliyey iyadoo la adeegsanayo dib-u-soo-celin-celin-is-daba-marin ah oo mashiinka MXNet ah, taasoo qayb ka ah garaafka hawsha. Sidan, ku-tiirsanaanta xogta u dhaxaysa isgaadhsiinta iyo xisaabinta waxaa si fudud u maamula mishiinka MXNet si looga fogaado khasaaraha waxqabadka sababtoo ah isku-dubarid. Walaxda hagaajinta qaybsan ee lagu qeexay Horovod horovod.DistributedOptimizer balaadhiyo Optimizer gudaha MXNet si ay ugu wacdo Horovod API-yada u dhigma ee cusboonaysiinta cabbirka. Dhammaan tafaasiishan fulintu waa kuwo daah-furan isticmaalayaasha dhammaadka ah.
Bilow degdeg ah
Waxaad si dhakhso ah u bilaabi kartaa tababbarka shabakad yar oo neural ah oo ku saabsan xogta MNIST adoo isticmaalaya MXNet iyo Horovod ee MacBookgaaga.
Marka hore, ku rakib mxnet iyo horovod ka PyPI:
pip install mxnet
pip install horovodXusuusin: Haddii aad la kulanto qalad inta lagu jiro pip install horovodwaxaa laga yaabaa inaad u baahato inaad doorsoome ku darto MACOSX_DEPLOYMENT_TARGET=10.vvhalkaas oo vv - kani waa nooca MacOS kaaga, tusaale ahaan, MacOSX Sierra waxaad u baahan doontaa inaad qorto MACOSX_DEPLOYMENT_TARGET=10.12 pip install horovod
Kadibna ku rakib OpenMPI .
Dhammaadka, soo deji qoraalka imtixaanka mxnet_mnist.py oo ku socodsii amarada soo socda gudaha MacBookga tusaha shaqada:
mpirun -np 2 -H localhost:2 -bind-to none -map-by slot python mxnet_mnist.pyTani waxay ku socon doontaa tababar ku saabsan labada qaybood ee processor-kaaga. Wax-soo-saarku wuxuu noqon doonaa sida soo socota:
INFO:root:Epoch[0] Batch [0-50] Speed: 2248.71 samples/sec accuracy=0.583640
INFO:root:Epoch[0] Batch [50-100] Speed: 2273.89 samples/sec accuracy=0.882812
INFO:root:Epoch[0] Batch [50-100] Speed: 2273.39 samples/sec accuracy=0.870000Bandhiga Waxqabadka
Markaad tababbarto qaabka ResNet50-v1 ee xogta ImageNet ee 64 GPUs oo leh sideed xaaladood p3.16x weyn EC2, mid kasta oo ka kooban 8 NVIDIA Tesla V100 GPUs ee daruuraha AWS, waxaan ku gaadhnay tabobarka 45000 sawir/sek (ie, tirada muunado tababaran ilbiriqsikii). Tababarku wuxuu ku dhammaaday 44 daqiiqo ka dib 90-xilliyadii ugu saxsanaa ee 75.7%.
Waxaan tan barbar dhignay habka tababarka loo qaybiyey ee MXNet ee adeegsiga adeegsadaha cabbiraadaha ee 8, 16, 32 iyo 64 GPUs oo wata halbeeg halbeeg ah iyo serfarka saamiga shaqaalaha ee 1 ilaa 1 iyo 2 ilaa 1, siday u kala horreeyaan. Waxaad natiijada ka arki kartaa sawirka 1 ee hoose. Dhanka dhidibka y ee bidixda, baararka waxay u taagan yihiin tirada sawirada lagu tababarayo ilbiriqsi kasta, xariiqyadu waxay ka tarjumayaan hufnaanta miisaanka (taas oo ah, saamiga dhabta ah iyo soo saarista ugu habboon) ee dhidibka y ee midigta. Sida aad arki karto, doorashada tirada server-yada ayaa saameeya waxtarka miisaanka. Haddii uu jiro hal adeeg oo kaliya, hufnaanta miisaanku waxay hoos ugu dhacaysaa 38% 64 GPUs. Si aad u gaarto waxtarka miisaanka leh ee Horovod, waxaad u baahan tahay inaad labanlaabto tirada server-yada marka loo eego tirada shaqaalaha.

Jaantuska 1. Isbarbardhigga waxbarashada la qaybiyey iyadoo la isticmaalayo MXNet iyo Horovod iyo server-ka cabbirka
Jadwalka 1 ee hoose, waxaan is barbar dhigeynaa qiimaha ugu dambeeya tusaale ahaan marka aan wadno tijaabooyinka 64 GPUs. Isticmaalka MXNet ee Horovod waxay ku siinaysaa soosaarka ugu fiican ee qiimaha ugu hooseeya.

Shaxda 1. Isbarbardhigga qiimaha u dhexeeya Horovod iyo Parameter Server oo leh seerfar iyo saamiga shaqaalaha ee 2 ilaa 1.
Tallaabooyinka soo saarista
Tallaabooyinka soo socda, waxaan ku tusi doonaa sida loo soo saaro natiijada tababarka la qaybiyey iyadoo la isticmaalayo MXNet iyo Horovod. Si aad wax badan uga barato waxbarashada la qaybiyey MXNet akhri .
talaabo 1
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² Ρ MXNet Π²Π΅ΡΡΠΈΠΈ 1.4.0 ΠΈΠ»ΠΈ Π²ΡΡΠ΅ ΠΈ Horovod Π²Π΅ΡΡΠΈΠΈ 0.16.0 ΠΈΠ»ΠΈ Π²ΡΡΠ΅, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π½Π° GPU. ΠΠ»Ρ Π½Π°ΡΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΌΡ Π²ΡΠ±ΡΠ°Π»ΠΈ Ubuntu 16.04 Linux, Ρ GPU Driver 396.44, CUDA 9.2, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ cuDNN 7.2.1, ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡ NCCL 2.2.13 ΠΈ OpenMPI 3.1.1. Π’Π°ΠΊΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ , halkaas oo maktabadahan horay loo sii rakibay.
talaabo 2
Ku dar kartida aad kula shaqayn karto Horovod API qoraalkaaga tababarka ee MXNet. Qoraalka hoose ee ku salaysan MXNet Gluon API waxa loo isticmaali karaa qaab fudud. Xariiqyada geesinimada leh ayaa loo baahan yahay haddii aad hore u lahayd qoraal tababar oo u dhigma. Waa kuwan dhowr isbeddel oo muhiim ah oo aad u baahan tahay si aad wax uga barato Horovod:
- U deji macnaha guud iyadoo la raacayo darajada Horovod ee deegaanka (line 8) si aad u fahamto in tababarka lagu sameeyo xudunta garaafyada saxda ah.
- U gudub halbeegyada bilowga ah hal shaqaale una gudub dhammaan (line 18) si aad u hubiso in dhammaan shaqaaluhu ay ku bilowdaan cabbirro isku mid ah.
- Samee Horovod QaybiyeyOptimizer (line 25) si loo cusboonaysiiyo cabbirada hab loo qaybiyey.
Si aad u hesho qoraalka buuxa, fadlan tixraac tusaalooyinka Horovod-MXNet ΠΈ .
1 import mxnet as mx
2 import horovod.mxnet as hvd
3
4 # Horovod: initialize Horovod
5 hvd.init()
6
7 # Horovod: pin a GPU to be used to local rank
8 context = mx.gpu(hvd.local_rank())
9
10 # Build model
11 model = ...
12
13 # Initialize parameters
14 model.initialize(initializer, ctx=context)
15 params = model.collect_params()
16
17 # Horovod: broadcast parameters
18 hvd.broadcast_parameters(params, root_rank=0)
19
20 # Create optimizer
21 optimizer_params = ...
22 opt = mx.optimizer.create('sgd', **optimizer_params)
23
24 # Horovod: wrap optimizer with DistributedOptimizer
25 opt = hvd.DistributedOptimizer(opt)
26
27 # Create trainer and loss function
28 trainer = mx.gluon.Trainer(params, opt, kvstore=None)
29 loss_fn = ...
30
31 # Train model
32 for epoch in range(num_epoch):
33 ...talaabo 3
Soo gal mid ka mid ah shaqaalaha si aad u bilowdo tabobar la qaybiyo adoo isticmaalaya dardaaranka MPI. Tusaalahan, tababarka la qaybiyay wuxuu ku socdaa afar xaaladood oo midkiiba 4 GPUs ah, iyo wadarta 16 GPUs ee kooxda. Kor u qaadka Dheefiyaha Stochastic Gradient (SGD) waxaa loo isticmaali doonaa cabirrada soo socda:
- Cabbirka dufcada yar: 256
- heerka waxbarashada: 0.1
- xawaaraha: 0.9
- Qulqulka miisaanka: 0.0001
Markaan ka cabirnay hal GPU ilaa 64 GPUs, waxaan si toos ah u cabirnay heerka tababarka iyadoo loo eegayo tirada GPU-yada (laga bilaabo 0,1 ee 1 GPU ilaa 6,4 ee 64 GPUs), anagoo ilaalinayna tirada sawirada GPU kasta 256 (laga bilaabo dufcad 256 sawir oo loogu talagalay 1 GPU ilaa 16 ee 384 GPUs). Miisaanka qudhunka iyo cabbirrada xawliga ayaa isbeddelay markii tirada GPU-yadu korodhay. Waxaan u isticmaalnay tababar sax ah oo isku dhafan oo leh nooca xogta float64 ee gudbinta hore iyo float16 ee gradients si aan u dedejinno xisaabinta float32 ee ay taageerto NVIDIA Tesla GPUs.
$ mpirun -np 16
-H server1:4,server2:4,server3:4,server4:4
-bind-to none -map-by slot
-mca pml ob1 -mca btl ^openib
python mxnet_imagenet_resnet50.pygunaanad
Maqaalkan, waxaan eegnay hab la qiyaasi karo oo lagu qaybinayo tababbarka moodeelka iyadoo la adeegsanayo Apache MXNet iyo Horovod. Waxaan soo bandhignay hufnaanta miisaanka iyo waxtarka leh marka la barbar dhigo habka server-ka cabbirka xogta ImageNet kaas oo qaabka ResNet50-v1 lagu tababaray. Waxa kale oo aanu ku soo darnay tillaabooyin aad isticmaali karto si aad wax uga beddesho qoraalka jira si aad u socodsiiso tababbarka tusaalooyinka badan adoo isticmaalaya Horovod.
Haddii aad hadda ka bilaabayso MXNet iyo barasho qoto dheer, aad bogga rakibaadda in marka hore la dhiso MXNet. Waxaan sidoo kale kugula talineynaa inaad akhrido maqaalka si loo bilaabo.
Haddii aad horay ula soo shaqeysay MXNet oo aad rabto inaad isku daydo barashada qaybinta Horovod, ka dibna fiiri , ka dhis MXNet oo raac tusaalaha ama .
*Qiimaha waxaa la xisaabiyaa iyadoo lagu salaynayo AWS ee Tusaalooyinka EC2
Wax badan ka baro koorsada
Source: www.habr.com
