1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//! AutoML / hyperparameter search on top of `blazen-train`.
//!
//! This crate is intentionally separate from `blazen-train` itself so that
//! the heavy training engine (candle, hf-hub, tokenizers) doesn't have to
//! be compiled in to use the searchers — the `Evaluator` trait is the only
//! coupling point, and callers wire their own training loop into it.
//!
//! Pieces:
//! - [`space`] — `SearchSpace` + `Distribution` (Categorical / IntUniform /
//! Uniform / LogUniform / Discrete). The space defines what hyperparams
//! exist and what each one's prior looks like.
//! - [`trial`] — `Trial` record + status state machine.
//! - [`searcher`] — `Searcher` trait + three real implementations:
//! `RandomSearch`, `GridSearch`, and `TpeSearch` (Tree-structured
//! Parzen Estimator, Bergstra et al. 2011, Algorithm 1).
//! - [`journal`] — JSONL append-only `TrialJournal` for crash recovery.
//! - [`runner`] — `Runner` glues a `SearchSpace` + `Searcher` + `Evaluator`
//! + `TrialJournal` into a budgeted (max-trials / time-budget) loop,
//! optionally fan-out across N tokio workers.
//!
//! See `examples/lora_sft_search.rs` for an end-to-end LoRA SFT search.
//!
//! ML acronyms (LoRA, TPE, KDE, SFT, ...) saturate the docs; backticking
//! each one would hurt readability without adding clarity.
// pedantic warns about returning Result from internal helpers; the API
// shape is intentional (errors bubble up to the runner).
pub use TuneError;
pub use TrialJournal;
pub use ;
pub use ;
pub use ;
pub use ;