Vertex AI Model Registry models with no deployment that still carry a billed cost
What does ZopNight detect here?
Vertex AI Model Registry entries cost nothing on their own, but a model with no deployment can still carry billed cost for its stored artifacts. ZopNight flags models whose deployed model count is 0 and a real cost is attributed to them, reports that full cost as the saving from deleting, and never reports a $0 finding.
Signal and threshold
| Field | Value |
|---|---|
| Rule IDs | RC-1214 |
| Category | orphan |
| Severity | low |
| Metric | none — pure configuration read |
| Threshold | 0 deployments and billed cost above $0 |
| Source | ZopNight |
| Permissions used | aiplatform.models.list · aiplatform.models.get · aiplatform.endpoints.list |
Where it applies
What an undeployed model can still cost
Vertex AI pricing is clear that “there is no cost associated with having your models in the Model Registry”; cost starts when you deploy a model to an endpoint or run batch prediction. The registry entry is free, but it is rarely alone. A model points at artifacts, and those files sit in Cloud Storage where they are billed like any other object.
So the question this rule asks is narrow: is there a model nobody has deployed that still has a real cost attached to it? Old training runs, abandoned experiments and superseded versions are the usual answer.
Seeing which models are deployed
List the models in a region, then list the endpoints to see what is actually serving:
gcloud ai models list --region=us-central1gcloud ai endpoints list --region=us-central1A model that appears in the first list but is not deployed to any endpoint in the second is a candidate. Check each model’s artifact location in the console before deciding.
The two facts that must line up
ZopNight fires when the model’s deployed model count, read live from the Vertex AI API, is exactly 0, and when a billed monthly cost above zero is attributed to that model. Both are needed; an undeployed model with no cost does not produce a finding.
Where the rule holds back
No cost figure, no finding: ZopNight does not report $0 recommendations and does not estimate artifact storage it cannot see billed. There is also no minimum age. The Model resource carries no record of when it was last undeployed, so a model uploaded moments ago and not yet deployed can appear. That is the main reason to review the list before deleting anything.
Counting the billed cost as the saving
saving = billed monthly cost attributed to the modelcost after fix = 0Deleting the model is the lever. If the artifacts live in a bucket you manage, delete or lifecycle those objects too, or the storage keeps billing.
Removing a model you no longer need
- Confirm the model version is not pending deployment or referenced by a pipeline.
- Export or copy the artifact if it may be needed again.
- Delete it from the registry:
gcloud ai models delete MODEL_ID --region=us-central1. Per Google’s delete guide, a deployed model must be undeployed first, and deleting a model deletes all its versions and evaluations. - Clean up the artifact objects in Cloud Storage if nothing else uses them.