Wenn Sie mit Cloud TPU nicht vertraut sind, empfehlen wir Ihnen, die quickstart durchzugehen, um zu erfahren, wie Sie eine TPU-VM erstellen.
In dieser Anleitung erfahren Sie, wie Sie das HuggingFace GPT2-Modell in Cloud TPU trainieren.
Lernziele
- Cloud TPU erstellen
- Abhängigkeiten installieren
- Trainingsjob ausführen
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.
Hinweise
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.
HuggingFace GPT2 mit Cloud TPUs trainieren
Öffnen Sie ein Cloud Shell-Fenster.
Erstellen Sie eine Umgebungsvariable für Ihre Projekt-ID.
export PROJECT_ID=your-project-id
Konfigurieren Sie die Google Cloud CLI so, dass das Google Cloud-Projekt verwendet wird, in dem Sie eine 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
, umgcloud
das Ausführen von Google Cloud API-Aufrufen mit Ihren Anmeldedaten zu erlauben.Erstellen Sie ein Dienstkonto für das Cloud TPU-Projekt.
Dienstkonten ermöglichen dem Cloud TPU-Dienst den Zugriff auf andere Google Cloud-Dienste.
$ gcloud beta services identity create --service tpu.googleapis.com --project $PROJECT_ID
Der Befehl gibt ein Cloud TPU-Dienstkonto im folgenden Format zurück:
service-PROJECT_NUMBER@cloud-tpu.iam.gserviceaccount.com
Cloud TPU erstellen
Erstellen Sie mit dem Befehl
gcloud
eine Cloud TPU-VM. Mit dem folgenden Befehl wird einev4-8
-TPU erstellt. Sie können auch einen TPU-PodSlice erstellen. Dazu legen Sie das Flag--accelerator-type
auf einen PodSlice-Typ fest, z. B.v4-32
.$ gcloud compute tpus tpu-vm create hf-gpt2 \ --zone=us-central2-b \ --accelerator-type=v4-8 \ --version=tpu-vm-tf-2.16.1-pjrt
Beschreibung der Befehls-Flags
zone
- Die Zone, in der Sie Ihre Cloud TPU erstellen möchten.
accelerator-type
- Der Beschleunigertyp gibt die Version und Größe der Cloud TPU an, die Sie erstellen möchten. Weitere Informationen zu unterstützten Beschleunigertypen für die einzelnen TPU-Versionen finden Sie unter TPU-Versionen.
version
- Die Cloud TPU-Softwareversion.
Stellen Sie mit dem folgenden
ssh
-Befehl eine Verbindung zur Cloud TPU-VM her.gcloud compute tpus tpu-vm ssh hf-gpt2 --zone=us-central2-b
Abhängigkeiten installieren
Klonen Sie das HuggingFace Transformers-Repository:
(vm)$ cd /tmp (vm)$ git clone https://github.com/huggingface/transformers.git (vm)$ cd transformers
Installieren Sie die Abhängigkeiten:
(vm)$ pip install . (vm)$ pip install -r examples/tensorflow/_tests_requirements.txt (vm)$ cd /tmp/transformers/examples/tensorflow/language-modeling (vm)$ pip install -r requirements.txt
Temporäres Verzeichnis erstellen:
(vm)$ mkdir /tmp/gpt2-wikitext
Wenn Sie beim Erstellen Ihrer TPU den Parameter
--version
auf eine Version festlegen, die auf-pjrt
endet, legen Sie die folgenden Umgebungsvariablen fest, um die PJRT-Laufzeit zu aktivieren:(vm)$ export NEXT_PLUGGABLE_DEVICE_USE_C_API=true (vm)$ export TF_PLUGGABLE_DEVICE_LIBRARY_PATH=/lib/libtpu.so
Trainingsskript ausführen
(vm)$ python3 run_clm.py \
--model_name_or_path distilgpt2 \
--max_train_samples 1000 \
--max_eval_samples 100 \
--num_train_epochs 1 \
--output_dir /tmp/gpt2-wikitext \
--dataset_name wikitext \
--dataset_config_name wikitext-103-raw-v1
Beschreibung der Befehls-Flags
model_name_or_path
- Der Name des zu trainierenden Modells.
max_train_samples
- Die maximale Anzahl von Beispielen für das Training.
max_eval_samples
- Die maximale Anzahl von Stichproben für die Bewertung.
num_train_epochs
- Die Anzahl der Epochen zum Trainieren des Modells.
output_dir
- Das Ausgabeverzeichnis für das Trainingsskript.
dataset_name
- Der Name des Datasets, das verwendet werden soll.
dataset_config_name
- Name der Dataset-Konfiguration
Wenn das Training abgeschlossen ist, wird eine Meldung wie die folgende angezeigt:
125/125 [============================] - ETA: 0s - loss: 3.61762023-07-07 21:38:17.902850: W tensorflow/core/framework/dataset.cc:956] Input of GeneratorDatasetOp::Dataset will not be optimized because the dataset does not implement the AsGraphDefInternal() method needed to apply optimizations. 125/125 [============================] - 763s 6s/step - loss: 3.6176 - val_loss: 3.4233 Configuration saved in /tmp/gpt2-wikitext/config.json Configuration saved in /tmp/gpt2-wikitext/generation_config.json Model weights saved in /tmp/gpt2-wikitext/tf_model.h5 D0707 21:38:45.640973681 12027 init.cc:191] grpc_shutdown starts clean-up now
Bereinigen
Trennen Sie die Verbindung zur TPU-VM-Instanz:
(vm)$ exit
Die Eingabeaufforderung sollte nun
username@projectname
lauten und angeben, dass Sie sich in Cloud Shell befinden.Löschen Sie die TPU-Ressource.
$ gcloud compute tpus tpu-vm delete hf-gpt2 \ --zone=us-central2-b
Nächste Schritte
Versuchen Sie es mit einem der anderen unterstützten Referenzmodelle.