class_docstr: Base class for implementing dataset builders. See more information
  on top. Child class needs to implement ``build`` and ``load``.
  
  Args:
      dataset_name (str): Name of the dataset passed from child.
docstr: Similar to load function, used by MMF to build a dataset for first
  time when it is not available. This internally calls 'build' function.
  Override that function in your child class.
  
  NOTE: The caller to this function should only call this on main process
  in a distributed settings so that downloads and build only happen
  on main process and others can just load it. Make sure to call
  synchronize afterwards to bring all processes in sync.
  
  Args:
      config (DictConfig): Configuration of this dataset loaded from
                           config.
      dataset_type (str): Type of dataset, train|val|test
  
  .. warning::
  
      DO NOT OVERRIDE in child class. Instead override ``build``.
docstr_tok: ["Similar","to","load","function",",","used","by","MMF","to","build","a","dataset","for","first","time","when","it","is","not","available",".","This","internally","calls","'build","'","function",".","Override","that","function","in","your","child","class",".","NOTE",":","The","caller","to","this","function","should","only","call","this","on","main","process","in","a","distributed","settings","so","that","downloads","and","build","only","happen","on","main","process","and","others","can","just","load","it",".","Make","sure","to","call","synchronize","afterwards","to","bring","all","processes","in","sync",".","Args",":","config","(","DictConfig",")",":","Configuration","of","this","dataset","loaded","from","config",".","dataset_type","(","str",")",":","Type","of","dataset",",","train|val|test","..","warning",":",":","DO","NOT","OVERRIDE","in","child","class",".","Instead","override","``","build","``","."]
code: def build_dataset(
      self, config, dataset_type="train", *args, **kwargs
  ):
      """
      Similar to load function, used by MMF to build a dataset for first
      time when it is not available. This internally calls 'build' function.
      Override that function in your child class.
  
      NOTE: The caller to this function should only call this on main process
      in a distributed settings so that downloads and build only happen
      on main process and others can just load it. Make sure to call
      synchronize afterwards to bring all processes in sync.
  
      Args:
          config (DictConfig): Configuration of this dataset loaded from
                               config.
          dataset_type (str): Type of dataset, train|val|test
  
      .. warning::
  
          DO NOT OVERRIDE in child class. Instead override ``build``.
      """
      self.build(config, dataset_type, *args, **kwargs)
  
imports: import uuid
  from typing import Optional
  import pytorch_lightning
  from mmf.utils.build import build_dataloader_and_sampler
  from mmf.utils.logger import log_class_usage
  from omegaconf import DictConfig
  from torch.utils.data import Dataset
label_desc: Use image node_id 12 for calling the BaseDatasetBuilder obj's underlying member method code with example usage: obj.build_dataset(config, dataset_type) without return types