Apache MXNet - Einführung
In diesem Kapitel werden die Funktionen von Apache MXNet vorgestellt und die neueste Version dieses Deep-Learning-Software-Frameworks vorgestellt.
Was ist MXNet?
Apache MXNet ist ein leistungsstarkes Open-Source-Deep-Learning-Software-Framework-Instrument, mit dem Entwickler Deep-Learning-Modelle erstellen, trainieren und bereitstellen können. In den letzten Jahren waren die Auswirkungen des tiefen Lernens von der Gesundheitsversorgung über den Transport bis zur Herstellung und in der Tat in allen Bereichen unseres täglichen Lebens weit verbreitet. Heutzutage suchen Unternehmen nach tiefem Lernen, um einige schwierige Probleme wie Gesichtserkennung, Objekterkennung, optische Zeichenerkennung (OCR), Spracherkennung und maschinelle Übersetzung zu lösen.
Aus diesem Grund wird Apache MXNet unterstützt von:
Einige große Unternehmen wie Intel, Baidu, Microsoft, Wolfram Research usw.
Öffentliche Cloud-Anbieter, einschließlich Amazon Web Services (AWS) und Microsoft Azure
Einige große Forschungsinstitute wie Carnegie Mellon, MIT, die University of Washington und die Hong Kong University of Science & Technology.
Warum Apache MXNet?
Es gibt verschiedene Deep-Learning-Plattformen wie Torch7, Caffe, Theano, TensorFlow, Keras, Microsoft Cognitive Toolkit usw. Dann fragen Sie sich vielleicht, warum Apache MXNet? Schauen wir uns einige der Gründe dafür an:
Apache MXNet löst eines der größten Probleme bestehender Deep-Learning-Plattformen. Das Problem ist, dass man ein anderes System für eine andere Programmiervariante lernen muss, um Deep-Learning-Plattformen nutzen zu können.
Mit Hilfe von Apache MXNet können Entwickler die vollen Funktionen von GPUs sowie Cloud Computing nutzen.
Apache MXNet kann jede numerische Berechnung beschleunigen und legt besonderen Wert darauf, die Entwicklung und Bereitstellung von DNN (Deep Neural Networks) in großem Maßstab zu beschleunigen.
Es bietet den Benutzern die Möglichkeiten der imperativen und symbolischen Programmierung.
Verschiedene Funktionen
Wenn Sie nach einer flexiblen Deep-Learning-Bibliothek suchen, um schnell aktuelle Deep-Learning-Forschung zu entwickeln, oder nach einer robusten Plattform, um die Produktionsarbeitslast zu steigern, endet Ihre Suche bei Apache MXNet. Dies liegt an den folgenden Merkmalen:
Verteiltes Training
Unabhängig davon, ob es sich um Multi-GPU- oder Multi-Host-Training mit nahezu linearer Skalierungseffizienz handelt, können Entwickler mit Apache MXNet das Beste aus ihrer Hardware herausholen. MXNet unterstützt auch die Integration mit Horovod, einem Open Source-Framework für verteiltes Deep Learning, das bei Uber erstellt wurde.
Für diese Integration sind im Folgenden einige der in Horovod definierten gängigen verteilten APIs aufgeführt:
horovod.broadcast()
horovod.allgather()
horovod.allgather()
In dieser Hinsicht bietet MXNet folgende Funktionen:
Device Placement - Mit Hilfe von MXNet können wir einfach jede Datenstruktur (DS) spezifizieren.
Automatic Differentiation - Apache MXNet automatisiert die Differenzierung, dh Ableitungsberechnungen.
Multi-GPU training - Mit MXNet können wir mit der Anzahl der verfügbaren GPUs eine Skalierungseffizienz erzielen.
Optimized Predefined Layers - Wir können unsere eigenen Layer in MXNet codieren sowie die vordefinierten Layer auch auf Geschwindigkeit optimieren.
Hybridisierung
Apache MXNet bietet seinen Benutzern ein hybrides Front-End. Mit Hilfe der Gluon Python API kann es die Lücke zwischen seinen imperativen und symbolischen Fähigkeiten schließen. Dies kann durch Aufrufen der Hybridisierungsfunktionalität erfolgen.
Schnellere Berechnung
Die linearen Operationen wie Dutzende oder Hunderte von Matrixmultiplikationen sind der rechnerische Engpass für tiefe neuronale Netze. Um diesen Engpass zu beheben, bietet MXNet -
Optimierte numerische Berechnung für GPUs
Optimierte numerische Berechnung für verteilte Ökosysteme
Automatisierung gängiger Workflows, mit deren Hilfe der Standard-NN kurz ausgedrückt werden kann.
Sprachbindungen
MXNet ist tief in Hochsprachen wie Python und R integriert. Es bietet auch Unterstützung für andere Programmiersprachen wie z.
Scala
Julia
Clojure
Java
C/C++
Perl
Wir müssen keine neue Programmiersprache lernen, stattdessen ermöglicht MXNet in Kombination mit der Hybridisierungsfunktion einen außergewöhnlich reibungslosen Übergang von Python zur Bereitstellung in der Programmiersprache unserer Wahl.
Neueste Version MXNet 1.6.0
Die Apache Software Foundation (ASF) hat am 21. Februar 2020 die stabile Version 1.6.0 von Apache MXNet unter Apache License 2.0 veröffentlicht. Dies ist die letzte MXNet-Version, die Python 2 unterstützt, da die MXNet-Community dafür gestimmt hat, Python 2 in weiteren Versionen nicht mehr zu unterstützen. Schauen wir uns einige der neuen Funktionen an, die diese Version für ihre Benutzer bietet.
NumPy-kompatible Schnittstelle
Aufgrund seiner Flexibilität und Allgemeinheit wurde NumPy von Praktikern, Wissenschaftlern und Studenten des maschinellen Lernens häufig verwendet. Da wir jedoch wissen, dass heutzutage Hardwarebeschleuniger wie GPUs (Graphical Processing Units) zunehmend in verschiedene Toolkits für maschinelles Lernen (ML) integriert werden, müssen die NumPy-Benutzer auf neue Frameworks umsteigen, um die Geschwindigkeit von GPUs nutzen zu können mit unterschiedlicher Syntax.
Mit MXNet 1.6.0 entwickelt sich Apache MXNet zu einem NumPy-kompatiblen Programmiererlebnis. Die neue Benutzeroberfläche bietet Anwendern, die mit der NumPy-Syntax vertraut sind, eine gleichwertige Benutzerfreundlichkeit und Ausdruckskraft. Zusammen mit diesem MXNet 1.6.0 kann das vorhandene Numpy-System auch Hardwarebeschleuniger wie GPUs verwenden, um umfangreiche Berechnungen zu beschleunigen.
Integration mit Apache TVM
Apache TVM, ein Open-Source-End-to-End-Deep-Learning-Compiler-Stack für Hardware-Backends wie CPUs, GPUs und spezialisierte Beschleuniger, soll die Lücke zwischen produktivitätsorientierten Deep-Learning-Frameworks und leistungsorientierten Hardware-Backends schließen . Mit der neuesten Version MXNet 1.6.0 können Benutzer Apache (Inkubation) TVM nutzen, um leistungsstarke Operator-Kernel in der Programmiersprache Python zu implementieren. Zwei Hauptvorteile dieser neuen Funktion sind folgende:
Vereinfacht den früheren C ++ - basierten Entwicklungsprozess.
Ermöglicht die gemeinsame Nutzung derselben Implementierung für mehrere Hardware-Backends wie CPUs, GPUs usw.
Verbesserungen an vorhandenen Funktionen
Neben den oben aufgeführten Funktionen von MXNet 1.6.0 bietet es auch einige Verbesserungen gegenüber den vorhandenen Funktionen. Die Verbesserungen sind wie folgt:
Elementweise Operation für GPU gruppieren
Wie wir wissen, ist die Leistung von elementweisen Operationen die Speicherbandbreite, und das ist der Grund, warum das Verketten solcher Operationen die Gesamtleistung verringern kann. Apache MXNet 1.6.0 führt eine elementweise Operationsfusion durch, die nach Möglichkeit Just-in-Time-Fusionsoperationen generiert. Eine solche elementweise Betriebsfusion reduziert auch den Speicherbedarf und verbessert die Gesamtleistung.
Gemeinsame Ausdrücke vereinfachen
MXNet 1.6.0 eliminiert die redundanten Ausdrücke und vereinfacht die allgemeinen Ausdrücke. Eine solche Verbesserung verbessert auch die Speichernutzung und die Gesamtausführungszeit.
Optimierungen
MXNet 1.6.0 bietet außerdem verschiedene Optimierungen für vorhandene Funktionen und Operatoren:
Automatische gemischte Präzision
Gluon Fit API
MKL-DNN
Große Tensorunterstützung
TensorRT Integration
Gradientenunterstützung höherer Ordnung
Operators
Operator Performance Profiler
ONNX Import / Export
Verbesserungen an Gluon-APIs
Verbesserungen an Symbol-APIs
Mehr als 100 Fehlerbehebungen