Paměťově efektivní trénink s Adafactorem

Efficient AI Model Training with PyTorch

Dennis Lee

Data Engineer, Amazon

Optimalizátory pro efektivní trénink

 

 

Ikony reprezentující AdamW, Adafactor a 8-bit Adam.

Efficient AI Model Training with PyTorch

Kompromisy optimalizátorů

Diagram znázorňující kompromisy mezi počtem parametrů a přesností pro AdamW, Adafactor a 8-bit Adam.

Efficient AI Model Training with PyTorch

Jak funguje Adafactor?

 

Diagram znázorňující kroky algoritmu Adafactor.

Efficient AI Model Training with PyTorch

Jak funguje Adafactor?

 

Diagram znázorňující kroky algoritmu Adafactor.

Efficient AI Model Training with PyTorch

Jak funguje Adafactor?

 

Diagram znázorňující kroky algoritmu Adafactor.

 

  • EMA: exponenciální klouzavý průměr
  • Druhý moment: EMA kvadrátů gradientů
Efficient AI Model Training with PyTorch

Jak funguje Adafactor?

 

Diagram znázorňující kroky algoritmu Adafactor.

 

  • EMA: exponenciální klouzavý průměr
  • Druhý moment: EMA kvadrátů gradientů
Efficient AI Model Training with PyTorch

Jak Adafactor šetří paměť?

 

Diagram znázorňující matici druhého momentu, součet sloupců a součet řádků.

  • Úspora paměti: matice druhého momentu se neukládá
Efficient AI Model Training with PyTorch

Jak Adafactor šetří paměť?

 

Diagram znázorňující matici druhého momentu, součet sloupců a součet řádků.

  • Úspora paměti: matice druhého momentu se neukládá
  • Místo toho se ukládají součty sloupců a řádků matice
Efficient AI Model Training with PyTorch

Jak Adafactor šetří paměť?

 

Diagram znázorňující matici druhého momentu, součet sloupců a součet řádků.

  • Úspora paměti: matice druhého momentu se neukládá
  • Místo toho se ukládají součty sloupců a řádků matice
Efficient AI Model Training with PyTorch

Jak Adafactor šetří paměť?

 

Diagram znázorňující matici druhého momentu, součet sloupců a součet řádků.

  • Úspora paměti: matice druhého momentu se neukládá
  • Místo toho se ukládají součty sloupců a řádků matice
  • Celá matice se odhadne jejich součinem
Efficient AI Model Training with PyTorch

Implementace s Trainerem a Acceleratorem

Graf porovnávající snadnost použití a možnosti přizpůsobení pro Accelerator a Trainer.

Efficient AI Model Training with PyTorch

Implementace Adafactoru s Trainerem

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}
Efficient AI Model Training with PyTorch

Implementace Adafactoru s Acceleratorem

# Assumes PyTorch 2.5 or higher
from torch.optim import Adafactor

optimizer = 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
Efficient AI Model Training with PyTorch

Inspekce stavu optimalizátoru

  • Přístup k optimizer přes jeho state
optimizer_state = optimizer.state.values()
  • Nebo přístup k optimizer přes trainer
optimizer_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, ...])}, ...])
Efficient AI Model Training with PyTorch

Výpočet využití paměti Adafactoru

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")
Number of Adafactor parameters: 178,712
Adafactor size: 1 MB
  • Srovnání s AdamW: Adafactor spotřebuje mnohem méně paměti!
Number of AdamW parameters: 131,566,188
AdamW size: 502 MB
Efficient AI Model Training with PyTorch

Lass uns üben!

Efficient AI Model Training with PyTorch

Preparing Video For Download...