Smac 2.0 Direct

from smac import HyperparameterOptimizationFacade as HPOFacade from smac import Scenario def train_model(config, seed: int = 0): lr = config["learning_rate"] batch_size = config["batch_size"] # ... train your model ... return validation_error # lower is better 2. Define hyperparameter space from ConfigSpace import ConfigurationSpace, Float, Integer cs = ConfigurationSpace() cs.add_float("learning_rate", (1e-5, 1.0), log=True) cs.add_integer("batch_size", (16, 256), log=True) 3. Set scenario scenario = Scenario(cs, n_trials=100, walltime_limit=3600) 4. Optimize smac = HPOFacade(scenario, train_model) incumbent = smac.optimize()

print(f"Best config: incumbent") print(f"Best cost: smac.runhistory.get_cost(incumbent)") | Concept | Meaning | |--------|---------| | Incumbent | Best configuration found so far | | Surrogate | Model that predicts performance given parameters | | Acquisition Function | Balances exploration (try unknown) vs exploitation (trust surrogate) – e.g., EI, LCB | | Runhistory | Log of all evaluated configs + costs | | Multi-fidelity | Use cheap approximations (e.g., 10% of data) to discard bad configs early | | Conditional Space | if hyperparameter A = X then hyperparameter B appears | Advanced Features (SMAC 2.0 Unlocks) 1. Multi-fidelity (budget): smac 2.0

https://automl.github.io/SMAC3/main/ Paper: "SMAC 2.0: A Versatile Hyperparameter Optimization Framework" (Lindauer et al., 2022) Multi-fidelity (budget): https://automl

from smac import MultiObjectiveFacade # minimize both error and latency smac = MultiObjectiveFacade(scenario, train_model, ["val_loss", "inference_ms"]) walltime_limit=3600) 4. Optimize smac = HPOFacade(scenario