here is the minimalist example to show what I mean, could you help me please complete it with different workers.
from torch.utils.data import Dataset, DataLoader
import torch
import tensorflow_datasets as tfds
import tensorflow as tf
import itertools
from itertools import cycle, islice



def get_dummy_dataset():
  inputs = ["input 1",
        "input 2",
        "input 3",
        "input 4"]
  target = ["target 1",
            "target 2",
            "target 3",
            "target 4"]
  features = {"inputs": inputs, "targets": target}
  def my_fn(features):
    ret = {}
    for k, v in features.items():
          ret[f'{k}_plaintext'] = v
    return ret
  dataset = tf.data.Dataset.from_tensor_slices(features)
  dataset = dataset.map(my_fn, num_parallel_calls=tf.data.experimental.AUTOTUNE)
  return dataset


class WMTDataset(torch.utils.data.IterableDataset):
    def __init__(self, batch_size):
        super(WMTDataset).__init__()
        dataset = get_dummy_dataset()
        self.dataset_size = 4
        self.batch_size = batch_size
        self.dataset = self.create_dataset(dataset)

    def __len__(self):
      return self.dataset_size

    def __iter__(self):
      return self.dataset

    def create_dataset(self, dataset):
      dataset = dataset.batch(self.batch_size, drop_remainder=False)
      return itertools.cycle(dataset)



iterable_dataset = WMTDataset(batch_size=2)
loader = DataLoader(iterable_dataset, batch_size=None)
for batch in islice(loader, 2):
    print("#########batch ", batch)