Julia Vs Python-Hvilket Er Hurtigere Til Dyb Læring?

nogensinde prøvet et andet programmeringssprog til AI

chefredaktør / Forskningsneden
chefredaktør / forsknings reden

Følg

Jul 17, 2020 * 5 min læst

foto af Safar Safarov på Unsplash

er du en AI-entusiast?

Ja?

Besvar derefter dette spørgsmål: hvilket programmeringssprog bruger du til at udvikle ting til AI?

dit svar er Python. Se! Vi vidste det.

Okay, vi er ikke tryllekunstnere, men det er et velkendt faktum. Python er et af de mest populære sprog lige nu, ikke kun inden for maskinindlæring, men også til normale udviklingsformål. Fra oktober 2019 bruger over 8,2 millioner udviklere Python. Hvilket er 1 million mere end Java og over 6 millioner mere end hurtig.

Python rangerer først, når det kommer til udvikling inden for kunstig intelligens.

for at bevise det simpelthen kender de fleste entusiaster ikke engang noget andet sprog end Python (og R for det meste), som kan bruges til maskinindlæring. Og det er bare fordi det virker skræmmende at kode ML algoritmer i C eller Java.

Python bruges bredt på grund af sin enkelhed og fællesskab. Men vi kender alle en stor ulempe ved Python.

Jep. Hastigheden af udførelsen.

Python er 400 gange langsommere end C++. Men vi kommer rundt om alt dette i maskinlæring ved at bruge bibliotekerne skrevet på mere effektive sprog som C.

men stadig er beregningsbelastningen tungere. Python er også et memory hog.

så hvad kan vi gøre? Vi kan ikke få det bedste fra begge verdener!

nå, før du springer til konklusioner, lad os vise dig, hvad folkene på MIT har at tilbyde.

Introduktion Julia.

Nej, Det er ikke en anden humanoid eller chatbot. Det er et programmeringssprog.

ligesom Python kan Julia bruges til generel programmering, men mange af funktionerne er velegnede til videnskabelige beregninger og numerisk analyse. Det optrådte først i 2012. Med sin stabile udgivelse i 2020.

men hvad har Julia at tilbyde? For det første er Julia hurtig. Ligesom Java bruger Julia En just-in-time compiler. For det andet er Julia også lettere at lære end andre beregningseffektive sprog. Og før du spørger, ja, Julia er lige så enkel med hensyn til syntaks som Python.

men er det bedre end Python? Hvis ja, så på hvilke vilkår?

lad os gennemføre et eksperiment og se.

vi ville træne en simpel CNN på både Python såvel som Julia. Vi ville bruge de mest stabile og effektive implementeringer af CNN på begge sprog med samme arkitektur.

til Python bruger vi Tensorstrøm. Og for Julia bruger vi strøm.jl, som er en ren Julia stack. Her er nogle referencer til dig, at gennemføre eksperimentet selv.

vi skal kontrollere tiden for hver epoke såvel som implementeringstiderne for forbehandlingsopgaverne.

vi skal implementere begge CNNs på MNIST-datasættet og se resultaterne. Du kan prøve at bruge et andet datasæt og se, om vores resultater vedrører dem.

for at beregne udførelsestiderne bruger vi tidsmodulet i Python, men det er kun nødvendigt for beregningen af forbehandlingstiden, da modeltræningstiden let kan ses i output fra modellen.fit () funktionen selv.

import time
start_time = time.time()#Code
print("The time elapsed: ",time.time()-start_time)

for Julia bruger vi en meget nyttig Makro: @time. Vi bruger det på den samlede forbehandlingskode såvel som på den togfunktion, vi bruger pr.

noget som dette:

@time begin#Preprocessing codeend

mens vi bruger på et enkelt trin, kan vi bare bruge mikro direkte som præfiks, som:

@time Flux.train!(loss, params(model), train_set, opt)

bare rolig, hvis du ikke kan forstå Julia-syntaksen endnu. Bare forstå, at vi forsøger at måle udførelsestiderne.

nogle resultater

specifikationerne for det system, der blev brugt til eksperimentet:

Intel Core-I78550u — 16 GB RAM

  • den samlede forbehandlingstid for Python var 2,6 sekunder.
  • den samlede forbehandlingstid for Julia var 4.2 sekunder, herunder tidspunktet for præ-kompilering af modellen.
  • tiden pr.iteration i Python var 20 sekunder pr. epoke.
  • tiden pr.iteration i Julia var 16 sekunder pr.

nu tænker du måske, det er ikke så meget anderledes og bedre med hensyn til effektivitet.

nå, der er en afgørende forskel mellem eksekveringskriterierne. Under udførelsen af Python-kode var det samlede CPU-forbrug 87 procent. Men under udførelsen af Julia var det samlede CPU-forbrug 18 procent.

så hvis vi bruger de parallelle beregninger i Julia og drager fuld fordel af CPU ‘ en, kan vi få tiden pr.

Ja, Vi kan se, at Julia er ret hurtig i sammenligning med Python. Men det betyder ikke nødvendigvis, at det snart vil overtage Python.

grunden til, at Python er så let at tilpasse, skyldes dets enorme samfund. Julia har ikke så stort et samfund som Python har. En ting mere er, at Julia ikke som standard bruger den fulde beregningskraft på den maskine, den kører på. Du skal bruge bestemte kommandoer og en bestemt måde at udføre for at få det til at gøre det.

Python er lige nu på denne position på grund af sin enkelhed og de biblioteker og moduler, det virker på. Og Python har været med os så længe. Julia er lige kommet. Vi ser muligvis ikke dets fulde potentiale endnu. Men det viser løfte om at blive et af de mest anvendte sprog i databeregninger.

Julia er hurtigere. Julia er så simpelt som Python. Men det eneste spørgsmål er, hvor hurtigt vedtager udviklerfællesskabet dette og gør det endnu bedre. Er det virkelig værd at foretage det skift? Jeg antager, at vi har brug for flere data og casestudier for at besvare det.

vi håber, at denne artikel skaber en nysgerrighed for at se på andre sprog ud over Python i AI.

referencer og videre læsning:

  • Lauven, B., & Lauven, A. (n.D.). Hentet fra https://benlauwens.github.io/ThinkJulia.jl/latest/book.html
  • strøm: Julia Machine Learning Library. (n. d.). Hentet fra https://fluxml.ai/Flux.jl/stable/
  • Convolutional neurale netværk (CNN) : Tensorstrøm kerne. (n. d.). Hentet fra https://www.tensorflow.org/tutorials/images/cnn
  • Parallel Computing. (n. d.). Hentet fra https://docs.julialang.org/en/v1/manual/parallel-computing/

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.