PyTorch Lightning 1.0: Von 0 bis 600.000

Lightning enthüllt die endgültige API, eine neue Website und einen kleinen Einblick in unsere neue native Plattform für Trainingsmodelle in der Cloud.

(19. Oktober 2020)

Wir haben in den letzten Monaten hart daran gearbeitet, unsere API zu optimieren und unsere docs , die -Tutorials aufzeichnen, und es ist endlich Zeit, alle V1.0.0 von PyTorch Lightning mit Ihnen zu teilen. Möchten Sie die blitzschnelle Antwort auf Skalierungsmodelle in der Cloud? Lesen Sie weiter.

Die Blitz-DNA

Die KI-Forschung hat sich viel schneller entwickelt, als jedes einzelne Framework mithalten kann. Das Feld des tiefen Lernens entwickelt sich ständig weiter, hauptsächlich in Bezug auf Komplexität und Umfang. Lightning bietet eine Benutzererfahrung, die für die Welt komplexer Modellinteraktionen entwickelt wurde, während alle störenden Details des Engineerings wie Multi-GPU- und Multi-TPU-Schulungen, frühzeitiges Anhalten, Protokollieren usw. abstrahiert werden.

Frameworks wie PyTorch wurden für eine Zeit entwickelt, in der sich die KI-Forschung hauptsächlich mit Netzwerkarchitekturen befasste, einem nn.Modul, das die Abfolge von Operationen definieren kann.

VGG16

Und diese Frameworks leisten einen unglaublichen Beitrag zur Bereitstellung aller Teile, um äußerst komplexe Modelle für Forschung oder Produktion zusammenzustellen. Sobald jedoch Modelle wie ein GAN, ein BERT oder ein Autoencoder miteinander interagieren, bricht dieses Paradigma und die immense Flexibilität bald zu einer Boilerplate, die im Projektmaßstab nur schwer aufrechtzuerhalten ist.

Im Gegensatz zu früheren Frameworks wurde PyTorch Lightning entwickelt, um eine Sammlung von Modellen zu kapseln, die miteinander interagieren , was wir nennen Deep-Learning-Systeme. Lightning wurde für die komplizierteren Forschungs- und Produktionsfälle der heutigen Welt entwickelt, in denen viele Modelle nach komplizierten Regeln miteinander interagieren.

AutoEncoder-System

Das zweite Schlüsselprinzip von PyTorch Lightning ist, dass Hardware und der „Wissenschaft“ -Code sein müssen getrennt. Lightning wurde entwickelt, um massive Berechnungen im Maßstab zu nutzen, ohne dem Benutzer eine dieser Abstraktionen aufzudecken. Durch diese Trennung erhalten Sie neue Fähigkeiten Dies war vor nicht möglich, z. B. das Debuggen Ihres 512-GPU-Jobs auf Ihrem Laptop mithilfe von CPUs, ohne dass Sie Ihren Code ändern mussten.

Zuletzt wurde Lightning mit der Vision von erstellt Um ein Community-gesteuertes Framework zu werden .

Das Erstellen guter Deep-Learning-Modelle erfordert eine Menge Fachwissen und Kleinigkeiten Tricks, mit denen das System funktioniert. Auf der ganzen Welt implementieren Hunderte von unglaublichen Ingenieuren und Doktoranden immer wieder denselben Code. Lightning hat jetzt eine wachsende Community von über 300 der talentiertesten Deep-Learning-Mitarbeiter, , die sich dafür entscheiden, dasselbe zuzuweisen Energie und machen genau die gleichen Optimierungen, aber stattdessen profitieren Tausende von Menschen von ihren Bemühungen.

Was ist neu in 1.0.0?

Lightning 1.0.0 signalisiert ein stabiles und final API.

Dies bedeutet, dass die großen Forschungsprojekte, die von Lightning abhängen, sich darauf verlassen können, dass ihr Code in Zukunft nicht kaputt geht oder sich ändert.

Forschung + Produktion

Die Kernstärke von Lightning besteht darin, den Stand der Technik zu ermöglichen KI-Forschung soll in großem Maßstab stattfinden. Es ist ein Framework, das für professionelle Forscher entwickelt wurde, um die schwierigsten Ideen auf den größten Rechenressourcen auszuprobieren, ohne an Flexibilität zu verlieren.

Wir freuen uns, Ihnen mitteilen zu können, dass Lightning 1.0.0 jetzt also macht es trivial, diese Modelle in großem Maßstab bereitzustellen. Der gesamte Lightning-Code stellt sicher, dass alles problemlos in onnx und torchscript exportiert werden kann.

Also Dies bedeutet, dass Ihr Team aus Datenwissenschaftlern, Forschern usw. jetzt BE die Personen sein kann, die also Modelle in Produktion bringen. Sie brauchen keine großen Teams von Ingenieuren für maschinelles Lernen.

Dies ist ein Hauptgrund, warum führende Unternehmen Lightning verwenden, um die Zeit bis zur Produktion drastisch zu verkürzen, ohne die für die Forschung erforderliche Flexibilität zu verlieren .

Und genau das macht unser Unternehmensangebot: Grid AI ist unsere native Plattform für maßstabsgetreue Trainingsmodelle in der Cloud. Mit Grid kann jeder, der Deep-Learning-Modelle erstellt, auf umfangreichen Berechnungen iterieren und diese Modelle dann sofort in einer skalierbaren Umgebung bereitstellen, die den größten Datenverkehr verarbeiten kann, den Sie auf ein Deep-Learning-System werfen können.

Melden Sie sich für früher Zugriff hier .

Gitterzug

Website

Sie werden auch feststellen, dass wir alle Blog-Beiträge , blitzschnelle Video-Tutorials , Community-Projekte und andere Ressourcen unter unserer brandneue Homepage , um alle Dinge des Blitzes zu präsentieren!

Metriken

pytorch\_lightning.metrics ist eine Metrik-API, die für die einfache Entwicklung und Verwendung von Metriken in PyTorch und PyTorch Lightning erstellt wurde. Die aktualisierte API bietet eine integrierte Methode zum Berechnen der Metrik über mehrere GPUs (Prozesse) für jeden Schritt, während gleichzeitig Statistiken gespeichert werden, mit denen Sie die Metrik am Ende einer Epoche berechnen können, ohne sich um irgendwelche kümmern zu müssen der mit dem verteilten Backend verbundenen Komplexität.

Es wird streng für alle Randfälle getestet und enthält eine wachsende Liste gängiger Metrikimplementierungen, z. B. Genauigkeit , Präzision , Rückruf , Fbeta , MeanSquaredError und mehr.

Gewusst wie Verwenden Sie .log in LightningModule

Um Ihre benutzerdefinierte Metrik zu implementieren, unterteilen Sie einfach die Basisklasse Metric und implementieren Sie die Methoden \_\_init\_\_(), update() und compute(). Sie müssen lediglich add\_state() korrekt aufrufen, um eine benutzerdefinierte Metrik mit DDP zu implementieren. reset() wird für metrische Statusvariablen aufgerufen, die mit add\_state() hinzugefügt wurden.

Manuelle und automatische Optimierung

Mit Lightning müssen Sie sich keine Gedanken darüber machen, wann Sie Absolventen aktivieren / deaktivieren, einen Rückwärtsdurchlauf durchführen oder Optimierer aktualisieren müssen Solange Sie einen Verlust mit einem angehängten Diagramm aus dem Trainingsschritt zurückgeben, automatisiert Lightning die Optimierung.

Für bestimmte Forschungsarbeiten wie GANs, Verstärkungslernen oder etwas mit mehreren Optimierern oder einer inneren Schleife können Sie jedoch die automatische Optimierung deaktivieren und die Trainingsschleife selbst vollständig steuern.

Deaktivieren Sie zunächst die automatische Optimierung:

trainer = Trainer(automatic\_optimization=False)

Jetzt besitzen Sie die Zugschleife!

Protokollierung

Lightning macht die Integration in Logger sehr einfach – rufen Sie einfach die log() -Methode an einer beliebigen Stelle auf auf Ihrem LightningModule, und es wird die protokollierte Menge an den Logger Ihrer Wahl gesendet. Wir verwenden standardmäßig Tensorboard, aber Sie können jeden gewünschten unterstützten Logger auswählen.

Je nachdem, wo .log() wird von aufgerufen. Lightning bestimmt automatisch, wann die Protokollierung stattfinden soll (bei jedem Schritt oder jeder Epoche). Natürlich können Sie das Standardverhalten überschreiben, indem Sie on\_step und on\_epoch Optionen. Wenn Sie on\_epoch=True einstellen, werden Ihre protokollierten Werte über die gesamte Trainingsepoche hinweg akkumuliert.

Datenfluss

Wir haben EvalResult und TrainResult abgelehnt, um den Datenfluss zu vereinfachen und die Protokollierung von Daten in Trainings- und Validierungsschleifen zu entkoppeln.

Jede Schleife (Training, Validierung, test) verfügt über drei Hooks, die Sie implementieren können:

  • x\_step
  • x\_step\_end
  • x\_epoch\_end

Um den Datenfluss zu veranschaulichen, verwenden wir die Trainingsschleife (dh: x = Training)

outs = []
for batch in data:
out = training\_step(batch)
outs.append(out)training\_epoch\_end(outs)

Alles, was Sie in training\_step zurückgeben, kann als Eingabe für training\_epoch\_end.

Gleiches gilt für Validierungs- und Testschritte: alles, was in validation\_step oder test\_step kann als Eingabe für {validation/test}\_step\_end oder {validation/test}\_epoch\_end.Wenn Sie verteilte DP- oder DDP2-Modi verwenden (dh einen Stapel auf GPUs aufteilen), verwenden Sie die x\_step\_end, um manuell zu aggregieren (oder implementieren Sie sie nicht, um Lightning automatisch zuzulassen). Aggregat für Sie).

Checkpointing

Lightning speichert jetzt automatisch einen Checkpoint für Sie in Ihrem aktuellen Arbeitsverzeichnis mit dem Status Ihrer letzten Trainingsepoche. Auf diese Weise können Sie sicherstellen, dass Sie das Training fortsetzen können, falls es unterbrochen wurde.

Sie können das Checkpointing-Verhalten anpassen, um eine beliebige Anzahl Ihrer Trainings- oder Validierungsschritte zu überwachen. Wenn Sie beispielsweise Ihre Prüfpunkte basierend auf Ihrem Validierungsverlust aktualisieren möchten:

  1. Berechnen Sie eine Metrik oder eine andere Menge, die Sie überwachen möchten, z. B. den Validierungsverlust.
  2. Protokoll die Menge unter Verwendung der Methode log() mit einem Schlüssel wie val\_loss.
  3. Initialisieren des Rückrufs

    ModelCheckpoint und Festlegen Monitor als Schlüssel Ihrer Menge.

  4. Leiten Sie den Rückruf an checkpoint\_callback Trainerflag weiter.

Lesen Sie alle API-Änderungen, einschließlich vieler Fehlerkorrekturen, in unseren Versionshinweisen .

Danke

Ohne würden wir V1.0.0 nicht feiern Die unglaubliche Arbeit unseres brillanten Kernteams , das rund um die Uhr arbeitet, um jedes Detail richtig zu machen, ständige Unterstützung durch die PyTorch-Team und natürlich unsere Community-Mitglieder. Wir möchten uns persönlich bei allen bedanken, die PRs beigesteuert oder überprüft, Feedback und Probleme eingereicht, in unserem Forum oder in unserer lockeren Community geantwortet haben. Dieser ist für euch alle!

hier anmelden

Möchten Sie mehr über Blitz erfahren? Gehen Sie zu unserer Website , lesen Sie die Dokumente oder treten Sie bei unser erstes virtuelles Treffen – Frag mich alles mit William Falcon , Schöpfer von Lightning! Das Treffen findet am 21. Oktober 2020 um 13:00 Uhr EST statt. Bringen Sie also Ihr Mittag- oder Abendessen mit und erfahren Sie mehr über neue Funktionen, Raster oder alles andere, was Sie schon immer wissen wollten, aber nie gefragt haben. Melden Sie sich hier an .