code: def _init_metrics_wrappers(self):
      metrics_client = BentoMLContainer.metrics_client.get()
  
      max_max_batch_size = max(
          method.max_batch_size for method in self.runner.runner_methods
      )
  
      self.adaptive_batch_size_hist = metrics_client.Histogram(
          namespace="bentoml_runner",
          name="adaptive_batch_size",
          documentation="Runner adaptive batch size",
          labelnames=[
              "runner_name",
              "worker_index",
              "method_name",
              "service_version",
              "service_name",
          ],
          buckets=exponential_buckets(1, 2, max_max_batch_size),
      )
  
imports: from __future__ import annotations
  import functools
  import json
  import logging
  import pickle
  import traceback
  import typing
  from typing import TYPE_CHECKING
  from simple_di import Provide
  from simple_di import inject
  from bentoml.exceptions import BentoMLException
  from bentoml.exceptions import ServiceUnavailable
  from ..configuration.containers import BentoMLContainer
  from ..context import component_context
  from ..context import trace_context
  from ..marshal.dispatcher import CorkDispatcher
  from ..runner.container import AutoContainer
  from ..runner.container import Payload
  from ..runner.utils import PAYLOAD_META_HEADER
  from ..runner.utils import Params
  from ..runner.utils import payload_paramss_to_batch_params
  from ..server.base_app import BaseAppFactory
  from ..types import LazyType
  from ..utils.metrics import exponential_buckets
label_desc: Use image node_id 3 for calling the RunnerAppFactory obj's underlying member method code with example usage: obj._init_metrics_wrappers() without return types