code: def add_conv_dataset_command(subparsers):
      # Convert dataset
      subparser = subparsers.add_parser(
          "conv_dataset", help="Convert CSV dataset to cache."
      )
      subparser.add_argument(
          "-F",
          "--force",
          action="store_true",
          help="force overwrite destination",
          required=False,
      )
      subparser.add_argument(
          "-S",
          "--shuffle",
          action="store_true",
          help="shuffle data",
          required=False,
      )
      subparser.add_argument(
          "-N",
          "--normalize",
          action="store_true",
          help="normalize data range",
          required=False,
      )
      subparser.add_argument(
          "-t",
          "--num_of_threads",
          type=int,
          required=False,
          help="use multithreading to convert cache, default to 10",
      )
      subparser.add_argument("source")
      subparser.add_argument("destination")
      subparser.set_defaults(func=conv_dataset_command)
  
file_path: nnabla/python/src/nnabla/utils/cli/conv_dataset.py
imports: import os
  import shutil
  from nnabla.config import nnabla_config
  from nnabla.utils.create_cache import CreateCache
  from nnabla.utils.data_source import DataSourceWithFileCache
  from nnabla.utils.data_source_implements import CacheDataSource, CsvDataSource
  from tqdm import tqdm
label_desc: Use image node_id 3 for calling a global function with example usage: add_conv_dataset_command(subparsers) without return types