Alchemist, ist das der Liebesofen deiner Träume?

Erstens der Schmerz der Alchemie

Ob es sich um akademische Forschung oder industrielle Umsetzung handelt, Pytorch ist derzeit fast das bevorzugte Framework für die Alchemie.

Der Erfolg von Pytorch liegt nicht nur in seinem prägnanten und konsistenten API-Design, sondern auch in seiner umfangreichen und leistungsstarken Modellbibliothek in seiner Ökologie.

Wir werden jedoch feststellen, dass die von den verschiedenen Pytorch-Modellbibliotheken bereitgestellten Trainings- und Verifizierungscodes sehr unterschiedlich sind.

Der von Torchvision bereitgestellte offizielle Beispielcode besteht hauptsächlich aus einer train_one_epoch- und einer Evaluierungsfunktion, die mit vielen abhängigen Funktionen verknüpft ist, von denen jede über einen Satz zur Erkennung und Segmentierung verfügt.

Der Hauptteil der Yolo-Serie besteht aus einer Vielzahl von Trainern mit unterschiedlichen Stilen, die den DDP-Modus unterstützen. Jede unterschiedliche Yolo-Version wird sich stark verändern, was es für verschiedene Yolo-Versionen schwierig macht, universell zu sein.

Die umwerfende Transformer-Bibliothek hat auch einen eigenen Trainer basierend auf pytorch_lightning erstellt, der jedoch nicht mit pytorch_lightning kompatibel ist.

Die sehr bekannte Facebook-Zielerkennungsbibliothek Detectron2 hat auch einen eigenen Trainer mit einem globalen CFG-Parametereinstellungsobjekt zum Trainieren des Modells erstellt.

Es gibt auch die Bibliothek segmentation_models.pytorch, in der ich eine stärker semantische Segmentierung verwende und ein TrainEpoch und ein ValidEpoch für Training und Überprüfung entworfen habe.

Beim Erlernen und Verwenden dieser verschiedenen Pytorch-Modellbibliotheken hat mir der Versuch, diese Trainings- und Validierungscodes zu lesen, zu verstehen und zu ändern, zehntausend Punkte geschadet.

Einige Designs sind sehr schlecht, mit mehr als einem Dutzend Verschachtelungsebenen, und einige Implementierungen sind sehr schmutzig, da verschiedene unterstrichene private Variablen überall herumfliegen.

Es macht Sie jedes Mal entmutigt, wenn Sie es ändern und einige gewünschte Funktionen hinzufügen möchten.

Ich möchte nur das Modell verfeinern. Warum sollte ich mich mit so viel Müllcode belästigen?

02009be0a81f7c8456c4fd92b1797d97.png

1. Traumofen

All dieses Leid lässt mich die Schönheit von Keras im Tensorflow vermissen.

Erinnern Sie sich an die Dreierkombination aus Kompilieren, Anpassen und Auswerten in Keras? Alles ist so natürlich wie fließende Wolken und fließendes Wasser, wahrlich für den Menschen.

Und wenn Sie sich eine mit Keras implementierte Modellbibliothek ansehen, können Training und Verifizierung fast denselben Satz von Schnittstellen verwenden, und es gibt nicht so viele unerklärliche wilde Trainer.

Kann ich ein auf Pytorch basierendes Modelltrainingstool erstellen, das über eine so einfache und benutzerfreundliche Oberfläche wie Keras und leistungsstarke Funktionen verfügt, der Implementierungscode jedoch sehr kurz und leicht verständlich und leicht zu ändern ist?

Von der Veröffentlichung von Version 1.0 etwa im Juli 2020 bis zur neuesten Version von Version 3.85 habe ich bei der Arbeit weiterhin ein Tool verwendet und verfeinert und es insgesamt mehr als 70 Mal eingereicht und geändert.

Vor kurzem ist dieses Werk, das ich sorgfältig geformt habe, endlich zu etwas herangewachsen, das meiner Meinung nach nahezu perfekt ist.

Sie hat einen schönen Namen: Torchkeras.

Ja, sie besitzt sowohl die Beweglichkeit einer Fackel als auch die Eleganz von Keras, und ihre Schönheit ist unvergleichlich

Sie ist der Ofen meiner Träume~

Zweitens, Designkonzept

Torchkeras ist ein allgemeines Pytorch-Modell-Trainingsvorlagen-Tool, das gemäß den folgenden Zielen entwickelt und implementiert wird:

  • Gut aussehend (eleganter Code, schönes Protokoll, integrierte Visualisierung)

  • Einfach zu verwenden (einfach zu verwenden, unterstützt allgemeine Funktionen wie Fortschrittsbalken, Bewertungsindex, Frühstopp usw., unterstützt erweiterte Funktionen wie Tensorboard, Wandb-Rückruffunktion und unterstützt Multi-GPU-DDP-Modus-Training)

  • Leicht zu ändern (Änderung ist einfach, der Kerncode ist modular, nur etwa 200 Zeilen und bietet umfangreiche Anwendungsfälle für Änderungen)

3. Anwendung

Installieren Sie Torchkeras

pip install torchkeras

Durch die Verwendung von Torchkeras müssen Sie keine eigene Trainingsschleife für das Pytorch-Modell schreiben. Sie müssen dies nur in zwei Schritten tun.

(1) Erstellen Sie Ihr Modellstrukturnetz und übergeben Sie es und die Verlustfunktion dann an Torchkeras.KerasModel, um ein Modell zu erstellen.

(2) Verwenden Sie die Anpassungsmethode des Modells, um Ihre Trainingsdaten und Verifizierungsdaten zu trainieren. Die Trainingsdaten und Verifizierungsdaten müssen in zwei DataLoader gekapselt werden.

Der Kernnutzungscode sieht folgendermaßen aus:

import torch 
import torchkeras
import torchmetrics

model = torchkeras.KerasModel(net,
                              loss_fn = nn.BCEWithLogitsLoss(),
                              optimizer= torch.optim.Adam(net.parameters(),lr = 1e-4),
                              metrics_dict = {"acc":torchmetrics.Accuracy(task='binary')}
                             )
dfhistory=model.fit(train_data=dl_train, 
                    val_data=dl_val, 
                    epochs=20, 
                    patience=3, 
                    ckpt_path='checkpoint.pt',
                    monitor="val_acc",
                    mode="max",
                    plot=True
                   )

Führen Sie den Trainingscode im Jupyter-Notebook aus. Sie sehen eine Trainingsvisualisierung wie die folgende und einen Fortschrittsbalken für das Trainingsprotokoll.

c5c6afdbe98315b05d5f8149e34c43d2.png

30dbdce0c53f95dae6fc4395b14ec328.png

Viertens die Hauptmerkmale

Torchkeras unterstützt die folgenden Funktionsmerkmale, die Startversion, die diese Funktionen stabil unterstützt, und die Quellen der Bibliotheken, auf die diese Funktionen verweisen oder von denen sie abhängen, sind in der folgenden Tabelle aufgeführt.

7d4c8109ef47a7ab8c0390406504ea9c.png

Fünftens das grundlegende Beispiel

Das folgende Beispiel ist das Grundbeispiel von Torchkeras, das die Hauptfunktionen von Torchkeras demonstriert.

Einschließlich Grundschulung, Verwendung von Wandb zur Visualisierung, Verwendung von Wandb zum Anpassen von Parametern, Verwendung von Tensorboard zur Visualisierung, Verwendung von Training im Multi-GPU-DDP-Modus usw.

bbef422f3cf2692fba408a0185510ed5.png

Sechs fortgeschrittene Beispiele

Das folgende Beispiel ist ein erweitertes Anwendungsbeispiel für Torchkeras. Aufgrund der unterschiedlichen Eingabedatenstruktur müssen einige dieser Beispiele das Kernmodul StepRunner von Torchkeras ändern.

Diese Änderung ist eigentlich sehr einfach. Halten Sie lediglich die Ausgabe jedes Moduls mit dem ursprünglichen Implementierungsformat in Einklang, und die Zwischenverarbeitungslogik kann je nach Bedarf flexibel angepasst werden.

ab410fad138ffbc68fe0dc68a63f8109.png

Wenn du etwas beherrschen willst, dann nutze es, wenn du etwas wirklich verstehen willst, dann versuche es zu ändern. ——— Einstein

Zusätzlich zu den oben genannten Beispielen können andere gängige Modellbibliotheken, wie die eingangs erwähnten Erkennungs- und Segmentierungsmodelle in Torchvision, die Transformers-Bibliothek in Huggingface, verschiedene Modelle in der Ultralytics-Bibliothek usw., diese Vorlage zum Training und zur Feinabstimmung verwenden .

Glauben Sie mir, sie wird Ihr Alchemieleben viel glücklicher machen

Hinter den Kulissen des öffentlichen Kontos antwortet Algorithm Gourmet House auf die Schlüsselwörter: Dream Heart Stove , Holen Sie sich ihren Github Warehouse-Link ~

Wenn Sie Fragen zur Nutzung oder Verbesserungsvorschläge haben, können Sie auf die Schlüsselwörter im Hintergrund des offiziellen Kontos antworten: Gruppe hinzufügen , meinen WeChat zur Kommunikation hinzufügen.

Supongo que te gusta

Origin blog.csdn.net/Python_Ai_Road/article/details/130758185
Recomendado
Clasificación