Skip to content

Welcome to easy_sm

Publish Documentation Release Version PyPI version Python 3.13+ License: MIT

A Python CLI tool that simplifies AWS SageMaker workflows by enabling rapid local prototyping with Docker before deploying to the cloud.

Credits

This project borrows heavily from Sagify. Check it out especially if you want to work with LLMs on SageMaker.

Experimental Package

This is an experimental package. APIs may evolve between releases.

Features

  • Local Development: Train, process, and deploy models locally in Docker containers that mimic SageMaker
  • Cloud Deployment: Deploy trained models to AWS SageMaker with minimal configuration changes
  • Docker Integration: Automatically build and manage Docker images
  • Endpoint Management: Deploy and manage SageMaker endpoints (provisioned and serverless)
  • Job Monitoring: List and filter training jobs
  • Unix Philosophy: Composable commands with clean, pipable output
  • Getting Started


    Install easy_sm and run your first training job in 5 minutes

    Installation Quick Start

  • User Guide


    Learn about local development, cloud deployment, and piped workflows

    User Guide

  • Command Reference


    Detailed documentation for all CLI commands

    Commands

  • Developer Guide


    Architecture, testing, and contribution guidelines

    Developer Guide

Requirements

  • Python >=3.13
  • Docker (for local development)
  • AWS CLI configured with credentials

Quick Example

# Initialize project
easy_sm init

# Build and test locally
easy_sm build
easy_sm local train

# Deploy to SageMaker
export SAGEMAKER_ROLE=arn:aws:iam::123456789012:role/SageMakerRole
easy_sm push
easy_sm train -n job-name -e ml.m5.large \
  -i s3://bucket/input -o s3://bucket/output

Design Philosophy

The CLI follows Unix philosophy:

  • Composable: Commands output clean data for piping
  • Context-aware: Auto-detects app name and IAM role from environment
  • Minimal flags: Only essential options required
  • Pipe-friendly: Output is data, not verbose messages

Piped Workflows

# Get latest training job, extract model, and deploy in one line
easy_sm deploy -n my-endpoint -e ml.m5.large \
  -m $(easy_sm get-model-artifacts -j $(easy_sm list-training-jobs -n -m 1))

License

MIT License - see License for details.

Author

Created by Prateek (prteek@icloud.com)