Class: Ml::ExperimentTracking::CandidateRepository

Inherits:
Object
  • Object
show all
Defined in:
app/services/ml/experiment_tracking/candidate_repository.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(project, user = nil) ⇒ CandidateRepository

Returns a new instance of CandidateRepository.



8
9
10
11
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 8

def initialize(project, user = nil)
  @project = project
  @user = user
end

Instance Attribute Details

#candidateObject

Returns the value of attribute candidate.



6
7
8
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 6

def candidate
  @candidate
end

#experimentObject

Returns the value of attribute experiment.



6
7
8
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 6

def experiment
  @experiment
end

#projectObject

Returns the value of attribute project.



6
7
8
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 6

def project
  @project
end

#userObject

Returns the value of attribute user.



6
7
8
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 6

def user
  @user
end

Instance Method Details

#add_metric!(candidate, name, value, tracked_at, step) ⇒ Object



37
38
39
40
41
42
43
44
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 37

def add_metric!(candidate, name, value, tracked_at, step)
  candidate.metrics.create!(
    name: name,
    value: value,
    tracked_at: tracked_at,
    step: step
  )
end

#add_metrics(candidate, metric_definitions) ⇒ Object



56
57
58
59
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 56

def add_metrics(candidate, metric_definitions)
  extra_keys = { tracked_at: :timestamp, step: :step }
  insert_many(candidate, metric_definitions, ::Ml::CandidateMetric, extra_keys)
end

#add_param!(candidate, name, value) ⇒ Object



46
47
48
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 46

def add_param!(candidate, name, value)
  candidate.params.create!(name: name, value: value)
end

#add_params(candidate, param_definitions) ⇒ Object



61
62
63
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 61

def add_params(candidate, param_definitions)
  insert_many(candidate, param_definitions, ::Ml::CandidateParam)
end

#add_tag!(candidate, name, value) ⇒ Object



50
51
52
53
54
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 50

def add_tag!(candidate, name, value)
  handle_gitlab_tags(candidate, [{ key: name, value: value }])

  candidate..create!(name: name, value: value)
end

#add_tags(candidate, tag_definitions) ⇒ Object



65
66
67
68
69
70
71
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 65

def add_tags(candidate, tag_definitions)
  return unless tag_definitions.present?

  handle_gitlab_tags(candidate, tag_definitions)

  insert_many(candidate, tag_definitions, ::Ml::CandidateMetadata)
end

#by_eid(eid) ⇒ Object



13
14
15
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 13

def by_eid(eid)
  ::Ml::Candidate.with_project_id_and_eid(project.id, eid)
end

#create!(experiment, start_time, tags = nil, name = nil) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 17

def create!(experiment, start_time, tags = nil, name = nil)
  candidate = experiment.candidates.create!(
    user: user,
    name: candidate_name(name, tags),
    project: project,
    start_time: start_time || 0
  )

  add_tags(candidate, tags)

  candidate
end

#update(candidate, status, end_time) ⇒ Object



30
31
32
33
34
35
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 30

def update(candidate, status, end_time)
  candidate.status = status.downcase if status
  candidate.end_time = end_time if end_time

  candidate.save
end