Files
ray-project--ray/python/ray/train/v2/tests/test_data_config.py
T
2026-07-13 13:17:40 +08:00

105 lines
4.3 KiB
Python

from ray.data._internal.execution.interfaces.execution_options import (
ExecutionOptions,
)
from ray.train import DataConfig
def test_per_dataset_execution_options_single(ray_start_4_cpus):
"""Test that a single ExecutionOptions object applies to all datasets."""
# Create execution options with specific settings
execution_options = ExecutionOptions()
execution_options.preserve_order = True
execution_options.verbose_progress = True
data_config = DataConfig(execution_options=execution_options)
# Verify that all datasets get the same execution options
train_options = data_config._get_execution_options("train")
test_options = data_config._get_execution_options("test")
val_options = data_config._get_execution_options("val")
assert train_options.preserve_order is True
assert train_options.verbose_progress is True
assert test_options.preserve_order is True
assert test_options.verbose_progress is True
assert val_options.preserve_order is True
assert val_options.verbose_progress is True
def test_per_dataset_execution_options_dict(ray_start_4_cpus):
"""Test that a dict of ExecutionOptions maps to specific datasets, and datasets
not in the dict get default ingest options. Also tests resource limits."""
# Create different execution options for different datasets
train_options = ExecutionOptions()
train_options.preserve_order = True
train_options.verbose_progress = True
train_options.resource_limits = train_options.resource_limits.copy(cpu=4, gpu=2)
test_options = ExecutionOptions()
test_options.preserve_order = False
test_options.verbose_progress = False
test_options.resource_limits = test_options.resource_limits.copy(cpu=2, gpu=1)
execution_options_dict = {
"train": train_options,
"test": test_options,
}
data_config = DataConfig(execution_options=execution_options_dict)
# Verify that each dataset in the dict gets its specific options
retrieved_train_options = data_config._get_execution_options("train")
retrieved_test_options = data_config._get_execution_options("test")
assert retrieved_train_options.preserve_order is True
assert retrieved_train_options.verbose_progress is True
assert retrieved_test_options.preserve_order is False
assert retrieved_test_options.verbose_progress is False
# Verify resource limits
assert retrieved_train_options.resource_limits.cpu == 4
assert retrieved_train_options.resource_limits.gpu == 2
assert retrieved_test_options.resource_limits.cpu == 2
assert retrieved_test_options.resource_limits.gpu == 1
# Verify that a dataset not in the dict gets default options
default_options = DataConfig.default_ingest_options()
retrieved_val_options = data_config._get_execution_options("val")
assert retrieved_val_options.preserve_order == default_options.preserve_order
assert retrieved_val_options.verbose_progress == default_options.verbose_progress
assert (
retrieved_val_options.resource_limits.cpu == default_options.resource_limits.cpu
)
assert (
retrieved_val_options.resource_limits.gpu == default_options.resource_limits.gpu
)
def test_per_dataset_execution_options_default(ray_start_4_cpus):
"""Test that None or empty dict execution_options results in all datasets
using default options."""
# Test with None
data_config_none = DataConfig(execution_options=None)
default_options = DataConfig.default_ingest_options()
retrieved_train_options = data_config_none._get_execution_options("train")
retrieved_test_options = data_config_none._get_execution_options("test")
assert retrieved_train_options.preserve_order == default_options.preserve_order
assert retrieved_test_options.preserve_order == default_options.preserve_order
# Test with empty dict
data_config_empty = DataConfig(execution_options={})
retrieved_train_options = data_config_empty._get_execution_options("train")
retrieved_test_options = data_config_empty._get_execution_options("test")
assert retrieved_train_options.preserve_order == default_options.preserve_order
assert retrieved_test_options.preserve_order == default_options.preserve_order
if __name__ == "__main__":
import sys
import pytest
sys.exit(pytest.main(["-v", "-x", __file__]))