Overview
This post summarizes the user journey for leveraging the ML-Ops framework within SageMaker Studio. The framework is built on the AWS sample project MLOPS-SM-PROJECT-TEMPLATE-RT. The solution architecture is illustrated below:

This sample project features a self-mutating CDK pipeline (shown below) that deploys a Service Catalog application to the client’s account. The Service Catalog provides a SageMaker project template, enabling clients to create new SageMaker projects.

Onboarding a client account
The client onboarding resulting:
– New AWS Accounts: 3 accounts onboarded — Dev, PreProd, and Prod.
– CloudFormation Deployment: A template deployed to the Dev account includes a Service Catalog portfolio/application for creating SageMaker projects directly from SageMaker Studio.
– Service Catalog Application: Illustrated below.

Create a new Project in Sagemaker Studio
Once the Dev account is provisioned, users can create a SageMaker project directly from SageMaker Studio.

0: Select “Projects” under Deployments
1: Click on the “+ Create project” button

0: Click on the “Templates” under Step 1
1: Click on the “Organization templates” button
2: Select a template, for example: “RAG”
3: Click on the “Project details” under Step 2

0: Puts in project name on the “Name” under project details (max 32 characters)
1: Puts in project description on the “Description -optional” under project details
2: Click on the “Create” button

After the project creation is done, the new project appears at the top of Projects list
Cloud Formation Stack
The Service Catalog provisions two stacks. The first stack, which has a generated name, serves as the main (parent) stack and contains the majority of the AWS resources.

The AWS Code Repos: build & deploy
Depending on the Service Catalog configuration, a new project creates multiple AWS resources—typically including two code repositories and two CodePipelines, as shown below.
Build Repo – Stores code for building and packaging.
Deploy Repo – Stores code for deployment processes.

Build Repo
The Build Repo contains the SageMaker pipeline definition, giving users full control over the sequence and configuration of steps.
On the left, the source_scripts folder typically holds code for preprocessing, training, evaluation, and other tasks. Each step can be packaged in a Docker image using the Bring Your Own Container (BYOC) approach.

Deploy Repo
Deploy repo contains code to configure and deploy a SageMaker endpoint as shown below

The deployment pipelines: build & deploy
The two CodePipelines correspond to the two repositories:
Build Pipeline – Triggers the SageMaker pipeline.
Deploy Pipeline – Deploys the endpoint to Dev, Pre-Prod, and Prod environments.

Model Training

Deploy Sagemaker Endpoint
It is common to train a model multiple times with different hyperparameters, compare the results, and deploy the best-performing version. SageMaker Model Registry is designed to support this workflow.
As shown below, you can select two model versions in the registry, right-click, and choose “Compare model versions” to evaluate them side by side.

As shown below, the model version on the right performs significantly better than the one on the left. Therefore, we will proceed with deploying the right-hand version.

To deploy a version, double click the version to open the version, and then click on the “Update Status” button as shown here:

Then, change to “Approved” status by selecting “Approved” from the dropdown

This update automatically triggers the SageMaker deployment pipeline, creating an endpoint in the Dev account (as shown below). The pipeline also supports promoting the model to the Pre-Prod and Prod accounts.
