
Willkommen in der Transfer NLP -Bibliothek, einem Rahmen, das auf Pytorch aufgebaut ist, um reproduzierbares Experimentieren zu fördern und das Lernen in NLP zu übertragen
Sie können einen Überblick über die hochrangige API in diesem Colab-Notizbuch haben, in der angezeigt wird, wie das Framework für mehrere Beispiele verwendet wird. Alle DL-basierten Beispiele zu diesen Notizbüchern betten eine In-Cell-Tensorboard-Trainingsüberwachung ein!
Für ein Beispiel für vorgeborene Modellfonetuning bieten wir ein kurzes, ausführbares Tutorial zu Bertclassifier-Finetuning auf diesem Colab-Notebook
mkvirtualenv transfernlp
workon transfernlp
git clone https://github.com/feedly/transfer-nlp.git
cd transfer-nlp
pip install -r requirements.txt
Verwenden von Transfer NLP als Bibliothek:
# to install the experiment builder only
pip install transfernlp
# to install Transfer NLP with PyTorch and Transfer Learning in NLP support
pip install transfernlp[torch]
oder
pip install git+https://github.com/feedly/transfer-nlp.git
Um den neuesten Staat vor neuen Veröffentlichungen zu erhalten.
Verwenden von Transfer NLP mit zugehörigen Beispielen:
git clone https://github.com/feedly/transfer-nlp.git
pip install -r requirements.txt
API -Dokumentation und ein Überblick über die Bibliothek finden Sie hier
Der Kern der Bibliothek besteht aus einem Experimentbauer: Sie definieren die verschiedenen Objekte, die Ihr Experiment benötigt, und der Konfigurationslader erstellt sie auf gute Weise. Für reproduzierbare Forschung und einfache Ablationsstudien erzwingt die Bibliothek die Verwendung von Konfigurationsdateien für Experimente. Da Menschen einen unterschiedlichen Geschmack für eine gute Experimentdatei haben, ermöglicht die Bibliothek Experimente, die in mehreren Formaten definiert sind:
In Transfer-NLP enthält eine Experiment-Konfigurationsdatei alle erforderlichen Informationen, um das Experiment vollständig zu definieren. Hier fügen Sie Namen der verschiedenen Komponenten ein, die Ihr Experiment verwendet wird, zusammen mit den Hyperparametern, die Sie verwenden möchten. Transfer-NLP verwendet die Inversion des Kontrollmusters, mit der Sie jede Klasse / Methode / Funktion definieren können, die Sie benötigen. Die ExperimentConfig Klasse erstellt eine DictionNary und legt Ihre Objekte entsprechend ein.
Um Ihre eigenen Klassen in Transfer-NLP zu verwenden, müssen Sie sie mit dem Dekorator @register_plugin registrieren. Anstatt für jede Art von Komponenten (Modelle, Datenlader, Vektorisierer, Optimierer, ...) eine andere Registrierung zu verwenden, wird hier nur eine einzelne Registrierung verwendet, um die Gesamtanpassung durchzusetzen.
Wenn Sie Transfer NLP nur als Dev -Abhängigkeit verwenden, sollten Sie sie möglicherweise nur deklarativ verwenden und auf Objekte register_plugin() die Sie zur Experiment -Laufzeit verwenden möchten.
Hier ist ein Beispiel dafür, wie Sie ein Experiment in einer YAML -Datei definieren können:
data_loader:
_name: MyDataLoader
data_parameter: foo
data_vectorizer:
_name: MyVectorizer
vectorizer_parameter: bar
model:
_name: MyModel
model_hyper_param: 100
data: $data_loader
trainer:
_name: MyTrainer
model: $model
data: $data_loader
loss:
_name: PyTorchLoss
tensorboard_logs: $HOME/path/to/tensorboard/logs
metrics:
accuracy:
_name: Accuracy
Jedes Objekt kann über eine Klasse, Methode oder Funktion definiert werden, die mit einem _name -Parameter gefolgt von ihren eigenen Parametern gefolgt werden. Die Experimente werden dann unter Verwendung von ExperimentConfig(experiment=experiment_path_or_dict)
Einige Überlegungen:
Standardparameter können in der Experimentdatei übersprungen werden.
Wenn ein Objekt an verschiedenen Stellen verwendet wird, können Sie es mit dem $ -Symbol mit dem $ -Symbol verweisen, beispielsweise hier das trainer verwendet den data_loader der an anderer Stelle instanziiert ist. Es ist keine Anordnung von Objekten erforderlich.
Für Pfade möchten Sie möglicherweise Umgebungsvariablen verwenden, damit auch andere Maschinen Ihre Experimente ausführen können. Im vorherigen Beispiel würden Sie EG ExperimentConfig(experiment=yaml_path, HOME=Path.home()) ausführen, um das Experiment zu instanziieren und $HOME durch Ihren Maschinenhaus zu ersetzen.
Die Konfigurationsinstanziation ermöglicht komplexe Einstellungen mit verschachteltem DICT / LISTE
Sie können sich die Tests für Beispiele für Experimenteinstellungen ansehen, die der Konfigurationsloader erstellen kann. Zusätzlich bieten wir Runnable -Experimente in experiments/ .
Für Deep -Lern -Experimente bieten wir einen BaseIgniteTrainer in transfer_nlp.plugins.trainers.py . Dieser grundlegende Trainer nimmt ein Modell und einige Daten als Eingabe ein und führt eine ganze Trainingspipeline aus. Wir nutzen die Pytorch-Intit-Bibliothek, um Ereignisse während des Trainings zu überwachen (Protokollieren Sie einige Metriken, Manipulation der Lernraten, Checkpointing-Modelle usw.). Tensorboard -Protokolle sind ebenfalls als Option enthalten. Sie müssen einen tensorboard_logs einfachen Parameterpfad in der Konfigurationsdatei angeben. Führen Sie dann tensorboard --logdir=path/to/logs in einem Terminal und Sie können Ihr Experiment während des Trainings überwachen! Tensorboard bietet sehr schöne Dienstprogramme, um die Normen Ihrer Modellgewichte, Histogramme, Verteilungen, Visualisierung von Einbettungen usw. zu verfolgen, daher empfehlen wir es wirklich, sie zu verwenden.

Wir bieten eine SingleTaskTrainer -Klasse an, die Sie für jede beaufsichtigte Einstellung für eine Aufgabe verwenden können. Wir arbeiten an einer MultiTaskTrainer -Klasse, um mit Multi -Task -Einstellungen und einem SingleTaskFineTuner für große Models -Finetuning -Einstellungen umzugehen.
Hier sind einige Anwendungsfälle für die Übertragung von NLP:
ExperimentRunner -Klasse ermöglicht das nacheinander ausgeführte Ausführen Ihrer Experimenten -Sätze und generiert eine personalisierte Berichterstattung (Sie müssen Ihre report nur in einer benutzerdefinierten ReporterABC -Klasse implementieren).Module konzentrieren und die Trainer mit dem Trainingsteil befassen können (während Sie die meisten Trainingsparameter über die Experimentdatei kontrollieren)Während Sie mit Ihren eigenen Modellen / Daten experimentieren, kann das Training einige Zeit in Anspruch nehmen. Um benachrichtigt zu werden, wenn Ihr Training abgeschlossen oder abstürzt, können Sie die einfache Bibliotheksknockknock von Leuten von Huggingface verwenden, die zu Ihrer Lauffunktion einen einfachen Dekorator hinzufügen, um Sie per Slack, E-Mail usw. zu benachrichtigen.
Die Bibliothek wurde von der Lektüre der "natürlichen Sprachverarbeitung mit Pytorch" von Delip Rao und Brian McMahan inspiriert. Experimente in experiments , der Vokabularbaustein und Einbettungsdings, die nächsten Nachbarn entnommen oder aus dem in dem Buch bereitgestellten Code angepasst oder angepasst werden.