Entraîner efficacement des modèles d’IA avec PyTorch
Dennis Lee
Data Engineer, Amazon











training_args = TrainingArguments(output_dir="./results", evaluation_strategy="epoch",optim="adafactor")trainer = Trainer(model=model, args=training_args, train_dataset=train_dataset, eval_dataset=validation_dataset, compute_metrics=compute_metrics) trainer.train()
{'epoch': 1.0, 'eval_accuracy': 0.6, 'eval_f1': 0.5}
# Suppose PyTorch 2.5 ou supérieur from torch.optim import Adafactoroptimizer = Adafactor(params=model.parameters(), lr=lr)for batch in train_dataloader: inputs, targets = batch["input_ids"], batch["labels"] outputs = model(inputs, labels=targets) loss = outputs.loss accelerator.backward(loss) optimizer.step() lr_scheduler.step() optimizer.zero_grad() print(f"Loss = {loss}")
Loss = 0.71
optimizer via son stateoptimizer_state = optimizer.state.values()
optimizer via traineroptimizer_state = trainer.optimizer.state.values()
print(optimizer_state)
dict_values([{'step': tensor(3.),
'exp_avg_sq_row': tensor([1.0000e-30, 1.0000e-30, 1.0000e-30, ...]),
'exp_avg_sq_col': tensor([4.6147e-11, 5.5115e-11, 1.6338e-10, ...])}, ...])
total_size_megabytes, total_num_elements = \
compute_optimizer_size(trainer.optimizer.state.values())
print(f"Number of Adafactor parameters: {total_num_elements:,}")
print(f"Adafactor size: {total_size_megabytes:.0f} MB")
Nombre de paramètres Adafactor : 178 712
Taille d’Adafactor : 1 Mo
Nombre de paramètres AdamW : 131 566 188
Taille d’AdamW : 502 Mo
Entraîner efficacement des modèles d’IA avec PyTorch