Code für den Blogbeitrag „The Annotated Transformer“:
http://nlp.seas.harvard.edu/annotated-transformer/
Verwenden Sie requirements.txt
, um Bibliotheksabhängigkeiten mit pip zu installieren:
pip install -r requirements.txt
Der Annotated Transformer wird mit Jupytext erstellt.
Normale Notebooks bereiten Probleme für die Quellcodeverwaltung – Zellenausgaben landen im Repo-Verlauf und Unterschiede zwischen Commits sind schwer zu untersuchen. Bei Verwendung von Jupytext gibt es ein Python-Skript ( .py
-Datei), das vom Jupytext-Plugin automatisch mit der Notebook-Datei synchronisiert wird.
Das festgeschriebene Python-Skript enthält den gesamten Zellinhalt und kann zum Generieren der Notebook-Datei verwendet werden. Das Python-Skript ist eine normale Python-Quelldatei, Markdown-Abschnitte werden mithilfe einer Standardkommentarkonvention eingefügt und Ausgaben werden nicht gespeichert. Das Notebook selbst wird als Build-Artefakt behandelt und nicht im Git-Repository festgeschrieben.
Bevor Sie dieses Repo verwenden, stellen Sie sicher, dass Jupytext installiert ist, indem Sie die Installationsanweisungen hier befolgen.
Um die .ipynb
Notebook-Datei mithilfe der Markdown-Quelle zu erstellen, führen Sie Folgendes aus (unter der Haube führt das notebook
Build-Ziel einfach jupytext --to ipynb the_annotated_transformer.py
aus):
make notebook
Führen Sie Folgendes aus, um die HTML-Version des Notebooks zu erstellen:
make html
make html
ist nur eine Verknüpfung zum Generieren des Notebooks mit jupytext --to ipynb the_annotated_transformer.py
, gefolgt von der Verwendung des Befehls jupyter nbconvert, um HTML mit jupyter nbconvert --to html the_annotated_transformer.ipynb
zu erstellen
Um die Codeformatierung sauber zu halten, verfügt das annotierte Transformer-Git-Repo über eine Git-Aktion, um zu überprüfen, ob der Code den PEP8-Codierungsstandards entspricht.
Um dies zu vereinfachen, gibt es zwei Makefile
Build-Ziele, um die automatische Codeformatierung mit Black und Flake8 auszuführen.
Stellen Sie sicher, dass Sie Black und Flake8 installieren.
Sie können dann Folgendes ausführen:
make black
(oder rufen Sie alternativ black black --line-length 79 the_annotated_transformer.py
manuell auf), um den Code automatisch mit Schwarz zu formatieren und:
make flake
(oder rufen Sie flake8 „flake8 --show-source the_annotated_transformer.py“ manuell auf), um nach PEP8-Verstößen zu suchen.
Es wird empfohlen, diese beiden Befehle auszuführen und alle auftretenden Flake8-Fehler zu beheben, wenn Sie eine PR einreichen. Andernfalls meldet das Github Actions CI einen Fehler.