Source code for eval_framework.metrics.efficiency.bytes_per_sequence_position

from eval_framework.metrics.base import BaseMetric, MetricResult
from eval_framework.shared.types import Completion, Loglikelihood


[docs] class BytesLoglikelihood(BaseMetric[Loglikelihood]): NAME = "Bytes"
[docs] def calculate(self, response: Loglikelihood) -> list[MetricResult]: if response.error or response.concat_compression is None: value = None else: value = response.concat_compression.num_bytes return [MetricResult(metric_name=self.NAME, value=value, higher_is_better=True, error=response.error)]
[docs] class SequencePositionsLoglikelihood(BaseMetric[Loglikelihood]): NAME = "SequencePositions"
[docs] def calculate(self, response: Loglikelihood) -> list[MetricResult]: if response.error or response.concat_compression is None: value = None else: value = response.concat_compression.num_tokens return [MetricResult(metric_name=self.NAME, value=value, higher_is_better=True, error=response.error)]
[docs] class BytesCompletion(BaseMetric[Completion]): NAME = "Bytes"
[docs] def calculate(self, response: Completion) -> list[MetricResult]: if response.error or response.concat_compression is None: value = None else: value = response.concat_compression.num_bytes return [MetricResult(metric_name=self.NAME, value=value, higher_is_better=True, error=response.error)]
[docs] class SequencePositionsCompletion(BaseMetric[Completion]): NAME = "SequencePositions"
[docs] def calculate(self, response: Completion) -> list[MetricResult]: if response.error or response.concat_compression is None: value = None else: value = response.concat_compression.num_tokens return [MetricResult(metric_name=self.NAME, value=value, higher_is_better=True, error=response.error)]