někdy vyzkoušeli jiný programovací jazyk pro AI
jste nadšenec AI?
Ano?
pak odpovězte na tuto otázku: který programovací jazyk používáte pro vývoj věcí pro AI?
vaše odpověď je Python. Vidíš! Věděli jsme to.
dobře, nejsme kouzelníci, ale je to dobře známý fakt. Python je jedním z nejpopulárnějších jazyků právě teď, a to nejen ve strojovém učení, ale také pro běžné vývojové účely. Od října 2019 používá Python více než 8,2 milionu vývojářů. Což je o 1 milion více než Java a více než 6 milion více než Swift.
Python je na prvním místě, pokud jde o vývoj v oblasti umělé inteligence.
Chcete-li to jednoduše dokázat, většina nadšenců ani nezná žádný jiný jazyk než Python (a R většinou), který lze použít pro strojové učení. A je to jen proto, že se zdá být skličující kódovat ml algoritmy v C nebo Javě.
Python je široce používán díky své jednoduchosti a komunitě. Ale všichni víme jednu velkou nevýhodu Pythonu.
Jo. Rychlost provedení.
Python je 400krát pomalejší než c++. Ale to vše se ve strojovém učení obejdeme pomocí knihoven napsaných v efektivnějších jazycích, jako je C.
ale přesto je výpočetní zatížení těžší. A také, Python je paměť prase.
Takže, co můžeme dělat? Nemůžeme dostat to nejlepší z obou světů!
No, než začnete dělat závěry, ukážeme vám, co lidé na MIT mohou nabídnout.
Představujeme Julii.
ne, není to další humanoid nebo chatbot. Jedná se o programovací jazyk.
stejně jako Python může být Julia použita pro obecné programování, ale mnoho funkcí je vhodných pro vědecké výpočty a numerickou analýzu. Poprvé se objevil v roce 2012. Se stabilním vydáním v roce 2020.
ale co může Julia nabídnout? No, Za prvé, Julia je rychlá. Stejně jako Java, Julia používá just-in-time kompilátor. Za druhé, Julia se také snadněji učí než jiné výpočetně efektivní jazyky. A než se zeptáte, Ano, Julia je z hlediska syntaxe stejně jednoduchá jako Python.
ale je to lepší než Python? Pokud ano, pak za jakých podmínek?
pojďme provést experiment a uvidíme.
trénovali bychom jednoduchou CNN jak na Pythonu, tak na Julii. Použili bychom nejstabilnější a nejúčinnější implementace CNN v obou jazycích se stejnou architekturou.
pro Python používáme Tensorflow. A pro Julii používáme Flux.jl, což je čistá Julia stack. Zde je několik odkazů pro vás, provést experiment sami.
budeme kontrolovat čas pro každou epochu, stejně jako implementační časy pro úkoly před zpracováním.
budeme implementovat obě CNN na datovém souboru MNIST a uvidíme výsledky. Můžete zkusit použít jinou datovou sadu a zjistit, zda se k nim naše výsledky vztahují.
pro výpočet doby provádění používáme časový modul v Pythonu, je však vyžadován pouze pro výpočet času před zpracováním, protože čas tréninku modelu lze snadno zobrazit na výstupu modelu.fit () funkce sama.
import time
start_time = time.time()#Code
print("The time elapsed: ",time.time()-start_time)
pro Julii budeme používat velmi užitečné makro: @time. Používáme jej na celkovém kódu před zpracováním i na funkci vlaku, kterou používáme pro každou epochu.
něco takového:
@time begin#Preprocessing codeend
při použití v jednom kroku můžeme použít mikro přímo jako předponu, jako:
@time Flux.train!(loss, params(model), train_set, opt)
nebojte se, pokud ještě nedokážete pochopit syntaxi Julie. Jen pochopte, že se snažíme měřit doby provedení.
některé výsledky
specifikace systému použitého pro experiment:
Intel Core-i78550U-16 GB RAM
- celková doba předběžného zpracování Pythonu byla 2,6 sekundy.
- celková doba předzpracování Julie byla 4.2 sekundy, včetně času na předběžnou kompilaci modelu.
- čas na iteraci v Pythonu byl 20 sekund na epochu.
- čas na iteraci v Julii byl 16 sekund na epochu.
Nyní si možná myslíte, že to není tolik odlišné a lepší z hlediska účinnosti.
No, existuje jeden zásadní rozdíl mezi kritérii provedení. Při provádění kódu Python byla celková spotřeba procesoru 87 procent. Ale při provádění Julia, celková spotřeba CPU byla 18 procent.
takže pokud použijeme paralelní výpočty v Julii a plně využijeme CPU, můžeme získat čas na iteraci tak nízký jako 3,6 sekundy.
Ano, vidíme, že Julia je ve srovnání s Pythonem docela rychlá. Ale to nutně neznamená, že se chystá převzít Python v dohledné době.
důvodem, proč je Python tak snadno přizpůsobitelný, je jeho obrovská komunita. Julia nemá tak velkou komunitu jako Python. Ještě jedna věc je, že Julia ve výchozím nastavení nevyužívá plný výpočetní výkon stroje, na kterém běží. K tomu je třeba použít určité příkazy a konkrétní způsob provedení.
Python je právě teď na této pozici kvůli své jednoduchosti a knihovnám a modulům, na kterých pracuje. A Python je s námi tak dlouho. Julia právě přišla. Možná ještě nevidíme jeho plný potenciál. Ukazuje však slib, že se stane jedním z nejpoužívanějších jazyků v datových výpočtech.
Julia je rychlejší. Julia je tak jednoduchá jako Python. Jedinou otázkou však je, jak rychle to vývojářská komunita přijme a ještě zlepší. Opravdu stojí za to udělat ten posun? Myslím, že budeme potřebovat více dat a případových studií, abychom na to odpověděli.
doufáme, že tento článek vštípí zvědavost podívat se na jiné jazyky mimo Python v AI.
reference a další čtení:
- Lauwens, B., & Downey, a. (n. d.). Citováno z https://benlauwens.github.io/ThinkJulia.jl/latest/book.html
- Flux: Julia Machine Learning Library. (neuvedeno). Citováno z https://fluxml.ai/Flux.jl/stable/
- konvoluční neuronová síť (CNN): TensorFlow Core. (neuvedeno). Citováno z https://www.tensorflow.org/tutorials/images/cnn
- paralelní výpočty. (neuvedeno). Citováno z https://docs.julialang.org/en/v1/manual/parallel-computing/