"""Mixed-precision and optimizer configuration sections.
Split from ``auto_models/trainer/config.py`` in stage 7 (05 §15.2.5);
class names, fields and defaults are unchanged.
"""
from dataclasses import dataclass
from typing import Any
from torch.optim import Optimizer
from hyper_parallel.trainer.config.target import Target
@dataclass
class MixedPrecisionConfig:
"""Mixed-precision parameters exposed by the initial YAML schema."""
enabled: bool = False
@dataclass
class OptimizerConfig:
"""Optimizer target plus Trainer-owned parameter precision policy."""
target: Target[Optimizer]
fp32_main_params: bool = False
def to_dict(self) -> dict[str, Any]:
"""Serialize optimizer options in their compact target YAML shape."""
config = self.target.to_dict()
config["fp32_main_params"] = self.fp32_main_params
return config