Diese Anleitung enthält eine allgemeine Beschreibung des MNIST-Modells, Anleitungen zum Herunterladen des TensorFlow-TPU-Codebeispiels für MNIST und eine Anleitung zum Ausführen des Codes in der Cloud TPU.
Haftungsausschluss
In dieser Anleitung wird ein Dataset eines Drittanbieters verwendet. Google gibt keine Zusicherungen, Gewährleistungen oder Garantien hinsichtlich der Gültigkeit oder anderer Aspekte dieses Datasets.
Modellbeschreibung
Das MNIST-Dataset enthält eine große Anzahl von Bildern, die handschriftlichen Ziffern von 0 bis 9 sowie die Beschriftungen Ziffern in jedem Bild.
In dieser Anleitung wird ein ML-Modell trainiert, um Bilder anhand der MNIST-Dataset Nach dem Training klassifiziert das Modell eingehende Bilder in 10 (0 bis 9), basierend darauf, was sie über handschriftliche Bilder aus dem MNIST-Dataset. Sie können dem Modell dann ein Bild senden, das es noch nicht gesehen hat, und das Modell die Ziffer im Bild anhand dessen identifiziert, was das Modell die Sie während der Schulung gelernt haben.
Das MNIST-Dataset besteht aus drei Teilen:
- 60.000 Trainingsdatenbeispiele
- 10.000 Testdatenbeispiele
- 5.000 Validierungsdatenbeispiele
Das Modell besteht aus sieben Ebenen:
- 2 x Faltung
- 2 x max. Pooling
- 2 x Dichte (vollständig verbunden)
- 1 x Dropout
Der Verlust wird mithilfe der kategorischen Kreuzentropie berechnet.
Diese Version des MNIST-Modells verwendet die Keras API, die neben anderen Methoden zum Erstellen und Ausführen eines Modells für maschinelles Lernen auf einer Cloud TPU empfohlen wird.
Keras vereinfacht den Modellentwicklungsprozess, indem der Großteil der Implementierungen auf untergeordneter Eben ausgeblendet wird, wodurch auch ein Wechsel zwischen TPU und anderen Testplattformen wie GPUs oder CPUs erleichtert wird.
Ziele
- Cloud Storage-Bucket zum Speichern der Dataset- und Modellausgabe erstellen
- Trainingsjob ausführen
- Ausgabeergebnisse überprüfen
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
- Compute Engine
- Cloud TPU
- Cloud Storage
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Hinweise
Dieser Abschnitt enthält Informationen zum Einrichten eines Cloud Storage-Buckets und einer Compute Engine-VM.
Ö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 erstellen möchten Cloud TPU
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 aufAuthorize
unten auf der Seite, damitgcloud
Google Cloud API-Aufrufe mit Ihren Anmeldedaten durchführen kann.Erstellen Sie ein Dienstkonto für das Cloud TPU-Projekt.
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
Erstellen Sie mit dem folgenden Befehl einen Cloud Storage-Bucket:
gcloud storage buckets create gs://bucket-name \ --project=${PROJECT_ID} \ --location=us-central1
Dieser Cloud Storage-Bucket speichert die Daten, die Sie zum Trainieren Ihres Modells verwenden, sowie die Trainingsergebnisse. Mit dem in dieser Anleitung verwendeten
gcloud
-Befehl werden Standardberechtigungen für das Cloud TPU-Dienstkonto eingerichtet, das Sie im vorherigen Schritt eingerichtet haben. Wenn Sie detailliertere Berechtigungen benötigen, können Sie die Berechtigungen auf Zugriffsebene anpassen.Erstellen Sie eine TPU-VM mit dem Befehl
gcloud
.$ gcloud compute tpus tpu-vm create mnist-tutorial \ --zone=us-central1-b \ --accelerator-type=v3-8 \ --version=tpu-vm-tf-2.17.0-pjrt \
Beschreibung der Befehls-Flags
zone
- Die Zone, in der Sie die 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 den unterstützten Beschleunigertypen für jede TPU-Version finden Sie unter TPU-Versionen.
version
- Die Cloud TPU-Softwareversion.
Weitere Informationen zum Befehl
gcloud
finden Sie in der gcloud-Referenz.Stellen Sie über SSH eine Verbindung zur Compute Engine-Instanz her. Wenn Sie verbunden sind an die VM ändert sich Ihre Shell-Eingabeaufforderung von
username@projectname
inusername@vm-name
:gcloud compute tpus tpu-vm ssh mnist-tutorial --zone=us-central1-b
Erstellen Sie eine Umgebungsvariable für den TPU-Namen.
(vm)$ export TPU_NAME=local
Installieren Sie TensorFlow-Anforderungen.
(vm)$ pip3 install -r /usr/share/tpu/models/official/requirements.txt
Modell trainieren
Der Quellcode für das MNIST-TPU-Modell ist auf GitHub verfügbar.
Legen Sie die folgenden Variablen fest: Ersetzen Sie bucket-name durch den Namen Ihres Buckets.
(vm)$ export STORAGE_BUCKET=gs://bucket-name (vm)$ export MODEL_DIR=${STORAGE_BUCKET}/mnist (vm)$ export DATA_DIR=${STORAGE_BUCKET}/data
Legen Sie die Umgebungsvariable
PYTHONPATH
fest.(vm)$ export PYTHONPATH="${PYTHONPATH}:/usr/share/tpu/models"
Wenn Sie beim Erstellen der TPU den Parameter
--version
auf eine Version festlegen, die mit-pjrt
, 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
Wechseln Sie zum Verzeichnis, in dem sich das Modell befindet:
(vm)$ cd /usr/share/tpu/models/official/legacy/image_classification
Führen Sie das MNIST-Trainingsskript aus:
(vm)$ python3 mnist_main.py \ --tpu=${TPU_NAME} \ --model_dir=${MODEL_DIR} \ --data_dir=${DATA_DIR} \ --train_epochs=10 \ --distribution_strategy=tpu \ --download
Beschreibung der Befehls-Flags
tpu
- Der Name der Cloud TPU. Wenn beim Einrichten der Compute Engine VM und Cloud TPU kein Name angegeben wird, wird standardmäßig Ihr Nutzername verwendet.
model_dir
- Der Cloud Storage-Bucket, in dem während des Trainings Prüfpunkte und Zusammenfassungen gespeichert werden. Sie können einen vorhandenen Ordner verwenden, um zuvor generierte Prüfpunkte zu laden, die auf einer TPU mit derselben Größe und TensorFlow-Version erstellt wurden.
data_dir
- Der Cloud Storage-Pfad der Trainingseingabe. Er ist festgelegt auf fake_imagenet.
train_epochs
- Die Anzahl der Epochen zum Trainieren des Modells.
distribution_strategy
- Legen Sie
distribution_strategy
fest, um das ResNet-Modell in einer Cloud TPU zu trainieren antpu
. download
- Bei der Einstellung
true
lädt das Skript das Skript herunter und verarbeitet es vor. das MNIST-Dataset, falls es noch nicht heruntergeladen wurde.
Auf einer Cloud TPU v3-8 wird das Trainingsskript in weniger als 5 Minuten ausgeführt. Die Ausgabe sieht in etwa so aus:
Run stats: { 'accuracy_top_1': 0.9762369990348816, 'eval_loss': 0.07863274961709976, 'loss': 0.1111728847026825, 'training_accuracy_top_1': 0.966645359992981 }
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
Trennen Sie die Verbindung zur Compute Engine-Instanz, sofern noch nicht geschehen:
(vm)$ exit
Die Eingabeaufforderung sollte nun
username@projectname
lauten und angeben, dass Sie sich in Cloud Shell befinden.Löschen Sie Ihre Cloud TPU- und Compute Engine-Ressourcen.
$ gcloud compute tpus tpu-vm delete mnist-tutorial \ --zone=us-central1-b
Prüfen Sie, ob die Ressourcen gelöscht wurden. Führen Sie dazu
gcloud compute tpus tpu-vm list
aus. Der Löschvorgang kann einige Minuten dauern. Die Ausgabe des folgenden Befehls sollte keine der in dieser Anleitung erstellten Ressourcen enthalten:$ gcloud compute tpus tpu-vm list --zone=us-central1-b
Löschen Sie Ihren Cloud Storage-Bucket mit dem folgenden Befehl. Ersetzen Sie bucket-name durch den Namen des Cloud Storage-Buckets.
$ gcloud storage rm gs://bucket-name --recursive
Nächste Schritte
In den Cloud TPU-Anleitungen von TensorFlow wird das Modell in der Regel mithilfe eines Beispiel-Datasets trainiert. Die Ergebnisse dieses Trainings können nicht für die Inferenz verwendet werden. Bis ein Modell für die Inferenz nutzen, können Sie die Daten anhand eines öffentlich verfügbaren oder Ihrem eigenen Dataset. Auf Cloud TPUs trainierte TensorFlow-Modelle müssen Datasets im Allgemeinen TFRecord-Format.
Mit dem Tool zur Konvertierung von Datasets Sample zum Konvertieren eines Bildes Klassifizierungs-Dataset in das TFRecord-Format. Wenn Sie kein Bild verwenden Klassifizierungsmodells spezifizieren, müssen Sie das Dataset TFRecord-Format für sich selbst. Weitere Informationen finden Sie unter TFRecord und tf.Example.
Hyperparameter-Feinabstimmung
Um die Leistung des Modells mit Ihrem Dataset zu verbessern, können Sie die Hyperparameter. Sie finden Informationen zu allgemeinen Hyperparametern Von TPU unterstützte Modelle auf GitHub Informationen zu modellspezifischen Hyperparametern finden Sie im Quellcode für die einzelnen Modelle. Weitere Informationen zur Abstimmung von Hyperparametern finden Sie unter Übersicht über Hyperparameter-Abstimmung und Feinabstimmung Hyperparametern.
Inferenz
Sobald Ihr Modell trainiert ist, können Sie es für Inferenz (auch als Vorhersage bezeichnet) verwenden. Mit dem Cloud TPU-Inferenzkonverter können Sie ein TensorFlow-Modell für die Inferenz auf Cloud TPU v5e vorbereiten und optimieren. Weitere Informationen Informationen zur Inferenz in Cloud TPU v5e finden Sie unter Cloud TPU v5e-Inferenz .
- Führen Sie eine Cloud TPU colab aus, die zeigt, wie Sie ein Bildklassifizierungsmodell mit Ihren eigenen Bilddaten trainieren.
- Andere Cloud TPU-Anleitungen ansehen.
- TPU-Monitoring-Tools in TensorBoard verwenden
- Leistung eines umfassenden Modells durch Ausführung des ResNet-Modells prüfen