{"library":"sagemaker-serve","title":"SageMaker Serve","description":"SageMaker Serve is a modular component of the SageMaker Python SDK v3, designed to simplify model deployment and inference on Amazon SageMaker. It provides a modern, unified API, primarily through the `ModelBuilder` class, to streamline the process of taking trained machine learning models and creating real-time or batch inference endpoints. This version, 1.7.1, is part of the ongoing evolution of the SageMaker Python SDK, replacing legacy interfaces like Estimator.deploy(), Model, and Predictor with more intuitive and consolidated workflows. It is actively maintained as part of the broader SageMaker SDK.","language":"python","status":"active","last_verified":"Thu May 21","install":{"commands":["pip install sagemaker-serve","pip install sagemaker"],"cli":null},"imports":["from sagemaker.serve.model_builder import ModelBuilder","from sagemaker.serve.builder.schema_builder import SchemaBuilder","from sagemaker.serve.utils.types import ModelServer","N/A (Use ModelTrainer or ModelBuilder in V3)"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nimport sagemaker\nfrom sagemaker.serve.model_builder import ModelBuilder\nfrom sagemaker.serve.builder.schema_builder import SchemaBuilder\nfrom sagemaker.serve.utils.types import ModelServer\nfrom sagemaker.core.helper.session_helper import Session, get_execution_role\n\nimport joblib\nfrom sklearn.linear_model import LogisticRegression\nimport numpy as np\nimport tarfile\n\n# 1. Setup Session and Role\ntry:\n    sagemaker_session = Session()\n    role = get_execution_role()\nexcept ValueError:\n    print(\"Could not get SageMaker execution role. Ensure you are running in a SageMaker environment or have AWS credentials configured.\")\n    # Fallback for local testing or CI without a full SageMaker environment\n    aws_access_key_id = os.environ.get('AWS_ACCESS_KEY_ID', 'DUMMY_KEY')\n    aws_secret_access_key = os.environ.get('AWS_SECRET_ACCESS_KEY', 'DUMMY_SECRET')\n    aws_session_token = os.environ.get('AWS_SESSION_TOKEN', '') # Optional\n    aws_region = os.environ.get('AWS_REGION', 'us-east-1')\n\n    # If actual credentials aren't available, we can't truly deploy but can simulate setup.\n    # For a runnable example that deploys, real credentials/role are mandatory.\n    # This part is mostly for local validation of the code structure.\n    if aws_access_key_id == 'DUMMY_KEY':\n        print(\"WARNING: Dummy AWS credentials are in use. Deployment will fail without valid credentials.\")\n    sagemaker_session = sagemaker.Session(\n        boto_session=sagemaker.local.local_session().boto_session\n    )\n    # For a real deployment, 'role' must be a valid IAM role ARN.\n    # This dummy role will fail actual deployment.\n    role = \"arn:aws:iam::123456789012:role/FakeSageMakerRole\"\n\n# 2. Train a dummy model and save it\nx = np.array([[1, 2], [3, 4], [5, 6]])\ny = np.array([0, 1, 0])\nmodel = LogisticRegression()\nmodel.fit(x, y)\n\nmodel_filename = \"model.joblib\"\njoblib.dump(model, model_filename)\n\n# Create a tar.gz archive of the model\nmodel_tar_path = \"model.tar.gz\"\nwith tarfile.open(model_tar_path, \"w:gz\") as tar:\n    tar.add(model_filename)\n\n# Upload model to S3 (requires valid role/credentials)\n# For a real scenario, model_path would point to a pre-trained model in S3.\n# For this quickstart, we'll try to upload the dummy model.\n# If role is dummy, this S3 upload will fail but ModelBuilder setup can proceed conceptually.\ntry:\n    s3_model_path = sagemaker_session.upload_data(path=model_tar_path, key_prefix=\"model-quickstart\")\n    print(f\"Model uploaded to: {s3_model_path}\")\nexcept Exception as e:\n    print(f\"Could not upload model to S3: {e}. Using dummy path for illustration.\")\n    s3_model_path = \"s3://your-bucket/path/to/model.tar.gz\" # Placeholder\n\n# 3. Define schema for input/output\nschema_builder = SchemaBuilder(\n    sample_input=np.array([[1.0, 2.0]], dtype=np.float32),\n    sample_output=np.array([0], dtype=np.int64)\n)\n\n# 4. Initialize ModelBuilder\nmodel_builder = ModelBuilder(\n    model_path=s3_model_path,\n    role=role,\n    sagemaker_session=sagemaker_session,\n    schema_builder=schema_builder,\n    model_server=ModelServer.TENSORFLOW # Can be PyTorch, ONNX, etc.\n)\n\n# 5. Build and deploy model (requires actual AWS permissions)\n# This step will create a SageMaker endpoint and will incur costs.\n# Make sure to clean up.\nendpoint_name = None\ntry:\n    print(\"Building model...\")\n    built_model = model_builder.build()\n    print(\"Deploying model...\")\n    endpoint = built_model.deploy(instance_type=\"ml.m5.large\", initial_instance_count=1)\n    endpoint_name = endpoint.endpoint_name\n    print(f\"Model deployed to endpoint: {endpoint_name}\")\n\n    # 6. Make a prediction\n    test_data = np.array([[0.5, 0.3]], dtype=np.float32)\n    prediction = endpoint.invoke(body=test_data.tolist())\n    print(f\"Prediction: {prediction}\")\n\nexcept Exception as e:\n    print(f\"Deployment or invocation failed: {e}\")\n    print(\"Ensure your AWS credentials and IAM role are correctly configured and have necessary permissions.\")\n    print(\"Also ensure your Sagemaker execution role has permissions to upload to S3.\")\nfinally:\n    # 7. Clean up (CRUCIAL for cost management)\n    if endpoint_name:\n        print(f\"Deleting endpoint: {endpoint_name}\")\n        try:\n            sagemaker_session.delete_endpoint(endpoint_name)\n            print(f\"Endpoint {endpoint_name} deleted.\")\n        except Exception as e:\n            print(f\"Failed to delete endpoint {endpoint_name}: {e}\")\n    else:\n        print(\"No endpoint to delete or deployment failed.\")\n","lang":"python","description":"This quickstart demonstrates how to use `sagemaker-serve` to deploy a simple scikit-learn model to a SageMaker endpoint. It covers creating a dummy model, saving it, uploading to S3, defining an input/output schema with `SchemaBuilder`, initializing `ModelBuilder`, deploying the model, invoking the endpoint for a prediction, and critically, cleaning up the created SageMaker endpoint to avoid incurring unnecessary costs. For a real deployment, ensure a valid AWS IAM role and credentials are configured.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-21","installed_version":null,"pypi_latest":"1.12.0","is_stale":null,"summary":{"python_range":"3.10–3.9","success_rate":13,"avg_install_s":0.1,"avg_import_s":null,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"sagemaker","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"626.9M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"sagemaker","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"sagemaker","exit_code":1,"wheel_type":null,"failure_reason":"timeout","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"sagemaker","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":"timeout","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"sagemaker","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"655.7M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"sagemaker","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"sagemaker","exit_code":1,"wheel_type":null,"failure_reason":"timeout","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"sagemaker","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":"timeout","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"sagemaker","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"632.9M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"sagemaker","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"sagemaker","exit_code":1,"wheel_type":null,"failure_reason":"timeout","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"sagemaker","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":"timeout","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"sagemaker","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"627.9M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"sagemaker","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"sagemaker","exit_code":1,"wheel_type":null,"failure_reason":"timeout","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"sagemaker","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":"timeout","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"sagemaker","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":0.1,"import_time_s":null,"mem_mb":null,"disk_size":"695.0M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"sagemaker","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"sagemaker","exit_code":1,"wheel_type":null,"failure_reason":"timeout","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"sagemaker","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":106.2,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"sagemaker-serve","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null}]}}