Skip to content

Commit 7067af0

Browse files
committed
Implementing alias operations for RegisteredModel and ModelVersion
1 parent 03aa48a commit 7067af0

File tree

7 files changed

+119
-5
lines changed

7 files changed

+119
-5
lines changed

docs/src/reference/model_version.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ getdownloaduriformodelversionartifacts
1111
transitionmodelversionstage
1212
setmodelversiontag
1313
deletemodelversiontag
14+
getmodelversionbyalias
1415
```

docs/src/reference/registered_model.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,6 @@ deleteregisteredmodel
88
searchregisteredmodels
99
setregisteredmodeltag
1010
deleteregisteredmodeltag
11+
deleteregisteredmodelalias
12+
setregisteredmodelalias
1113
```

src/MLFlowClient.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,13 @@ export refresh, getmetrichistory
6969
include("services/registered_model.jl")
7070
export getregisteredmodel, createregisteredmodel, deleteregisteredmodel,
7171
renameregisteredmodel, updateregisteredmodel, searchregisteredmodels,
72-
setregisteredmodeltag, deleteregisteredmodeltag
72+
setregisteredmodeltag, deleteregisteredmodeltag, deleteregisteredmodelalias,
73+
setregisteredmodelalias
7374

7475
include("services/model_version.jl")
7576
export getlatestmodelversions, getmodelversion, createmodelversion, deletemodelversion,
7677
updatemodelversion, searchmodelversions, getdownloaduriformodelversionartifacts,
77-
transitionmodelversionstage, setmodelversiontag, deletemodelversiontag
78+
transitionmodelversionstage, setmodelversiontag, deletemodelversiontag,
79+
getmodelversionbyalias
7880

7981
end

src/services/model_version.jl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,3 +207,20 @@ function deletemodelversiontag(instance::MLFlow, name::String, version::String,
207207
mlfdelete(instance, "model-versions/delete-tag"; name=name, version=version, key=key)
208208
return true
209209
end
210+
211+
"""
212+
getmodelversionbyalias(instance::MLFlow, name::String, alias::String)
213+
214+
# Arguments
215+
- `instance:` [`MLFlow`](@ref) configuration.
216+
- `name:` Name of the [`RegisteredModel`](@ref).
217+
- `alias:` Name of the alias.
218+
219+
# Returns
220+
[`ModelVersion`](@ref) requested.
221+
"""
222+
function getmodelversionbyalias(instance::MLFlow, name::String,
223+
alias::String)::ModelVersion
224+
result = mlfget(instance, "registered-models/alias"; name=name, alias=alias)
225+
return result["model_version"] |> ModelVersion
226+
end

src/services/registered_model.jl

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,3 +156,37 @@ function deleteregisteredmodeltag(instance::MLFlow, name::String, key::String)::
156156
mlfdelete(instance, "registered-models/delete-tag"; name=name, key=key)
157157
return true
158158
end
159+
160+
"""
161+
deleteregisteredmodelalias(instance::MLFlow, name::String, alias::String)
162+
163+
# Arguments
164+
- `instance:` [`MLFlow`](@ref) configuration.
165+
- `name:` Name of the [`RegisteredModel`](@ref).
166+
- `alias:` Name of the alias.
167+
168+
# Returns
169+
`true` if successful. Otherwise, raises exception.
170+
"""
171+
function deleteregisteredmodelalias(instance::MLFlow, name::String, alias::String)::Bool
172+
mlfdelete(instance, "registered-models/alias"; name=name, alias=alias)
173+
return true
174+
end
175+
176+
"""
177+
setregisteredmodelalias(instance::MLFlow, name::String, alias::String, version::String)
178+
179+
# Arguments
180+
- `instance:` [`MLFlow`](@ref) configuration.
181+
- `name:` Name of the [`RegisteredModel`](@ref).
182+
- `alias:` Name of the alias.
183+
- `version:` [`ModelVersion`](@ref) number.
184+
185+
# Returns
186+
`true` if successful. Otherwise, raises exception.
187+
"""
188+
function setregisteredmodelalias(instance::MLFlow, name::String, alias::String,
189+
version::String)::Bool
190+
mlfpost(instance, "registered-models/alias"; name=name, alias=alias, version=version)
191+
return true
192+
end

test/services/model_version.jl

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,3 +212,22 @@ end
212212
deleteregisteredmodel(mlf, "missy")
213213
deleteexperiment(mlf, experiment)
214214
end
215+
216+
@testset verbose = true "get model version by alias" begin
217+
@ensuremlf
218+
219+
experiment = createexperiment(mlf, UUIDs.uuid4() |> string)
220+
run = createrun(mlf, experiment)
221+
registered_model = createregisteredmodel(mlf, "missy")
222+
223+
model_version = createmodelversion(mlf, "missy", run.info.artifact_uri)
224+
setregisteredmodelalias(mlf, registered_model.name, "gala", model_version.version)
225+
226+
retrieved_model_version = getmodelversionbyalias(mlf, "missy", "gala")
227+
228+
@assert retrieved_model_version.aliases |> !isempty
229+
@assert (retrieved_model_version.aliases |> first) == "gala"
230+
231+
deleteregisteredmodel(mlf, "missy")
232+
deleteexperiment(mlf, experiment)
233+
end

test/services/registered_model.jl

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,13 @@ end
5454
@ensuremlf
5555

5656
registered_model = createregisteredmodel(mlf, "missy"; description="gala")
57-
renamed_registered_model = renameregisteredmodel(mlf, registered_model.name, "mister")
57+
renamed_registered_model = renameregisteredmodel(mlf, registered_model.name, "gala")
5858

5959
@test renamed_registered_model isa RegisteredModel
60-
@test renamed_registered_model.name == "mister"
60+
@test renamed_registered_model.name == "gala"
6161
@test renamed_registered_model.description == registered_model.description
6262

63-
deleteregisteredmodel(mlf, "mister")
63+
deleteregisteredmodel(mlf, "gala")
6464
end
6565

6666
@testset verbose = true "update registered model" begin
@@ -137,3 +137,42 @@ end
137137

138138
deleteregisteredmodel(mlf, "missy")
139139
end
140+
141+
@testset verbose = true "delete registered model alias" begin
142+
@ensuremlf
143+
144+
experiment = createexperiment(mlf, UUIDs.uuid4() |> string)
145+
run = createrun(mlf, experiment)
146+
147+
registered_model = createregisteredmodel(mlf, "missy"; description="gala")
148+
model_version = createmodelversion(mlf, "missy", run.info.artifact_uri)
149+
150+
setregisteredmodelalias(mlf, registered_model.name, "gala", model_version.version)
151+
deleteregisteredmodelalias(mlf, registered_model.name, "gala")
152+
153+
retrieved_registered_model = getregisteredmodel(mlf, registered_model.name)
154+
@test retrieved_registered_model.aliases |> isempty
155+
156+
deleteregisteredmodel(mlf, "missy")
157+
deleteexperiment(mlf, experiment)
158+
end
159+
160+
@testset verbose = true "delete registered model alias" begin
161+
@ensuremlf
162+
163+
experiment = createexperiment(mlf, UUIDs.uuid4() |> string)
164+
run = createrun(mlf, experiment)
165+
166+
registered_model = createregisteredmodel(mlf, "missy"; description="gala")
167+
model_version = createmodelversion(mlf, "missy", run.info.artifact_uri)
168+
169+
setregisteredmodelalias(mlf, registered_model.name, "gala", model_version.version)
170+
setregisteredmodelalias(mlf, registered_model.name, "missy", model_version.version)
171+
172+
retrieved_registered_model = getregisteredmodel(mlf, registered_model.name)
173+
@test retrieved_registered_model.aliases |> !isempty
174+
@test length(retrieved_registered_model.aliases) == 2
175+
176+
deleteregisteredmodel(mlf, "missy")
177+
deleteexperiment(mlf, experiment)
178+
end

0 commit comments

Comments
 (0)