pub struct SearchSpace {
pub parameters: Vec<ParameterRange>,
}Expand description
The set of parameter ranges that define the experiment search space.
The default search space covers five parameters: temperature, top_p, top_k,
frequency_penalty, and presence_penalty. Custom spaces can be constructed
by providing any subset of ParameterRange values.
When deserialized from config with [serde(default)], missing fields are filled
from Default::default.
§Examples
use zeph_experiments::{SearchSpace, ParameterKind};
let space = SearchSpace::default();
assert!(space.is_valid());
assert!(space.grid_size() > 0);
assert!(space.range_for(ParameterKind::Temperature).is_some());Fields§
§parameters: Vec<ParameterRange>The parameter ranges in this search space.
Implementations§
Source§impl SearchSpace
impl SearchSpace
Sourcepub fn range_for(&self, kind: ParameterKind) -> Option<&ParameterRange>
pub fn range_for(&self, kind: ParameterKind) -> Option<&ParameterRange>
Find the range for a given ParameterKind, if present.
Returns None if the search space does not include the requested kind.
§Examples
use zeph_experiments::{SearchSpace, ParameterKind};
let space = SearchSpace::default();
let temp = space.range_for(ParameterKind::Temperature).unwrap();
assert!((temp.default - 0.7).abs() < f64::EPSILON);
// RetrievalTopK is not in the default space
assert!(space.range_for(ParameterKind::RetrievalTopK).is_none());Sourcepub fn is_valid(&self) -> bool
pub fn is_valid(&self) -> bool
Return true if all parameter ranges in this space are internally consistent.
§Examples
use zeph_experiments::SearchSpace;
assert!(SearchSpace::default().is_valid());
assert!(SearchSpace { parameters: vec![] }.is_valid()); // empty is validSourcepub fn grid_size(&self) -> usize
pub fn grid_size(&self) -> usize
Total number of discrete grid points across all parameters that have a step.
This equals the number of distinct variations a GridStep generator will
produce before returning None. Parameters without a step are not counted.
§Examples
use zeph_experiments::SearchSpace;
let size = SearchSpace::default().grid_size();
assert!(size > 0);
assert_eq!(SearchSpace { parameters: vec![] }.grid_size(), 0);Trait Implementations§
Source§impl Clone for SearchSpace
impl Clone for SearchSpace
Source§fn clone(&self) -> SearchSpace
fn clone(&self) -> SearchSpace
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SearchSpace
impl Debug for SearchSpace
Source§impl Default for SearchSpace
impl Default for SearchSpace
Source§impl<'de> Deserialize<'de> for SearchSpacewhere
SearchSpace: Default,
impl<'de> Deserialize<'de> for SearchSpacewhere
SearchSpace: Default,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for SearchSpace
impl RefUnwindSafe for SearchSpace
impl Send for SearchSpace
impl Sync for SearchSpace
impl Unpin for SearchSpace
impl UnsafeUnpin for SearchSpace
impl UnwindSafe for SearchSpace
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request