code: def split_and_load(batch, ctx_list):
      """Split data to 1 batch each device."""
      new_batch = []
      for i, data in enumerate(batch):
          if isinstance(data, (list, tuple)):
              new_data = [
                  x.as_in_context(ctx) for x, ctx in zip(data, ctx_list)
              ]
          else:
              new_data = [data.as_in_context(ctx_list[0])]
          new_batch.append(new_data)
      return new_batch
  
imports: import argparse
  import os
  import logging
  import time
  import gluoncv
  import mxnet
  import numpy
  from data import *
  from gluoncv import data, utils
  from gluoncv.data.batchify import Append, FasterRCNNTrainBatchify, Tuple
  from gluoncv.data.transforms.presets.rcnn import FasterRCNNDefaultTrainTransform, FasterRCNNDefaultValTransform
  from gluoncv.model_zoo import get_model
  from gluoncv.utils.metrics.coco_detection import COCODetectionMetric
  from gluoncv.utils.metrics.rcnn import RCNNAccMetric, RCNNL1LossMetric, RPNAccMetric, RPNL1LossMetric
  from gluoncv.utils.metrics.voc_detection import VOC07MApMetric
  from gluoncv.utils.parallel import Parallel, Parallelizable
  from model import faster_rcnn_resnet101_v1d_custom, faster_rcnn_resnet50_v1b_custom
  from mxnet import autograd, gluon
  from mxnet.contrib import amp
label_desc: Use image node_id 5 for calling a global function with example usage: split_and_load(batch, ctx_list) and returns: new_batch