kiedykolwiek próbowałeś innego języka programowania dla AI
czy jesteś entuzjastą sztucznej inteligencji?
tak?
to odpowiedz na to pytanie: jakiego języka programowania używasz do tworzenia rzeczy dla AI?
Twoja odpowiedź to Python. Widzisz! Wiedzieliśmy.
w porządku, nie jesteśmy magikami, ale jest to dobrze znany fakt. Python jest obecnie jednym z najpopularniejszych języków, nie tylko w uczeniu maszynowym, ale także w normalnych celach rozwojowych. Według stanu na Październik 2019 r. ponad 8,2 miliona programistów używa Pythona. Czyli o milion więcej niż Java i o ponad 6 milionów więcej niż Swift.
Python zajmuje pierwsze miejsce, jeśli chodzi o rozwój w dziedzinie sztucznej inteligencji.
aby to udowodnić, większość entuzjastów nie zna nawet żadnego innego języka niż Python (i głównie R), który może być używany do uczenia maszynowego. A to dlatego, że wydaje się zniechęcające kodowanie algorytmów ML w C lub Javie.
Python jest powszechnie używany ze względu na swoją prostotę i społeczność. Ale wszyscy znamy jedną dużą wadę Pythona.
Szybkość wykonania.
Python jest 400 razy wolniejszy od C++. Ale możemy obejść to wszystko w uczeniu maszynowym, korzystając z bibliotek napisanych w bardziej wydajnych językach, takich jak C.
ale mimo to obciążenie obliczeniowe jest cięższe. Poza tym Python jest Wieprzem pamięci.
co zatem możemy zrobić? Nie możemy zdobyć tego, co najlepsze z obu światów!
cóż, zanim przejdziesz do wniosków, pozwól nam pokazać, co ludzie z MIT mają do zaoferowania.
Przedstawiamy Julię.
nie, to nie jest kolejny humanoid czy chatbot. Jest to język programowania.
podobnie jak Python, Julia może być używana do ogólnego programowania, ale wiele funkcji nadaje się do obliczeń naukowych i analizy numerycznej. Po raz pierwszy pojawił się w 2012 roku. Ze stabilnym wydaniem w 2020 roku.
ale co Julia ma do zaoferowania? Po pierwsze, Julia jest szybka. Podobnie jak Java, Julia używa kompilatora just-in-time. Po drugie, Julia jest również łatwiejsza do nauczenia niż inne wydajne obliczeniowo języki. I zanim zapytasz, tak, Julia jest tak prosta pod względem składni jak Python.
ale czy jest lepszy od Pythona? Jeśli tak, to w jakich warunkach?
zróbmy eksperyment i zobaczmy.
trenowalibyśmy prosty CNN zarówno na Pythonie, jak i na Julii. Będziemy używać najbardziej stabilnych i wydajnych implementacji CNN w obu językach, o tej samej architekturze.
dla Pythona używamy Tensorflow. A dla Julii używamy Flux.jl, czyli czysty stos Julii. Oto kilka odniesień dla Ciebie, do samodzielnego przeprowadzenia eksperymentu.
mamy zamiar sprawdzić czas dla każdej epoki, jak również czasy implementacyjne Dla zadań wstępnego przetwarzania.
zamierzamy zaimplementować oba CNN na zestawie danych MNIST i zobaczyć wyniki. Możesz spróbować użyć innego zestawu danych i sprawdzić, czy nasze wyniki odnoszą się do nich.
do obliczenia czasu wykonania używamy modułu time w Pythonie, jednak jest on wymagany tylko do obliczenia czasu wstępnego przetwarzania, ponieważ czas szkolenia modelu można łatwo wyświetlić na wyjściu modelu.funkcja fit () sama w sobie.
import time
start_time = time.time()#Code
print("The time elapsed: ",time.time()-start_time)
dla Julii użyjemy bardzo użytecznego makra: @time. Używamy go na ogólnym kodzie wstępnego przetwarzania, a także na funkcji pociągu, której używamy na każdą epokę.
coś takiego:
@time begin#Preprocessing codeend
podczas używania na jednym kroku możemy po prostu użyć mikro bezpośrednio jako prefiksu, jak:
@time Flux.train!(loss, params(model), train_set, opt)
nie martw się, jeśli nie możesz jeszcze zrozumieć składni Julii. Po prostu zrozum, że staramy się mierzyć czas wykonania.
niektóre wyniki
specyfikacja SYSTEMU użytego do eksperymentu:
Intel Core-i78550U — 16 GB RAM
- ogólny czas wstępnego przetwarzania Pythona wynosił 2,6 sekundy.
- łączny czas wstępnego przetwarzania Julii wynosił 4.2 sekundy, w tym czas na wstępną kompilację modelu.
- czas na iterację w Pythonie wynosił 20 sekund na epokę.
- czas na iterację w Julii wynosił 16 sekund na epokę.
teraz można pomyśleć, że nie jest tak bardzo różne i lepsze pod względem wydajności.
Cóż, jest jedna zasadnicza różnica między kryteriami wykonania. Podczas wykonywania kodu Pythona całkowite zużycie procesora wynosiło 87 procent. Ale podczas wykonywania Julii całkowite zużycie procesora wynosiło 18 procent.
tak więc, jeśli użyjemy obliczeń równoległych w Julii i w pełni wykorzystamy procesor, możemy uzyskać czas na iterację już od 3,6 sekundy.
tak, widzimy, że Julia jest dość szybka w porównaniu do Pythona. Ale to nie musi oznaczać, że w najbliższym czasie przejmie kontrolę nad Pythonem.
powodem, dla którego Python jest tak łatwo dostosowywany, jest ogromna społeczność. Julia nie ma tak dużej społeczności jak Python. Jeszcze jedno, Julia domyślnie nie wykorzystuje pełnej mocy obliczeniowej maszyny, na której działa. Musisz użyć pewnych poleceń i określonego sposobu wykonania, aby to zrobić.
Python jest teraz na tej pozycji ze względu na swoją prostotę oraz biblioteki i moduły, na których działa. Python jest z nami od tak dawna. Julia właśnie przyszła. Możemy nie dostrzegać jeszcze Jego pełnego potencjału. Ale to pokazuje obietnicę stania się jednym z najczęściej używanych języków w obliczeniach danych.
Julia jest szybsza. Julia jest prosta jak Python. Ale jedyne pytanie brzmi, jak szybko społeczność programistów przyjmuje to i czyni go jeszcze lepszym. Czy naprawdę warto zrobić tę zmianę? Myślę, że będziemy potrzebować więcej danych i studiów przypadków, aby odpowiedzieć na to pytanie.
mamy nadzieję, że ten artykuł wzbudzi ciekawość spojrzenia na inne języki poza Pythonem w sztucznej inteligencji.
:
- Lauwens, B., & Downey, A. (n. d.). Źródło: https://benlauwens.github.io/ThinkJulia.jl/latest/book.html
- Flux: The Julia Machine Learning Library. (n. d.). Źródło: https://fluxml.ai/Flux.jl/stable/
- convolutional Neural Network (CNN) : TensorFlow Core. (n. d.). Pobrano z https://www.tensorflow.org/tutorials/images/cnn
- (n. d.). Pobrano z https://docs.julialang.org/en/v1/manual/parallel-computing/