Documentation ¶
Index ¶
- Constants
- func CheckLabels(labels map[string]string) error
- func CheckParameterConstraints(assignments []Assignment, constraints []Constraint) error
- func CheckParameterValue(p *Parameter, v *api.NumberOrString) error
- func JoinTrialName(e *Experiment, number int64) string
- type API
- type Assignment
- type Bounds
- type Constraint
- type ConstraintType
- type Experiment
- type ExperimentItem
- type ExperimentLabels
- type ExperimentList
- type ExperimentListQuery
- type ExperimentName
- type Lister
- func (l *Lister) ForEachExperiment(ctx context.Context, q ExperimentListQuery, f func(*ExperimentItem) error) error
- func (l *Lister) ForEachNamedExperiment(ctx context.Context, names []string, ignoreNotFound bool, ...) error
- func (l *Lister) ForEachNamedTrial(ctx context.Context, names []string, q TrialListQuery, ignoreNotFound bool, ...) error
- func (l *Lister) ForEachTrial(ctx context.Context, exp *Experiment, q TrialListQuery, ...) (err error)
- type Metric
- type Optimization
- type OrderConstraint
- type Parameter
- type ParameterType
- type Server
- type SumConstraint
- type SumConstraintParameter
- type TrialAssignments
- type TrialItem
- type TrialLabels
- type TrialList
- type TrialListQuery
- type TrialStatus
- type TrialValues
- type Value
Constants ¶
const ( ErrExperimentNameInvalid api.ErrorType = "experiment-name-invalid" ErrExperimentNameConflict api.ErrorType = "experiment-name-conflict" ErrExperimentInvalid api.ErrorType = "experiment-invalid" ErrExperimentNotFound api.ErrorType = "experiment-not-found" ErrExperimentStopped api.ErrorType = "experiment-stopped" ErrTrialInvalid api.ErrorType = "trial-invalid" ErrTrialNotFound api.ErrorType = "trial-not-found" ErrTrialAlreadyReported api.ErrorType = "trial-already-reported" )
Variables ¶
This section is empty.
Functions ¶
func CheckLabels ¶ added in v0.1.0
CheckLabels ensures the supplied experiment labels are valid.
func CheckParameterConstraints ¶ added in v0.0.25
func CheckParameterConstraints(assignments []Assignment, constraints []Constraint) error
CheckParameterConstraints validates that the supplied assignments do not validate the constraints.
func CheckParameterValue ¶
func CheckParameterValue(p *Parameter, v *api.NumberOrString) error
CheckParameterValue validates that the supplied value can be used for a parameter.
func JoinTrialName ¶ added in v0.0.15
func JoinTrialName(e *Experiment, number int64) string
JoinTrialName combines an experiment and a trial.
Types ¶
type API ¶
type API interface { // CheckEndpoint verifies we can talk to the backend. CheckEndpoint(ctx context.Context) (api.Metadata, error) GetAllExperiments(context.Context, ExperimentListQuery) (ExperimentList, error) GetAllExperimentsByPage(context.Context, string) (ExperimentList, error) GetExperimentByName(context.Context, ExperimentName) (Experiment, error) GetExperiment(context.Context, string) (Experiment, error) CreateExperimentByName(context.Context, ExperimentName, Experiment) (Experiment, error) CreateExperiment(context.Context, string, Experiment) (Experiment, error) DeleteExperiment(context.Context, string) error LabelExperiment(context.Context, string, ExperimentLabels) error GetAllTrials(context.Context, string, TrialListQuery) (TrialList, error) CreateTrial(context.Context, string, TrialAssignments) (TrialAssignments, error) NextTrial(context.Context, string) (TrialAssignments, error) ReportTrial(context.Context, string, TrialValues) error AbandonRunningTrial(context.Context, string) error LabelTrial(context.Context, string, TrialLabels) error }
API provides bindings for the supported endpoints
type Assignment ¶
type Assignment struct { // The name of the parameter in the experiment the assignment corresponds to. ParameterName string `json:"parameterName"` // The assigned value of the parameter. Value api.NumberOrString `json:"value"` }
type Constraint ¶
type Constraint struct { // Optional name for constraint. Name string `json:"name,omitempty"` ConstraintType ConstraintType `json:"constraintType"` *SumConstraint `json:",omitempty"` *OrderConstraint `json:",omitempty"` }
type ConstraintType ¶
type ConstraintType string
const ( ConstraintSum ConstraintType = "sum" ConstraintOrder ConstraintType = "order" )
type Experiment ¶
type Experiment struct { // The experiment metadata. api.Metadata `json:"-"` // The name of the experiment. Name ExperimentName `json:"-"` // The display name of the experiment. DisplayName string `json:"displayName,omitempty"` // The number of observations made for this experiment. Observations int64 `json:"observations,omitempty"` // The target number of observations for this experiment. Budget int64 `json:"budget,omitempty"` // Controls how the optimizer will generate trials. Optimization []Optimization `json:"optimization,omitempty"` // The metrics been optimized in the experiment. Metrics []Metric `json:"metrics"` // Constraints for the experiment. Constraints []Constraint `json:"constraints,omitempty"` // The search space of the experiment. Parameters []Parameter `json:"parameters"` // Labels for this experiment. Labels map[string]string `json:"labels,omitempty"` }
Experiment combines the search space, outcomes and optimization configuration
func (*Experiment) UnmarshalJSON ¶ added in v0.0.15
func (e *Experiment) UnmarshalJSON(data []byte) error
type ExperimentItem ¶
type ExperimentItem struct {
Experiment
}
func (*ExperimentItem) UnmarshalJSON ¶ added in v0.0.11
func (ei *ExperimentItem) UnmarshalJSON(b []byte) error
type ExperimentLabels ¶
type ExperimentList ¶
type ExperimentList struct { // The experiment list metadata. api.Metadata `json:"-"` // The list of experiments. Experiments []ExperimentItem `json:"experiments,omitempty"` }
type ExperimentListQuery ¶
type ExperimentListQuery struct{ api.IndexQuery }
type ExperimentName ¶
type ExperimentName string
ExperimentName represents a name token used to identify an experiment.
func SplitTrialName ¶
func SplitTrialName(name string) (ExperimentName, int64)
SplitTrialName provides a consistent experience when trying to split a "trial name" into an experiment name and a trial number. When the provided name does not contain a number, the resulting number will be less then zero.
func (ExperimentName) String ¶ added in v0.0.15
func (n ExperimentName) String() string
type Lister ¶ added in v0.0.21
type Lister struct { // API is the Experiment API used to fetch objects. API API // BatchSize overrides the default batch size for fetching lists. BatchSize int }
Lister is a helper to individually visit all items in a list (even across page boundaries).
func (*Lister) ForEachExperiment ¶ added in v0.0.21
func (l *Lister) ForEachExperiment(ctx context.Context, q ExperimentListQuery, f func(*ExperimentItem) error) error
ForEachExperiment iterates over all the experiments matching the supplied query.
func (*Lister) ForEachNamedExperiment ¶ added in v0.0.25
func (l *Lister) ForEachNamedExperiment(ctx context.Context, names []string, ignoreNotFound bool, f func(*ExperimentItem) error) error
ForEachNamedExperiment iterates over all the named experiments, optionally ignoring those that do not exist.
func (*Lister) ForEachNamedTrial ¶ added in v0.0.25
func (l *Lister) ForEachNamedTrial(ctx context.Context, names []string, q TrialListQuery, ignoreNotFound bool, f func(*TrialItem) error) error
ForEachNamedTrial iterates over all the named trials, optionally ignoring those that do not exist.
func (*Lister) ForEachTrial ¶ added in v0.0.21
func (l *Lister) ForEachTrial(ctx context.Context, exp *Experiment, q TrialListQuery, f func(*TrialItem) error) (err error)
ForEachTrial iterates over all trials for an experiment matching the supplied query.
type Optimization ¶
type OrderConstraint ¶
type Parameter ¶
type Parameter struct { // The name of the parameter. Name string `json:"name"` // The type of the parameter. Type ParameterType `json:"type"` // The domain of the parameter. Bounds *Bounds `json:"bounds,omitempty"` // The discrete values for a categorical parameter. Values []string `json:"values,omitempty"` }
Parameter is a variable that is going to be tuned in an experiment
func (*Parameter) LowerBound ¶
func (p *Parameter) LowerBound() (*api.NumberOrString, error)
LowerBound attempts to return the lower bound for this parameter.
func (*Parameter) ParseValue ¶
func (p *Parameter) ParseValue(s string) (*api.NumberOrString, error)
ParseValue attempts to parse the supplied value into a NumberOrString based on the type of this parameter.
func (*Parameter) RandomValue ¶ added in v0.0.25
func (p *Parameter) RandomValue() (*api.NumberOrString, error)
RandomValue returns a random value for a parameter.
func (*Parameter) UpperBound ¶
func (p *Parameter) UpperBound() (*api.NumberOrString, error)
UpperBound attempts to return the upper bound for this parameter.
type ParameterType ¶
type ParameterType string
const ( ParameterTypeInteger ParameterType = "int" ParameterTypeDouble ParameterType = "double" ParameterTypeCategorical ParameterType = "categorical" )
type SumConstraint ¶
type SumConstraint struct { // Flag indicating if bound is upper or lower bound. IsUpperBound bool `json:"isUpperBound,omitempty"` // Bound for inequality constraint. Bound float64 `json:"bound"` // Parameters and weights for constraint. Parameters []SumConstraintParameter `json:"parameters"` }
type SumConstraintParameter ¶
type TrialAssignments ¶
type TrialAssignments struct { // The trial metadata. api.Metadata `json:"-"` // The list of parameter names and their assigned values. Assignments []Assignment `json:"assignments"` // Labels for this trial. Labels map[string]string `json:"labels,omitempty"` }
type TrialItem ¶
type TrialItem struct { TrialAssignments TrialValues // The current trial status. Status TrialStatus `json:"status"` // Ordinal number indicating when during an experiment the trail was generated. Number int64 `json:"number"` // Experiment is a reference back to the experiment this trial item is associated with. This field is never // populated by the API, but may be useful for consumers to maintain a connection between resources. Experiment *Experiment `json:"-"` }
func (*TrialItem) UnmarshalJSON ¶ added in v0.0.11
type TrialLabels ¶
type TrialList ¶
type TrialList struct { // The trial list metadata. api.Metadata `json:"-"` // The list of trials. Trials []TrialItem `json:"trials"` // Experiment is a reference back to the experiment this trial item is associated with. This field is never // populated by the API, but may be useful for consumers to maintain a connection between resources. Experiment *Experiment `json:"-"` }
type TrialListQuery ¶
type TrialListQuery struct{ api.IndexQuery }
func (*TrialListQuery) AddStatus ¶ added in v0.0.11
func (q *TrialListQuery) AddStatus(status TrialStatus)
func (*TrialListQuery) SetStatus ¶ added in v0.0.11
func (q *TrialListQuery) SetStatus(status ...TrialStatus)
type TrialStatus ¶
type TrialStatus string
const ( TrialStaged TrialStatus = "staged" TrialActive TrialStatus = "active" TrialCompleted TrialStatus = "completed" TrialFailed TrialStatus = "failed" TrialAbandoned TrialStatus = "abandoned" )
type TrialValues ¶
type TrialValues struct { // The observed values. Values []Value `json:"values,omitempty"` // Indicator that the trial failed, Values is ignored when true. Failed bool `json:"failed,omitempty"` // FailureReason is a the machine-readable reason code for the failure, if Failed is true. FailureReason string `json:"failureReason,omitempty"` // FailureMessage is a human-readable explanation of the failure, if Failed is true. FailureMessage string `json:"failureMessage,omitempty"` // StartTime is the time at which the trial was started. StartTime *time.Time `json:"startTime,omitempty"` // CompletionTime is the time at which the trial was completed. CompletionTime *time.Time `json:"completionTime,omitempty"` }