async def benchmark_load(
        self,
        iterations: int = 1,
    ) -> "MLModelBenchmarker.Measurement":
        """
        Measures the loading time of the model.

        This method creates and loads the model multiple times, measuring the duration
        of each load operation. It then unloads the model and performs garbage collection
        after each iteration to ensure consistent measurements.

        Parameters
        ----------
        iterations: int
                The number of times to load the model. Defaults to 1.

        Returns
        -------
        MLModelBenchmarker.Measurement
            A Measurement object containing statistics and samples of the load durations in milliseconds.

        """
        if iterations < 1:
            raise ValueError("The number of iterations must be at least 1. Received: {iterations}")

        load_durations = []
        for _ in range(0, iterations):
            loaded_model = await MLModelBenchmarker._create_loaded_model(
                model=self.model,
                device=self.device,
            )

            load_duration = loaded_model.load_duration_in_nano_seconds
            if load_duration is None:
                raise ValueError(
                    "Failed to retrieve model load duration. The model may not have been loaded properly or the timing information is unavailable."
                )

            load_durations.append(_convert_nanoseconds_to_milliseconds(load_duration))

            if self._loaded_model is None:
                self._loaded_model = loaded_model
            else:
                await loaded_model.unload()
                del loaded_model
                gc.collect()

        return MLModelBenchmarker.Measurement.from_samples(
            samples=load_durations,
        )

        Measures the loading time of the model.

        This method creates and loads the model multiple times, measuring the duration
        of each load operation. It then unloads the model and performs garbage collection
        after each iteration to ensure consistent measurements.

        Parameters
        ----------
        iterations: int
                The number of times to load the model. Defaults to 1.

        Returns
        -------
        MLModelBenchmarker.Measurement
            A Measurement object containing statistics and samples of the load durations in milliseconds.

        
coremltools/models/ml_program/experimental/perf_utils.py