någonsin provat ett annat programmeringsspråk för AI
är du en AI-entusiast?
Ja?
svara sedan på den här frågan: vilket programmeringsspråk använder du för att utveckla saker för AI?
ditt svar är Python. Se! Vi visste det.
Okej, vi är inte magiker, men det är ett välkänt faktum. Python är ett av de mest populära språken just nu, inte bara i maskininlärning utan också för normala utvecklingsändamål. Från och med oktober 2019 använder över 8,2 miljoner utvecklare Python. Vilket är 1 miljon mer än Java och över 6 miljoner mer än Swift.
Python rankas först när det gäller utveckling inom området artificiell intelligens.
för att bevisa det helt enkelt kommer de flesta entusiasterna inte ens att känna till något annat språk än Python (och R mestadels), som kan användas för maskininlärning. Och det är bara för att det verkar skrämmande att koda ML-algoritmer i C eller Java.
Python används i stor utsträckning på grund av dess enkelhet och gemenskap. Men vi vet alla en stor nackdel med Python.
Japp. Hastigheten för utförandet.
Python är 400 gånger långsammare än C++. Men vi kommer runt allt detta i maskininlärning genom att använda biblioteken skrivna på effektivare språk som C.
men ändå är beräkningsbelastningen tyngre. Och även Python är ett minne hog.
så, vad kan vi göra? Vi kan inte få det bästa av två världar!
Tja, innan du hoppar till slutsatser, låt oss visa dig vad folket på MIT har att erbjuda.
Introduktion Julia.
Nej, det är inte en annan humanoid eller chatbot. Det är ett programmeringsspråk.
precis som Python kan Julia användas för allmän programmering men många av funktionerna är lämpade för vetenskapliga beräkningar och numerisk analys. Det uppträdde först 2012. Med sin stabila release 2020.
men vad har Julia att erbjuda? Först och främst är Julia snabb. Precis som Java använder Julia en just-in-time-kompilator. För det andra är Julia också lättare att lära sig än andra beräkningseffektiva språk. Och innan du frågar, ja, Julia är lika enkelt när det gäller syntax som Python.
men är det bättre än Python? Om ja, då i vilka termer?
Låt oss göra ett experiment och se.
vi skulle träna en enkel CNN på både Python och Julia. Vi skulle använda de mest stabila och effektiva implementeringarna av CNN på båda språken, med samma arkitektur.
för Python använder vi Tensorflow. Och för Julia använder vi Flux.jl, som är en ren Julia stack. Här är några referenser för dig, att genomföra experimentet själv.
vi kommer att kontrollera tiden för varje epok samt implementeringstiderna för förbehandlingsuppgifterna.
vi kommer att implementera båda CNN: erna på MNIST-datasetet och se resultaten. Du kan försöka använda en annan dataset och se om våra resultat relaterar till dem.
för att beräkna exekveringstiderna använder vi tidsmodulen i Python, men det krävs bara för beräkningen av förbehandlingstiden, eftersom modellträningstiden lätt kan ses i modellens utgång.fit () själva funktionen.
import time
start_time = time.time()#Code
print("The time elapsed: ",time.time()-start_time)
för Julia kommer vi att använda ett mycket användbart makro: @time. Vi använder den på den övergripande förbehandlingskoden samt på tågfunktionen vi använder per varje epok.
något som detta:
@time begin#Preprocessing codeend
när vi använder ett enda steg kan vi bara använda mikro direkt som prefix, som:
@time Flux.train!(loss, params(model), train_set, opt)
oroa dig inte om du inte kan förstå Julia-syntaxen än. Förstå bara att vi försöker mäta exekveringstiderna.
några resultat
specifikationerna för systemet som används för experimentet:
Intel Core-i78550U — 16 GB RAM
- den totala förbehandlingstiden för Python var 2,6 sekunder.
- den totala förbehandlingstiden för Julia var 4.2 sekunder, inklusive tiden för förkompilering av modellen.
- tiden per iteration i Python var 20 sekunder per epok.
- tiden per iteration i Julia var 16 sekunder per epok.
nu kanske du tror, det är inte så mycket annorlunda och bättre när det gäller effektivitet.
Tja, det finns en avgörande skillnad mellan exekveringskriterierna. Vid körning av Python-kod var den totala CPU-förbrukningen 87 procent. Men medan Julia utfördes var den totala CPU-konsumtionen 18 procent.
så om vi använder parallella beräkningar i Julia och dra full nytta av CPU, kan vi få tiden per iteration så låg som 3,6 sekunder.
Ja, Vi kan se att Julia är ganska snabb i jämförelse med Python. Men det betyder inte nödvändigtvis att det kommer att ta över Python när som helst snart.
anledningen till att Python är så lätt anpassningsbar beror på dess enorma gemenskap. Julia har inte så stor gemenskap som Python har. En sak till är att Julia inte som standard använder den fulla beräkningskraften hos den maskin som den körs på. Du måste använda vissa kommandon och ett specifikt sätt att utföra för att få det att göra det.
Python är just nu på denna position på grund av dess enkelhet och bibliotek och moduler det fungerar på. Och Python har varit med oss så länge. Julia kom precis. Vi kanske inte ser sin fulla potential ännu. Men det visar löfte om att bli ett av de mest använda språken i databeräkningar.
Julia är snabbare. Julia är lika enkel som Python. Men den enda frågan är, hur snabbt antar utvecklargemenskapen detta och gör det ännu bättre. Är det verkligen värt att göra det skiftet? Jag antar att vi kommer att behöva mer data och fallstudier för att svara på det.
vi hoppas att den här artikeln ger en nyfikenhet att titta på andra språk utöver Python i AI.
referenser och vidare läsning:
- Lauwens, B., & Downey, A. (nd). Hämtad från https://benlauwens.github.io/ThinkJulia.jl/latest/book.html
- Flux: Julia Machine Learning Library. (nd). Hämtad från https://fluxml.ai/Flux.jl/stable/
- Convolutional Neural Network (CNN) : TensorFlow Core. (nd). Hämtad från https://www.tensorflow.org/tutorials/images/cnn
- parallell databehandling. (nd). Hämtad från https://docs.julialang.org/en/v1/manual/parallel-computing/