# Copyright (c) ModelScope Contributors. All rights reserved. import torch from abc import ABC, abstractmethod from transformers.trainer_utils import EvalPrediction from typing import TYPE_CHECKING, Dict if TYPE_CHECKING: from swift.trainers import Trainer, TrainingArguments class EvalMetrics(ABC): def __init__(self, args: 'TrainingArguments', trainer: 'Trainer'): self.args = args self.trainer = trainer @abstractmethod def compute_metrics(self, eval_prediction: EvalPrediction) -> Dict[str, float]: pass def preprocess_logits_for_metrics(self, logits: torch.Tensor, labels: torch.Tensor) -> torch.Tensor: return logits