valaha próbáltam egy másik programozási nyelv AI
Ön AI rajongó?
Igen?
ezután válaszoljon erre a kérdésre: Melyik programozási nyelvet használja az AI cuccainak fejlesztéséhez?
a válaszod Python. Látod! Tudtuk.
rendben, nem vagyunk varázslók, de ez egy jól ismert tény. A Python jelenleg az egyik legnépszerűbb nyelv, nemcsak a gépi tanulásban, hanem a normál fejlesztési célokra is. 2019 októberétől több mint 8,2 millió fejlesztő használja a Pythont. Ami 1 millióval több, mint a Java és több mint 6 millióval több, mint a Swift.
a Python az első helyen áll a mesterséges intelligencia területén történő fejlesztés terén.
egyszerűen bizonyítandó, hogy a legtöbb rajongó nem is ismer más nyelvet, mint a Python (és leginkább az R), amely a gépi tanuláshoz használható. És ez csak azért van, mert ijesztőnek tűnik az ML algoritmusok kódolása C vagy Java nyelven.
a Pythont széles körben használják egyszerűsége és közössége miatt. De mindannyian ismerjük a Python egyik nagy hátrányát.
Igen. A végrehajtás sebessége.
a Python 400-szor lassabb, mint a C++. De mi kap körül mindezt a gépi tanulás segítségével a könyvtárak írt hatékonyabb nyelveken, mint a C.
de mégis, a számítási terhelés nehezebb. És a Python egy memória disznó.
Szóval, mit tehetünk? Nem hozhatjuk ki mindkét világból a legjobbat!
nos, mielőtt következtetéseket vonna le, hadd mutassuk meg, mit kínálnak az MIT emberei.
Bemutatkozik Julia.
nem, ez nem egy másik humanoid vagy chatbot. Ez egy programozási nyelv.
a Pythonhoz hasonlóan a Julia is használható általános programozásra, de számos funkciója alkalmas tudományos számításokra és numerikus elemzésre. Először 2012-ben jelent meg. Stabil megjelenésével 2020-ban.
de mit kínál Julia? Először is, Julia gyors. Csakúgy, mint a Java, Julia egy just-in-time fordítót használ. Másodszor, Julia is könnyebben megtanulható, mint más számítási szempontból hatékony nyelvek. És mielőtt megkérdeznéd, Igen, Julia olyan egyszerű a szintaxis szempontjából, mint a Python.
de jobb, mint a Python? Ha igen, akkor milyen feltételekkel?
végezzünk egy kísérletet és lássuk.
mi lenne a képzés egy egyszerű CNN mind Python, valamint Julia. A CNN legstabilabb és leghatékonyabb implementációit használnánk mindkét nyelven, azonos architektúrával.
a Python esetében a TensorFlow-t használjuk. Juliának pedig fluxust használunk.jl, ami egy tiszta Julia stack. Íme néhány hivatkozás az Ön számára, hogy maga végezze el a kísérletet.
ellenőrizni fogjuk az egyes korszakok idejét, valamint az előfeldolgozási feladatok végrehajtási idejét.
mind a CNN-eket implementáljuk az MNIST adatkészletbe, mind az eredményeket megtekintjük. Megpróbálhat egy másik adatkészletet használni, és megnézheti, hogy az eredményeink kapcsolódnak-e hozzájuk.
a végrehajtási idők kiszámításához a Python időmodulját használjuk, azonban csak az előfeldolgozási idő kiszámításához szükséges, mivel a modell képzési ideje könnyen megtekinthető a modell kimenetén.fit () funkció maga.
import time
start_time = time.time()#Code
print("The time elapsed: ",time.time()-start_time)
Julia esetében egy nagyon hasznos makrót fogunk használni: @time. Az Általános előfeldolgozó kódon, valamint az egyes korszakonként használt vonatfunkción használjuk.
valami ilyesmi:
@time begin#Preprocessing codeend
miközben egyetlen lépésben használjuk, csak a mikro-t használhatjuk közvetlenül előtagként, mint például:
@time Flux.train!(loss, params(model), train_set, opt)
ne aggódjon, ha még nem érti a Julia szintaxist. Csak értsd meg, hogy megpróbáljuk mérni a végrehajtási időket.
néhány eredmény
a kísérlethez használt rendszer specifikációi:
Intel Core-i78550U — 16 GB RAM
- a Python teljes előfeldolgozási ideje 2,6 másodperc volt.
- A Julia teljes előfeldolgozási ideje 4 volt.2 másodperc, beleértve a modell előzetes összeállításának idejét.
- az idő per iteráció Python volt 20 másodperc per korszak.
- az iterációonkénti idő Julia-ban korszakonként 16 másodperc volt.
most azt gondolhatja, hogy ez nem annyira más és jobb a hatékonyság szempontjából.
Nos, van egy döntő különbség a végrehajtási kritériumok között. A Python kód végrehajtása közben a teljes CPU-fogyasztás 87 százalék volt. De Julia végrehajtása közben a teljes CPU-fogyasztás 18 százalék volt.
tehát, ha a Julia párhuzamos számításait használjuk, és teljes mértékben kihasználjuk a CPU előnyeit, az iterációonkénti idő akár 3,6 másodperc is lehet.
igen, láthatjuk, hogy Julia elég gyors a Pythonhoz képest. De ez nem feltétlenül jelenti azt, hogy hamarosan átveszi a Pythont.
az OK Python olyan könnyen adaptálható miatt hatalmas közösség. Juliának nincs akkora közössége, mint Pythonnak. Még egy dolog, hogy Julia alapértelmezés szerint nem használja a gép teljes számítási teljesítményét, amelyen fut. Ehhez bizonyos parancsokat és egy meghatározott végrehajtási módot kell használnia.
a Python most ebben a helyzetben van az egyszerűsége, valamint a könyvtárak és modulok miatt, amelyeken dolgozik. És Python olyan régóta velünk van. Julia most jött. Lehet, hogy még nem látjuk teljes potenciálját. De azt ígéri, hogy az adatszámítások egyik leggyakrabban használt nyelvévé válik.
Julia gyorsabb. Julia olyan egyszerű, mint a Python. De a kérdés csak az, hogy a fejlesztői közösség milyen gyorsan fogadja el ezt, és még jobbá teszi. Tényleg érdemes megtenni ezt a váltást? Azt hiszem, több adatra és esettanulmányra lesz szükségünk ennek megválaszolásához.
reméljük, hogy ez a cikk felkeltette a kíváncsiságot, hogy más nyelveket is megvizsgáljon a Pythonon kívül az AI-ben.
referenciák és további olvasmányok:
- Lauwens, B., & Downey, A. (ND). A lap eredeti címe: https://benlauwens.github.io/ThinkJulia.jl/latest/book.html
- Flux: The Julia Machine Learning Library. (ND). Forrás: https://fluxml.ai/Flux.jl/stable/
- konvolúciós neurális hálózat (CNN): TensorFlow Core. (ND). A lap eredeti címe: https://www.tensorflow.org/tutorials/images/cnn
- párhuzamos számítástechnika. (ND). A lap eredeti címe: https://docs.julialang.org/en/v1/manual/parallel-computing/