Ullmhaíodh aistriúchán an ailt ar an oíche roimh thús an chúrsa
Is féidir le hoiliúint dháilte ar chásanna iomadúla ríomhaireachta ardfheidhmíochta an t-am oiliúna a bhaineann le líonraí néaracha domhain nua-aimseartha a laghdú ar mhéideanna móra sonraí ó sheachtainí go huaireanta nó fiú nóiméad, rud a fhágann go bhfuil an teicníocht oiliúna seo forleithne in iarratais phraiticiúla na foghlama domhain. Ní mór d’úsáideoirí tuiscint a fháil ar conas sonraí a roinnt agus a shioncronú thar roinnt cásanna, rud a mbíonn tionchar mór aige ar éifeachtúlacht scálaithe. Ina theannta sin, ba cheart go mbeadh a fhios ag úsáideoirí conas script oiliúna a imscaradh a ritheann ar chás amháin chuig cásanna iolracha.
San Airteagal seo labhróimid faoi bhealach tapa agus éasca chun foghlaim a dháileadh ag baint úsáide as an leabharlann foghlama domhain oscailte Apache MXNet agus creat foghlama dáilte Horovod. Léireoimid go soiléir na buntáistí feidhmíochta a bhaineann le creat Horovod agus léireoimid conas script oiliúna MXNet a scríobh ionas go n-oibreoidh sé ar bhealach dáilte le Horovod.
Cad é Apache MXNet
Dáileadh oiliúint in MXNet le freastalaí paraiméadar
Cad é Horovod
comhtháthú MXNet agus Horovod
Comhtháthaíonn MXNet le Horovod trí na APIanna Foghlama Dáilte atá sainmhínithe in Horovod. APIs cumarsáide Horovod horovod.craoladh(), horovod.allgather() и horovod.alllaghdaigh() curtha i bhfeidhm trí úsáid a bhaint as aisghlaonna asincrónacha den inneall MXNet, mar chuid dá thascghraf. Ar an mbealach seo, déantar spleáchais sonraí idir cumarsáid agus ríomh a láimhseáil go héasca ag an inneall MXNet chun caillteanais feidhmíochta de bharr sioncrónaithe a sheachaint. Oibiacht optamaithe dáilte arna sainmhíniú in Horovod horovod.DistributedOptimizer ag leathnú Optimizer in MXNet ionas go nglaofaidh sé na APIanna comhfhreagracha Horovod le haghaidh nuashonruithe paraiméadar dáilte. Tá na sonraí cur chun feidhme seo go léir trédhearcach d’úsáideoirí deiridh.
Tús tapa
Is féidir leat tosú go tapa ar ghréasán néarúil comhraonta beag a thraenáil ar thacar sonraí MNIST ag baint úsáide as MXNet agus Horovod ar do MacBook.
Gcéad dul síos, suiteáil mxnet agus horovod ó PyPI:
pip install mxnet
pip install horovod
Nóta: Má thagann tú trasna ar earráid le linn pip a shuiteáil horovodb'fhéidir go gcaithfidh tú athróg a chur leis MACOSX_DEPLOYMENT_TARGET=10.vvI gcás ina vv – is é seo an leagan de do leagan MacOS, mar shampla, le haghaidh MacOSX Sierra beidh ort a scríobh MACOSX_DEPLOYMENT_TARGET=Suiteáil 10.12 pip hóród
Ansin shuiteáil OpenMPI
Íoslódáil scripteanna tástála ag an deireadh mxnet_mnist.py
mpirun -np 2 -H localhost:2 -bind-to none -map-by slot python mxnet_mnist.py
Reáchtálfaidh sé seo oiliúint ar dhá chroílár do phróiseálaí. Beidh an t-aschur mar seo a leanas:
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
Taispeántas Feidhmíochta
Agus múnla ResNet50-v1 á oiliúint ar thacar sonraí ImageNet ar 64 GPU le hocht gcás p3.16xlarge EC2, gach ceann ina raibh 8 NVIDIA Tesla Tesla V100 GPU ar scamall AWS, bhaineamar amach tréchur oiliúna de 45000 íomhá/soic (i.e., líon na samplaí oilte in aghaidh an tsoicind). Críochnaíodh an oiliúint laistigh de 44 nóiméad tar éis 90 ré le cruinneas is fearr de 75.7%.
Chuireamar é seo i gcomparáid le cur chuige oiliúna dáilte MXNet maidir le freastalaithe paraiméadar a úsáid ar 8, 16, 32 agus 64 GPU le freastalaí paraiméadar amháin agus cóimheas freastalaí le hoibrí de 1 go 1 agus 2 go 1, faoi seach. Is féidir leat an toradh a fheiceáil i bhFíor 1 thíos. Ar an y-ais ar chlé, is ionann na barraí agus líon na n-íomhánna le hoiliúint in aghaidh an tsoicind, léiríonn na línte an éifeachtúlacht scálaithe (is é sin, an cóimheas idir an tréchur iarbhír agus idéalach) ar an y-ais ar dheis. Mar a fheiceann tú, bíonn tionchar ag rogha líon na bhfreastalaithe ar an éifeachtúlacht scálaithe. Mura bhfuil ach freastalaí paraiméadar amháin ann, titeann an éifeachtúlacht scálaithe go 38% ar 64 GPU. Chun an éifeachtúlacht scálaithe chéanna a bhaint amach agus a dhéantar le Horovod, ní mór duit líon na bhfreastalaithe a dhúbailt i gcoibhneas le líon na n-oibrithe.
Fíor 1. Comparáid idir foghlaim dáilte ag baint úsáide as MXNet le Horovod agus le freastalaí paraiméadar
I dTábla 1 thíos, déanaimid comparáid idir an costas deiridh in aghaidh na huaire nuair a bhítear ag rith turgnaimh ar 64 GPU. Soláthraíonn baint úsáide as MXNet le Horovod an tréchur is fearr ar an gcostas is ísle.
Tábla 1. Comparáid costais idir Horovod agus Freastalaí Paraiméadar le cóimheas freastalaí le hoibrí de 2 go 1.
Céimeanna chun atáirgeadh
Sna chéad chéimeanna eile, taispeánfaimid duit conas toradh na hoiliúna dáilte a atáirgeadh ag baint úsáide as MXNet agus Horovod. Chun tuilleadh a fhoghlaim faoi fhoghlaim dháilte le MXNet léigh
Céim 1
Cruthaigh braisle cásanna aonchineálacha le leagan MXNet 1.4.0 nó níos airde agus leagan Horovod 0.16.0 nó níos airde chun foghlaim dháilte a úsáid. Beidh ort freisin leabharlanna a shuiteáil le haghaidh oiliúna GPU. Le haghaidh ár gcásanna, roghnaigh muid Ubuntu 16.04 Linux, le Tiománaí GPU 396.44, CUDA 9.2, leabharlann cuDNN 7.2.1, communicator NCCL 2.2.13 agus OpenMPI 3.1.1. Chomh maith leis sin is féidir leat é a úsáid
Céim 2
Cuir an cumas oibriú leis an Horovod API le do script oiliúna MXNet. Is féidir an script thíos atá bunaithe ar an MXNet Gluon API a úsáid mar theimpléad simplí. Tá na línte i gcló trom ag teastáil má tá script oiliúna comhfhreagrach agat cheana féin. Seo roinnt athruithe ríthábhachtacha a chaithfidh tú a dhéanamh chun foghlaim le Horovod:
- Socraigh an comhthéacs de réir chéim áitiúil Horovod (líne 8) chun a thuiscint go ndéantar oiliúint ar chroílár na grafaicí ceart.
- Pas paraiméadair tosaigh ó oibrí amháin go gach duine (líne 18) chun a chinntiú go dtosaíonn gach oibrí leis na paraiméadair tosaigh céanna.
- Cruthaigh Horovod DistributedOptimizer (líne 25) na paraiméadair a nuashonrú ar bhealach dáilte.
Chun an script iomlán a fháil, féach le do thoil ar na samplaí 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 ...
Céim 3
Logáil isteach ar cheann de na hoibrithe chun oiliúint dáilte a thosú ag baint úsáide as an treoir MPI. Sa sampla seo, ritheann oiliúint dháilte ar cheithre chás le 4 GPU an ceann, agus iomlán de 16 GPU sa bhraisle. Úsáidfear an t-uasmhéadaitheoir um Shliocht Grádán Stochastic (SGD) leis na hipearpharaiméadair seo a leanas:
- méid mionbhaisc: 256
- ráta foghlama: 0.1
- móiminteam: 0.9
- meath meáchain: 0.0001
Agus muid ag scála ó GPU amháin go 64 GPU, rinneamar an ráta oiliúna a scála go líneach de réir líon na GPUanna (ó 0,1 le haghaidh 1 GPU go 6,4 le haghaidh 64 GPU), agus líon na n-íomhánna in aghaidh an GPU á choinneáil ag 256 (ó bhaisc de 256 íomhá do 1 GPU go 16 do 384 GPU). D'athraigh na paraiméadair meáchain agus móiminteam de réir mar a mhéadaigh líon na GPUanna. D’úsáideamar oiliúint bheachtais mheasctha leis an gcineál sonraí float64 don phas ar aghaidh agus float16 le haghaidh grádáin chun na ríomhanna float32 a thacú ag GPUanna NVIDIA Tesla a bhrostú.
$ 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
Conclúid
San Airteagal seo, d'fhéachamar ar chur chuige inscálaithe maidir le hoiliúint mhúnla dáilte ag baint úsáide as Apache MXNet agus Horovod. Léirigh muid an éifeachtúlacht scálaithe agus an cost-éifeachtúlacht i gcomparáid leis an gcur chuige freastalaí paraiméadar ar an tacar sonraí ImageNet ar a ndearnadh an tsamhail ResNet50-v1 a oiliúint. Tá céimeanna curtha san áireamh againn freisin ar féidir leat a úsáid chun script atá ann cheana a mhodhnú chun oiliúint ilchéime a reáchtáil ag baint úsáide as Horovod.
Má tá tú díreach ag tosú le MXNet agus foghlaim dhomhain, téigh go dtí an leathanach suiteála
Má d'oibrigh tú le MXNet cheana féin agus gur mhaith leat triail a bhaint as foghlaim dháilte le Horovod, féach ansin
*ríomhtar costas bunaithe ar
Tuilleadh eolais faoin gcúrsa
Foinse: will.com