THINC ist eine leichte Deep Learning Library , die eine elegante, typenprüfende Funktion für Funktionsprogrammierungen für das Komponieren von Modellen bietet, die in anderen Frameworks wie Pytorch, TensorFlow und MXNET definiert werden. Sie können Thinc als Schnittstellenschicht, ein eigenständiges Toolkit oder eine flexible Möglichkeit verwenden, um neue Modelle zu entwickeln. Frühere Versionen von Thinc haben in Tausenden von Unternehmen, sowohl über Spact als auch über Wunderkind, leise in der Produktion geführt. Wir haben die neue Version geschrieben, damit Benutzer benutzerdefinierte Modelle komponieren, konfigurieren und bereitstellen können, die mit ihrem bevorzugten Framework erstellt wurden.
mypy
Plugin ein. Thinc ist mit Python 3.6+ kompatibel und läuft unter Linux , MacOS und Windows . Die neuesten Veröffentlichungen mit Binärrädern sind bei PIP erhältlich. Bevor Sie Thinc und seine Abhängigkeiten installieren, stellen Sie sicher, dass Ihr pip
, setuptools
und wheel
auf dem neuesten Stand sind. Für die jüngsten Veröffentlichungen wird PIP 19.3 oder neuer empfohlen.
pip install -U pip setuptools wheel
pip install thinc
Weitere Informationen zu den optionalen Abhängigkeiten für verschiedene Backends und GPU finden Sie in den erweiterten Installationsdokumenten. Möglicherweise möchten Sie auch eine statische Überprüfung einrichten, um das Typ -System von Thinc zu nutzen.
Euen Wenn Sie Pytorch installiert haben und Python 3.7+ verwenden, können Sie dasdataclasses
mitpip uninstall dataclasses
deinstallieren, da es möglicherweise von PyTorch installiert wurde und mit Python 3.7+ unvereinbar ist.
Weitere Beispiele finden Sie im Verzeichnis /examples
-Verzeichnis und Verwendungsdokumentation. Die meisten Beispiele sind Jupyter -Notizbücher - um sie auf Google Colab (mit GPU -Unterstützung!) Starten zu können, klicken Sie auf die Schaltfläche neben dem Notizbuchnamen.
Notizbuch | Beschreibung |
---|---|
intro_to_thinc | Alles, was Sie wissen müssen, um loszulegen. Verfassen und Schulung eines Modells auf den MNIST -Daten, Verwenden von Konfigurationsdateien, Registrieren benutzerdefinierter Funktionen und Wickeln von Pytorch-, TensorFlow- und MXNET -Modellen. |
transformers_tagger_bert | Wie man Thinc, transformers und Pytorch verwendet, um einen Teil des Speech-Taggers zu trainieren. Von Modelldefinition und Konfiguration zur Trainingsschleife. |
pos_tagger_basic_cnn | Implementierung und Schulung eines grundlegenden CNN für ein markiertes Tagging-Modell ohne externe Abhängigkeiten und die Verwendung verschiedener Ebenen des THINC-Konfigurationssystems. |
parallel_training_ray | So richten Sie synchrones und asynchrones Parameterservertraining mit Thinc und Ray ein. |
Mehr anzeigen →
Dokumentation | Beschreibung |
---|---|
Einführung | Alles, was Sie wissen müssen. |
Konzept & Design | Thincs konzeptionelles Modell und wie es funktioniert. |
Modelle definieren und verwenden | So komponieren Sie Modelle und aktualisieren Sie den Status. |
Konfigurationssystem | THINCs Konfigurationssystem und Funktionsregistrierung. |
Integration von Pytorch, TensorFlow & MXNET | Interoperabilität mit maschinellem Lernen Frameworks |
Schichten API | Gewichtsschichten, Transformationen, Kombinatoren und Verpackungen. |
Geben Sie die Überprüfung ein | Geben Sie Ihre Modelldefinitionen und mehr überprüft. |
Modul | Beschreibung |
---|---|
thinc.api | Benutzergerichtete API. Alle Klassen und Funktionen sollten von hier aus importiert werden. |
thinc.types | Benutzerdefinierte Typen und DataClasses. |
thinc.model | Die Model . Alle THINC -Modelle sind eine Instanz (keine Unterklasse) des Model . |
thinc.layers | Die Schichten. Jede Schicht wird in ihrem eigenen Modul implementiert. |
thinc.shims | Schnittstelle für externe Modelle, die in Pytorch, TensorFlow usw. implementiert sind, usw. |
thinc.loss | Funktionen zur Berechnung von Verlusten. |
thinc.optimizers | Funktionen zum Erstellen von Optimierern. Unterstützt derzeit "Vanilla" SGD, Adam und Radam. |
thinc.schedules | Generatoren für unterschiedliche Preise, Zeitpläne, Zerfälle oder Serien. |
thinc.backends | Backends für numpy und cupy . |
thinc.config | Konfigurationsanalyse und Validierung sowie Funktionsregistrierungssystem. |
thinc.util | Dienstprogramme und Helferfunktionen. |
Thinc verwendet black
zum automatischen Formatieren, flake8
für Linting und mypy
für die Typprüfung. Der gesamte Code ist mit Python 3.6+ kompatibel geschrieben, wobei nach Möglichkeit Typ -Tipps geschrieben werden. Weitere Informationen zu den benutzerdefinierten Typen von Thinc finden Sie in der Typ -Referenz.
Nach dem Erstellen von THINC aus der Quelle müssen die vollständigen Abhängigkeiten in requirements.txt
installiert werden. Sie benötigen auch einen Compiler, um die C -Erweiterungen zu erstellen.
git clone https://github.com/explosion/thinc
cd thinc
python -m venv .env
source .env/bin/activate
pip install -U pip setuptools wheel
pip install -r requirements.txt
pip install --no-build-isolation .
Alternativ im bearbeitbaren Modus installieren:
pip install -r requirements.txt
pip install --no-build-isolation --editable .
Oder durch Festlegen PYTHONPATH
:
export PYTHONPATH= ` pwd `
pip install -r requirements.txt
python setup.py build_ext --inplace
Thinc kommt mit einer umfangreichen Testsuite. Das Folgende sollte alle vergehen und keine Warnungen oder Fehler melden:
python -m pytest thinc # test suite
python -m mypy thinc # type checks
python -m flake8 thinc # linting
Um die Testabdeckung anzuzeigen, können Sie python -m pytest thinc --cov=thinc
ausführen. Wir streben eine 100% ige Testabdeckung an. Dies bedeutet nicht, dass wir sorgfältig Tests für jede einzelne Zeile schreiben. Wir ignorieren Blöcke, die nicht relevant oder schwer zu testen sind, und stellen sicher, dass die Tests alle Codepfade ausführen.