In diesem Artikel wird beschrieben, wie Sie ein Programm schreiben, das Hardwareinformationen (hauptsächlich Colaboratory-Laufzeitinformationen) lesen und bei Verwendung von TensorFlow.keras automatisch zwischen TPU und GPU (einschließlich CPU) wechseln kann. Es ist zusammengefasst. ~~ (Weil es schwierig geworden ist, manuell zu kommentieren) ~~
Im Allgemeinen wird MNIST mit Keras und TPU auf Offizielle Website (Google Cloud, Cloud-TPU-Dokumente) veröffentlicht. /github/tensorflow/tpu/blob/master/tools/colab/keras_mnist_tpu.ipynb) wird zusammengefasst. Wenn Sie mit tensorflow.keras vertraut sind, ist es möglicherweise einfacher, die Referenzquelle zu lesen.
Ergänzungen, Vorsichtsmaßnahmen usw.
#Hardware-Informationen abrufen
import tensorflow as tf
try:
tpu = tf.distribute.cluster_resolver.TPUClusterResolver() # TPU detection
except ValueError:
tpu = None
gpus = tf.config.experimental.list_logical_devices("GPU")
if tpu:
tf.tpu.experimental.initialize_tpu_system(tpu)
strategy = tf.distribute.experimental.TPUStrategy(tpu, steps_per_run=128) # Going back and forth between TPU and host is expensive. Better to run 128 batches on the TPU before reporting back.
print('Running on TPU ', tpu.cluster_spec().as_dict()['worker'])
elif len(gpus) > 1:
strategy = tf.distribute.MirroredStrategy([gpu.name for gpu in gpus])
print('Running on multiple GPUs ', [gpu.name for gpu in gpus])
elif len(gpus) == 1:
strategy = tf.distribute.get_strategy() # default strategy that works on CPU and single GPU
print('Running on single GPU ', gpus[0].name)
else:
strategy = tf.distribute.get_strategy() # default strategy that works on CPU and single GPU
print('Running on CPU')
print("Number of accelerators: ", strategy.num_replicas_in_sync)
#Mit Strategie beim Erstellen, Laden und Kompilieren von Modellen.scope()Umgeben mit
from tensorflow import keras
with strategy.scope():
model = make_model()
Wenn Sie die folgenden zwei Punkte ausführen, ohne über bestimmte Schwierigkeiten nachzudenken, können Sie je nach Hardware ohne Erlaubnis zwischen TPU / GPU / CPU wechseln.
import tensorflow as tf
~ print ("Anzahl der Beschleuniger (abgekürzt
wird durch Kopieren und Einfügen eingefügt))with Strategy.scope ():
eintf.distribute.cluster_resolver.TPUClusterResolver()
tf.config.experimental.list_logical_devices("GPU")
if tpu:
tf.distribute.get_strategy()
In diesem Artikel habe ich erklärt, wie mit tensorflow.keras je nach Hardwarestatus automatisch zwischen TPU / GPU / CPU gewechselt wird. Nutzen Sie TPU mit tensorflow.keras für ein besseres Deep-Learning-Leben.