or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

advanced.mdcore.mdfacades.mdindex.mdtrials.md
tile.json

tessl/pypi-smac

SMAC3 is a versatile Bayesian Optimization package for hyperparameter optimization and algorithm configuration.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/smac@2.3.x

To install, run

npx @tessl/cli install tessl/pypi-smac@2.3.0

index.mddocs/

SMAC3

SMAC3 (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.

Package Information

  • Package Name: smac
  • Language: Python
  • Installation: pip install smac

Core Imports

import smac

Common facade imports:

from smac import BlackBoxFacade, HyperparameterOptimizationFacade, MultiFidelityFacade
from smac import Scenario, RunHistory, Callback

Direct 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, MetadataCallback

Basic Usage

from 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()

Architecture

SMAC3 follows a modular architecture centered around the facade pattern:

  • Facades: High-level interfaces (BlackBoxFacade, HyperparameterOptimizationFacade, etc.) that configure and coordinate optimization components for specific use cases
  • Core Classes: Scenario for environment configuration, RunHistory for trial management, and Callback system for event handling
  • Models: Surrogate models (GaussianProcess, RandomForest) that learn from trial history to predict performance
  • Acquisition: Functions (EI, PI, LCB) and maximizers that determine the next promising configuration to evaluate
  • Intensification: Strategies (Intensifier, Hyperband) for comparing configurations and managing multi-fidelity budgets
  • Initial Design: Sampling strategies (SobolInitialDesign, RandomInitialDesign) for initial exploration

This design enables easy customization while providing sensible defaults for common optimization scenarios.

Capabilities

Optimization Facades

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): ...

Optimization Facades

Core Framework

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: ...

Core Framework

Trial Management

Data structures for representing optimization trials, their configurations, results, and execution context.

class TrialInfo: ...
class TrialValue: ...
class TrialKey: ...
class TrajectoryItem: ...

Trial Management

Advanced Components

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: ...

Advanced Components