arcade.classifieroptimization
Classifier optimization: pruning, distillation, NAS, Optuna tuning.
Quantization uses arcade.nn.quantization.quantize_model() from the
optimization stage (no separate QuantizationOptimizer class).
Optional post-classify stage for neural readout methods. Enable via
optimization.enabled in YAML (see OptimizationConfig).
- class arcade.classifieroptimization.BaseOptimizer[source]
Bases:
ABCInterface for model optimization (pruning, distillation, NAS, etc.).
Subclass and decorate with
@register_optimizer("name").Example:
@register_optimizer("my_opt") class MyOptimizer(BaseOptimizer): def optimize(self, model, train_data, val_data=None, **kwargs): ... return OptimizationResult(model=optimized)
- class arcade.classifieroptimization.DistillationOptimizer(student_sizes=None, temperature=3.0, accuracy_tolerance=0.01)[source]
Bases:
BaseOptimizerKnowledge distillation from a teacher to smaller student models.
- class arcade.classifieroptimization.HyperparameterTuner(method='optuna', n_trials=100, metric='accuracy', search_space=None)[source]
Bases:
BaseOptimizerHyperparameter tuning via Optuna or grid search.
- class arcade.classifieroptimization.NASOptimizer(n_trials=50, max_hidden_layers=4, min_hidden_dim=16, max_hidden_dim=256)[source]
Bases:
BaseOptimizerNeural Architecture Search using Optuna.
- class arcade.classifieroptimization.OptimizationResult(model, original_params=0, optimized_params=0, accuracy_before=0.0, accuracy_after=0.0, pareto_points=<factory>, metadata=<factory>)[source]
Bases:
objectResult returned by an optimizer’s
optimize()method.- Parameters:
- class arcade.classifieroptimization.PruningOptimizer(sparsity=0.5, method='magnitude', iterative=True, n_steps=10)[source]
Bases:
BaseOptimizerMagnitude-based iterative pruning with fine-tuning.
- arcade.classifieroptimization.get_optimizer(name)[source]
Look up an optimizer by registry name or dotted import path.
- Return type:
- Parameters:
name (str)
- arcade.classifieroptimization.list_optimizers()[source]
Return the names of all registered optimizers.
- arcade.classifieroptimization.maybe_tune(cfg, clf_name, clf_cls, train_features, train_labels, val_features, val_labels, filter_set)[source]
Conditionally run tuning if search_space is configured (moved from stages.py).
- arcade.classifieroptimization.pareto_frontier(points)[source]
Compute accuracy-vs-parameters Pareto frontier.
Each point should have
"accuracy"and"n_parameters"keys. Returns the subset of non-dominated points sorted by parameter count.
- arcade.classifieroptimization.register_optimizer(name)[source]
Decorator to register an optimizer class by name.
- Parameters:
name (str)
- arcade.classifieroptimization.run_optimization_stage(cfg, data_out, classify_out)[source]
Apply optional compression / NAS / quantization to trained models.
- arcade.classifieroptimization.select_best(points, budget)[source]
Pick the smallest model within an accuracy budget.
budgetis the maximum allowed accuracy drop from the best candidate.
- arcade.classifieroptimization.tune(classifier_factory, train_features, train_labels, val_features, val_labels, *, method='optuna', n_trials=50, search_space=None, metric='val_accuracy', **kwargs)[source]
Run hyperparameter optimization for a classifier.
- Parameters:
classifier_factory (
Callable[...,Any]) – Callable that accepts a dict of hyperparameters and returns a fresh classifier instance.train_features (
ndarray) – Training features.train_labels (
ndarray) – Training labels.val_features (
ndarray) – Validation features.val_labels (
ndarray) – Validation labels.method (
str) –"optuna"or"grid".n_trials (
int) – Number of optimization trials (Optuna only).search_space (
dict|None) – Per-parameter search ranges. For Optuna, values can be lists (categorical) or dicts withlow/high(and optionallog). For grid, all values must be lists.metric (
str) – Metric to optimize (e.g."val_accuracy").**kwargs (
Any) – Forwarded to the classifier’sfit()method.
- Return type:
- Returns:
Dict with
"best_params","best_score", and"study"(if Optuna) or"all_results"(if grid).