code: def _split_channel_args(
      **kwargs: t.Any,
  ) -> tuple[t.Dict[str, t.Any], t.Dict[str, t.Any]]:
      channel_kwarg_names = (
          "timeout",
          "metadata",
          "credentials",
          "wait_for_ready",
          "compression",
      )
      channel_kwargs: t.Dict[str, t.Any] = {}
      other_kwargs: t.Dict[str, t.Any] = {}
      for k, v in kwargs.items():
          if k in channel_kwarg_names:
              channel_kwargs[k] = v
          else:
              other_kwargs[k] = v
      return other_kwargs, channel_kwargs
  
imports: from __future__ import annotations
  import asyncio
  import logging
  import time
  import typing
  from functools import cached_property
  from typing import TYPE_CHECKING
  from packaging.version import parse
  from ...exceptions import BentoMLException
  from ...grpc.utils import LATEST_PROTOCOL_VERSION
  from ...grpc.utils import import_generated_stubs
  from ...grpc.utils import import_grpc
  from ...grpc.utils import load_from_file
  from ..None import io_descriptors
  from ..service import Service
  from ..service.inference_api import InferenceAPI
  from ..utils import LazyLoader
  from .None import AsyncClient
  from .None import Client
  from .None import SyncClient
label_desc: Use image node_id 6 for calling the AsyncGrpcClient obj's underlying member method code with example usage: obj._split_channel_args() and returns: other_kwargs,  channel_kwargs