Skip to main content

LLM-guided ML optimization — point it at a training script, it reads the curves and designs better models

Project description

neuropt

Three robot researchers designing neural network architectures

An LLM reads your training curves and designs your next experiment.


Point it at a training script, let it run overnight. The LLM sees full per-epoch train/val curves, spots overfitting, and proposes what to try next — like a research assistant who never sleeps and actually reads the loss plots.

vs Optuna and random search

Benchmark: neuropt vs Optuna vs Random

Same 15-eval budget on two tasks: CNN architecture search (14 params) and XGBoost tuning (9 params, 7-class Covertype). These results use Claude Haiku 4.5 (the smallest and cheapest of their 4.5 models). We expect even stronger results with Sonnet or Opus. Optuna's TPE was configured with n_startup_trials=3 for a fair comparison (default is 10, which would make it purely random for most of the budget).

It keeps improving

neuropt convergence over 200 evals

neuropt at 200 evals (0.337) vs Optuna's best at 15 (0.454). The other methods stopped — neuropt kept going. Local Qwen backend (experimental) beat Optuna too (0.440) despite 40% JSON parse failures.

Quick start

pip install neuropt[llm]
export ANTHROPIC_API_KEY="sk-ant-..."

Option 1 — define what to search over:

# train.py
search_space = {
    "lr": (1e-4, 1e-1),                    # auto-detects log-scale
    "hidden_dim": (32, 512),                # auto-detects integer
    "activation": ["relu", "gelu", "silu"], # categorical
}

def train_fn(config):
    model = build_my_model(config["hidden_dim"], config["activation"])
    # ... train, return per-epoch losses for smarter LLM decisions ...
    return {"score": val_loss, "train_losses": [...], "val_losses": [...]}

Option 2 — just give it a model, we figure out the rest:

# train.py
model = torchvision.models.resnet18(num_classes=10)  # neuropt introspects this

def train_fn(config):
    m = config["model"].to("cuda")  # deep copy with modifications applied
    # ... train ...
    return {"score": val_loss, "train_losses": [...], "val_losses": [...]}

Then run:

neuropt run train.py

Runs until Ctrl+C. Crash-safe, resumable. Works in notebooks too:

from neuropt import ArchSearch

search = ArchSearch(train_fn=train_fn, search_space=search_space, backend="claude")
search.run(max_evals=50)

Documentation

See the full documentation for:

Installation

pip install neuropt                # core
pip install neuropt[llm]           # + Claude API (recommended)
pip install neuropt[llm-openai]    # + OpenAI API
pip install neuropt[all]           # everything

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

neuropt-0.4.0.tar.gz (6.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

neuropt-0.4.0-py3-none-any.whl (24.5 kB view details)

Uploaded Python 3

File details

Details for the file neuropt-0.4.0.tar.gz.

File metadata

  • Download URL: neuropt-0.4.0.tar.gz
  • Upload date:
  • Size: 6.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.6

File hashes

Hashes for neuropt-0.4.0.tar.gz
Algorithm Hash digest
SHA256 05c5700711e6828ae2bc1e2f70612c221fb1abd9e6ed0fabb7f590eaccf84682
MD5 4524a4943d61323485b7c856de409e5b
BLAKE2b-256 e9a2301dfa4985a5e8fea43f808c840873824a5f1c6a4a322f5bf97a42cca791

See more details on using hashes here.

File details

Details for the file neuropt-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: neuropt-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 24.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.6

File hashes

Hashes for neuropt-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3f7eadb93bcfc4e8b18a4674894b52f6d268142fd20cdc92c151ce67ca142e8b
MD5 64d4fcd06d07fb692fcb4756e2fff6d0
BLAKE2b-256 bd65710488c495a37c310bb46c726f01272e2eca8def075aed9542922ee7375e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page