code: def parse_cuda_device(cuda_device: Union[str, int, List[int]]) -> Union[int, List[int]]:
      
      def from_list(strings):
          if len(strings) > 1:
              return [int(d) for d in strings]
          elif len(strings) == 1:
              return int(strings[0])
          else:
              return -1
  
      if isinstance(cuda_device, str):
          return from_list(re.split(r',\s*', cuda_device))
      elif isinstance(cuda_device, int):
          return cuda_device
      elif isinstance(cuda_device, list):
          return from_list(cuda_device)
      else:
          # TODO(brendanr): Determine why mypy can't tell that this matches the Union.
          return int(cuda_device)
docs: Disambiguates single GPU and multiple GPU settings for cuda_device param.