Julia Vs Python – Care Este Mai Rapid Pentru Învățarea Profundă?

a încercat vreodată un limbaj de programare diferit pentru AI

redactor șef / cuibul de cercetare
redactor-șef / cuib de cercetare

urmați

iulie 17 · 2020 * 5 min citit

fotografie de Safar Safarov pe Unsplash

ești un entuziast AI?

Da?

apoi răspundeți la această întrebare: ce limbaj de programare folosiți pentru a dezvolta lucruri pentru AI?

răspunsul tău este Python. Vezi! Știam noi.

bine, nu suntem magicieni, dar este un fapt binecunoscut. Python este una dintre cele mai populare limbi în acest moment, nu doar în învățarea automată, ci și în scopuri normale de dezvoltare. În octombrie 2019, peste 8,2 milioane de dezvoltatori folosesc Python. Ceea ce înseamnă cu 1 milion mai mult decât Java și cu peste 6 milioane mai mult decât Swift.

Python ocupă primul loc în ceea ce privește dezvoltarea în domeniul inteligenței artificiale.

pentru a dovedi pur și simplu, majoritatea entuziaștilor nu vor cunoaște nici măcar o altă limbă decât Python (și R în cea mai mare parte), care poate fi utilizată pentru învățarea automată. Și este doar pentru că pare descurajantă codarea algoritmilor ML în C sau Java.

Python este utilizat pe scară largă datorită simplității și comunității sale. Dar știm cu toții un mare dezavantaj al Python.

Da. Viteza de execuție.

Python este de 400 de ori mai lent decât C++. Dar ocolim toate acestea în învățarea automată folosind bibliotecile scrise în limbi mai eficiente precum C.

dar totuși, sarcina computațională este mai grea. Și, de asemenea, Python este un porc de memorie.

deci, ce putem face? Nu putem obține ce e mai bun din ambele lumi!

Ei bine, înainte de a trage concluzii pripite, să vă arătăm ce au de oferit cei de la MIT.

Introducerea Julia.

nu, nu este un alt umanoid sau chatbot. Este un limbaj de programare.

la fel ca Python, Julia poate fi folosită pentru programare generală, dar multe dintre caracteristici sunt potrivite pentru calcule științifice și analize numerice. A apărut pentru prima dată în 2012. Cu lansarea sa stabilă în 2020.

dar ce are Julia de oferit? Ei bine, în primul rând, Julia este rapidă. La fel ca Java, Julia folosește un compilator just-in-time. În al doilea rând, Julia este, de asemenea, mai ușor de învățat decât alte limbi eficiente din punct de vedere computațional. Și înainte de a întreba, da, Julia este la fel de simplă în ceea ce privește sintaxa ca Python.

dar este mai bine decât Python? Dacă da, atunci în ce termeni?

să facem un experiment și să vedem.

ne-ar fi de formare un simplu CNN pe ambele Python, precum și Julia. Am folosi cele mai stabile și eficiente implementări ale CNN în ambele limbi, cu aceeași arhitectură.

pentru Python, folosim Tensorflow. Și pentru Julia, folosim Flux.jl, care este o Julia stack pură. Iată câteva referințe pentru dvs., pentru a efectua singur experimentul.

vom verifica timpul pentru fiecare epocă, precum și timpii de implementare pentru sarcinile de pre-procesare.

vom implementa atât CNNs pe setul de date MNIST, cât și rezultatele. Puteți încerca să utilizați un set de date diferit și să vedeți dacă rezultatele noastre se referă la acestea.

pentru a calcula timpii de execuție folosim modulul de timp în Python, cu toate acestea, este necesar doar pentru calculul timpului de pre-procesare, deoarece timpul de antrenament al modelului poate fi vizualizat cu ușurință în ieșirea modelului.fit () funcția în sine.

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

pentru Julia, vom folosi un macro foarte util: @time. Îl folosim pe codul general de pre-procesare, precum și pe funcția de tren pe care o folosim pentru fiecare epocă.

ceva de genul asta:

@time begin#Preprocessing codeend

în timp ce utilizați pe un singur pas, putem folosi doar micro direct ca prefix, cum ar fi:

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

nu vă faceți griji dacă nu puteți înțelege sintaxa Julia încă. Înțelegeți doar că încercăm să măsurăm timpii de execuție.

unele rezultate

specificațiile sistemului utilizat pentru experiment:

Intel Core-I78550u — 16 GB RAM

  • timpul total de pre-procesare al Python a fost de 2,6 secunde.
  • timpul total de pre-procesare al Juliei a fost de 4.2 secunde, inclusiv timpul pentru pre-compilarea modelului.
  • timpul pe iterație în Python a fost de 20 de secunde pe epocă.
  • timpul pe iterație în Julia a fost de 16 secunde pe epocă.

acum ați putea crede, că nu este atât de mult diferite și mai bine în termeni de eficiență.

Ei bine, există o diferență crucială între criteriile de execuție. În timpul executării codului Python, consumul total al procesorului a fost de 87%. Dar, în timp ce executa Julia, consumul total de CPU a fost de 18%.

deci, dacă folosim calculele paralele în Julia și profităm din plin de CPU, putem obține timpul pe iterație de până la 3,6 secunde.

Da, putem vedea că Julia este destul de rapidă în comparație cu Python. Dar asta nu înseamnă neapărat că va prelua Python în curând.

motivul pentru care Python este atât de ușor de adaptat se datorează comunității sale uriașe. Julia nu are o comunitate atât de mare ca Python. Încă un lucru este că Julia nu folosește în mod implicit puterea de calcul completă a mașinii pe care rulează. Trebuie să utilizați anumite comenzi și un mod specific de execuție pentru a face acest lucru.

Python este acum în această poziție datorită simplității sale și a bibliotecilor și modulelor pe care funcționează. Și Python a fost cu noi atât de mult timp. Julia tocmai a venit. S-ar putea să nu-i vedem încă întregul potențial. Dar arată promisiunea de a deveni unul dintre cele mai utilizate limbi în calculele de date.

Julia este mai rapidă. Julia este la fel de simplă ca Python. Dar singura întrebare este, cât de repede comunitatea de dezvoltatori adoptă acest lucru și îl face și mai bun. Chiar merită să facem această schimbare? Cred că vom avea nevoie de mai multe date și studii de caz pentru a răspunde la asta.

sperăm că acest articol insuflă o curiozitate de a privi alte limbi dincolo de Python în AI.

referințe și lecturi suplimentare:

  • Lauwens, B., & Downey, A. (n.d.). Adus de la https://benlauwens.github.io/ThinkJulia.jl/latest/book.html
  • Flux: Biblioteca Julia Machine Learning. (n.d.). Adus de la https://fluxml.ai/Flux.jl/stable/
  • rețea neuronală convoluțională (CNN) : TensorFlow Core. (n.d.). Adus de la https://www.tensorflow.org/tutorials/images/cnn
  • calcul paralel. (n.d.). Adus de la https://docs.julialang.org/en/v1/manual/parallel-computing/

Lasă un răspuns

Adresa ta de email nu va fi publicată.