Programmēšana

Pārskats: MXNet dziļā mācīšanās spīd ar Gluon

Pārskatot MXNet v0.7 2016. gadā, es jutu, ka tas ir daudzsološs dziļas mācīšanās ietvars ar lielisku mērogojamību (gandrīz lineārs uz GPU kopām), labu automātisko diferenciāciju un vismodernāko atbalstu CUDA GPU. Es arī uzskatīju, ka tai ir nepieciešams darbs pie dokumentācijas un apmācībām, kā arī daudz vairāk piemēru tās paraugzoodārzā. Turklāt es būtu vēlējies redzēt MXNet augsta līmeņa saskarni, kuru es iedomājos kā Keras.

Kopš tā laika ir bijis diezgan maz progress. MXNet 2017. gada sākumā pārcēlās zem Apache Software Foundation jumta, un, lai gan tas joprojām "inkubējas" versijā 1.3, tas jūtas diezgan labi papildināts.

Lai gan ir bijis darbs pie Keras ar MXNet aizmuguri, daudz nozīmīgāks ir kļuvis cits augsta līmeņa interfeiss: Gluon. Pirms Gluon iekļaušanas MXNet varēja uzrakstīt vienkāršu obligātu kodu vai ātru simbolisku kodu, bet ne abus uzreiz. Izmantojot Gluon, jūs varat apvienot labāko no abām pasaulēm tādā veidā, kas konkurē gan ar Keras, gan ar PyTorch.

Kas ir Gluon priekš MXNet?

Gluon pieprasītās priekšrocības ietver vienkāršu kodu, elastīgu modelēšanu, dinamiskus grafikus un augstu veiktspēju:

  1. Vienkāršs, viegli saprotams kods: Gluon piedāvā pilnu plug-and-play neironu tīkla veidošanas bloku komplektu, ieskaitot iepriekš definētus slāņus, optimizētājus un inicializētājus.
  2. Elastīga, obligāta struktūra: Gluon neprasa, lai neironu tīkla modelis būtu stingri definēts, bet drīzāk tuvina mācību algoritmu un modeli, lai nodrošinātu elastību attīstības procesā.
  3. Dinamiski grafiki: Gluon ļauj izstrādātājiem definēt neironu tīkla modeļus, kas ir dinamiski, kas nozīmē, ka tos var veidot uz vietas, ar jebkuru struktūru un izmantojot jebkuru no Python vietējās vadības plūsmas.
  4. Augsta veiktspēja: Gluon nodrošina visas iepriekš minētās priekšrocības, neietekmējot apmācības ātrumu, ko nodrošina pamatā esošais dzinējs.

Šie četri priekšmeti kopā ar ievērojami paplašināto modeļu piemēru kolekciju nodrošina Gluon / MXNet aptuveno paritāti ar Keras / TensorFlow un PyTorch, lai atvieglotu attīstību un apmācības ātrumu. Gluon koda piemērus, kas ilustrē katru no šiem raksturlielumiem, var redzēt galvenajā Gluon lapā un atkārtot Gluon API pārskata lapā.

Gluon API ietver funkcionalitāti neironu tīkla slāņiem, atkārtotiem neironu tīkliem, zaudēšanas funkcijām, datu kopu metodēm un redzes datu kopām, zooloģiskā dārza paraugu un eksperimentālu ieguldījumu neironu tīkla metožu kopumu. Jūs varat brīvi apvienot Gluon ar standarta MXNet un NumPy moduļiem, piemēram, modulis, autograd, un ndarrayKā arī ar Python vadības plūsmām.

Gluon ir laba slāņu izvēle modeļu veidošanai, ieskaitot pamata slāņus (blīvus, izkrītošus utt.), Konvolīcijas slāņus, apvienojošos slāņus un aktivācijas slāņus. Katrs no tiem ir vienas līnijas zvans. Tos cita starpā var izmantot tīkla konteineros, piemēram, gluon.nn.Sequential ().

A HybridSequential tīklu var saglabāt kešatmiņā (pārvērst par simbolisku grafiku), lai nodrošinātu augstu veiktspēju, izmantojot hibridizēt () metode:

neto = nn. HybridSequential ()

ar net.name_scope ():

net.add (nn. Blīvs (256, aktivizēšana = "relu"))

net.add (nn. Blīvs (128, aktivizēšana = "relu"))

net.add (nn. Blīvs (2))

net.hybridize ()

Ievērojiet veidu Blīvs slāņa metode var izmantot aktivizācijas slāņa nosaukumu kā parametru. Tā ir viena no daudzajām līdzībām starp Gluonu un Kerasu.

Ne Secīga ne arī HybridSequential konteineri ir dokumentēti kā daļa no Gluon API. Kā es atklāju, meklējot avota koda koku, tie tiek ieviesti inkubatorā-mxnet / python / mxnet / gluon / nn / basic_layers.py.

Kas jauns MXNet 1.3?

MXNet v1.3 ietver garu jaunu funkciju, uzlabojumu un kļūdu labojumu sarakstu. Galvenie momenti ietver spēju hibridizēt RNN (atkārtojošos neironu tīklu) slāņus veiktspējas nodrošināšanai, jaunus un atjauninātus iepriekš apmācītus redzes modeļus, modeļu eksportēšanu uz ONNX (Open Neural Network Exchange) formātu un Nvidia TensorRT izpildlaika integrāciju MXNet, lai paātrinātu secinājumu . Turklāt Intel MKL (Math Kernel Library) integrācija MXNet ļauj līdz pat 4x uzlabot Intel CPU veiktspēju intensīvām darbībām, ieskaitot konvekcijas mezglus.

Arī MXNet kopiena ir pievērsusi lielāku uzmanību kvalitātes nodrošināšanai un nepārtrauktai integrācijai. Starp veiktajām darbībām ir apmācības Deep Learning: The Straight Dope piezīmju grāmatiņu paraugu integrēšana nakts CI testēšanā.

MXNet instalēšana bez asarām

Ja jums jau ir darbojoša, pašreizējā Python, MXNet un Jupyter piezīmjdatoru instalēšana ar Notedown, varat pāriet uz nākamo sadaļu. Pretējā gadījumā, lūdzu, sekojiet līdzi.

Es nevaru pateikt, cik daudz problēmu man bija ar dažādu programmatūras komponentu vecākām versijām, kas radīja neskaidras kļūdas, kā arī traucējumus no citu pakotņu instalācijām, pirms noskaidroju šo atveidojamo secību. Tādā veidā jums nevajadzētu sastapties ar kļūdām, izņemot jūsu pašu kodu, un nevajadzētu lauzt citas dziļas mācīšanās sistēmas, kuras, iespējams, esat instalējis.

Vai tā ir vienīgā iespējamā instalēšanas iespēja? Nē, protams nē. Vēl vienkāršāk ir palaist MXNet Amazon SageMaker vai palaist Deep Learning AMI AWS, kurā jau ir instalēts viss nepieciešamais.

Sāciet, instalējot jaunāko Python 3 versiju savai platformai. (Man ir bijušas problēmas ar MXNet palaišanu ar Python 2 vai agrāku Python 3 būvējumu.) Es iesaku instalēt Python 3 no Python.org. Ja vēlaties Anaconda vai MiniConda vidi, tā vietā varat instalēt Python 3 un, iespējams, izlaist Jupyter instalēšanas darbību.

Pārbaudiet, vai varat palaist pitons3 no komandrindas un ka tā ziņo par jaunāko versiju. Manā 2018. gada oktobra beigu instalācijā python3 -V atgriež Python 3.7.1; jūsu versija var būt vēlāk.

Pēc tam instalējiet Jupyter. Es izmantoju pip. Šis solis nav nepieciešams, ja esat instalējis Anaconda, kas pēc noklusējuma instalē Jupyter.

python3 -m pip instalēt --upgrade pip

python3 -m pip instalēt jupyter

Ja skrien jupyter piezīmju grāmatiņa no komandrindas ir redzams atvērts pārlūkprogrammas logs un jāspēj izveidot jaunu piezīmju grāmatiņu ar Python 3 kodolu. Aizveriet šos divus logus un apturiet piezīmjdatora serveri, parasti komandrindā divreiz nospiežot Ctrl-c.

Tagad instalējiet Notedown, izmantojot tarball, kā aprakstīts Gluon avārijas kursā Readme. Spraudnis Notedown ļauj Jupyter nolasīt piezīmju grāmatiņas, kas saglabātas iezīmēšanas formātā, un tas ir noderīgi gan avārijas kursam, gan Deep Learning: The Straight Dope.

pip instalējiet //github.com/mli/notedown/tarball/master

Dūmu pārbaude, palaižot Jupyter ar Notedown:

jupyter notebook --NotebookApp.contents_manager_class = 'noteown.NotedownContentsManager'

Vēlreiz aizveriet visas tīmekļa lapas un apturiet piezīmjdatora serveri.

Tagad mēs esam gatavi izveidot virtuālu vidi MXNet. Ja esat Anaconda lietotājs, varat izveidot virtuālo vidi ar conda. Es izmantoju vietējo Python3 venv iespēju, sākot no sava mājas direktorija:

python3 -m venv envs / mxnet

Tagad aktivizējiet virtuālo vidi un instalējiet MXNet savai platformai. Es izvēlējos MXNet būvējumu ar MKL (Intel augstas veiktspējas bibliotēka tā centrālajiem procesoriem), jo es atrodos Mac datorā (kuram CUDA GPU nav binārā MXNet), bet, ja Linux ir nesen instalēts Nvidia GPU ar CUDA vai Windows, jūs varētu instalēt MXNet versiju gan ar CUDA, gan MKL atbalstu. Bash čaulā MXNet instalēšana virtuālajā vidē bija šāda:

avots envs / mxnet / bin / aktivizēt

pip instalēt mxnet-mkl

Aktivizēšana nedaudz atšķiras C apvalkā un Fish apvalkā, jo jūs varat tieši aktivizēt skriptu, nevis izmantot avots. Jebkurā gadījumā jums būs jāaktivizē vide vienmēr, kad vēlaties atgriezties šajā MXNet instalācijā pēc čaulas aizvēršanas. Ja neatrodaties mājas direktorijā, Bash aktivizācijas komanda būs šāda:

avots ~ / envs / mxnet / bin / aktivizēt

Pārbaudiet MXNet instalēšanu komandrindā, palaižot Python 3 un importējot tikko instalēto MXNet bibliotēku. Ņemiet vērā, ka (mxnet) prefikss komandrindā nozīmē, ka atrodamies virtuālajā vidē.

(mxnet) Martins-Retina-MacBook: ~ martinheller $ python3

Python 3.7.1 (v3.7.1: 260ec2c36a, 2018. gada 20. oktobris, 03:13:28)

[Clang 6.0 (clang-600.0.57)] uz Darvina

Lai iegūtu papildinformāciju, ierakstiet “palīdzība”, “autortiesības”, “kredīti” vai “licence”.

>>> importēt mxnet kā mx

>>> no mxnet importa nd

>>> otrais apzīmējums (((1,2,3), (5,6,7)))

[[1. 2. 3.]

 [5. 6. 7.]]

>>> ^ D

(mxnet) Martins-Retina-MacBook: ~ martinheller $

Tagad mēs esam gatavi pārbaudīt MXNet Jupyter piezīmjdatorā ar Notedown virtuālajā vidē, kurā mēs instalējām MXNet:

Tagad, kad esat pārbaudījis savu MXNet instalēšanu Jupyter piezīmjdatorā, varat veikt nākamo darbību un pilnīgāk pārbaudīt Gluon. Pārlūkojiet GitHub līdz gluon-api / gluon-api repo un lejupielādējiet koda parauga Jupyter piezīmju grāmatiņu. Pārejiet uz direktoriju, kurā lejupielādējāt piezīmju grāmatiņu, ja nepieciešams, aktivizējiet savu virtuālo vidi MXNet, palaidiet Jupyter piezīmjdatoru, atveriet paraugu un palaidiet to. Apmācības pabeigšana var aizņemt kādu laiku. Ja viss ir kārtībā, redzēsiet kaut ko līdzīgu šim:

Gluon un MXNet moduļa apmācības

MXNet tagad ir vairākas apmācības gan Gluon, gan Module API. Es jau minēju garo kursu par dziļu mācīšanos kopā ar Gluon, Deep Learning: The Straight Dope un īso versiju - 60 minūšu Gluon Crash Course.

Turklāt Python ir aptuveni 30 Gluon apmācības. Moduļa API pusē ir apmēram 24 apmācības Python, piecas Scala, divas C ++, deviņas R un četras Perl.

Pārskatot Keras šī gada septembrī, es teicu: "Ja es šodien sāktu jaunu dziļas mācīšanās projektu, es, visticamāk, veiktu pētījumu ar Keras." Es par to vairs neesmu tik pārliecināts. Gluon / MXNet ir gandrīz tikpat laba izvēle kā Keras / TensorFlow padziļinātai CPU un GPU izpētei.

Apakšā MXNet pašlaik trūkst TPU vai FPGA atbalsta, atšķirībā no TensorFlow, un grafiku vizualizēšanai tam nav TensorFlow TensorBoard ekvivalenta. Turklāt Keras / TensorFlow ekosistēma ir lielāka nekā Gluon / MXNet.

Keras var izvietot vairākās vidēs nekā Gluon, bet jūs var izvietojiet Gluon modeļus prognozēšanai Android, iOS, Raspberry Pi un Nvidia Jetson ierīcēs, papildus datoriem, kas spēj apmācīt modeļus, un TensorRT. Gluon un Keras abi šobrīd ir nobriedušāki nekā PyTorch, kas joprojām ir beta stāvoklī. Gan PyTorch, gan Gluon var dinamiski izveidot modeļus; Keras šobrīd nevar.

Galu galā izvēle par to, kura dziļās mācīšanās sistēma jāizmanto, var būt saistīta ar jūsu specifiskajām prasībām vai to, ko jūs zināt un kas jums patīk. Bet, pateicoties Gluon un citiem dramatiskiem uzlabojumiem (dokumentācijā, apmācībās, modeļos utt.), MXNet veido tikpat labu izvēli kā TensorFlow vai PyTorch dziļai mācībai.

$config[zx-auto] not found$config[zx-overlay] not found