1. A computer implemented method for scaling compute resources, the method comprising: receiving a plurality of user-specified termination policies that are ranked in order of execution by a user and are used to select one or more virtual machine instances from a group of virtual machine instances to de-provision first when de-provisioning virtual machine instances from the group of virtual machine instances, the group of virtual machine instances having been provisioned for the user on one or more host computing devices, each user-specified termination policy specifying at least one virtual machine instance runtime condition for de-provisioning one or more of the virtual machine instances; detecting that at least one virtual machine instance of the group of virtual machine instances should be de-provisioned based on one or more runtime conditions associated with the group of virtual machine instances; selecting the at least one virtual machine instance to de-provision based at least in part on applying the user-specified termination policies, wherein applying the user-specified termination policies comprises: determining a subset of the one or more virtual machine instances that satisfy a first virtual machine instance run-time condition specified by a first user-specified termination policy, the first user-specified termination policy ranked by the user for a first execution; and determining, from the subset of the one or more virtual machine instances, the at least one virtual machine instance that satisfies a second virtual machine instance run-time condition specified by a second user-specified termination policy, the second user-specified termination policy ranked by the user for execution after the first user-specified termination policy; and de-provisioning the selected at least one virtual machine instance.