code: def _handle_xshards(self, dataset, steps, local_batch_size, shuffle):
      import tensorflow as tf
  
      data, label = ray_partitions_get_data_label(
          ray.get(dataset), allow_tuple=True, allow_list=False
      )
      dataset = tf.data.Dataset.from_tensor_slices((data, label))
      options = tf.data.Options()
      options.experimental_distribute.auto_shard_policy = (
          tf.data.experimental.AutoShardPolicy.OFF
      )
      dataset = dataset.with_options(options)
      dataset = dataset.repeat()
      dataset = dataset.take(steps * local_batch_size)
      if shuffle:
          dataset = dataset.shuffle(local_batch_size * min(steps, 10))
      dataset = dataset.batch(local_batch_size)
      return dataset
  
imports: import logging
  import json
  import os
  import numpy
  import ray
  from contextlib import closing
  import logging
  import socket
  from zoo.orca.data.utils import ray_partitions_get_data_label
label_desc: Use image node_id 1 for calling the HorovodDatasetHanlder obj's underlying member method code with example usage: obj._handle_xshards(dataset, steps, local_batch_size, shuffle) and returns: dataset