Diese Anleitung konzentriert sich speziell auf die FairSeq-Version von Transformer und die WMT 18-Übersetzungsaufgabe, bei der vom Englischen ins Deutsche übersetzt wird.
Lernziele
- Bereiten Sie das Dataset vor.
- Trainingsjob ausführen
- Ausgabeergebnisse überprüfen
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
- Compute Engine
- Cloud TPU
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Hinweis
Bevor Sie mit dieser Anleitung beginnen, prüfen Sie, ob Ihr Google Cloud-Projekt ordnungsgemäß eingerichtet ist.
- Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
In dieser Anleitung werden kostenpflichtige Komponenten der Google Cloud verwendet. Rufen Sie die Seite mit den Cloud TPU-Preisen auf, um Ihre Kosten abzuschätzen. Denken Sie daran, nicht mehr benötigte Ressourcen zu bereinigen, um unnötige Kosten zu vermeiden.
Compute Engine-Instanz einrichten
Öffnen Sie ein Cloud Shell-Fenster.
Erstellen Sie eine Variable für Ihre Projekt-ID.
export PROJECT_ID=project-id
Konfigurieren Sie die Google Cloud CLI für die Verwendung des Projekts, in dem Sie Cloud TPU erstellen möchten.
gcloud config set project ${PROJECT_ID}
Wenn Sie diesen Befehl zum ersten Mal in einer neuen Cloud Shell-VM ausführen, wird die Seite
Authorize Cloud Shell
angezeigt. Klicken Sie unten auf der Seite aufAuthorize
, damitgcloud
API-Aufrufe mit Ihren Anmeldedaten ausführen darf.Starten Sie in dieser Version die Compute Engine-Ressource, die für diese Anleitung erforderlich ist.
gcloud compute --project=${PROJECT_ID} instances create transformer-tutorial \ --zone=us-central1-a \ --machine-type=n1-standard-16 \ --image-family=torch-xla \ --image-project=ml-images \ --boot-disk-size=200GB \ --scopes=https://www.googleapis.com/auth/cloud-platform
Stellen Sie eine Verbindung zur neuen Compute Engine-Instanz her.
gcloud compute ssh transformer-tutorial --zone=us-central1-a
Cloud TPU-Ressource starten
Starten Sie über die virtuelle Compute Engine-Maschine mit dem folgenden Befehl eine Cloud TPU-Ressource:
(vm) $ gcloud compute tpus create transformer-tutorial \ --zone=us-central1-a \ --network=default \ --version=pytorch-2.0 \ --accelerator-type=v3-8
Ermitteln Sie die IP-Adresse für die Cloud TPU-Ressource.
(vm) $ gcloud compute tpus list --zone=us-central1-a
Die IP-Adresse befindet sich unter der Spalte
NETWORK_ENDPOINTS
. Sie benötigen diese IP-Adresse, wenn Sie die PyTorch-Umgebung erstellen und konfigurieren.
Daten herunterladen
Erstellen Sie das Verzeichnis
pytorch-tutorial-data
, um die Modelldaten zu speichern.(vm) $ mkdir $HOME/pytorch-tutorial-data
Rufen Sie das Verzeichnis
pytorch-tutorial-data
auf.(vm) $ cd $HOME/pytorch-tutorial-data
Laden Sie die Modelldaten herunter.
(vm) $ wget https://dl.fbaipublicfiles.com/fairseq/data/wmt18_en_de_bpej32k.zip
Extrahieren Sie die Daten.
(vm) $ sudo apt-get install unzip && \ unzip wmt18_en_de_bpej32k.zip
PyTorch-Umgebung erstellen und konfigurieren
Starten Sie eine
conda
-Umgebung.(vm) $ conda activate torch-xla-2.0
Konfigurieren Sie Umgebungsvariablen für die Cloud TPU-Ressource.
(vm) $ export TPU_IP_ADDRESS=ip-address; \ export XRT_TPU_CONFIG="tpu_worker;0;$TPU_IP_ADDRESS:8470"
Modell trainieren
Führen Sie das folgende Skript aus, um das Modell zu trainieren:
(vm) $ python /usr/share/torch-xla-2.0/tpu-examples/deps/fairseq/train.py \
$HOME/pytorch-tutorial-data/wmt18_en_de_bpej32k \
--save-interval=1 \
--arch=transformer_vaswani_wmt_en_de_big \
--max-target-positions=64 \
--attention-dropout=0.1 \
--no-progress-bar \
--criterion=label_smoothed_cross_entropy \
--source-lang=en \
--lr-scheduler=inverse_sqrt \
--min-lr 1e-09 \
--skip-invalid-size-inputs-valid-test \
--target-lang=de \
--label-smoothing=0.1 \
--update-freq=1 \
--optimizer adam \
--adam-betas '(0.9, 0.98)' \
--warmup-init-lr 1e-07 \
--lr 0.0005 \
--warmup-updates 4000 \
--share-all-embeddings \
--dropout 0.3 \
--weight-decay 0.0 \
--valid-subset=valid \
--max-epoch=25 \
--input_shapes 128x64 \
--num_cores=8 \
--metrics_debug \
--log_steps=100
Bereinigen
Führen Sie eine Bereinigung durch, damit Ihr Konto nach der Verwendung der von Ihnen erstellten Ressourcen nicht unnötig belastet wird:
Trennen Sie die Verbindung zur Compute Engine-Instanz, sofern noch nicht geschehen:
(vm) $ exit
Die Eingabeaufforderung sollte nun
user@projectname
lauten und angeben, dass Sie sich in Cloud Shell befinden.Verwenden Sie in Cloud Shell die Google Cloud CLI, um die Compute Engine-Instanz zu löschen.
$ gcloud compute instances delete transformer-tutorial --zone=us-central1-a
Verwenden Sie die Google Cloud CLI zum Löschen der Cloud TPU-Ressource.
$ gcloud compute tpus delete transformer-tutorial --zone=us-central1-a
Nächste Schritte
Testen Sie die PyTorch Colabs:
- Erste Schritte mit PyTorch auf Cloud TPUs
- MNIST auf TPUs trainieren
- ResNet18 auf TPUs mit Cifar10-Dataset trainieren
- Inferenz mit dem vortrainierten ResNet50-Modell
- Schnelle neuronale Übertragung
- MultiCore Training AlexNet on Fashion MNIST
- Single Core Training AlexNet on Fashion MNIST