code: def _format_perf_breakdown(perf: Perf) -> str:
      breakdown = [
          perf.fwd_compute,
          perf.fwd_comms,
          perf.bwd_compute,
          perf.bwd_comms,
          perf.prefetch_compute,
      ]
      breakdown_string = ",".join(
          [
              str(round(num)) if num >= 1 else round_to_one_sigfig(num)
              for num in breakdown
          ]
      )
  
      return f"{str(round(perf.total, 3))} ({breakdown_string})"
  
imports: import logging
  from collections import defaultdict
  from typing import Any, cast, Dict, List, Optional, Tuple, Union
  from torch import nn
  from torchrec.distributed.planner.constants import BIGINT_DTYPE, NUM_POOLINGS
  from torchrec.distributed.planner.shard_estimators import _calculate_shard_io_sizes
  from torchrec.distributed.planner.storage_reservations import FixedPercentageStorageReservation, HeuristicalStorageReservation, InferenceStorageReservation
  from torchrec.distributed.planner.types import ParameterConstraints, Perf, ShardingOption, Stats, Storage, StorageReservation, Topology
  from torchrec.distributed.planner.utils import _find_imbalance_tables, bytes_to_gb, bytes_to_mb, sharder_name
  from torchrec.distributed.types import ModuleSharder, ParameterSharding, ShardingPlan, ShardingType
label_desc: Use image node_id 4 for calling a global function with example usage: _format_perf_breakdown(perf) and returns: str, str, breakdown_string, str