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
Tababarka loo qaybiyay MXNet oo wata server-ka cabbiraadda
Waa maxay Horovod
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 horovod
Xusuusin: 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
mpirun -np 2 -H localhost:2 -bind-to none -map-by slot python mxnet_mnist.py
Tani 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.870000
Bandhiga 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
Samee koox isku mid ah oo leh nooca MXNet 1.4.0 ama ka sareeya iyo nooca Horovod 0.16.0 ama ka sareeya si loo isticmaalo barasho la qaybiyey. Waxaad sidoo kale u baahan doontaa inaad ku rakibto maktabadaha tababarka GPU. Tusaale ahaan, waxaanu dooranay Ubuntu 16.04 Linux, oo leh GPU Driver 396.44, CUDA 9.2, cuDNN 7.2.1 maktabadda, NCCL 2.2.13 communicator iyo OpenMPI 3.1.1. Sidoo kale waad isticmaali kartaa
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.py
gunaanad
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
Haddii aad horay ula soo shaqeysay MXNet oo aad rabto inaad isku daydo barashada qaybinta Horovod, ka dibna fiiri
*Qiimaha waxaa la xisaabiyaa iyadoo lagu salaynayo
Wax badan ka baro koorsada
Source: www.habr.com