def METHOD_NAME(self) -> Dataset:
    if self.dataset_size not in ['250K', '1M', '10M', '270M']:
        raise ValueError(
            "Only '250K', '1M', '10M', and '270M' are supported for dataset_size."
        )
    if self.dataset_dimension != '2D':
        raise ValueError(
            "Currently, only '2D' is supported for dataset_dimension.")
    if self.dataset_size == '270M':
        answer = ''
        while answer not in ['y', 'n']:
            answer = input("""You're about to download 270M SMILES strings.
            This dataset is 23GB. Are you sure you want to continue? (Y/N)"""
                          ).lower()
        if answer == 'n':
            raise ValueError('Choose a smaller dataset_size.')
    filename = self.name + '.csv'
    dataset_file = os.path.join(self.data_dir, filename)
    if not os.path.exists(dataset_file):
        compressed_file = self.name + '.tar.gz'
        if not os.path.exists(compressed_file):
            dc.utils.download_url(url=ZINC15_URL + compressed_file,
                                  dest_dir=self.data_dir)
        dc.utils.untargz_file(os.path.join(self.data_dir, compressed_file),
                              self.data_dir)
    loader = dc.data.CSVLoader(tasks=self.tasks,
                               feature_field="smiles",
                               id_field="zinc_id",
                               featurizer=self.featurizer)
    return loader.METHOD_NAME(dataset_file, shard_size=8192)