Welcome to mirror list, hosted at ThFree Co, Russian Federation.

model_versions.rb « mlflow « ml « api « lib - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 4b211cf540c3614927d4057a8dd9dc58875abc34 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# frozen_string_literal: true

module API
  module Ml
    module Mlflow
      class ModelVersions < ::API::Base
        feature_category :mlops

        before do
          check_api_read!
          check_api_model_registry_read!
          check_api_write! if route.settings.dig(:api, :write)
          check_api_model_registry_write! if route.settings.dig(:model_registry, :write)
        end

        resource 'model-versions' do
          desc 'Creates a Model Version.' do
            success Entities::Ml::Mlflow::ModelVersion
            detail 'MLFlow Model Versions map to GitLab Model Versions. https://mlflow.org/docs/2.6.0/rest-api.html#create-modelversion'
          end
          route_setting :api, write: true
          route_setting :model_registry, write: true
          params do
            # The name param is actually required, however it is listed as optional here
            # we can send a custom error response required by MLFlow
            optional :name, type: String,
              desc: 'Register model under this name This field is required.'
            optional :description, type: String,
              desc: 'Optional description for model version.'
          end
          post 'create', urgency: :low do
            present ::Ml::CreateModelVersionService.new(
              model,
              {
                model_name: params[:name],
                description: params[:description]
              }
            ).execute,
              with: Entities::Ml::Mlflow::ModelVersion,
              root: :model_version
          end

          desc 'Fetch model version by name and version' do
            success Entities::Ml::Mlflow::ModelVersion
            detail 'https://mlflow.org/docs/2.6.0/rest-api.html#get-modelversion'
          end
          params do
            requires :name, type: String, desc: 'Model version name'
            requires :version, type: String, desc: 'Model version number'
          end
          get 'get', urgency: :low do
            present find_model_version(user_project, params[:name], params[:version]),
              with: Entities::Ml::Mlflow::ModelVersion, root: :model_version
          end

          desc 'Updates a Model Version.' do
            success Entities::Ml::Mlflow::ModelVersion
            detail 'https://mlflow.org/docs/2.6.0/rest-api.html#update-modelversion'
          end
          route_setting :api, write: true
          route_setting :model_registry, write: true
          params do
            # These params are actually required, however it is listed as optional here
            # we can send a custom error response required by MLFlow
            optional :name, type: String, desc: 'Model version name'
            optional :version, type: String, desc: 'Model version number'
            optional :description, type: String, desc: 'Model version description'
          end
          patch 'update', urgency: :low do
            invalid_parameter! unless params[:name] && params[:version] && params[:description]
            result = ::Ml::ModelVersions::UpdateModelVersionService.new(
              user_project, params[:name], params[:version], params[:description]
            ).execute
            update_failed! unless result.success?

            present result.payload, with: Entities::Ml::Mlflow::ModelVersion, root: :model_version
          end
        end
      end
    end
  end
end