Vue d'ensemble
TensorFlow 2.8, publié le 4 février 2022, introduit le dispatch asynchrone et l'API DTensor pour le calcul distribué.
Fonctionnalités principales
Dispatch asynchrone
Le dispatch asynchrone améliore les performances en envoyant les opérations au GPU sans attendre leur complétion, permettant un meilleur recouvrement calcul/transfert.
python
import tensorflow as tf
# Le dispatch asynchrone est activé par défaut
model = tf.keras.Sequential([
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax'),
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy')
# L'entraînement bénéficie du dispatch asynchrone
# model.fit(x_train, y_train, epochs=5)
DTensor
L'API DTensor permet de distribuer les tenseurs et les calculs sur plusieurs appareils (GPU/TPU) de manière transparente, simplifiant le parallélisme de données et de modèles.
python
import tensorflow as tf
from tensorflow.experimental import dtensor
# Création d'un mesh de calcul
mesh = dtensor.create_mesh([("batch", 2)], devices=['CPU:0', 'CPU:1'])
layout = dtensor.Layout(['batch', dtensor.UNSHARDED], mesh)
# Tensor distribué sur le mesh
tensor = dtensor.call_with_layout(
tf.ones, layout, shape=(4, 3)
)
print(tensor.shape) # (4, 3)
