@@ -176,14 +176,15 @@ def register(
176
176
if self .model_data is None :
177
177
raise ValueError ("SageMaker Model Package cannot be created without model data." )
178
178
179
- model_pkg_args = self . _get_model_package_args (
179
+ model_pkg_args = sagemaker . get_model_package_args (
180
180
content_types ,
181
181
response_types ,
182
182
inference_instances ,
183
183
transform_instances ,
184
184
model_package_name ,
185
185
model_package_group_name ,
186
- image_uri ,
186
+ self .model_data ,
187
+ image_uri or self .image_uri ,
187
188
model_metrics ,
188
189
metadata_properties ,
189
190
marketplace_cert ,
@@ -199,80 +200,6 @@ def register(
199
200
model_package_arn = model_package .get ("ModelPackageArn" ),
200
201
)
201
202
202
- def _get_model_package_args (
203
- self ,
204
- content_types ,
205
- response_types ,
206
- inference_instances ,
207
- transform_instances ,
208
- model_package_name = None ,
209
- model_package_group_name = None ,
210
- image_uri = None ,
211
- model_metrics = None ,
212
- metadata_properties = None ,
213
- marketplace_cert = False ,
214
- approval_status = None ,
215
- description = None ,
216
- tags = None ,
217
- ):
218
- """Get arguments for session.create_model_package method.
219
-
220
- Args:
221
- content_types (list): The supported MIME types for the input data.
222
- response_types (list): The supported MIME types for the output data.
223
- inference_instances (list): A list of the instance types that are used to
224
- generate inferences in real-time.
225
- transform_instances (list): A list of the instance types on which a transformation
226
- job can be run or on which an endpoint can be deployed.
227
- model_package_name (str): Model Package name, exclusive to `model_package_group_name`,
228
- using `model_package_name` makes the Model Package un-versioned (default: None).
229
- model_package_group_name (str): Model Package Group name, exclusive to
230
- `model_package_name`, using `model_package_group_name` makes the Model Package
231
- versioned (default: None).
232
- image_uri (str): Inference image uri for the container. Model class' self.image will
233
- be used if it is None (default: None).
234
- model_metrics (ModelMetrics): ModelMetrics object (default: None).
235
- metadata_properties (MetadataProperties): MetadataProperties object (default: None).
236
- marketplace_cert (bool): A boolean value indicating if the Model Package is certified
237
- for AWS Marketplace (default: False).
238
- approval_status (str): Model Approval Status, values can be "Approved", "Rejected",
239
- or "PendingManualApproval" (default: "PendingManualApproval").
240
- description (str): Model Package description (default: None).
241
- Returns:
242
- dict: A dictionary of method argument names and values.
243
- """
244
- if image_uri :
245
- self .image_uri = image_uri
246
- container = {
247
- "Image" : self .image_uri ,
248
- "ModelDataUrl" : self .model_data ,
249
- }
250
-
251
- model_package_args = {
252
- "containers" : [container ],
253
- "content_types" : content_types ,
254
- "response_types" : response_types ,
255
- "inference_instances" : inference_instances ,
256
- "transform_instances" : transform_instances ,
257
- "marketplace_cert" : marketplace_cert ,
258
- }
259
-
260
- if model_package_name is not None :
261
- model_package_args ["model_package_name" ] = model_package_name
262
- if model_package_group_name is not None :
263
- model_package_args ["model_package_group_name" ] = model_package_group_name
264
- if model_metrics is not None :
265
- model_package_args ["model_metrics" ] = model_metrics ._to_request_dict ()
266
- if metadata_properties is not None :
267
- model_package_args ["metadata_properties" ] = metadata_properties ._to_request_dict ()
268
- if approval_status is not None :
269
- model_package_args ["approval_status" ] = approval_status
270
- if description is not None :
271
- model_package_args ["description" ] = description
272
- if tags is not None :
273
- model_package_args ["tags" ] = tags
274
- return model_package_args
275
-
276
203
def _init_sagemaker_session_if_does_not_exist (self , instance_type ):
277
204
"""Set ``self.sagemaker_session`` to ``LocalSession`` or ``Session`` if it's not already.
278
205
@@ -1148,6 +1075,10 @@ def _upload_code(self, key_prefix, repack=False):
1148
1075
)
1149
1076
1150
1077
if repack and self .model_data is not None and self .entry_point is not None :
1078
+ if isinstance (self .model_data , sagemaker .workflow .properties .Properties ):
1079
+ # model is not yet there, defer repacking to later during pipeline execution
1080
+ return
1081
+
1151
1082
bucket = self .bucket or self .sagemaker_session .default_bucket ()
1152
1083
repacked_model_data = "s3://" + "/" .join ([bucket , key_prefix , "model.tar.gz" ])
1153
1084
0 commit comments