Evaluasi model dengan Accelerator

Pelatihan Model AI Efisien dengan PyTorch

Dennis Lee

Data Engineer, Amazon

Mengapa menaruh model pada mode evaluasi?

  • Mode pelatihan
    • Dropout: Menyetel neuron ke nol
    • Normalisasi batch

Dropout dan normalisasi batch Diagram jaringan saraf dengan beberapa lapisan: input, tersembunyi, dan output. Dropout diterapkan pada lapisan tersembunyi untuk mencegah overfitting, dan normalisasi batch menormalkan keluaran tiap lapisan sebelum aktivasi.

Pelatihan Model AI Efisien dengan PyTorch

Mengapa menaruh model pada mode evaluasi?

  • Mode pelatihan
    • Dropout: Menyetel neuron ke nol
    • Normalisasi batch
  • Mode evaluasi menonaktifkan lapisan ini
  • model.eval() mengaktifkan mode evaluasi

Dropout dan normalisasi batch Diagram jaringan saraf dengan beberapa lapisan: input, tersembunyi, dan output. Dropout diterapkan pada lapisan tersembunyi untuk mencegah overfitting, dan normalisasi batch menormalkan keluaran tiap lapisan sebelum aktivasi.

Pelatihan Model AI Efisien dengan PyTorch

Nonaktifkan gradien dengan torch.no_grad()

  • Pelatihan memerlukan perhitungan gradien
  • torch.no_grad() menonaktifkan gradien
  • Panggil model.eval dan torch.no_grad:
model.eval()
with torch.no_grad():
    outputs = model(**inputs)

Menghitung gradien pada backpropagation Diagram jaringan saraf yang mengilustrasikan proses backpropagation, di mana gradien dihitung di tiap lapisan untuk menyesuaikan bobot. Diagram menunjukkan bagaimana error dipropagasikan mundur dari lapisan output melalui lapisan tersembunyi untuk memperbarui bobot dengan gradient descent.

Pelatihan Model AI Efisien dengan PyTorch

Siapkan dataset validasi

  • Muat split validasi dari dataset MRPC
validation_dataset = load_dataset("glue", "mrpc", split="validation")
  • Tokenisasi dataset validasi
def encode(examples):
    return tokenizer(examples["sentence1"], 
                      examples["sentence2"],
                      truncation=True,
                      padding="max_length")

validation_dataset = validation_dataset.map(encode, batched=True)
Pelatihan Model AI Efisien dengan PyTorch

Siklus epoch: loop pelatihan dan evaluasi

  • Tiap epoch, iterasi atas dataset train dan validasi
  • Jalankan model pada mode pelatihan terlebih dahulu
  • Lalu jalankan pada mode evaluasi dan catat metrik setelahnya
for epoch in range(num_epochs):

model.train() for step, batch in enumerate(train_dataloader): # Perform training step
model.eval() for step, batch in enumerate(eval_dataloader): # Perform evaluation step
# Log evaluation metrics
Pelatihan Model AI Efisien dengan PyTorch

Di dalam loop evaluasi

metric = evaluate.load("glue", "mrpc")
model.eval()
for step, batch in enumerate(eval_dataloader):

with torch.no_grad(): outputs = model(**batch) predictions = outputs.logits.argmax(dim=-1)
predictions, references = accelerator.gather_for_metrics((predictions, batch["labels"]))
metric.add_batch(predictions=predictions, references=references)
eval_metric = metric.compute() print(f"Eval metrics: \n{eval_metric}")
Eval metrics: 
{'accuracy': 0.81, 'f1': 0.77}
Pelatihan Model AI Efisien dengan PyTorch

Catat metrik setelah evaluasi

  • Alat pelacakan: notebook yang mencatat metrik; contoh: TensorBoard dan MLflow
  • log_with: gunakan semua alat pelacakan eksperimen
  • .init_trackers(): inisialisasi alat pelacakan
  • .log(): catat accuracy, f1, epoch
  • .end_training(): akhiri pelacakan
accelerator = Accelerator(project_dir=".",
                          log_with="all")

accelerator.init_trackers("my_project")
for epoch in range(num_epochs): # Training loop is here # Evaluation loop is here accelerator.log({
"accuracy": eval_metric["accuracy"], "f1": eval_metric["f1"],
}, step=epoch)
accelerator.end_training()
Pelatihan Model AI Efisien dengan PyTorch

Ayo berlatih!

Pelatihan Model AI Efisien dengan PyTorch

Preparing Video For Download...