Häufig gestellte Fragen zu Cloud TPU in TensorFlow

Welche Modelle werden von Cloud TPU unterstützt? Eine Liste der unterstützten Modelle finden Sie unter Offizielle unterstützte Modelle.

Kann ich eine Cloud TPU für Inferenz verwenden? Sie können Inferenzen für ein auf Cloud TPU trainiertes Modell mithilfe der Keras-Methode tf.keras.Model.predict ausführen.

Gibt es integrierte TensorFlow-Vorgänge, die in Cloud TPU nicht verfügbar sind?

Es gibt einige integrierte TensorFlow-Vorgänge, die derzeit nicht auf der Cloud TPU verfügbar sind. Weitere Informationen finden Sie unter Verfügbare TensorFlow-Operationen, wo auch aktuelle Problemumgehungen beschrieben sind.

Kann ich ein RL-Modell (Reinforcement Learning) mit einer Cloud TPU trainieren?

Reinforcement Learning umfasst eine breite Palette von Techniken, von denen einige derzeit nicht mit den Software-Abstraktionen für TPUs kompatibel sind. Einige Reinforcement-Learning-Konfigurationen erfordern die Ausführung einer Blackbox-"Simulationsumgebung", wobei eine CPU als Teil der Trainingsschleife verwendet wird. Wir haben festgestellt, dass diese mit der Cloud TPU nicht Schritt halten können und zu erheblichen Ineffizienzen führen.

Kann ich Einbettungen mit einer Cloud TPU verwenden?

Ja. Sie können die TPUEmbedding-Ebene verwenden, um Einbettungen in Keras-Modellen zu unterstützen. In benutzerdefinierten Ebenen und Modellen können Sie tf.nn.embedding_lookup() verwenden.

Kann ich Sequenzen mit variabler Länge mit Cloud TPU verwenden?

Es gibt mehrere Methoden zum Darstellen von Sequenzen variabler Länge in TensorFlow, einschließlich Padding, tf.while_loop(), abgeleiteter Tensordimensionen und Bucketing. Leider unterstützt die aktuelle Cloud TPU-Ausführungs-Engine nur einen Teil davon. Sequenzen mit variabler Länge müssen mithilfe von tf.while_loop(), tf.dynamic_rnn(), Bucketing, Padding oder Sequenzverkettung implementiert werden.

Kann ich ein wiederkehrendes neuronales Netzwerk (RNN) in Cloud TPU trainieren?

Ja. Zum Trainieren eines RNN mit TensorFlow verwenden Sie Keras RNN-Ebenen.

Kann ich mit Cloud TPU ein generatives kontradiktorisches Netzwerk (Generative Adversarial Network, GAN) trainieren?

Das Trainieren von GANs erfordert in der Regel einen häufigen Wechsel zwischen dem Trainieren des Generators und dem Trainieren des Diskriminators. Die aktuelle TPU-Ausführungsengine unterstützt nur einen einzelnen Ausführungsgraphen. Für den Wechsel zwischen Graphen muss eine vollständige Neukompilierung durchgeführt werden, die 30 Sekunden oder länger dauern kann.

Eine mögliche Problemumgehung besteht darin, immer die Summe der Verluste für den Generator und den Diskriminator zu berechnen, diese jedoch anschließend mit den beiden Eingabetensoren g_w und d_w zu multiplizieren. In Batches, in denen der Generator trainiert werden soll, können Sie g_w=1.0 und d_w=0.0 übergeben. Für Batches, in denen der Diskriminator trainiert werden soll, kehren Sie diese Werte um.

Kann ich ein Modell für Multi-Task-Lernen mit Cloud TPU trainieren?

Wenn die Aufgaben als großer Graph mit einer Aggregatverlustfunktion dargestellt werden können, ist keine spezielle Unterstützung für das Multi-Task-Lernen erforderlich. Die TPU-Ausführungsengine unterstützt derzeit jedoch nur einen einzelnen Ausführungsgraphen. Daher ist es nicht möglich, schnell zwischen mehreren Ausführungsgraphen mit gleichen Variablen aber unterschiedlicher Struktur zu wechseln. Zum Ändern von Ausführungsgraphen muss der Schritt der Graphkompilierung noch einmal ausgeführt werden, der 30 Sekunden oder länger dauern kann.

Unterstützt Cloud TPU den Eager-Modus von TensorFlow?

In TensorFlow können Nutzer einen @tf.function-Decorator zum Erstellen in XLA verwenden und die TPU mit dem Eager-Modus von TensorFlow verwenden.

Unterstützt Cloud TPU Modellparallelität?

Die Modellparallelität (oder die Ausführung nicht identischer Programme auf den mehreren Kernen innerhalb eines einzelnen Cloud TPU-Geräts) wird derzeit nicht unterstützt.

Wie kann ich den tatsächlichen Wert der Zwischentensoren auf Cloud TPU prüfen, wie bei tf.Print oder tfdbg?

Diese Funktion wird auf Cloud TPU derzeit nicht unterstützt. Es empfiehlt sich, Ihre Modelle mit TensorBoard auf der CPU/GPU zu debuggen und dann zur Cloud TPU zu wechseln, wenn das Modell für den vollständigen Einsatz bereit ist. Training skalieren.

Meine Schulungsanforderungen sind zu komplex oder speziell für die Keras Compiler API geeignet. Gibt es eine untergeordnete API, die ich verwenden kann?

Wenn Sie eine untergeordnete Kontrolle bei der Verwendung von TensorFlow benötigen, können Sie benutzerdefinierte Trainingsschleifen verwenden. In der TensorFlow-Dokumentation wird beschrieben, wie Sie benutzerdefinierte Trainingsschleifen speziell für TPUs und im allgemeinen Fall mit tf.distribute verwenden.