code: def _main(cli_args):
      args = _parse_args(cli_args)
  
      if any(arg in ["--help", "-h"] for arg in args.rest):
          _run_training(args.rest)
  
      _init_logger(args.worker_id, args.debug)
      if args.worker_id is None:
          _run_training_subprocesses(args.num_workers, cli_args)
      else:
          dist_utils.setup_distributed(
              world_size=args.num_workers,
              rank=args.worker_id,
              local_rank=args.device_id,
              backend="nccl" if torch.cuda.is_available() else "gloo",
              init_method=args.sync_protocol,
          )
          if args.random_seed is not None:
              torch.manual_seed(args.random_seed)
          if torch.cuda.is_available():
              torch.cuda.set_device(args.device_id)
              _LG.info("CUDA device set to %s", args.device_id)
          _run_training(args.rest)
  
file_path: audio/examples/source_separation/train.py
imports: import argparse
  import logging
  import subprocess
  import sys
  import torch
  from utils import dist_utils
label_desc: Use image node_id 2 for calling a global function with example usage: _main(cli_args) without return types