Model Deployment
AWS LabsOfficialPublished by AWS Labs
- Skill
- Workflow
- Cloud and DevOps
- Apache-2.0
- Low risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill guides users through the deployment process for LoRA fine-tuned Nova and OSS models originally trained via SageMaker Serverless Model Customization. It identifies the correct deployment pathway, verifies model eligibility, presents target options (SageMaker or Bedrock), displays relevant license terms, and generates the necessary Python code or Jupyter notebooks to execute the deployment.
What it does
- Identifies training job details and model types from SageMaker metadata.
- Determines eligible deployment targets based on model characteristics.
- Displays required license agreements for the specific model.
- Generates deployment code as either a Python script or Jupyter notebook.
- Provides post-deployment summaries including invocation samples and cleanup instructions.
When to use it
- When you need to deploy a LoRA fine-tuned model to a SageMaker endpoint.
- When you want to make a fine-tuned model available via Amazon Bedrock.
- When you need to generate deployment code for Nova or OSS models.
- When you are unsure which deployment target is appropriate for your fine-tuned model.
Advantages
- Automates the identification of deployment pathways.
- Ensures consistent configuration through standardized code templates.
- Provides clear, step-by-step guidance for complex AWS deployments.
- Integrates license verification into the deployment workflow.
Usage examples
- “Deploy my fine-tuned model.”
- The agent will ask for the training job name, identify the model type, and guide you through selecting a deployment target.
- “Create an endpoint for my Nova model.”
- The agent will verify the model's eligibility, display the license, and generate the deployment code for SageMaker or Bedrock.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/awslabs/model-deployment/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip model-deployment.zip -d .agents/skills
Documentation by AWS Labs
Model Deployment
Identifies the correct deployment pathway based on model characteristics and generates deployment code.
Scope
This skill supports deploying Nova and OSS models that were fine-tuned through SageMaker Serverless Model Customization only.
Not supported:
Base models (not fine-tuned)
Models fine-tuned through other processes
Full Fine-Tuning (FFT) — only LoRA fine-tuned models are supported
Prerequisites
The SDK environment has been verified (SDK version, region, execution role). If not done, activate the
sdk-getting-startedskill first.
Principles
One thing at a time. Each response advances exactly one decision.
Confirm before proceeding. Wait for the user to agree before moving on. But don't re-ask questions already answered in the conversation — use what you know.
Don't read files until you need them. Only read pathway references after the pathway is confirmed.
Use what you know. If conversation history or artifacts already answer a question, confirm your understanding instead of asking again.
Workflow
Step 1: Identify the Training Job
You need the training job name or ARN. Check the conversation history first — the user may have already mentioned it, or it may be available from earlier steps in the workflow (e.g., fine-tuning). If not, ask the user.
Once you have the training job name or ARN, use the AWS MCP tool to look it up:
Use the AWS MCP tool
describe-training-joband extract:S3 output path (from
ModelArtifacts.S3ModelArtifactsorOutputDataConfig.S3OutputPath)IAM role ARN (from
RoleArn)Region
Use the AWS MCP tool
list-tagson the training job ARN and extract:Model ID from the
sagemaker-studio:jumpstart-model-idtag
Determine the model type from the model ID:
Contains "nova" (nova-micro, nova-lite, nova-pro) → Nova
Llama, Mistral, Qwen, GPT-OSS, DeepSeek, etc. → OSS
Unsupported models: This skill only supports OSS and Nova models that were LoRA fine-tuned through SageMaker Serverless Model Customization. If the model doesn't match, tell the user this skill can't help and suggest the finetuning skill.
Step 2: Determine Eligible Deployment Targets
Use the following table:
| Model Type | Eligible Targets |
|---|---|
| OSS | SageMaker, Bedrock |
| Nova | SageMaker, Bedrock |
If only one target is eligible, confirm it with the user. Use details from Step 5.
If multiple targets are eligible, help the user decide. Use details from Step 5.
If no targets are eligible, tell the user and explain why.
Step 3: Let the User Choose a Deployment Target
Present the eligible options to the user. Present these details to help them decide between SageMaker and Bedrock, if both are available options:
SageMaker Endpoint:
Dedicated compute resources for consistent performance
Control instance types and scaling
Best for predictable workloads with specific latency requirements
Bedrock:
Fully managed serverless inference
Auto-scales instantly with no capacity planning
Pay per request
Best for variable workloads with fluctuating demand
Do NOT make a recommendation. Let the user choose.
Do NOT mention technical details like merged/unmerged weights, reference files, or APIs, unless the user asks.
⏸ Wait for user to select a deployment option.
Step 4: Display License Agreement
Before proceeding to deployment, display the model's license or service terms to the user.
Read
references/model-licenses.mdand look up the model by its model ID (determined in Step 1).Follow the instructions in the Notes column — use the exact phrasing provided.
If the model ID is not found in the table, warn the user that you could not find license information for their model and recommend they verify the license independently before proceeding.
⏸ Wait for the user to confirm before proceeding.
Step 5: Follow Pathway Workflow
Read the reference file for the selected pathway and follow its instructions.
| Model Type | Deployment Target | Reference |
|---|---|---|
| OSS | SageMaker | references/deploy-oss-sagemaker.md |
| OSS | Bedrock | references/deploy-oss-bedrock.md |
| Nova | SageMaker | references/deploy-nova-sagemaker.md |
| Nova | Bedrock | references/deploy-nova-bedrock.md |
Step 6: Post-Deployment Summary
After deployment completes, provide the user with a summary. Cover these topics, using details from the pathway reference doc you followed in Step 5:
What was deployed — endpoint or model name, ARN, status
How to use it — sample invoke code for the specific deployment target
Cost — billing model (instance-based vs. pay-per-request) and what to expect
Cleanup — how to delete the endpoint or model when done
Troubleshooting
How to check if a model was LoRA or FFT fine-tuned
If deployment fails unexpectedly, the model may have been full fine-tuned (FFT) rather than LoRA. To check, download the training job's hydra config from its S3 output path at .hydra/config.yaml:
peft_configpopulated (r, alpha, dropout, etc.) → LoRA (supported)peft_config: null→ FFT (not supported by this skill)
Files
- ATTRIBUTION.mdAdded by AutoGineer916 B
- LICENSELicence file added by AutoGineer9.9 KiB
- NOTICELicence file added by AutoGineer89 B
- SKILL.md5.8 KiB
- code_templates/deploy-nova-bedrock.pyScript1.9 KiB
- code_templates/deploy-nova-sagemaker.pyScript1.7 KiB
- code_templates/deploy-oss-bedrock.pyScript3.9 KiB
- code_templates/deploy-oss-sagemaker.pyScript1.9 KiB
- references/code_output_guide.md3.2 KiB
- references/deploy-nova-bedrock.md4.0 KiB
- references/deploy-nova-sagemaker.md5.0 KiB
- references/deploy-oss-bedrock.md4.7 KiB
- references/deploy-oss-sagemaker.md6.5 KiB
- references/model-licenses.md11.5 KiB
references/code_output_guide.md
Code Output Guide
Mode Selection
Ask the user once before generating code: "Would you like me to generate a Jupyter notebook or a Python script?"
If the output format has already been decided in the conversation context, keep consistent — do not re-ask.
Shared Rules (Both Modes)
Use EXACTLY the imports shown in each code template — do not add extras
Replace
[PLACEHOLDER]values with user-specific configurationInclude
set_attribution(Attribution.SAGEMAKER_AGENT_PLUGIN)in the setup cell/section
Reading Code Templates
Templates use # Cell N: Label markers to delimit sections. # NOTEBOOK_ONLY skips a line in script mode; # NOTEBOOK_ONLY_SECTION on a # Cell N: line skips the entire section.
Notebook Mode
Write a .ipynb file in <project-dir>/notebooks/.
Naming and appending:
Notebook path:
<project-dir>/notebooks/<project-name>.ipynbIf the notebook already exists → ask: "Would you like me to append cells to the existing notebook, or create a new one?"
If it doesn't exist → create it
When appending, use the template's
# Cell 0 [markdown]:cell as the section divider before the new cells
Formatting:
Use your file write tool to create the complete notebook JSON, OR use notebook MCP tools (
create_notebook,add_cell) if availableDo NOT use bash commands, shell scripts, or
echo/catpiping2-space JSON indentation
Each source line is a separate string ending with
\n(except the last)Escape quotes:
\"No trailing commas
Structure:
Wrap cells in
{"cells": [...], "metadata": {...}, "nbformat": 4, "nbformat_minor": 4}Code cells:
cell_type,execution_count: null,metadata: {},outputs: [],source: [...]Markdown cells:
cell_type: "markdown", noexecution_countoroutputs# Cell 0 [markdown]:becomes a markdown cell; all others become code cells
Execution:
If notebook execution tools are available (e.g.,
run_cellMCP), offer to run cells for the user. If not available, tell the user to run cells themselves.Do NOT use bash commands or inline scripts to execute notebook cells.
Script Mode
Write a numbered .py file in <project-dir>/scripts/.
Naming:
Format:
NN_<descriptive_name>.py(e.g.,01_sft_finetuning.py) — use the next available number in<project-dir>/scripts/
Formatting:
Plain Python file, standard text
Use
# %%cell markers to preserve logical sections (IDE-compatible)Include a docstring at the top describing what the script does
# Cell 0 [markdown]:→ a comment block or docstring
Dependencies:
Install any required pip packages directly (e.g.,
pip install sagemaker>=3.7.1) before writing or running the script. Do not embed install commands in the script itself.
Execution:
Run the script using standard Python execution (
python3 <script>.py).
Resumption After Interruption
If the conversation was interrupted while a job was running (e.g., context compaction, user stopped and restarted, connection drop), do NOT re-run the script. Instead, check for an existing job by name or ARN from the conversation context or PLAN.md, and monitor its status rather than launching a duplicate.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs Python
Security
What our scanner noticed· Low risk
- Instructions that use the network
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- AWS Labs
- Publisher
- AWS Labs (Official)
- Source
- awslabs/agent-plugins · plugins/sagemaker-ai/skills/model-deployment · commit fbefb37
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- NOTICE (added by AutoGineer from NOTICE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by AWS Labs.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download model-deployment.zip