@@ -158,14 +158,15 @@ def register(
158
158
if self .model_data is None :
159
159
raise ValueError ("SageMaker Model Package cannot be created without model data." )
160
160
161
- model_pkg_args = self . _get_model_package_args (
161
+ model_pkg_args = sagemaker . get_model_package_args (
162
162
content_types ,
163
163
response_types ,
164
164
inference_instances ,
165
165
transform_instances ,
166
166
model_package_name ,
167
167
model_package_group_name ,
168
- image_uri ,
168
+ self .model_data ,
169
+ image_uri or self .image_uri ,
169
170
model_metrics ,
170
171
metadata_properties ,
171
172
marketplace_cert ,
@@ -181,80 +182,6 @@ def register(
181
182
model_package_arn = model_package .get ("ModelPackageArn" ),
182
183
)
183
184
184
- def _get_model_package_args (
185
- self ,
186
- content_types ,
187
- response_types ,
188
- inference_instances ,
189
- transform_instances ,
190
- model_package_name = None ,
191
- model_package_group_name = None ,
192
- image_uri = None ,
193
- model_metrics = None ,
194
- metadata_properties = None ,
195
- marketplace_cert = False ,
196
- approval_status = None ,
197
- description = None ,
198
- tags = None ,
199
- ):
200
- """Get arguments for session.create_model_package method.
201
-
202
- Args:
203
- content_types (list): The supported MIME types for the input data.
204
- response_types (list): The supported MIME types for the output data.
205
- inference_instances (list): A list of the instance types that are used to
206
- generate inferences in real-time.
207
- transform_instances (list): A list of the instance types on which a transformation
208
- job can be run or on which an endpoint can be deployed.
209
- model_package_name (str): Model Package name, exclusive to `model_package_group_name`,
210
- using `model_package_name` makes the Model Package un-versioned (default: None).
211
- model_package_group_name (str): Model Package Group name, exclusive to
212
- `model_package_name`, using `model_package_group_name` makes the Model Package
213
- versioned (default: None).
214
- image_uri (str): Inference image uri for the container. Model class' self.image will
215
- be used if it is None (default: None).
216
- model_metrics (ModelMetrics): ModelMetrics object (default: None).
217
- metadata_properties (MetadataProperties): MetadataProperties object (default: None).
218
- marketplace_cert (bool): A boolean value indicating if the Model Package is certified
219
- for AWS Marketplace (default: False).
220
- approval_status (str): Model Approval Status, values can be "Approved", "Rejected",
221
- or "PendingManualApproval" (default: "PendingManualApproval").
222
- description (str): Model Package description (default: None).
223
- Returns:
224
- dict: A dictionary of method argument names and values.
225
- """
226
- if image_uri :
227
- self .image_uri = image_uri
228
- container = {
229
- "Image" : self .image_uri ,
230
- "ModelDataUrl" : self .model_data ,
231
- }
232
-
233
- model_package_args = {
234
- "containers" : [container ],
235
- "content_types" : content_types ,
236
- "response_types" : response_types ,
237
- "inference_instances" : inference_instances ,
238
- "transform_instances" : transform_instances ,
239
- "marketplace_cert" : marketplace_cert ,
240
- }
241
-
242
- if model_package_name is not None :
243
- model_package_args ["model_package_name" ] = model_package_name
244
- if model_package_group_name is not None :
245
- model_package_args ["model_package_group_name" ] = model_package_group_name
246
- if model_metrics is not None :
247
- model_package_args ["model_metrics" ] = model_metrics ._to_request_dict ()
248
- if metadata_properties is not None :
249
- model_package_args ["metadata_properties" ] = metadata_properties ._to_request_dict ()
250
- if approval_status is not None :
251
- model_package_args ["approval_status" ] = approval_status
252
- if description is not None :
253
- model_package_args ["description" ] = description
254
- if tags is not None :
255
- model_package_args ["tags" ] = tags
256
- return model_package_args
257
-
258
185
def _init_sagemaker_session_if_does_not_exist (self , instance_type ):
259
186
"""Set ``self.sagemaker_session`` to ``LocalSession`` or ``Session`` if it's not already.
260
187
@@ -1128,6 +1055,10 @@ def _upload_code(self, key_prefix, repack=False):
1128
1055
)
1129
1056
1130
1057
if repack and self .model_data is not None and self .entry_point is not None :
1058
+ if isinstance (self .model_data , sagemaker .workflow .properties .Properties ):
1059
+ # model is not yet there, defer repacking to later during pipeline execution
1060
+ return
1061
+
1131
1062
bucket = self .bucket or self .sagemaker_session .default_bucket ()
1132
1063
repacked_model_data = "s3://" + "/" .join ([bucket , key_prefix , "model.tar.gz" ])
1133
1064
0 commit comments