code: def build_diff(
      name: str, base_value: float, experimental_value: float
  ) -> MetricDiff:
      """Build a diff between any type of metric.
  
      :param name: name assigned to the metric to be diff-ed.
      :param base_value: base value of the metric.
      :param experimental_value: experimental value of the metric.
      """
      diff = experimental_value - base_value
      diff_percentage = (
          100 * diff / base_value if base_value != 0 else "inf"
      )
  
      return MetricDiff(
          name=name,
          base_value=base_value,
          experimental_value=experimental_value,
          diff=diff,
          diff_percentage=diff_percentage,
      )
  
imports: import csv
  import logging
  import os
  from dataclasses import dataclass
  from statistics import mean
  from typing import Dict, List, Optional, Set, Union
  import ludwig.modules.metric_modules
  from ludwig.benchmarking.utils import format_memory, format_time
  from ludwig.globals import MODEL_HYPERPARAMETERS_FILE_NAME
  from ludwig.modules.metric_registry import get_metric_classes, metric_feature_type_registry
  from ludwig.types import ModelConfigDict
  from ludwig.utils.data_utils import load_json
label_desc: Use image node_id 1 for calling a global function with example usage: build_diff(name, base_value, experimental_value) and returns: MetricDiff