Programmēšana

Labākās mašīnmācīšanās un padziļinātu mācību bibliotēkas

Ja sākat jaunu mašīnmācīšanās vai padziļinātas apmācības projektu, jūs varat sajaukt, kuru ietvaru izvēlēties. Kā mēs apspriedīsim, abu veidu projektiem ir vairākas labas iespējas.

Ir atšķirība starp mašīnmācīšanās sistēmu un dziļu mācību sistēmu. Būtībā mašīnmācīšanās sistēma aptver dažādas klasifikācijas, regresijas, kopu veidošanas, anomāliju noteikšanas un datu sagatavošanas mācīšanās metodes un var ietvert vai neietvert neironu tīkla metodes.

Dziļa mācību vai dziļa neironu tīkla sistēma aptver dažādas neironu tīkla topoloģijas ar daudziem slēptiem slāņiem. Keras, MXNet, PyTorch un TensorFlow ir dziļas mācīšanās sistēmas. Scikit-learn un Spark MLlib ir mašīnmācīšanās ietvars. (Noklikšķiniet uz jebkuras no iepriekšējām saitēm, lai izlasītu manu atsevišķo produkta pārskatu.)

Parasti dziļi neironu tīkla aprēķini darbojas daudz ātrāk ar GPU (īpaši Nvidia CUDA vispārējas nozīmes GPU), TPU vai FPGA, nevis uz CPU. Parasti vienkāršākas mašīnmācīšanās metodes no GPU negūst labumu.

Kamēr tu var apmācīt dziļus neironu tīklus vienā vai vairākos procesoros, apmācība mēdz būt lēna, un lēnām es nerunāju par sekundēm vai minūtēm. Jo vairāk neironu un slāņu, kas jāapmāca, un jo vairāk datu, kas pieejami apmācībai, jo ilgāk tas notiek. Kad Google Brain komanda 2016. gadā apmācīja valodas tulkošanas modeļus jaunajai Google tulkotāja versijai, viņi treniņus veica vienu nedēļu vienlaikus, izmantojot vairākus GPU. Bez GPU katram modeļa apmācības eksperimentam būtu vajadzējuši mēnešus.

Kopš tā laika Intel Math Kernel bibliotēka (MKL) ļāva apmācīt daži neironu tīkli uz CPU saprātīgā laika periodā. Tikmēr GPU, TPU un FPGA ir kļuvuši vēl ātrāki.

Visu dziļo mācību pakotņu apmācības ātrums, kas darbojas vienā un tajā pašā GPU, ir gandrīz identisks. Tas ir tāpēc, ka apmācības iekšējās cilpas lielāko daļu laika pavada Nvidia CuDNN paketē.

Papildus apmācības ātrumam katrai no dziļo mācību bibliotēkām ir savi plusi un mīnusi, un tas pats attiecas uz Scikit-learn un Spark MLlib. Ienirstam.

Keras

Keras ir augsta līmeņa front-end specifikācija un ieviešana neironu tīkla modeļu izveidei, kas tiek piegādāts ar atbalstu trim aizmugurējām dziļu mācību sistēmām: TensorFlow, CNTK un Theano. Amazon pašlaik strādā pie MXNet back-end izstrādes Keras. Ir iespējams arī izmantot PlaidML (neatkarīgu projektu) kā Keras aizmuguri, lai izmantotu PlaidML OpenCL atbalsta priekšrocības visiem GPU.

TensorFlow ir Keras noklusējuma aizmugure, un tā ir ieteicama daudziem lietojuma gadījumiem, kas saistīti ar GPU paātrinājumu Nvidia aparatūrā, izmantojot CUDA un cuDNN, kā arī TPU paātrinājumam Google Cloud. TensorFlow satur arī iekšējo tf.keras klase, atsevišķi no ārējās Keras instalācijas.

Kerasam ir augsta līmeņa vide, kas padara slāņa pievienošanu neironu tīklam tikpat vienkāršu kā viena koda rinda tā secīgajā modelī, un modeļa sastādīšanai un apmācībai katram ir nepieciešams tikai viens funkciju izsaukums. Keras ļauj jums strādāt zemākā līmenī, ja vēlaties, ar savu modeli vai funkcionālo API.

Keras ļauj nokārtot vēl tālāk, līdz Python kodēšanas līmenim, apakšklasējot keras. Modelis, bet, ja iespējams, dod priekšroku funkcionālajai API. Kerasam ir arī a scikit-mācīties API, lai jūs varētu izmantot režģa meklēšanu Scikit-learn, lai veiktu hiperparametru optimizāciju Keras modeļos.

Izmaksas: Bezmaksas atvērtā koda.

Platforma: Linux, MacOS, Windows vai Raspbian; TensorFlow, Theano vai CNTK aizmugure.

Izlasiet manu atsauksmi par Keras.

MXNet

Kopš pārvietošanās Apache programmatūras fonda lietussargā 2017. gada sākumā, MXNet ir diezgan daudz attīstījies un uzlabojies. 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.

Gluon pieprasītās priekšrocības ietver:

  • 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.
  • Elastīga, obligāta struktūra: Gluonam nav nepieciešams stingri definēt neironu tīkla modeli, tas drīzāk tuvina mācību algoritmu un modeli, lai nodrošinātu elastību attīstības procesā.
  • 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.
  • 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 motors.

Šīs četras priekšrocības, kā arī ievērojami paplašinātā modeļu piemēru kolekcija nodrošina Gluon / MXNet aptuvenu paritāti ar Keras / TensorFlow un PyTorch, lai atvieglotu attīstību un apmācības ātrumu. Katram no tiem varat redzēt kodu piemērus 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 veicināto eksperimentālo neironu tīkla metožu kopumu. Jūs varat brīvi apvienot Gluon ar, piemēram, standarta MXNet un NumPy moduļiem modulis, autograd, un ndarray, kā 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 ().

Izmaksas: Bezmaksas atvērtā koda.

Platforma: Linux, MacOS, Windows, Docker, Raspbian un Nvidia Jetson; Python, R, Scala, Julia, Perl, C ++ un Clojure (eksperimentāls). MXNet ir iekļauts AWS Deep Learning AMI.

Izlasiet manu pārskatu par MXNet.

PyTorch

PyTorch balstās uz veco Torch un jauno Caffe2 sistēmu. Kā jūs varētu nojaust pēc nosaukuma, PyTorch kā skriptu valodu izmanto Python un izmanto attīstītu Torch C / CUDA aizmuguri. Caffe2 ražošanas funkcijas tiek integrētas PyTorch projektā.

Par PyTorch tiek iekasēts rēķins kā “Tensori un dinamiski neironu tīkli Python ar spēcīgu GPU paātrinājumu”. Ko tas nozīmē?

Tensori ir matemātiska konstrukcija, kas tiek intensīvi izmantota fizikā un inženierzinātnēs. Otrās pakāpes tenzors ir īpaša veida matrica; ņemot tenora vektora iekšējo produktu, iegūst citu vektoru ar jaunu lielumu un jaunu virzienu. TensorFlow iegūst savu nosaukumu no tā, kā tenori (ar sinapses svaru) plūst ap tīkla modeli. NumPy arī izmanto tenorus, bet tos sauc par ndarray.

GPU paātrinājums ir dots lielākajai daļai mūsdienu dziļo neironu tīkla ietvaru. A dinamisks neironu tīkls ir tāds, kas var pāriet no iterācijas uz iterāciju, piemēram, ļaujot PyTorch modelim apmācības laikā pievienot un noņemt slēptos slāņus, lai uzlabotu tā precizitāti un vispārīgumu. Katrā iterācijas posmā PyTorch atjauno diagrammu. Turpretī TensorFlow pēc noklusējuma izveido vienu datu plūsmas diagrammu, optimizē diagrammas kodu veiktspējai un pēc tam apmāca modeli.

Kaut arī nepacietīgs izpildes režīms ir diezgan jauna iespēja TensorFlow, tas ir vienīgais veids, kā darbojas PyTorch: API izsaukumi tiek izpildīti, kad tiek izsaukti, nevis tiek pievienoti grafikam, kas jāizpilda vēlāk. Tas varētu šķist, ka tas būtu mazāk skaitļošanas ziņā efektīvs, taču PyTorch tika izstrādāts tā, lai tas darbotos, un tas nav niecīgs, ja runa ir par apmācību vai prognozēšanas ātrumu.

Lai maksimizētu ātrumu, PyTorch integrē tādas paātrinājuma bibliotēkas kā Intel MKL un Nvidia cuDNN un NCCL (Nvidia Collective Communications Library). Tās centrālā procesora un grafiskā procesora tenzora un neironu tīkla aizmugures daļas - TH (Torch), THC (Torch CUDA), THNN (Torch Neural Network) un THCUNN (Torch CUDA Neural Network) - tiek rakstītas kā neatkarīgas bibliotēkas ar C99 API. Tajā pašā laikā PyTorch nav Python, kas ir saistīts ar monolītu C ++ sistēmu - ir paredzēts, ka tas ir dziļi integrēts Python un ļauj izmantot citas Python bibliotēkas.

Izmaksas: Bezmaksas atvērtā koda.

Platforma: Linux, MacOS, Windows; Procesori un Nvidia GPU.

Izlasiet manu pārskatu par PyTorch.

Scikit-mācīties

Scikit-learn Python sistēmā ir plaša robustu mašīnmācīšanās algoritmu izvēle, bet nav dziļas mācīšanās. Ja esat Python ventilators, Scikit-learn var būt labākais risinājums jums starp vienkāršajām mašīnmācīšanās bibliotēkām.

Scikit-learn ir robusta un labi pārbaudīta Python mašīnmācīšanās bibliotēka ar plašu labi izveidotu algoritmu un integrētas grafikas sortimentu. To ir salīdzinoši viegli uzstādīt, iemācīties un lietot, un tam ir labi piemēri un apmācības.

No otras puses, Scikit-learn neaptver dziļu mācīšanos vai mācīšanos no papildināšanas, tam trūkst grafisko modeļu un secības paredzēšanas, un to īsti nevar izmantot no citām valodām, izņemot Python. Tas neatbalsta PyPy, Python just-in-time kompilatoru vai GPU. Tas nozīmē, ka, izņemot tā nelielu iekļūšanu neironu tīklos, tam nav īsti ātruma problēmu. Tas izmanto Cython (kompilatoru Python to C) funkcijām, kurām jābūt ātrām, piemēram, iekšējām cilpām.

Scikit-learn ir laba algoritmu izvēle klasifikācijai, regresijai, kopām, dimensiju samazināšanai, modeļu atlasei un pirmapstrādei. Tam ir laba dokumentācija un piemēri visiem šiem, taču trūkst jebkāda veida virzītas darbplūsmas šo uzdevumu veikšanai.

Scikit-learn nopelna augstākās atzīmes izstrādes vienkāršībai, galvenokārt tāpēc, ka visi algoritmi darbojas kā dokumentēti, API ir konsekventi un labi izstrādāti, un starp datu struktūrām ir maz “pretestības neatbilstību”. Ir prieks strādāt ar bibliotēku, kuras funkcijas ir pilnībā pilnveidotas un kuru kļūdas ir pilnībā izdzēstas.

No otras puses, bibliotēka neattiecas uz dziļu mācīšanos vai mācīšanos pastiprināšanas jomā, kas neatstāj pašreizējās smagās, bet svarīgās problēmas, piemēram, precīzu attēlu klasifikāciju un uzticamu reāllaika valodu parsēšanu un tulkošanu. Skaidrs, ka, ja jūs interesē padziļināta mācīšanās, jums vajadzētu meklēt citur.

Neskatoties uz to, ir daudz problēmu - sākot no prognozēšanas funkcijas izveidošanas, kas savieno dažādus novērojumus, līdz novērojumu klasificēšanai, līdz nemarķētas datu kopas struktūras apguvei - kas ir vienkārša vecā mašīnmācīšanās, neprasot desmitiem neironu slāņu, un šīm jomām Scikit-learn patiešām ir ļoti labs.

Izmaksas: Bezmaksas atvērtā koda.

Platforma: Nepieciešams Python, NumPy, SciPy un Matplotlib. Izlaidumi ir pieejami MacOS, Linux un Windows.

Izlasiet manu pārskatu par Scikit-learn.

Spark MLlib

Apache Spark atvērtā pirmkoda mašīnmācīšanās bibliotēka Spark MLlib nodrošina izplatītus mašīnmācīšanās algoritmus, piemēram, klasifikāciju, regresiju, kopu veidošanu un kopīgu filtrēšanu (bet ne dziļus neironu tīklus). Tas ietver arī līdzekļus iezīmju iegūšanai, pārveidošanai, izmēru samazināšanai un atlasei; instrumenti mašīnmācīšanās cauruļvadu konstruēšanai, novērtēšanai un noregulēšanai; un utilītas algoritmu, modeļu un cauruļvadu saglabāšanai un ielādēšanai, datu apstrādei, kā arī lineāras algebras un statistikas veikšanai.

Spark MLlib ir rakstīts Scala, un tajā tiek izmantota lineārā algebras pakete Breeze. Lai optimizētu skaitlisko apstrādi, Breeze ir atkarīgs no netlib-java, lai gan atvērtā koda izplatīšanā tas nozīmē optimizētu CPU izmantošanu. Databricks piedāvā pielāgotas Spark kopas, kas izmanto GPU, kas potenciāli var uzlabot vēl 10x ātrumu sarežģītu mašīnmācīšanās modeļu apmācībai ar lieliem datiem.

Spark MLlib ievieš kravas automašīnu kopīgus klasifikācijas un regresijas algoritmus un modeļus līdz vietai, kur iesācējs var sajaukt, taču eksperts, visticamāk, atradīs labu modeļa izvēli analizējamiem datiem. Šim modeļu pārpilnībai Spark 2.x pievieno hiperparametru regulēšanas svarīgo iezīmi, kas pazīstama arī kā modeļa izvēle. Hiperparametru pielāgošana ļauj analītiķim izveidot parametru režģi, novērtētāju un vērtētāju un ļaut savstarpējas validācijas metodei (laikietilpīga, bet precīza) vai vilciena validācijas dalīšanas metodei (ātrāka, bet mazāk precīza) atrast labāko modeli dati.

Spark MLlib ir pilnas API Scala un Java, lielākoties pilnas API Python un ieskicētas daļējas API R versijai. Labi pārklājuma sajūtu varat iegūt, skaitot paraugus: 54 Java un 60 Scala mašīnmācīšanās piemēri, 52 Python mašīna mācību piemēri, un tikai pieci R piemēri. Pēc manas pieredzes Spark MLlib ir visvieglāk strādāt, izmantojot Jupyter piezīmjdatorus, taču jūs noteikti to varat palaist konsolē, ja pieradināt daudzveidīgos Spark statusa ziņojumus.

Spark MLlib nodrošina gandrīz visu, ko vēlaties mašīnmācīšanās, funkciju izvēles, cauruļvadu un neatlaidības veidā. Tas veic diezgan labu darbu ar klasifikāciju, regresiju, kopu veidošanu un filtrēšanu. Ņemot vērā, ka tā ir daļa no Spark, tai ir lieliska piekļuve datu bāzēm, straumēm un citiem datu avotiem. No otras puses, Spark MLlib nav īsti izveidots, lai modelētu un apmācītu dziļus neironu tīklus tāpat kā TensorFlow, PyTorch, MXNet un Keras.

Izmaksas: Bezmaksas atvērtā koda.

Platforma: Spark darbojas gan Windows, gan Unix līdzīgās sistēmās (piemēram, Linux, MacOS) ar Java 7 vai jaunāku versiju, Python 2.6 / 3.4 vai jaunāku versiju un R 3.1 vai jaunāku versiju. Scala API Spark 2.0.1 izmanto Scala 2.11. Spark nepieciešama Hadoop / HDFS.

Izlasiet manu pārskatu par Spark MLlib.

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