Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 21 additions & 10 deletions sagemaker-serve/src/sagemaker/serve/model_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -428,6 +428,7 @@ def __post_init__(self) -> None:
logger.setLevel(self.log_level)

self._warn_about_deprecated_parameters(warnings)
self._initialize_region()
self._initialize_compute_config()
self._initialize_network_config()
self._initialize_defaults()
Expand Down Expand Up @@ -496,17 +497,12 @@ def _initialize_network_config(self) -> None:
if not hasattr(self, "_enable_network_isolation"):
self._enable_network_isolation = False

def _initialize_defaults(self) -> None:
"""Initialize default values for unset parameters."""
if not hasattr(self, "model_name") or self.model_name is None:
self.model_name = "model-" + str(uuid.uuid4())[:8]

if not hasattr(self, "mode") or self.mode is None:
self.mode = Mode.SAGEMAKER_ENDPOINT

if not hasattr(self, "env_vars") or self.env_vars is None:
self.env_vars = {}
def _initialize_region(self) -> None:
"""Resolve the region before any spec lookups that depend on it.

Must run before _initialize_compute_config: JumpStart default
instance type resolution requires self.region to exist.
"""
# Set region with priority: user input > sagemaker session > AWS account region > default
if not hasattr(self, "region") or not self.region:
if self.sagemaker_session and self.sagemaker_session.boto_region_name:
Expand All @@ -520,6 +516,21 @@ def _initialize_defaults(self) -> None:
except Exception:
self.region = None # Default fallback

def _initialize_defaults(self) -> None:
"""Initialize default values for unset parameters."""
if not hasattr(self, "model_name") or self.model_name is None:
self.model_name = "model-" + str(uuid.uuid4())[:8]

if not hasattr(self, "mode") or self.mode is None:
self.mode = Mode.SAGEMAKER_ENDPOINT

if not hasattr(self, "env_vars") or self.env_vars is None:
self.env_vars = {}

# Region is resolved earlier in _initialize_region(); re-run for safety
# in case callers invoke _initialize_defaults directly.
self._initialize_region()

# At construction, only resolve a default role when none was supplied (so
# building a ModelBuilder does no IAM work when a role is given). The
# resolved role is validated for serving permissions at the actual
Expand Down
9 changes: 7 additions & 2 deletions sagemaker-serve/src/sagemaker/serve/model_builder_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -322,8 +322,13 @@ def _get_jumpstart_recommended_instance_type(self) -> Optional[str]:
if hasattr(deploy_kwargs, "instance_type") and deploy_kwargs.instance_type:
return deploy_kwargs.instance_type

except Exception:
pass
except Exception as e:
logger.warning(
"Failed to retrieve JumpStart default instance type for model '%s': %s. "
"Falling back to generic instance type detection.",
self.model,
e,
)

return None

Expand Down
Loading
Loading