Evaluarea modelelor cu Accelerator

Antrenament eficient al modelelor AI cu PyTorch

Dennis Lee

Data Engineer, Amazon

De ce se utilizează modul de evaluare?

  • Modul de antrenare
    • Dropout: setează neuroni la zero
    • Normalizare pe loturi

Dropout și normalizare pe loturi Diagramă a unei rețele neuronale cu mai multe straturi: intrare, ascunse și ieșire. Dropout este aplicat straturilor ascunse pentru a preveni supraadaptarea, iar normalizarea pe loturi standardizează ieșirea fiecărui strat înaintea activării.

Antrenament eficient al modelelor AI cu PyTorch

De ce se utilizează modul de evaluare?

  • Modul de antrenare
    • Dropout: setează neuroni la zero
    • Normalizare pe loturi
  • Modul de evaluare dezactivează aceste straturi
  • model.eval() activează modul de evaluare

Dropout și normalizare pe loturi Diagramă a unei rețele neuronale cu mai multe straturi: intrare, ascunse și ieșire. Dropout este aplicat straturilor ascunse pentru a preveni supraadaptarea, iar normalizarea pe loturi standardizează ieșirea fiecărui strat înaintea activării.

Antrenament eficient al modelelor AI cu PyTorch

Dezactivarea gradienților cu torch.no_grad()

  • Antrenarea necesită calculul gradienților
  • torch.no_grad() dezactivează gradienții
  • Utilizați atât model.eval, cât și torch.no_grad:
model.eval()
with torch.no_grad():
    outputs = model(**inputs)

Calculul gradienților în backpropagation Diagramă a unei rețele neuronale care ilustrează procesul de backpropagation, în care gradienții sunt calculați la fiecare strat pentru ajustarea ponderilor. Se arată cum erorile se propagă înapoi de la stratul de ieșire prin straturile ascunse pentru actualizarea ponderilor prin gradient descent.

Antrenament eficient al modelelor AI cu PyTorch

Pregătirea unui set de date de validare

  • Încărcați diviziunea de validare a setului de date MRPC
validation_dataset = load_dataset("glue", "mrpc", split="validation")
  • Tokenizați setul de date de validare
def encode(examples):
    return tokenizer(examples["sentence1"], 
                      examples["sentence2"],
                      truncation=True,
                      padding="max_length")

validation_dataset = validation_dataset.map(encode, batched=True)
Antrenament eficient al modelelor AI cu PyTorch

Viața unei epoci: bucle de antrenare și evaluare

  • Pentru fiecare epocă, iterați peste seturile de date de antrenare și validare
  • Rulați mai întâi modelul în modul de antrenare
  • Rulați modelul în modul de evaluare și înregistrați metricile
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
Antrenament eficient al modelelor AI cu PyTorch

În interiorul buclei de evaluare

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}
Antrenament eficient al modelelor AI cu PyTorch

Înregistrarea metricilor după evaluare

  • Instrumente de urmărire: jurnale care înregistrează metrici; exemple: TensorBoard și MLflow
  • log_with: utilizează toate instrumentele de urmărire
  • .init_trackers(): inițializează instrumentele de urmărire
  • .log(): urmărește accuracy, f1, epoch
  • .end_training(): finalizează urmărirea
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()
Antrenament eficient al modelelor AI cu PyTorch

Să exersăm!

Antrenament eficient al modelelor AI cu PyTorch

Preparing Video For Download...