Configuration Reference¶
NLSQ can be configured via YAML files, environment variables, and programmatic settings.
YAML Configuration¶
Create a nlsq.yaml file in your project directory:
# nlsq.yaml
optimization:
gtol: 1.0e-8
ftol: 1.0e-8
xtol: 1.0e-8
max_nfev: 500
memory:
limit_gb: 8.0
chunk_size: auto
logging:
level: INFO
diagnostics: true
cache:
enabled: true
directory: ~/.cache/nlsq
Configuration File Locations¶
NLSQ searches for configuration in this order:
./nlsq.yaml(current directory)~/.config/nlsq/config.yaml(user config)Environment variables
Built-in defaults
Loading Configuration¶
from nlsq import Config
# Load from default locations
config = Config.load()
# Load from specific file
config = Config.load("my_config.yaml")
# Access values
print(config.optimization.gtol)
Configuration Sections¶
optimization¶
optimization:
# Convergence tolerances
gtol: 1.0e-8 # Gradient tolerance
ftol: 1.0e-8 # Function tolerance
xtol: 1.0e-8 # Step tolerance
# Iteration limits
max_nfev: 500 # Max function evaluations
max_iter: 100 # Max iterations
# Algorithm selection
method: trf # trf, dogbox, lm
tr_solver: svd # svd, lsmr
memory¶
memory:
# Memory limits
limit_gb: 8.0 # GPU memory limit
chunk_size: auto # Automatic or specific size
# Memory management
pool_enabled: true # Use memory pooling
pool_ttl: 300 # Pool TTL in seconds
logging¶
logging:
level: INFO # DEBUG, INFO, WARNING, ERROR
diagnostics: true # Enable convergence diagnostics
progress: true # Show progress bars
verbosity: 1 # 0=quiet, 1=normal, 2=verbose
cache¶
cache:
enabled: true
directory: ~/.cache/nlsq
max_size_gb: 2.0
jit_cache: true # JAX JIT compilation cache
precision¶
precision:
dtype: float64 # NLSQ requires float64 for numerical accuracy
jax_enable_x64: true # Enable 64-bit in JAX
streaming¶
streaming:
chunk_size: 100000
checkpoint_interval: 50
checkpoint_dir: ./checkpoints
resume_on_error: true
Environment Variables¶
All settings can be overridden via environment variables:
Variable |
Config Equivalent |
Default |
|---|---|---|
|
optimization.gtol |
1e-8 |
|
optimization.ftol |
1e-8 |
|
optimization.xtol |
1e-8 |
|
optimization.max_nfev |
500 |
|
memory.limit_gb |
auto |
|
logging.level |
INFO |
|
logging.level |
(sets DEBUG) |
|
cache.enabled |
(sets false) |
|
(forces CPU backend) |
|
|
(skips GPU warning) |
Example:
export NLSQ_GTOL=1e-10
export NLSQ_DEBUG=1
python my_script.py
Programmatic Configuration¶
Override configuration in code:
from nlsq import curve_fit, Config
# Method 1: Pass directly to functions
popt, pcov = curve_fit(model, x, y, gtol=1e-10, max_nfev=1000)
# Method 2: Use Config object
config = Config(
optimization={"gtol": 1e-10, "max_nfev": 1000}, memory={"limit_gb": 16.0}
)
popt, pcov = curve_fit(model, x, y, config=config)
# Method 3: Context manager
from nlsq import config_context
with config_context(gtol=1e-10):
popt, pcov = curve_fit(model, x, y)
Presets¶
Use presets for common configurations via the workflow argument (or preset in fit):
from nlsq import fit
# Standard fitting
fit(model, x, y, workflow="standard")
# High precision (multi-start)
fit(model, x, y, workflow="quality")
# Global optimization (CMA-ES)
fit(model, x, y, workflow="cmaes")
Available Presets:
Preset |
Tolerances |
Starts |
Notes |
|---|---|---|---|
|
1e-8 |
1 |
Default, general purpose |
|
1e-10 |
20 |
High precision, robust to local minima |
|
1e-6 |
1 |
High speed, loose tolerances |
|
1e-8 |
Auto |
Smart CMA-ES/Multi-Start selection |
|
1e-8 |
BIPOP |
Global search (100 gens) |
|
1e-8 |
BIPOP |
Deep global search (200 gens, 2x pop) |
|
1e-8 |
10 |
Chunked processing for large data |
|
1e-7 |
1 |
Out-of-core for huge data |
|
1e-6 |
10 |
Checkpointing enabled for HPC |
Default Values¶
Complete list of defaults:
# Full default configuration
optimization:
gtol: 1.0e-8
ftol: 1.0e-8
xtol: 1.0e-8
max_nfev: 500
max_iter: 100
method: trf
tr_solver: svd
memory:
limit_gb: null # auto-detect
chunk_size: auto
pool_enabled: true
pool_ttl: 300
logging:
level: INFO
diagnostics: false
progress: true
verbosity: 1
cache:
enabled: true
directory: ~/.cache/nlsq
max_size_gb: 2.0
jit_cache: true
precision:
dtype: float64
jax_enable_x64: true
streaming:
chunk_size: 100000
checkpoint_interval: 50
checkpoint_dir: ./checkpoints
resume_on_error: false
See Also¶
YAML Configuration Structure - Configuration how-to guide
Performance Optimization Guide - Performance tuning