Allow overriding the batch size on a per dataset level

This commit is contained in:
Jaret Burkett committed 2026-08-21 12:56:04 -06:00
1 parent 89102f76dc
commit b96476a841
5 files changed
+30 -6

No files matched your search

+2 -4
View File
@@ -915,6 +915,7 @@ class DatasetConfig:
"""
def __init__(self, **kwargs):
self.batch_size: Union[int, None] = kwargs.get('batch_size', None)
self.type = kwargs.get('type', 'image') # sd, slider, reference
# will be legacy
self.folder_path: str = kwargs.get('folder_path', None)
@@ -1504,7 +1505,4 @@ def validate_configs(
raise ValueError(f"Cannot cache unload text encoder with {model_config.arch} model. Control images are encoded with text embeddings. You can cache the text embeddings though")
if train_config.diff_output_preservation and train_config.blank_prompt_preservation:
raise ValueError("Cannot use both differential output preservation and blank prompt preservation at the same time. Please set one of them to False.")
if train_config.batch_size > 1 and any(dataset_config.auto_frame_count for dataset_config in dataset_configs):
raise ValueError("Cannot use batch size greater than 1 with auto_frame_count. Please set batch_size to 1 or auto_frame_count to False.")
raise ValueError("Cannot use both differential output preservation and blank prompt preservation at the same time. Please set one of them to False.")
+10 -1
View File
@@ -704,7 +704,9 @@ def get_dataloader_from_datasets(
for config in dataset_config_list:
if config.type == 'image':
dataset = AiToolkitDataset(config, batch_size=batch_size, sd=sd)
# dataset level batch_size overrides the train config batch_size when set
dataset_batch_size = config.batch_size if config.batch_size is not None else batch_size
dataset = AiToolkitDataset(config, batch_size=dataset_batch_size, sd=sd)
datasets.append(dataset)
if config.buckets:
has_buckets = True
@@ -753,6 +755,13 @@ def get_dataloader_from_datasets(
**dataloader_kwargs
)
else:
# without buckets the dataloader batches across all datasets at once,
# so a dataset level batch_size cannot apply
for config in dataset_config_list:
if config.batch_size is not None:
raise ValueError(
f"Dataset level batch_size requires buckets to be enabled. Dataset {config.folder_path or config.dataset_path} has buckets disabled."
)
data_loader = DataLoader(
concatenated_dataset,
batch_size=batch_size,