cursus.steps.configs.config_dummy_training_step

Configuration for DummyTraining step with flexible input modes.

This module defines the configuration class for the DummyTraining step, which is an INTERNAL node that can accept optional inputs from previous steps or fall back to reading from the source directory.

class DummyTrainingConfig(*, author, bucket, role, region, service_name, pipeline_version, model_class='xgboost', current_date=<factory>, framework_version='2.1.0', py_version='py310', source_dir=None, enable_caching=False, use_secure_pypi=False, max_runtime_seconds=172800, project_root_folder, processing_instance_count=1, processing_volume_size=500, processing_instance_type_large='ml.m5.4xlarge', processing_instance_type_small='ml.m5.2xlarge', use_large_processing_instance=False, skip_volume_kms=None, processing_source_dir=None, processing_entry_point='dummy_training.py', processing_script_arguments=None, processing_framework_version='1.2-1', pretrained_model_path, **extra_data)[source]

Bases: ProcessingStepConfigBase

Configuration for DummyTraining step with flexible input modes.

This configuration follows the Three-Tier Config Design pattern:

Tier 1 (Essential Fields): Required user inputs - pretrained_model_path: Path to model artifacts (S3 URI, local path, or None) - Inherited required fields from BasePipelineConfig and ProcessingStepConfigBase

Tier 2 (System Fields): Fields with defaults that can be overridden - processing_entry_point: Entry point script (default: “dummy_training.py”) - Instance types, volume sizes, etc. (inherited from base)

Tier 3 (Derived Fields): Calculated from Tier 1 and Tier 2 - Inherited derived fields like effective_source_dir, script_path

## Model Artifacts Input (Tier 1 Essential Field)

The pretrained_model_path field accepts three types of values:

  1. None (default) - SOURCE Fallback Assumption: - Assumes model.tar.gz is located at source_dir/models/model.tar.gz - Default behavior for backward compatibility - Example: pretrained_model_path=None or omit the field

  2. S3 URI - Explicit S3 Path: - Full S3 path to model directory or file - Examples:

    • s3://my-bucket/models/ (directory)

    • s3://my-bucket/models/model.tar.gz (file)

  3. Local Path - Explicit Local Directory: - Relative or absolute path to model directory - Examples:

    • ./models/ (relative)

    • /absolute/path/to/models/ (absolute)

    • source_dir/models/ (relative to source)

Priority Resolution: Config field → Dependency injection → SOURCE fallback

## Hyperparameters Resolution

Hyperparameters follow dependency injection pattern: - From hyperparameters_s3_uri channel (if provided via dependency injection) - Falls back to multiple SOURCE locations:

  • /opt/ml/code/hyperparams/hyperparameters.json

  • source_dir/hyperparams/hyperparameters.json

  • source_dir/hyperparameters.json

## Use Cases

  • SOURCE Fallback: pretrained_model_path=None (default, uses source_dir/models/)

  • Explicit S3: pretrained_model_path=”s3://bucket/path/to/models/”

  • Explicit Local: pretrained_model_path=”path/to/models/” or “./models/”

  • Absolute Path: pretrained_model_path=”/absolute/path/to/models/”

## Expected Source Directory Structure (when pretrained_model_path=None)

``` source_dir/ ├── dummy_training.py # Main processing script ├── models/ # Model directory │ └── model.tar.gz # Pre-trained model artifacts └── hyperparams/ # Hyperparameters directory (optional)

└── hyperparameters.json # Hyperparameters file

```

## Example Configs

```python # SOURCE fallback (None assumption) config = DummyTrainingConfig(

pretrained_model_path=None, # or omit entirely # … other required fields

)

# Explicit S3 path config = DummyTrainingConfig(

pretrained_model_path=”s3://my-bucket/models/”, # … other required fields

)

# Explicit local path config = DummyTrainingConfig(

pretrained_model_path=”./models/”, # … other required fields

)

pretrained_model_path: str | Path | None
processing_entry_point: str
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'allow', 'protected_namespaces': (), 'validate_assignment': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

classmethod validate_pretrained_model_path(v)[source]

Validate pretrained_model_path is None, S3 URI, or local directory path.

Converts Path objects to strings for consistent handling.

Parameters:

v (str | Path | None) – Path value to validate (str, Path, or None)

Returns:

Validated path as string or None

Raises:

ValueError – If path format is invalid

Return type:

str | None

validate_config()[source]

Validate configuration for INTERNAL node with optional inputs.

For INTERNAL nodes with optional dependencies, we validate: - Entry point is specified - Script contract is valid - Output paths are correctly defined

File existence is checked at runtime, not configuration time.

Returns:

Self with validated configuration

Return type:

DummyTrainingConfig

model_post_init(context, /)

This function is meant to behave like a BaseModel method to initialize private attributes.

It takes context as an argument since that’s what pydantic-core passes when calling it.

Parameters:
  • self (BaseModel) – The BaseModel instance.

  • context (Any) – The context.

processing_instance_count: int
processing_volume_size: int
processing_instance_type_large: str
processing_instance_type_small: str
use_large_processing_instance: bool
skip_volume_kms: bool | None
processing_source_dir: str | None
processing_script_arguments: List[str] | None
processing_framework_version: str
author: str
bucket: str
role: str
region: str
service_name: str
pipeline_version: str
model_class: str
current_date: str
framework_version: str
py_version: str
source_dir: str | None
enable_caching: bool
use_secure_pypi: bool
max_runtime_seconds: int
project_root_folder: str