SageMaker
What does zop.dev create for SageMaker?
zop.dev manages 6 SageMaker resource types: domain, user profile, model, endpoint config, endpoint, and an endpoint-invoker for calling deployed models. The endpoint is the cost center: it bills per instance-hour continuously while deployed, across a catalog running from ml.m5.large up to ml.p4d.24xlarge.
| Field | Value |
|---|---|
| Cloud | aws |
Amazon SageMaker is AWS’s platform for building, training, and serving machine-learning models. zop.dev manages the full serving path, from workspace to live inference endpoint, as first-class resources.
Domain, model, endpoint, and invoker resources
SageMaker domain, user profile, model, endpoint config, endpoint, and an endpoint-invoker resource for calling deployed models.
The ml instance catalog for endpoints
Instance catalog: ml.m5.large, ml.m5.xlarge, ml.c5.large, ml.r5.large, ml.g4dn.xlarge, ml.p3.2xlarge, ml.p4d.24xlarge.SageMaker is exposed on AWS only
Available through the cloud-resource-provisioner API on AWS only.
An endpoint is a server, not a function
A deployed SageMaker endpoint bills per instance-hour for as long as it exists, whether it serves 1 million requests or none. The mental model is a dedicated server, not a lambda: idle costs the same as busy. The catalog spans ml.m5.large and ml.c5.large at the modest end through ml.g4dn.xlarge GPU instances to ml.p4d.24xlarge, and the ends of that range differ by roughly two orders of magnitude in hourly price. A forgotten experiment endpoint on a GPU instance is the classic surprise line item; deleting endpoints when an experiment ends is the single highest-leverage habit here.
Immutable configs are a deployment primitive
Endpoint configs cannot be edited after creation. That is SageMaker’s design, not a platform limitation. Changing anything about serving means creating a new config and updating the endpoint to point at it, at which point SageMaker shifts traffic over. Treated properly, this is a feature: every serving change is a new, named artifact, rollback is re-pointing to the previous config, and there is no in-place mutation to reconstruct after an incident.
The domain outlives the experiments
The domain and its user profiles are the workspace layer, and they persist independently of any model or endpoint. A domain carries attached storage that remains after notebooks go idle, so deleting endpoints ends the serving bill but not the workspace’s. Auditing a SageMaker spend means checking both layers.
Invocation is part of the resource model
The endpoint-invoker resource type calls deployed models through the same provisioner API that created them. That closes the loop: a pipeline can deploy a model, invoke it with a known input, and verify the response before routing real traffic at it. That is a smoke test as infrastructure rather than a script someone remembers to run.