Berechne die Größe des Optimierers
Du untersuchst verschiedene Optimierer für das Training eines Modells und musst die Speichernutzung eines Optimierers für einen objektiven Vergleich quantifizieren. Zu Testzwecken hast du ein DistilBERT-Modell und den AdamW-Optimierer geladen, damit du die Speichernutzung quantifizieren kannst. Schreibe die Funktion compute_optimizer_size
, um die Größe eines Optimierers zu berechnen.
Die AdamW optimizer
wurde definiert und das Training mit optimizer
abgeschlossen.
Diese Übung ist Teil des Kurses
Effizientes KI-Modelltraining mit PyTorch
Anleitung zur Übung
- Berechne die Anzahl der Elemente und die Größe der einzelnen
tensor
in derfor
Schleife. - Berechne die Gesamtgröße von
optimizer
in Megabyte. - Pass im Zustand
optimizer
aufcompute_optimizer_size
.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
def compute_optimizer_size(optimizer_state):
total_size_megabytes, total_num_elements = 0, 0
for params in optimizer_state:
for name, tensor in params.items():
tensor = torch.tensor(tensor)
# Compute number of elements and size of each tensor
num_elements, element_size = tensor.____(), tensor.____()
total_num_elements += num_elements
# Compute the total size in megabytes
total_size_megabytes += ____ * ____ / (1024 ** 2)
return total_size_megabytes, total_num_elements
# Pass in the optimizer state
total_size_megabytes, total_num_elements = compute_optimizer_size(____.____.____())
print(f"Number of optimizer parameters: {total_num_elements:,}\nOptimizer size: {total_size_megabytes:.0f} MB")