Bereken de grootte van de optimizer
Je verkent verschillende optimizers voor het trainen van een model en je moet het geheugengebruik van een optimizer kwantificeren voor een objectieve vergelijking. Als test heb je een DistilBERT-model en een AdamW-optimizer geladen zodat je het geheugengebruik kunt bepalen. Schrijf de functie compute_optimizer_size om de grootte van een optimizer te berekenen.
De AdamW-optimizer is direct gedefinieerd (zonder Trainer), en het trainen is afgerond.
Deze oefening maakt deel uit van de cursus
Efficiënt AI-modellen trainen met PyTorch
Oefeninstructies
- Bereken het aantal elementen en de grootte van elk
tensorin defor-lus. - Bereken de totale grootte van de
optimizerin megabytes. - Benader de optimizer state dictionary via de juiste methode op
optimizer.state.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
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(optimizer.state.____())
print(f"Number of optimizer parameters: {total_num_elements:,}\nOptimizer size: {total_size_megabytes:.0f} MB")