@@ -22,8 +22,9 @@ def get_current_workspace() -> Workspace:
2222 return experiment .workspace
2323
2424
25- def get_latest_model (
25+ def get_model (
2626 model_name : str ,
27+ model_version : int = None , # If none, return latest model
2728 tag_name : str = None ,
2829 tag_value : str = None ,
2930 aml_workspace : Workspace = None
@@ -35,53 +36,25 @@ def get_latest_model(
3536 Parameters:
3637 aml_workspace (Workspace): aml.core Workspace that the model lives.
3738 model_name (str): name of the model we are looking for
39+ (optional) model_version (str): version of the model. Returns latest if not provided.
3840 (optional) tag (str): the tag value & name the model was registered under.
3941
4042 Return:
4143 A single aml model from the workspace that matches the name and tag.
4244 """
43- try :
44- # Validate params. cannot be None.
45- if model_name is None :
46- raise ValueError ("model_name[:str] is required" )
47-
48- if aml_workspace is None :
45+ if aml_workspace is None :
4946 print ("No workspace defined - using current experiment workspace." )
5047 aml_workspace = get_current_workspace ()
5148
52- model_list = None
53- tag_ext = ""
54-
55- # Get lastest model
56- # True: by name and tags
57- if tag_name is not None and tag_value is not None :
58- model_list = AMLModel .list (
59- aml_workspace , name = model_name ,
60- tags = [[tag_name , tag_value ]], latest = True
61- )
62- tag_ext = f"tag_name: { tag_name } , tag_value: { tag_value } ."
63- # False: Only by name
64- else :
65- model_list = AMLModel .list (
66- aml_workspace , name = model_name , latest = True )
67-
68- # latest should only return 1 model, but if it does,
69- # then maybe sdk or source code changed.
70-
71- # define the error messages
72- too_many_model_message = ("Found more than one latest model. "
73- f"Models found: { model_list } . "
74- f"{ tag_ext } " )
75-
76- no_model_found_message = (f"No Model found with name: { model_name } . "
77- f"{ tag_ext } " )
78-
79- if len (model_list ) > 1 :
80- raise ValueError (too_many_model_message )
81- if len (model_list ) == 1 :
82- return model_list [0 ]
83- else :
84- print (no_model_found_message )
85- return None
86- except Exception :
87- raise
49+ if tagname is not None and tagvalue is not None :
50+ model = Model (aml_workspace , name = model_name , version = model_version , tags = [[tag_name , tag_value ]])
51+ elif (tagname is None and tagvalue is not None ) or (
52+ tagvalue is None and tagname is not None
53+ ):
54+ raise ValueError (
55+ "model_tag_name and model_tag_value should both be supplied"
56+ + "or excluded" # NOQA: E501
57+ )
58+ else :
59+ model = Model (aml_workspace , name = env .model_name , version = env .model_version )
60+ return model
0 commit comments