Adaptive Hybrid Streaming Optimizer

NLSQ provides a single streaming optimizer for huge datasets: AdaptiveHybridStreamingOptimizer. It combines parameter normalization, L-BFGS warmup, streaming Gauss-Newton, and exact covariance accumulation.

Overview

The adaptive hybrid optimizer runs in four phases:

  1. Normalization: Rescales parameters for stable gradients.

  2. L-BFGS warmup: Fast initial convergence with defense layers.

  3. Streaming Gauss-Newton: Chunked Jacobian accumulation with bounded memory.

  4. Denormalization + covariance: Returns parameters and uncertainties.

When to Use

  • Datasets too large to keep in memory.

  • Models with multi-scale parameters that need normalization.

  • Cases where you need covariance estimates in streaming runs.

Quick Start

Use the high-level API:

from nlsq import curve_fit

popt, pcov = curve_fit(
    model,
    x,
    y,
    p0=p0,
    method="hybrid_streaming",
    verbose=1,
)

Or configure the optimizer directly:

from nlsq import AdaptiveHybridStreamingOptimizer, HybridStreamingConfig

config = HybridStreamingConfig(
    chunk_size=50000,
    gauss_newton_max_iterations=100,
    enable_checkpoints=True,
    checkpoint_frequency=100,
)

optimizer = AdaptiveHybridStreamingOptimizer(config)
result = optimizer.fit((x, y), model, p0=p0, verbose=1)

popt = result["x"]
pcov = result["pcov"]

Defense Presets

Warmup defense presets tune L-BFGS behavior:

  • HybridStreamingConfig.defense_strict(): Warm-start refinement

  • HybridStreamingConfig.defense_relaxed(): Exploration

  • HybridStreamingConfig.scientific_default(): Production scientific

  • HybridStreamingConfig.defense_disabled(): Disable defense layers

Decision Guide

  • Need accurate covariance estimates at scale? Use adaptive hybrid streaming.

  • Want fewer manual tuning knobs? Use HybridStreamingConfig presets.

  • Need fault tolerance? Enable checkpoints in the config.

See Also