koskaan kokeillut eri ohjelmointikieltä tekoälylle
Oletko tekoälyn harrastaja?
Kyllä?
vastaa sitten tähän kysymykseen: Mitä ohjelmointikieltä käytät tekoälyn kehittämiseen?
vastauksesi on Python. Katso! Tiesimme sen.
okei, Emme ole taikureita, mutta se on tunnettu tosiasia. Python on yksi suosituimmista kielistä tällä hetkellä, ei vain Koneoppimisessa, vaan myös normaalissa kehitystarkoituksessa. Lokakuuhun 2019 mennessä yli 8,2 miljoonaa kehittäjää käyttää Pythonia. Joka on miljoona enemmän kuin Java ja yli 6 miljoonaa enemmän kuin Swift.
Python on tekoälyn kehityksen kärjessä.
todistaakseen sen yksinkertaisesti suurin osa harrastajista ei osaa edes mitään muuta kieltä kuin Pythonia (ja R enimmäkseen), jota voidaan käyttää koneoppimiseen. Ja se on vain, koska se tuntuu pelottava koodi ML algoritmeja C tai Java.
Pythonia käytetään paljon sen yksinkertaisuuden ja yhteisöllisyyden vuoksi. Mutta me kaikki tiedämme yksi suuri haittapuoli Python.
Jep. Teloituksen nopeus.
Python on 400 kertaa hitaampi kuin C++. Mutta me voimme kiertää kaiken tämän Koneoppimisessa käyttämällä kirjastoja, jotka on kirjoitettu tehokkaammilla kielillä, kuten C.
mutta silti laskennallinen kuormitus on raskaampaa. Python on myös muistisika.
joten mitä voimme tehdä? Emme saa molempien maailmojen parasta!
ennen kuin teet hätiköityjä johtopäätöksiä, näyttäkäämme, Mitä mit: n väki voi tarjota.
Introducing Julia.
se ei ole humanoidi tai chatbot. Se on ohjelmointikieli.
kuten Pythonia, Juliaa voidaan käyttää yleiseen ohjelmointiin, mutta monet ominaisuudet soveltuvat tieteellisiin laskutoimituksiin ja numeeriseen analyysiin. Se ilmestyi ensimmäisen kerran vuonna 2012. Vakaalla julkaisullaan vuonna 2020.
mutta mitä annettavaa Julialla on? Ensinnäkin Julia on nopea. Aivan kuten Java, Julia käyttää just-in-time kääntäjä. Toiseksi Julia on myös helpompi oppia kuin muut laskennallisesti tehokkaat kielet. Julia on syntaksiltaan yhtä yksinkertainen kuin Python.
mutta onko se parempi kuin Python? Jos kyllä, niin millä ehdoilla?
tehdään koe ja katsotaan.
harjoittelisimme yksinkertaista CNN: ää sekä Pythonilla että Julialla. Käyttäisimme CNN: n vakaimpia ja tehokkaimpia toteutuksia molemmilla kielillä, samalla arkkitehtuurilla.
Pythonissa käytetään Tensorflow ’ ta. Julian kohdalla käytämme Fluxia.jl, joka on puhdas Julia stack. Tässä muutamia suosituksia sinulle, suorittaa kokeen itse.
tarkistamme kunkin aikakauden ajan sekä esikäsittelytehtävien toteutusajat.
aiomme toteuttaa molemmat CNNs: t MNIST-aineistossa ja nähdä tulokset. Voit kokeilla eri aineistoa ja nähdä, liittyvätkö tuloksemme niihin.
suoritusaikojen laskemiseen käytämme Pythonissa aikamoduulia, mutta sitä tarvitaan vain esikäsittelyaikalaskennassa, sillä mallin harjoitusaika on helposti katsottavissa mallin ulostulossa.fit () – funktio itsessään.
import time
start_time = time.time()#Code
print("The time elapsed: ",time.time()-start_time)
Julian kohdalla käytetään erittäin hyödyllistä makroa: @time. Käytämme sitä yleisessä esikäsittelykoodissa sekä junatoiminnossa, jota käytämme kutakin aikakautta kohti.
jotain tällaista:
@time begin#Preprocessing codeend
kun käytät yhdellä askeleella, voimme vain käyttää micro suoraan etuliitteenä, kuten:
@time Flux.train!(loss, params(model), train_set, opt)
älä huoli, jos et vielä ymmärrä Julia-syntaksia. Yritä ymmärtää, että yritämme mitata teloitusaikoja.
jotkut tulokset
kokeessa käytetyn järjestelmän tekniset tiedot:
Intel Core-i78550U — 16 GB RAM
- Pythonin kokonaisesikäsittelyaika oli 2,6 sekuntia.
- Julian kokonaisesittelyaika oli 4.2 sekuntia, mukaan lukien mallin esikokoamiseen kulunut aika.
- Pythonissa aika iteraatiota kohti oli 20 sekuntia per epokki.
- aika per iteraatio Juliassa oli 16 sekuntia per epokki.
nyt voi ajatella, ettei se ole niinkään erilaista ja tehokkuudeltaan parempaa.
no, toteutuskriteereissä on yksi ratkaiseva ero. Python-koodia suoritettaessa suorittimen kokonaiskulutus oli 87 prosenttia. Juliaa suoritettaessa suorittimen kokonaiskulutus oli kuitenkin 18 prosenttia.
joten, jos käytämme Julian rinnakkaislaskentaa ja hyödynnämme suoritinta täysimääräisesti, saamme ajan iteraatiota kohti niinkin alhaiseksi kuin 3,6 sekuntia.
Kyllä, voimme nähdä, että Julia on melko nopea verrattuna Pythoniin. Mutta se ei välttämättä tarkoita, että se aikoo ottaa Python lähiaikoina.
syy siihen, miksi Python on niin helposti muunneltavissa, johtuu sen valtavasta yhteisöstä. Julialla ei ole yhtä suurta yhteisöä kuin Pythonilla. Julia ei oletusarvoisesti käytä koneen täyttä laskentatehoa. Sinun täytyy käyttää tiettyjä komentoja ja tiettyä suoritustapaa, jotta se tekee sen.
Python on juuri nyt tässä asemassa yksinkertaisuutensa ja niiden kirjastojen ja moduulien vuoksi, joiden parissa se toimii. Python on ollut meillä niin kauan. Julia tuli juuri. Emme ehkä näe sen täyttä potentiaalia vielä. Mutta se näyttää lupaavan tulla yhdeksi käytetyimmistä kielistä datalaskennoissa.
Julia on nopeampi. Julia on yhtä yksinkertainen kuin Python. Mutta ainoa kysymys on, kuinka nopeasti kehittäjäyhteisö hyväksyy tämän ja tekee siitä vielä paremman. Kannattaako sitä vuoroa tehdä? Tarvitsemme lisää tietoa ja tapaustutkimuksia.
toivomme, että tämä artikkeli herättää uteliaisuuden tarkastella muita kieliä Pythonin lisäksi tekoälyssä.
viitteet ja tarkemmat tiedot:
- Lauwens, B., & Downey, A. (O. s. Retrieved from https://benlauwens.github.io/ThinkJulia.jl/latest/book.html
- Flux: The Julia Machine Learning Library. (synt. Retrieved from https://fluxml.ai/Flux.jl/stable/
- Convolutional Neural Network (CNN): TensorFlow Core. (synt. Haettu https://www.tensorflow.org/tutorials/images/cnn
- Rinnakkaislaskenta. (synt. Retrieved from https://docs.julialang.org/en/v1/manual/parallel-computing/