Haben Sie jemals eine andere Programmiersprache für KI ausprobiert
Bist du ein KI-Enthusiast?
Ja?
Dann beantworte diese Frage: Welche Programmiersprache verwendest du, um Sachen für KI zu entwickeln?
Ihre Antwort ist Python. Seht! Wir wussten es.
Okay, wir sind keine Magier, aber es ist eine bekannte Tatsache. Python ist derzeit eine der beliebtesten Sprachen, nicht nur im maschinellen Lernen, sondern auch für normale Entwicklungszwecke. Bis Oktober 2019 verwenden über 8,2 Millionen Entwickler Python. Das sind 1 Million mehr als Java und über 6 Millionen mehr als Swift.
Python steht an erster Stelle, wenn es um die Entwicklung im Bereich der künstlichen Intelligenz geht.
Um es einfach zu beweisen, werden die meisten Enthusiasten nicht einmal eine andere Sprache als Python (und meistens R) kennen, die für maschinelles Lernen verwendet werden kann. Und das nur, weil es entmutigend erscheint, ML-Algorithmen in C oder Java zu codieren.
Python wird aufgrund seiner Einfachheit und Community häufig verwendet. Aber wir alle kennen einen großen Nachteil von Python.
Ja. Die Geschwindigkeit der Ausführung.
Python ist 400 mal langsamer als C++. Aber wir umgehen all dies beim maschinellen Lernen, indem wir die Bibliotheken verwenden, die in effizienteren Sprachen wie C geschrieben sind.
Trotzdem ist die Rechenlast höher. Python ist ein Memory Hog.
Was können wir also tun? Wir können nicht das Beste aus beiden Welten bekommen!
Nun, bevor Sie voreilige Schlüsse ziehen, lassen Sie uns Ihnen zeigen, was die Leute am MIT zu bieten haben.
Einführung in Julia.
Nein, es ist kein weiterer Humanoid oder Chatbot. Es ist eine Programmiersprache.
Genau wie Python kann Julia für die allgemeine Programmierung verwendet werden, aber viele der Funktionen eignen sich für wissenschaftliche Berechnungen und numerische Analysen. Es erschien erstmals 2012. Mit seiner stabilen Veröffentlichung im Jahr 2020.
Aber was hat Julia zu bieten? Nun, zuallererst ist Julia schnell. Genau wie Java verwendet Julia einen Just-in-Time-Compiler. Zweitens ist Julia auch einfacher zu erlernen als andere recheneffiziente Sprachen. Und bevor Sie fragen, ja, Julia ist in Bezug auf die Syntax so einfach wie Python.
Aber ist es besser als Python? Wenn ja, in welcher Form?
Lassen Sie uns ein Experiment durchführen und sehen.
Wir würden ein einfaches CNN sowohl auf Python als auch auf Julia trainieren. Wir würden die stabilsten und effizientesten Implementierungen von CNN in beiden Sprachen mit derselben Architektur verwenden.
Für Python verwenden wir Tensorflow. Und für Julia verwenden wir Flux.jl, das ist ein reiner Julia-Stack. Hier sind einige Referenzen für Sie, um das Experiment selbst durchzuführen.
Wir werden die Zeit für jede Epoche sowie die Implementierungszeiten für die Vorverarbeitungsaufgaben überprüfen.
Wir werden beide CNNs im MNIST-Datensatz implementieren und die Ergebnisse sehen. Sie können versuchen, einen anderen Datensatz zu verwenden und zu sehen, ob sich unsere Ergebnisse darauf beziehen.
Zur Berechnung der Ausführungszeiten verwenden wir das Zeitmodul in Python, es wird jedoch nur für die Vorverarbeitungszeitberechnung benötigt, da die Modelltrainingszeit leicht in der Ausgabe des Modells angezeigt werden kann.fit() Funktion selbst.
import time
start_time = time.time()#Code
print("The time elapsed: ",time.time()-start_time)
Für Julia verwenden wir ein sehr nützliches Makro: @time . Wir verwenden es sowohl für den gesamten Vorverarbeitungscode als auch für die Zugfunktion, die wir pro Epoche verwenden.
So etwas:
@time begin#Preprocessing codeend
Während der Verwendung in einem einzelnen Schritt können wir das Mikro direkt als Präfix verwenden, wie:
@time Flux.train!(loss, params(model), train_set, opt)
Mach dir keine Sorgen, wenn du die Julia-Syntax noch nicht verstehen kannst. Verstehen Sie einfach, dass wir versuchen, die Ausführungszeiten zu messen.
Einige Ergebnisse
Die Spezifikationen des für das Experiment verwendeten Systems:
Intel Core-i78550U — 16 GB RAM
- Die gesamte Vorverarbeitungszeit von Python betrug 2,6 Sekunden.
- Die gesamte Vorverarbeitungszeit von Julia betrug 4.2 sekunden, einschließlich der Zeit für die Vorkompilierung des Modells.
- Die Zeit pro Iteration in Python betrug 20 Sekunden pro Epoche.
- Die Zeit pro Iteration in Julia betrug 16 Sekunden pro Epoche.
Nun mag man meinen, das ist nicht so viel anders und besser in Sachen Effizienz.
Nun, es gibt einen entscheidenden Unterschied zwischen den Ausführungskriterien. Während der Ausführung von Python-Code betrug der Gesamt-CPU-Verbrauch 87 Prozent. Während der Ausführung von Julia betrug der CPU-Gesamtverbrauch jedoch 18 Prozent.
Wenn wir also die parallelen Berechnungen in Julia verwenden und die CPU voll ausnutzen, können wir die Zeit pro Iteration auf nur 3,6 Sekunden reduzieren.
Ja, wir können sehen, dass Julia im Vergleich zu Python ziemlich schnell ist. Aber das bedeutet nicht unbedingt, dass es Python bald übernehmen wird.
Der Grund, warum Python so leicht anpassbar ist, liegt an seiner riesigen Community. Julia hat keine so große Community wie Python. Eine weitere Sache ist, dass Julia standardmäßig nicht die volle Rechenleistung der Maschine verwendet, auf der sie ausgeführt wird. Sie müssen bestimmte Befehle und eine bestimmte Art der Ausführung verwenden, um dies zu erreichen.
Python ist gerade an dieser Position wegen seiner Einfachheit und der Bibliotheken und Module, mit denen es arbeitet. Und Python ist schon so lange bei uns. Julia kam gerade. Möglicherweise sehen wir sein volles Potenzial noch nicht. Aber es verspricht, eine der am häufigsten verwendeten Sprachen in Datenberechnungen zu werden.
Julia ist schneller. Julia ist so einfach wie Python. Aber die Frage ist nur, wie schnell die Entwickler-Community dies übernimmt und es noch besser macht. Lohnt es sich wirklich, diese Verschiebung vorzunehmen? Ich denke, wir werden mehr Daten und Fallstudien brauchen, um das zu beantworten.
Wir hoffen, dass dieser Artikel neugierig macht, andere Sprachen als Python in der KI zu betrachten.
Referenzen und weiterführende Literatur:
- Lauwens, B., & Downey, A. (n.d.). Abgerufen von https://benlauwens.github.io/ThinkJulia.jl/latest/book.html
- Flux: Die Julia Machine Learning Library. (n.d.). Abgerufen von https://fluxml.ai/Flux.jl/stable/
- Convolutional Neural Network (CNN) : TensorFlow Core. (n.d.). Abgerufen von https://www.tensorflow.org/tutorials/images/cnn
- Parallel Computing. (n.d.). Abgerufen von https://docs.julialang.org/en/v1/manual/parallel-computing/