Skip to content

Commit 97e48ca

Browse files
authored
Fix: Update model card for model package with no existing model card (aws#4794)
1 parent d02d524 commit 97e48ca

File tree

1 file changed

+49
-26
lines changed

1 file changed

+49
-26
lines changed

src/sagemaker/model.py

Lines changed: 49 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2466,32 +2466,55 @@ def update_model_card(self, model_card: Union[ModelCard, ModelPackageModelCard])
24662466
desc_model_package = sagemaker_session.sagemaker_client.describe_model_package(
24672467
ModelPackageName=self.model_package_arn
24682468
)
2469+
if hasattr(model_card, "model_package_details"):
2470+
model_card.model_package_details = None
24692471
update_model_card_req = model_card._create_request_args()
2470-
if update_model_card_req["ModelCardStatus"] is not None:
2471-
if (
2472-
desc_model_package["ModelCard"]["ModelCardStatus"]
2473-
== update_model_card_req["ModelCardStatus"]
2474-
):
2475-
del update_model_card_req["ModelCardStatus"]
2476-
24772472
if update_model_card_req.get("ModelCardName") is not None:
24782473
del update_model_card_req["ModelCardName"]
2479-
if update_model_card_req.get("Content") is not None:
2480-
previous_content_hash = _hash_content_str(
2481-
desc_model_package["ModelCard"]["ModelCardContent"]
2482-
)
2483-
current_content_hash = _hash_content_str(update_model_card_req["Content"])
2484-
if (
2485-
previous_content_hash == current_content_hash
2486-
or update_model_card_req.get("Content") == "{}"
2487-
or update_model_card_req.get("Content") == "null"
2488-
):
2489-
del update_model_card_req["Content"]
2490-
else:
2491-
update_model_card_req["ModelCardContent"] = update_model_card_req["Content"]
2492-
del update_model_card_req["Content"]
2493-
update_model_package_args = {
2494-
"ModelPackageArn": self.model_package_arn,
2495-
"ModelCard": update_model_card_req,
2496-
}
2497-
sagemaker_session.sagemaker_client.update_model_package(**update_model_package_args)
2474+
if update_model_card_req["Content"] is not None:
2475+
if "model_package_details" in update_model_card_req["Content"]:
2476+
update_model_card_req["Content"].pop("model_package_details", None)
2477+
update_model_card_req["ModelCardContent"] = update_model_card_req["Content"]
2478+
del update_model_card_req["Content"]
2479+
2480+
if "ModelCard" in desc_model_package:
2481+
if update_model_card_req["ModelCardStatus"] is not None:
2482+
if (
2483+
desc_model_package["ModelCard"]["ModelCardStatus"]
2484+
!= update_model_card_req["ModelCardStatus"]
2485+
):
2486+
new_mc_mp_req = update_model_card_req
2487+
del new_mc_mp_req["ModelCardContent"]
2488+
update_model_package_args = {
2489+
"ModelPackageArn": self.model_package_arn,
2490+
"ModelCard": new_mc_mp_req,
2491+
}
2492+
sagemaker_session.sagemaker_client.update_model_package(
2493+
**update_model_package_args
2494+
)
2495+
2496+
if update_model_card_req.get("ModelCardContent") is not None:
2497+
previous_content_hash = _hash_content_str(
2498+
desc_model_package["ModelCard"]["ModelCardContent"]
2499+
)
2500+
current_content_hash = _hash_content_str(update_model_card_req["ModelCardContent"])
2501+
if not (
2502+
previous_content_hash == current_content_hash
2503+
or update_model_card_req.get("ModelCardContent") == "{}"
2504+
or update_model_card_req.get("ModelCardContent") == "null"
2505+
):
2506+
new_mc_mp_req = update_model_card_req
2507+
del new_mc_mp_req["ModelCardStatus"]
2508+
update_model_package_args = {
2509+
"ModelPackageArn": self.model_package_arn,
2510+
"ModelCard": new_mc_mp_req,
2511+
}
2512+
sagemaker_session.sagemaker_client.update_model_package(
2513+
**update_model_package_args
2514+
)
2515+
else:
2516+
update_model_package_args = {
2517+
"ModelPackageArn": self.model_package_arn,
2518+
"ModelCard": update_model_card_req,
2519+
}
2520+
sagemaker_session.sagemaker_client.update_model_package(**update_model_package_args)

0 commit comments

Comments
 (0)