It-traduzzjoni tal-artiklu tħejjiet lejlet il-bidu tal-kors
Taħriġ imqassam fuq każijiet multipli ta 'kompjuters ta' prestazzjoni għolja jista 'jnaqqas il-ħin ta' taħriġ ta 'netwerks newrali profondi moderni fuq ammonti kbar ta' dejta minn ġimgħat għal sigħat jew saħansitra minuti, u jagħmel din it-teknika ta 'taħriġ prevalenti f'applikazzjonijiet prattiċi ta' tagħlim profond. L-utenti jridu jifhmu kif jaqsmu u jissinkronizzaw id-dejta f'diversi istanzi, li mbagħad għandu impatt kbir fuq l-effiċjenza tal-iskala. Barra minn hekk, l-utenti għandhom ukoll ikunu jafu kif jużaw script ta 'taħriġ li jaħdem fuq istanza waħda għal istanzi multipli.
F'dan l-artikolu ser nitkellmu dwar mod rapidu u faċli biex jitqassam it-tagħlim bl-użu tal-librerija miftuħa ta 'tagħlim profond Apache MXNet u l-qafas ta' tagħlim distribwit Horovod. Se nuru b'mod ċar il-benefiċċji tal-prestazzjoni tal-qafas ta 'Horovod u nuru kif tikteb script ta' taħriġ MXNet sabiex taħdem b'mod distribwit ma 'Horovod.
X'inhu Apache MXNet
Taħriġ imqassam f'MXNet b'server tal-parametri
X'inhu Horovod
Integrazzjoni MXNet u Horovod
MXNet jintegra ma 'Horovod permezz tal-APIs ta' Tagħlim Imqassam definiti f'Horovod. APIs ta' komunikazzjoni ta' Horovod horovod.broadcast(), horovod.allgather() и horovod.allreduce() implimentati bl-użu ta' callbacks asinkroniċi tal-magna MXNet, bħala parti mill-grafika tal-kompitu tagħha. B'dan il-mod, id-dipendenzi tad-dejta bejn il-komunikazzjoni u l-komputazzjoni huma mmaniġġjati faċilment mill-magna MXNet biex jiġi evitat telf ta 'prestazzjoni minħabba s-sinkronizzazzjoni. Oġġett tal-ottimizzatur imqassam definit f'Horovod horovod.DistributedOptimizer tespandi Ottimizzatur f'MXNet sabiex isejjaħ lill-APIs Horovod korrispondenti għal aġġornamenti tal-parametri distribwiti. Dawn id-dettalji tal-implimentazzjoni kollha huma trasparenti għall-utenti finali.
Bidu mgħaġġel
Tista 'malajr tibda tħarreġ netwerk newrali konvoluzzjonali żgħir fuq is-sett tad-dejta MNIST billi tuża MXNet u Horovod fuq il-MacBook tiegħek.
L-ewwel, installa mxnet u horovod minn PyPI:
pip install mxnet
pip install horovod
Nota: Jekk tiltaqa' ma' żball waqt pip install horovodforsi għandek bżonn iżżid varjabbli MACOSX_DEPLOYMENT_TARGET=10.vvfejn vv – din hija l-verżjoni tal-verżjoni tal-MacOS tiegħek, pereżempju, għal MacOSX Sierra ser ikollok bżonn tikteb MACOSX_DEPLOYMENT_TARGET=10.12 pip install horovod
Imbagħad installa OpenMPI
Fl-aħħar, niżżel l-iskrittura tat-test mxnet_mnist.py
mpirun -np 2 -H localhost:2 -bind-to none -map-by slot python mxnet_mnist.py
Dan se jmexxi taħriġ fuq żewġ qlub tal-proċessur tiegħek. L-output se jkun dan li ġej:
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
Prestazzjoni Demo
Meta tħarreġ mudell ResNet50-v1 fuq sett tad-dejta ImageNet fuq 64 GPU bi tmien istanzi p3.16xlarge EC2, kull wieħed fih 8 GPUs NVIDIA Tesla V100 fuq AWS cloud, ksibna throughput ta 'taħriġ ta' 45000 immaġini / sek (jiġifieri, in-numru ta 'kampjuni mħarrġa kull sekonda). Taħriġ tlesta f'44 minuta wara 90 epoka bl-aħjar preċiżjoni ta '75.7%.
Aħna qabbilna dan mal-approċċ ta 'taħriġ distribwit ta' MXNet li juża servers ta 'parametri fuq 8, 16, 32 u 64 GPUs b'server ta' parametru wieħed u proporzjon ta 'server għal ħaddiem ta' 1 għal 1 u 2 għal 1, rispettivament. Tista 'tara r-riżultat fil-Figura 1 hawn taħt. Fuq l-assi y fuq ix-xellug, il-vireg jirrappreżentaw in-numru ta 'immaġini li jitħarrġu kull sekonda, il-linji jirriflettu l-effiċjenza tal-iskala (jiġifieri, il-proporzjon ta' throughput attwali għal ideali) fuq l-assi y fuq il-lemin. Kif tistgħu taraw, l-għażla tan-numru ta 'servers taffettwa l-effiċjenza tal-iskala. Jekk ikun hemm server ta 'parametru wieħed biss, l-effiċjenza tal-iskala tinżel għal 38% fuq 64 GPU. Biex tikseb l-istess effiċjenza tal-iskala bħal ma 'Horovod, trid tirdoppja n-numru ta' servers relattiv għan-numru ta 'ħaddiema.
Figura 1. Tqabbil ta 'tagħlim distribwit bl-użu ta' MXNet ma 'Horovod u ma' server tal-parametri
Fit-Tabella 1 hawn taħt, inqabblu l-ispiża finali għal kull istanza meta nwettqu esperimenti fuq 64 GPU. L-użu ta 'MXNet ma' Horovod jipprovdi l-aħjar throughput bl-inqas spiża.
Tabella 1. Tqabbil tal-ispejjeż bejn Horovod u Parameter Server b'proporzjon ta 'server għal ħaddiem ta' 2 għal 1.
Passi biex tirriproduċi
Fil-passi li jmiss, aħna ser nuruk kif tirriproduċi r-riżultat ta 'taħriġ distribwit bl-użu ta' MXNet u Horovod. Biex titgħallem aktar dwar it-tagħlim imqassam b'MXNet aqra
Pass 1
Oħloq raggruppament ta 'istanzi omoġenji b'MXNet verżjoni 1.4.0 jew ogħla u Horovod verżjoni 0.16.0 jew ogħla biex tuża t-tagħlim distribwit. Ikollok bżonn ukoll li tinstalla libreriji għat-taħriġ tal-GPU. Għall-każijiet tagħna, għażilna Ubuntu 16.04 Linux, b'GPU Driver 396.44, CUDA 9.2, librerija cuDNN 7.2.1, komunikatur NCCL 2.2.13 u OpenMPI 3.1.1. Tista 'wkoll tuża
Pass 2
Żid il-ħila li taħdem ma' l-API ta' Horovod fl-iskript tat-taħriġ MXNet tiegħek. L-iskrittura ta 'hawn taħt ibbażata fuq l-API MXNet Gluon tista' tintuża bħala mudell sempliċi. Il-linji b'tipa grassa huma meħtieġa jekk diġà għandek kitba ta' taħriġ korrispondenti. Hawn huma ftit bidliet kritiċi li trid tagħmel biex titgħallem ma' Horovod:
- Issettja l-kuntest skond il-grad lokali Horovod (linja 8) biex tifhem li t-taħriġ isir fuq il-qalba tal-grafika korretta.
- Għaddi l-parametri inizjali minn ħaddiem wieħed għal kulħadd (linja 18) biex jiġi żgurat li l-ħaddiema kollha jibdew bl-istess parametri inizjali.
- Oħloq Horovod DistributedOptimizer (linja 25) biex taġġorna l-parametri b'mod distribwit.
Biex tikseb l-iskrittura sħiħa, jekk jogħġbok irreferi għall-eżempji ta '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 ...
Pass 3
Idħol f'wieħed mill-ħaddiema biex tibda t-taħriġ imqassam bl-użu tad-direttiva MPI. F'dan l-eżempju, it-taħriġ imqassam jimxi fuq erba' istanzi b'4 GPU kull wieħed, u total ta' 16-il GPU fil-cluster. L-ottimizzatur tal-Inżul tal-Gradjent Stokastiku (SGD) se jintuża bl-iperparametri li ġejjin:
- daqs tal-lott żgħir: 256
- rata ta 'tagħlim: 0.1
- momentum: 0.9
- tħassir tal-piż: 0.0001
Hekk kif qlajna minn GPU waħda għal 64 GPU, skalajna b'mod lineari r-rata ta' taħriġ skont in-numru ta' GPU (minn 0,1 għal 1 GPU għal 6,4 għal 64 GPU), filwaqt li nżommu n-numru ta' immaġini għal kull GPU f'256 (minn lott ta' 256 immaġini għal 1 GPU għal 16 għal 384 GPU). It-tnaqqis tal-piż u l-parametri tal-momentum inbidlu hekk kif in-numru ta 'GPUs żdied. Aħna użajna taħriġ ta 'preċiżjoni mħallta mat-tip ta' dejta float64 għall-passa 'l quddiem u float16 għal gradjenti biex tħaffef il-kalkoli float32 appoġġjati mill-GPUs NVIDIA Tesla.
$ 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
Konklużjoni
F'dan l-artikolu, ħares lejn approċċ skalabbli għal taħriġ ta 'mudell distribwit bl-użu ta' Apache MXNet u Horovod. Aħna wrejna l-effiċjenza tal-iskala u l-kosteffettività meta mqabbla mal-approċċ tas-server tal-parametri fuq is-sett tad-dejta ImageNet li fuqu ġie mħarreġ il-mudell ResNet50-v1. Inkludejna wkoll passi li tista' tuża biex timmodifika skript eżistenti biex tmexxi taħriġ multi-istanzi bl-użu ta' Horovod.
Jekk għadek kif tibda b'MXNet u tagħlim fil-fond, mur fil-paġna tal-installazzjoni
Jekk diġà ħdimt ma' MXNet u trid tipprova t-tagħlim imqassam ma' Horovod, imbagħad agħti ħarsa lejn
*l-ispiża hija kkalkulata bbażata fuq
Tgħallem aktar dwar il-kors
Sors: www.habr.com