SMAC3 is a versatile Bayesian Optimization package for hyperparameter optimization and algorithm configuration.
npx @tessl/cli install tessl/pypi-smac@2.3.0SMAC3 (Sequential Model-based Algorithm Configuration) is a versatile Bayesian Optimization package for hyperparameter optimization and algorithm configuration. It provides a robust framework for determining well-performing hyperparameter configurations for Machine Learning algorithms, datasets, and applications using Bayesian Optimization combined with aggressive racing mechanisms.
pip install smacimport smacCommon facade imports:
from smac import BlackBoxFacade, HyperparameterOptimizationFacade, MultiFidelityFacade
from smac import Scenario, RunHistory, CallbackDirect component imports:
from smac.facade import AbstractFacade
from smac.scenario import Scenario
from smac.runhistory import RunHistory, TrialInfo, TrialValue, StatusType
from smac.callback import Callback, MetadataCallbackfrom smac import HyperparameterOptimizationFacade, Scenario
from ConfigSpace import Configuration, ConfigurationSpace, Float
# Define configuration space
config_space = ConfigurationSpace()
config_space.add_hyperparameter(Float("x", bounds=(-5.0, 5.0)))
config_space.add_hyperparameter(Float("y", bounds=(-5.0, 5.0)))
# Define objective function
def objective(config: Configuration, seed: int = 0) -> float:
x = config["x"]
y = config["y"]
return x**2 + y**2 # Simple quadratic function
# Set up scenario
scenario = Scenario(
configspace=config_space,
n_trials=100,
name="quadratic_optimization"
)
# Create facade and optimize
facade = HyperparameterOptimizationFacade(scenario, objective)
incumbent = facade.optimize()
print(f"Best configuration: {incumbent}")
print(f"Best value: {facade.runhistory.get_cost(incumbent)}")Multi-fidelity optimization example:
from smac import MultiFidelityFacade, Scenario
# Multi-fidelity objective function
def multi_fidelity_objective(config: Configuration, seed: int = 0, budget: float = 1.0) -> float:
x = config["x"]
y = config["y"]
# Simulate cost based on budget (more budget = more accurate evaluation)
noise = 1.0 / budget
return x**2 + y**2 + noise * (seed % 10 - 5)
# Configure scenario with budget range
scenario = Scenario(
configspace=config_space,
n_trials=50,
min_budget=0.1,
max_budget=1.0
)
# Use MultiFidelityFacade with Hyperband
facade = MultiFidelityFacade(scenario, multi_fidelity_objective)
incumbent = facade.optimize()SMAC3 follows a modular architecture centered around the facade pattern:
BlackBoxFacade, HyperparameterOptimizationFacade, etc.) that configure and coordinate optimization components for specific use casesScenario for environment configuration, RunHistory for trial management, and Callback system for event handlingGaussianProcess, RandomForest) that learn from trial history to predict performanceEI, PI, LCB) and maximizers that determine the next promising configuration to evaluateIntensifier, Hyperband) for comparing configurations and managing multi-fidelity budgetsSobolInitialDesign, RandomInitialDesign) for initial explorationThis design enables easy customization while providing sensible defaults for common optimization scenarios.
High-level interfaces that pre-configure SMAC components for specific optimization scenarios. Each facade provides static methods to customize individual components while maintaining sensible defaults.
class BlackBoxFacade(AbstractFacade): ...
class HyperparameterOptimizationFacade(AbstractFacade): ...
class MultiFidelityFacade(HyperparameterOptimizationFacade): ...
class AlgorithmConfigurationFacade(AbstractFacade): ...
class RandomFacade(AbstractFacade): ...
class HyperbandFacade(RandomFacade): ...Essential classes for configuring optimization environments, managing trial history, and handling optimization events through callbacks.
class Scenario: ...
class RunHistory: ...
class Callback: ...
class MetadataCallback: ...
class StatusType: ...Data structures for representing optimization trials, their configurations, results, and execution context.
class TrialInfo: ...
class TrialValue: ...
class TrialKey: ...
class TrajectoryItem: ...Lower-level components for building custom optimization workflows including surrogate models, acquisition functions, intensifiers, and sampling strategies.
class AbstractModel: ...
class AbstractAcquisitionFunction: ...
class AbstractIntensifier: ...
class AbstractInitialDesign: ...