Skip to content

[Test] Master nova follow ups#6015

Open
amazeAmazing wants to merge 3 commits into
masterfrom
master-nova-follow-ups
Open

[Test] Master nova follow ups#6015
amazeAmazing wants to merge 3 commits into
masterfrom
master-nova-follow-ups

Conversation

@amazeAmazing

Copy link
Copy Markdown
Contributor

Issue #, if available:

Description of changes:

Verification that integ tests pass for an upcoming merge

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

ehsu3 and others added 3 commits July 9, 2026 13:20
* Feat: Add show_metrics() and stream_logs() for monitoring training jobs

* Feat: show_metrics() and stream_logs()

---------

Co-authored-by: Ealynn Hsu <ealynnh@amazon.com>
)

* show_metrics() Enhancement: Display MLFlow metrics for OSS models

* Update unit tests

* Address code comments

---------

Co-authored-by: Ealynn Hsu <ealynnh@amazon.com>
* feat(serve): add opt-in model source tag-based resource reuse

Add reuse_resources to ModelBuilder.build/deploy and BedrockModelBuilder.deploy.
On a hit, discover an existing resource by the model-source tag and return it
instead of creating a duplicate (warn, do not raise). Honored per call.

- New sagemaker/serve/model_reuse.py: tag helpers + service-client discovery
- Consolidate Nova manifest/checkpoint reading into sagemaker/core/training/utils.py
- SageMaker: build() skips Model creation on reuse (sets built_model to the
  existing Model); deploy() reuses the endpoint after validating env vars/image/
  instance type (PrimaryContainer with Containers[0] fallback for Nova)
- Reuse gates are skipped for inference-component builds/deploys so IC
  create/update (via _deploy_for_ic) is never silently intercepted
- Bedrock: reuse custom model + active deployment; response includes modelArn
- Reuse discovery uses the cached session/bedrock clients
- Support raw S3 URI model input via model_metadata BASE_MODEL_NAME
- Unit tests + notebook examples

* feat(serve): support Nova inference-component deployment and harden reuse

Route Nova model-customization deploys through the shared single-inference
-component path when a ResourceRequirements inference_config is supplied, so
each Nova checkpoint (full-rank or LoRA-merged) is hosted as one inference
component referencing the built Model. Nova without an inference_config keeps
the direct model-on-variant path.

- Broaden _is_nova_model to identify Nova from a package-less source (raw S3
  checkpoint or trainer) via base_model_name, in addition to the model
  package recipe/hub-content name.
- Set EnableNetworkIsolation on the IC endpoint config to match the built
  Model (always True for Nova), fixing CreateInferenceComponent rejection on
  mismatched network isolation.
- Guard model-package-dependent logic (restricted-package path, PEFT/recipe
  metadata, lineage tracking) so package-less Nova checkpoints deploy cleanly.
- Apply accumulated tags (including the model-source reuse tag) to endpoints
  created on the shared IC path so they remain discoverable.
- build(reuse_resources=True) only short-circuits when the backing Model can
  be resolved; IC endpoints and stale/deleted configs fall through and build
  a real Model, preventing a None built_model on later IC deploys.
- deploy() warns that reuse_resources has no effect for inference-component
  deployments, which manage their own reuse by component name.
- Surface both the manifest.json and output.tar.gz errors when Nova
  checkpoint URI resolution fails, instead of masking the primary failure.

Add unit tests covering the Nova IC path (routing, network isolation, IC
spec) and the model-on-variant fallback.

* fix(core): resolve Nova checkpoint manifest across all three output layouts

Nova training jobs write their checkpoint manifest to different locations
depending on the training platform:

  HyperPod:   <output>/<job>/manifest.json
  Serverless: <output>/<job>/output/output/manifest.json
  Serverful:  <output>/<job>/output/output.tar.gz  (manifest inside)

resolve_nova_checkpoint_uri previously only tried the serverless manifest path
and the serverful tar.gz, so HyperPod jobs (manifest directly under the job
directory) failed to resolve. Add build_nova_hyperpod_manifest_s3_uri and try
all three layouts in turn, aggregating every failure into the raised error so
the real cause is not masked by the last attempt's message.

Add unit tests for the HyperPod builder and for resolution from the HyperPod
and serverless layouts.

* feat(serve): Model-tag reuse, IC-deploy guard, and instance_type fix

Simplify reuse discovery by tagging SageMaker Models (not just endpoints)
with the model-source identifier, so build(reuse_resources=True) can find
and skip recreating an existing Model directly — no IC-state dependency.

- Tag non-Nova Models at build time with the model-source tag (matching the
  Nova path's existing behavior). Both Nova and OSS Models are now
  discoverable by tag.
- Add _find_reusable_model: build(reuse_resources=True) searches Models by
  source tag, skipping Model creation on a hit. Also discovers the endpoint
  for deploy() to reuse later.
- Simplify _get_model_for_endpoint back to variant-only lookup (returns None
  for IC endpoints). No longer needs IC-spec resolution since the Model is
  found directly by tag.
- _reused_endpoint_matches_config returns True for IC endpoints (can't read
  container config from variant; Model was already matched by tag).
- deploy() with reuse_resources=True on an IC deploy logs a warning that the
  flag has no effect (ICs manage reuse by endpoint_name + IC name).
- Fix deploy() to set self.instance_type from the caller's explicit value
  before calling _deploy_model_customization, preventing recipe-resolved
  defaults from overriding the user's intent.
- Add model-source tag assertion to the existing OSS deploy integ test.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants