Julia Vs Python-Wat Is Sneller Voor Diep Leren?

Ooit geprobeerd een andere programmeertaal voor AI

Editor in Chief | Het Onderzoek Nest
Editor in Chief | Het Onderzoek Nest

Volg

Jul 17, 2020 · 5 min te lezen

Foto door Safar Safarov op Unsplash

Bent u een AI-liefhebber?

Ja?

beantwoord dan deze vraag: welke programmeertaal gebruikt u voor het ontwikkelen van materiaal voor AI?

uw antwoord is Python. Zie je! We wisten het.

goed, we zijn geen goochelaars, maar het is een bekend feit. Python is een van de meest populaire talen op dit moment, niet alleen in Machine Learning, maar ook voor normale ontwikkelingsdoeleinden. Vanaf oktober 2019 gebruiken meer dan 8,2 miljoen ontwikkelaars Python. Dat is 1 miljoen meer dan Java en meer dan 6 miljoen meer dan Swift.Python staat op de eerste plaats als het gaat om ontwikkeling op het gebied van kunstmatige intelligentie.

om het eenvoudig te bewijzen, zullen de meeste enthousiastelingen zelfs geen andere taal kennen dan Python (en meestal R), die gebruikt kan worden voor Machine Learning. En het is gewoon omdat het ontmoedigend lijkt om ML algoritmen te coderen in C of Java.

Python wordt veel gebruikt vanwege zijn eenvoud en gemeenschap. Maar we kennen allemaal een groot nadeel van Python.

Yep. De snelheid van de uitvoering.

Python is 400 keer langzamer dan C++. Maar we omzeilen dit allemaal in Machine Learning door gebruik te maken van bibliotheken die geschreven zijn in efficiëntere talen zoals C.

maar toch is de rekenbelasting zwaarder. En Python is ook een geheugen varken.

dus, wat kunnen we doen? We kunnen niet het beste van beide werelden krijgen!

voordat je conclusies trekt, laten we je laten zien wat de mensen aan het MIT te bieden hebben.

Dit Is De Introductie Van Julia.

Nee, Het is geen humanoïde of chatbot. Het is een programmeertaal.Net als Python kan Julia worden gebruikt voor algemene programmering, maar veel van de functies zijn geschikt voor wetenschappelijke berekeningen en numerieke analyse. Het verscheen voor het eerst in 2012. Met zijn stabiele release in 2020.

maar wat heeft Julia te bieden? Ten eerste, Julia is snel. Net als Java gebruikt Julia een just-in-time compiler. Ten tweede is Julia ook gemakkelijker te leren dan andere computationeel efficiënte talen. En voordat je het vraagt, Ja, Julia is net zo eenvoudig in termen van syntaxis als Python.

maar is het beter dan Python? Zo ja, in welke termen?

laten we een experiment uitvoeren en zien.

we zouden een eenvoudige CNN trainen op zowel Python als Julia. We zouden gebruik maken van de meest stabiele en efficiënte implementaties van CNN in beide talen, met dezelfde architectuur.

voor Python gebruiken we Tensorflow. En voor Julia gebruiken we Flux.jl, dat is een pure Julia stack. Hier zijn enkele referenties voor u, om het experiment zelf uit te voeren.

we gaan de tijd voor elke epoch en de implementatietijden voor de pre-processing taken controleren.

we gaan zowel de CNNs op de MNIST-dataset implementeren en de resultaten bekijken. U kunt proberen een andere dataset te gebruiken en zien of onze resultaten betrekking hebben op hen.

om de uitvoeringstijden te berekenen gebruiken we de tijdmodule in Python, maar deze is alleen nodig voor de berekening van de voorbewerkingstijd, omdat de modeltrainingstijd gemakkelijk kan worden bekeken in de uitvoer van het model.fit () functie zelf.

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

voor Julia gebruiken we een zeer nuttige macro: @time. We gebruiken het op de Algemene voorbewerkingscode en op de treinfunctie die we per epoch gebruiken.

zoiets als dit:

@time begin#Preprocessing codeend

tijdens het gebruik op een enkele stap kunnen we gewoon de micro direct gebruiken als het voorvoegsel, zoals:

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

maak je geen zorgen als je de Julia syntaxis nog niet kunt begrijpen. Begrijp gewoon dat we proberen de executietijden te meten.

enkele resultaten

de specificaties van het voor het experiment gebruikte systeem:

Intel Core-i78550U — 16 GB RAM

  • de totale verwerkingstijd van Python was 2,6 seconden.
  • de Totale voorbereidingstijd van Julia was 4.2 seconden, inclusief de tijd voor de pre-compilatie van het model.
  • de tijd per iteratie in Python was 20 seconden per epoch.
  • de tijd per iteratie in Julia was 16 seconden per epoch.

nu zou je kunnen denken, dat is niet zo veel anders en beter in termen van efficiëntie.

er is één cruciaal verschil tussen de uitvoeringscriteria. Tijdens het uitvoeren van Python code, de totale CPU verbruik was 87 procent. Maar tijdens het uitvoeren van Julia, de totale CPU-verbruik was 18 procent.

dus, als we de parallelle berekeningen in Julia gebruiken en optimaal gebruik maken van de CPU, kunnen we de tijd per iteratie zo laag krijgen als 3,6 seconden.

Ja, we kunnen zien dat Julia vrij snel is in vergelijking met Python. Maar dat betekent niet noodzakelijkerwijs dat het Python binnenkort zal overnemen.

de reden waarom Python zo gemakkelijk aanpasbaar is, is te wijten aan de enorme gemeenschap. Julia heeft niet zo ‘ n grote gemeenschap als Python. Nog een ding is dat Julia niet standaard gebruik maken van de volledige rekenkracht van de machine waarop het draait. Je moet bepaalde commando ‘ s en een specifieke manier van uitvoering gebruiken om dat te doen.

Python bevindt zich nu op deze positie vanwege zijn eenvoud en de bibliotheken en modules waar het op werkt. En Python is al zo lang bij ons. Julia is net gekomen. We zien misschien nog niet het volledige potentieel. Maar het toont wel de belofte om een van de meest gebruikte talen te worden in gegevensberekeningen.

Julia is sneller. Julia is zo simpel als Python. Maar de enige vraag is, hoe snel neemt de ontwikkelaar gemeenschap dit en maken het nog beter. Is het echt de moeite waard om die verschuiving te maken? Ik denk dat we meer gegevens en case studies nodig hebben om dat te beantwoorden.

we hopen dat dit artikel een nieuwsgierigheid wekt om te kijken naar andere talen dan Python in AI.

referenties en verdere informatie:

  • Lauwens, B., & Downey, A. (n. d.). Opgehaald uit https://benlauwens.github.io/ThinkJulia.jl/latest/book.html
  • Flux: The Julia Machine Learning Library. (n. d.). Opgehaald uit https://fluxml.ai/Flux.jl/stable/
  • Convolutional Neural Network ( CNN): TensorFlow Core. (n. d.). Verkregen uit https://www.tensorflow.org/tutorials/images/cnn
  • Parallel Computing. (n. d.). Verkregen uit https://docs.julialang.org/en/v1/manual/parallel-computing/

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.