Documentation
¶
Index ¶
- func CheckParameterValue(p *Parameter, v *numstr.NumberOrString) error
- func IsUnauthorized(err error) bool
- type API
- type Assignment
- type Bounds
- type Constraint
- type ConstraintType
- type Error
- type ErrorType
- type Experiment
- type ExperimentItem
- type ExperimentLabels
- type ExperimentList
- type ExperimentListMeta
- type ExperimentListQuery
- type ExperimentMeta
- type ExperimentName
- type Meta
- type Metadata
- type Metric
- type Optimization
- type OrderConstraint
- type Parameter
- type ParameterType
- type ServerMeta
- type SumConstraint
- type SumConstraintParameter
- type TrialAssignments
- type TrialItem
- type TrialLabels
- type TrialList
- type TrialListQuery
- type TrialMeta
- type TrialStatus
- type TrialValues
- type Value
Constants ¶
This section is empty.
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.
func IsUnauthorized ¶
IsUnauthorized check to see if the error is an "unauthorized" error
Types ¶
type API ¶
type API interface {
Options(context.Context) (ServerMeta, 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)
CreateExperiment(context.Context, ExperimentName, Experiment) (Experiment, error)
DeleteExperiment(context.Context, string) 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
LabelExperiment(context.Context, string, ExperimentLabels) 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:",inline"`
OrderConstraint `json:",inline"`
}
type ConstraintType ¶
type ConstraintType string
const ( ConstraintSum ConstraintType = "sum" ConstraintOrder ConstraintType = "order" )
type Error ¶
type Error struct {
Type ErrorType `json:"-"`
Message string `json:"error"`
RetryAfter time.Duration `json:"-"`
Location string `json:"-"`
}
Error represents the API specific error messages and may be used in response to HTTP status codes
type ErrorType ¶
type ErrorType string
const ( ErrExperimentNameInvalid ErrorType = "experiment-name-invalid" ErrExperimentNameConflict ErrorType = "experiment-name-conflict" ErrExperimentInvalid ErrorType = "experiment-invalid" ErrExperimentNotFound ErrorType = "experiment-not-found" ErrExperimentStopped ErrorType = "experiment-stopped" ErrTrialInvalid ErrorType = "trial-invalid" ErrTrialNotFound ErrorType = "trial-not-found" ErrTrialAlreadyReported ErrorType = "trial-already-reported" ErrUnexpected ErrorType = "unexpected" )
type Experiment ¶
type Experiment struct {
ExperimentMeta
// 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
// The metadata for an individual experiment.
Metadata Metadata `json:"_metadata,omitempty"`
}
type ExperimentLabels ¶
type ExperimentList ¶
type ExperimentList struct {
ExperimentListMeta
// The list of experiments.
Experiments []ExperimentItem `json:"experiments,omitempty"`
}
type ExperimentListMeta ¶
func (*ExperimentListMeta) SetLastModified ¶
func (m *ExperimentListMeta) SetLastModified(time.Time)
func (*ExperimentListMeta) SetLink ¶
func (m *ExperimentListMeta) SetLink(rel, link string)
func (*ExperimentListMeta) SetLocation ¶
func (m *ExperimentListMeta) SetLocation(string)
type ExperimentListQuery ¶
func (*ExperimentListQuery) Encode ¶
func (p *ExperimentListQuery) Encode() string
type ExperimentMeta ¶
type ExperimentMeta struct {
LastModified time.Time `json:"-"`
SelfURL string `json:"-"`
TrialsURL string `json:"-"`
NextTrialURL string `json:"-"`
LabelsURL string `json:"-"`
}
func (*ExperimentMeta) Headers ¶
func (m *ExperimentMeta) Headers() http.Header
func (*ExperimentMeta) SetLastModified ¶
func (m *ExperimentMeta) SetLastModified(lastModified time.Time)
func (*ExperimentMeta) SetLink ¶
func (m *ExperimentMeta) SetLink(rel, link string)
func (*ExperimentMeta) SetLocation ¶
func (m *ExperimentMeta) SetLocation(string)
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 Metadata ¶
Metadata is used to hold single or multi-value metadata from list responses
func (*Metadata) UnmarshalJSON ¶
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 ServerMeta ¶
type ServerMeta struct {
Server string `json:"-"`
}
func (*ServerMeta) Unmarshal ¶
func (m *ServerMeta) Unmarshal(header http.Header)
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 {
TrialMeta
// 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"`
// Labels for this trial.
Labels map[string]string `json:"labels,omitempty"`
// The metadata for an individual trial.
Metadata Metadata `json:"_metadata,omitempty"`
// 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 TrialLabels ¶
type TrialList ¶
type TrialList struct {
// 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 {
// Comma separated list of statuses to fetch.
Status []TrialStatus
// Comma separated list of label value pairs to match on.
LabelSelector map[string]string
}
func (*TrialListQuery) Encode ¶
func (p *TrialListQuery) Encode() string
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"`
}