Hallo Habr! Ich präsentiere Ihnen die Übersetzung des Artikels
„Warum Swift das nächste große Ding im Deep Learning sein kann“ von Max Pechyonkin, der mich interessierte und in dem der Autor die Sprache bespricht, in der Deep Training in den kommenden Jahren durchgeführt wird.
Wenn Sie ein gründliches Training absolvieren, sollten Sie höchstwahrscheinlich mit dem Erlernen von Swift beginnen
Eintrag
Wenn Sie programmieren, denken Sie höchstwahrscheinlich, wenn Sie Swift hören, daran, Anwendungen unter iOS und MacOS zu entwickeln. Wenn Sie eingehend trainieren, sollten Sie von
Swift for Tensorflow (S4TF) gehört haben. Dann fragen Sie sich vielleicht: „Warum hat Google eine Version von TensorFlow für Swift erstellt? Immerhin gibt es bereits Versionen für Python und C ++, warum dann eine andere Sprache? “ In diesem Beitrag werde ich versuchen, diese Frage zu beantworten und die Gründe anzugeben, warum Sie S4TF sowie die Swift-Sprache selbst genau überwachen sollten. Ich werde nicht versuchen, eine detaillierte Analyse vorzunehmen, ich werde nur versuchen, das Gesamtbild mit vielen Links zu beschreiben. Wenn Sie interessiert sind, können Sie tiefer graben.
Swift hat sehr starke Unterstützung
Swift wurde von
Chris Luttner bei seiner Arbeit bei Apple entwickelt. Jetzt arbeitet Chris für
Google Brain (eines der besten Forschungsteams für künstliche Intelligenz der Welt). Die Tatsache, dass der Schöpfer der Swift-Sprache jetzt im Labor arbeitet, das sich mit eingehenden Schulungen befasst, zeigt die Ernsthaftigkeit dieses Projekts.
Vor einiger Zeit haben die Leute bei Google erkannt, dass Python und eine wunderbare Sprache immer noch viele Einschränkungen aufweisen, die schwer zu überwinden sind. Für TensorFlow wurde eine neue Sprache benötigt, und nach langem Überlegen wurde Swift als Kandidat ausgewählt. Ich werde hier nicht auf Details eingehen, aber
hier ist ein Dokument, das Python-Fehler beschreibt sowie welche anderen Sprachen berücksichtigt wurden und wie alles in Swift zusammengekommen ist.
Swift for TensorFlow ist viel mehr als nur eine Bibliothek
Swift for TensorFlow ist nicht nur TF für eine weitere Sprache. Dies ist im Wesentlichen ein weiterer Zweig (im
git- Sinne) der Swift-Sprache selbst. Dies bedeutet, dass S4TF keine Bibliothek ist. Es ist eine Sprache mit eigenen Regeln und eigenen integrierten Funktionen, die alle von TensorFlow benötigten Funktionen unterstützen. Zum Beispiel verfügt S4TF über ein sehr leistungsfähiges System zur
automatischen Differenzierung : Es ist eines der grundlegenden Dinge beim tiefen Lernen und wird zur Berechnung von Gradienten benötigt. Vergleichen Sie dies mit Python, bei dem die automatische Differenzierung nicht die Hauptkomponente der Sprache ist. Einige Funktionen, die ursprünglich als Teil von S4TF entwickelt wurden, wurden später in die Swift-Sprache selbst integriert.
Schnell schnell
Als ich herausfand, dass Swift so schnell wie C ist, war ich erstaunt. Ich wusste, dass C stark optimiert war und eine sehr hohe Geschwindigkeit erreichen konnte, aber dies lag an der Verwaltung des Mikrospeichers, und daher hatte C Probleme mit der Speichersicherheit. Außerdem ist C nicht so einfach zu lernen.
Swift läuft jetzt in numerischen Berechnungen
so schnell wie C, hat keine Probleme mit der Speichersicherheit und ist viel einfacher zu erlernen. Der LLVM-Compiler von Swift ist sehr leistungsfähig und verfügt über eine sehr effiziente Optimierung. Er bietet eine sehr schnelle Codegeschwindigkeit.
Sie können Python, C und C ++ in Swift verwenden
Da sich Swift für maschinelles Lernen in einem sehr frühen Stadium seiner Entwicklung befindet, wurden nicht viele Bibliotheken für MO dafür erstellt. Sie sollten sich darüber keine Sorgen machen, da Swift eine erstaunliche
Python-Kompatibilität mit Python aufweist. Sie importieren einfach eine beliebige Python-Bibliothek in Swift und es funktioniert. Sie können auch C- und C ++ - Bibliotheken in Swift importieren (für C ++ müssen Sie sicherstellen, dass die Header-Dateien in reinem C ohne C ++ - Funktionen geschrieben sind).
Zusammenfassend lässt sich sagen, dass Sie die entsprechenden Python-, C- oder C ++ - Pakete importieren können, wenn Sie bestimmte Funktionen benötigen, diese jedoch noch nicht in Swift implementiert sind.
Beeindruckend!
Swift kann sehr tief gehen
Wenn Sie jemals TensorFlow verwendet haben, haben Sie dies höchstwahrscheinlich mit dem Python-Paket getan. Unter der Haube verwendet die Python-Version der TensorFlow-Bibliothek C-Code auf sehr niedrigem Niveau. Wenn Sie also eine Funktion in TensorFlow aufrufen, verwenden Sie auf einer bestimmten Ebene C-Code. Dies bedeutet, dass die Tiefe, in der Sie den Quellcode überprüfen können, begrenzt ist. Wenn Sie beispielsweise sehen möchten, wie Faltungen implementiert werden, wird Python-Code nicht angezeigt, da sie in C implementiert sind.
Swift ist anders. Chris Luttner nannte Swift „
syntaktischen Zucker für LLVM [Assemblersprache]“. Dies bedeutet, dass Swift tatsächlich fast direkt mit Hardware arbeitet und dazwischen keine anderen Codezeilen in C geschrieben sind. Dies bedeutet auch, dass Swift sehr schnell ist, wie ich oben beschrieben habe. Dies alles führt dazu, dass Sie als Entwickler den Code sowohl auf sehr hoher als auch auf sehr niedriger Ebene überprüfen können, ohne C verwenden zu müssen.
Was weiter?
Swift ist nur ein Teil der umfassenden Lerninnovationen, die bei Google durchgeführt werden. Es gibt eine weitere Komponente, die ebenfalls sehr stark miteinander verbunden ist:
MLIR ,
dh mehrstufige Zwischendarstellung. MLIR wird eine einheitliche Compiler-Infrastruktur sein, mit der Sie Code in Swift (oder einer anderen Sprache) schreiben und auf jeder unterstützenden Hardware kompilieren können. Jetzt gibt es viele Compiler für verschiedene Zielgeräte, aber MLIR kann dies ändern. Es ermöglicht nicht nur die Wiederverwendung von Code, sondern auch das Schreiben eigener Compilerkomponenten auf niedriger Ebene. Außerdem können Forscher mithilfe von maschinellem Lernen Algorithmen auf niedriger Ebene optimieren.
Während MLIR als Compiler für maschinelles Lernen fungiert, sehen wir auch die Möglichkeit, Methoden für maschinelles Lernen in Compilern zu verwenden. Dies ist besonders wichtig, da die Anzahl der Ingenieure, die numerische Bibliotheken entwickeln, nicht so schnell wächst wie die Vielfalt der Modelle oder Hardware für maschinelles Lernen.
Stellen Sie sich vor, Sie verwenden Deep Learning, um Algorithmen auf niedriger Ebene für die Partitionierung des Speichers in Daten zu optimieren (
Halide versucht, ein ähnliches Problem zu lösen). Und dies ist nur der Anfang. Wir warten auf viele weitere kreative Anwendungen, die maschinelles Lernen in Compilern verwenden.
Zusammenfassung
Wenn Sie auf dem Gebiet des tiefen Lernens sind, sollten Sie wahrscheinlich anfangen, Swift zu lernen. Dies bringt viele Vorteile gegenüber Python. Google investiert ernsthaft in die Bereitstellung von Swift als Hauptkomponente seiner TensorFlow ML-Infrastruktur, und Swift wird höchstwahrscheinlich zu einer umfassenden Lernsprache. Wenn Sie bereits anfangen, Swift zu lernen und zu verwenden, erhalten Sie den Pioniervorteil.