Documentation
¶
Index ¶
- Constants
- func CheckParameterValue(p *Parameter, v *numstr.NumberOrString) error
- type API
- type Assignment
- type Bounds
- type Constraint
- type ConstraintType
- type Experiment
- type ExperimentItem
- type ExperimentLabels
- type ExperimentList
- type ExperimentListQuery
- type ExperimentName
- 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 CheckParameterValue ¶
func CheckParameterValue(p *Parameter, v *numstr.NumberOrString) error
CheckParameterValue validates that the supplied value can be used for a parameter.
Types ¶
type API ¶
type API interface {
Options(context.Context) (Server, 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 numstr.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 display name of the experiment. Do not use for generating URLs!
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) Name ¶
func (e *Experiment) Name() string
Name allows an experiment to be used as an ExperimentName
type ExperimentItem ¶
type ExperimentItem struct{ Experiment }
func (*ExperimentItem) UnmarshalJSON ¶ added in v0.0.11
func (l *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 interface {
Name() string
}
ExperimentName exists to clearly separate cases where an actual name can be used
func NewExperimentName ¶
func NewExperimentName(n string) ExperimentName
NewExperimentName returns an experiment name for a given string
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.
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() (*numstr.NumberOrString, error)
LowerBound attempts to return the lower bound for this parameter.
func (*Parameter) ParseValue ¶
func (p *Parameter) ParseValue(s string) (*numstr.NumberOrString, error)
ParseValue attempts to parse the supplied value into a NumberOrString based on the type of this parameter.
func (*Parameter) UpperBound ¶
func (p *Parameter) UpperBound() (*numstr.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"`
}